{"version":3,"sources":["webpack:///./node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","webpack:///./node_modules/@syncfusion/ej2-vue-inputs/src/numerictextbox/numerictextbox.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/buttons.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/dialog/dialog.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","webpack:///./node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/command-column-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/command-column.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/column.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/row.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/image.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/cell.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/encoding.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/compression-writer.js","webpack:///./node_modules/@syncfusion/ej2-file-utils/src/save.js","webpack:///./node_modules/@syncfusion/ej2-compression/src/zip-archive.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","webpack:///./node_modules/@syncfusion/ej2-excel-export/src/workbook.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","webpack:///./src/mixins/PermissionMixin.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","webpack:///./node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","webpack:///./node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/button/button.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/blazor-action.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","webpack:///./node_modules/@syncfusion/ej2-buttons/src/switch/switch.js","webpack:///./node_modules/@syncfusion/ej2-vue-buttons/src/switch/switch.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-popups/src/tooltip/tooltip.component.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregate-columns.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/aggregates.directive.js","webpack:///./node_modules/@syncfusion/ej2-vue-grids/src/grid/grid.component.js","webpack:///./src/mixins/CultureMixin.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/common/resize.js","webpack:///./node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","webpack:///./node_modules/@syncfusion/ej2-vue-dropdowns/src/drop-down-list/dropdownlist.component.js","webpack:///./node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","webpack:///./node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js"],"names":["__extends","extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","hasOwnProperty","__","this","constructor","prototype","create","__decorate","decorators","target","key","desc","c","arguments","length","r","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","DATEWRAPPER","ROOT","LIBRARY","CONTROL","POPUPWRAPPER","INPUTWRAPPER","POPUP","INPUTCONTAINER","INPUTFOCUS","INPUTROOT","ERROR","ACTIVE","OVERFLOW","DATEICON","CLEARICON","ICONS","OPENDURATION","OFFSETVALUE","SELECTED","FOCUSEDDATE","NONEDIT","containerAttr","DatePicker","_super","options","element","_this","call","previousElementValue","isDateIconClicked","isAltKeyPressed","isInteracted","isBlazorServer","invalidValueString","checkPreviousValue","isAngular","preventChange","isIconClicked","isDynamicValueChanged","datepickerOptions","render","initialize","bindEvents","renderComplete","setTimeZone","serverTimezoneOffset","offsetValue","value","clientTimeZoneDiff","Date","getTimezoneOffset","serverTimezoneDiff","timeZoneDiff","isDayLightSaving","getTime","updateInput","firstOffset","getFullYear","secondOffset","Math","max","setAllowEdit","allowEdit","readonly","inputElement","removeAttribute","updateIconState","inputWrapper","container","parentElement","clearButton","querySelector","buttons","bindInitialEvent","floatLabelType","showClearButton","wireClearBtnEvents","checkInvalidValue","createInput","updateHtmlAttributeToWrapper","previousDate","setAttribute","inputValueCopy","ariaAttrs","id","getModuleName","l10nLocale","placeholder","globalize","locale","l10n","setProperties","getConstant","updatedCssClassValues","cssClass","replace","trim","properties","enabled","enableRtl","createElement","setWidth","width","name","getAttribute","tabIndex","addAttributes","formatOptions","isCalendar","disabledDates","isNaN","checkValue","strictMode","validateDate","minMaxUpdates","minMaxUpdate","dateValue","dateString","tempFormat","formatString","dateTimeFormat","calendarMode","formatDate","format","type","skeleton","calendar","min","updateInputValue","changedArgs","errorClass","checkStringValue","val","returnDate","formatDateTime","culture","getDatePattern","checkDateValue","parseDate","valueDate","valueString","toString","invalid","extISOString","basicISOString","test","bindInputEvent","indexOf","add","inputHandler","remove","preventEventBubbling","dateIconHandler","inputFocusHandler","inputBlurHandler","inputChangeHandler","resetHandler","formElement","resetFormHandler","defaultKeyConfigs","keyConfigs","keyboardModules","eventName","keyAction","inputKeyActionHandle","bind","unBindEvents","disabled","tagName","restoreValue","currentDate","e","stopPropagation","bindClearEvent","preventDefault","clear","event","clearedArgs","trigger","popupUpdate","changeEvent","interopAdaptor","invokeMethodAsync","setValue","isDevice","blur","hide","nextElementSibling","show","focus","htmlAttributes","_i","_a","keys","updatedClassValues","split","setStyle","charAt","updateHtmlAttributeToElement","updateCssClass","newCssClass","oldCssClass","setCssClass","popupWrapper","CalendarKeyActionHandle","action","children","index","focusArguments","model","isServerRendered","openOnFocus","isPopupClicked","strictModeUpdate","changeTrigger","document","activeElement","blurArguments","calendarKeyboardModules","calendarElement","firstElementChild","documentHandler","popupObj","contains","classList","depth","toLowerCase","generateTodayVal","focusOut","clickedView","currentView","defaultAction","keyActionHandle","setActiveDescendant","querySelectorAll","targetdate","navigateTo","dateOptions","date","len","setFullYear","setHours","getHours","getMinutes","getSeconds","getMilliseconds","createCalendar","tableBodyElement","contentElement","className","modelHeader","modal","body","style","display","appendChild","content","relateTo","position","X","Y","offsetY","targetType","zIndex","collision","open","close","destroy","setAriaAttributes","targetExitViewport","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","textContent","insertBefore","valueOf","navigatedEvent","navigatedArgs","selectCalendar","requiredModules","modules","push","args","member","match","prevent_1","outOfRange","mobilePopupWrapper","preventArgs","popup","cancel","appendTo","eventArgs","visibility","height","refreshPosition","openAnimation","duration","setOverlayIndex","prevent_2","closeEventCallback","prevent","keyboardModule","outerHTML","focusIn","triggerEvent","view","removeAttributes","inputElementCopy","ensureInputAttribute","ngTag","insertAdjacentElement","prop","attributes","preRender","cloneNode","validationAttribute","getDefaultKeyConfig","checkHtmlAttributes","hasAttribute","altUpArrow","altDownArrow","escape","enter","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","select","home","end","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","shiftTab","tab","nameAttribute","attribute","attr","checkFormat","skeletonString","dynamic","checkView","attributes_1","undefined","valueCopy","previousValCopy","inputVal","dateIdString","focusedEle","selectedEle","isDisabledDate","setMilliseconds","onPropertyChanged","newProp","oldProp","setPlaceholder","setReadonly","setEnabled","setLocale","setEnableRtl","setClearButton","removeFloating","addFloating","modelProps","NumericTextBoxComponent","propKeys","models","hasChildDirective","hasInjectedModules","tagMapper","tagNameMapper","ej2Instances","_trigger","bindProperties","_setProperties","muteOnChange","map","$emit","eventProp","successHandler","requestType","propKey","$slots","default","decrement","step","getText","increment","props","NumericTextBoxPlugin","install","Vue","component","Group","parent","groupSettings","sortedColumns","serviceLocator","sortRequired","isAppliedGroup","isAppliedUnGroup","reorderingColumns","visualElement","styles","attrs","helper","gObj","sender","allowReordering","column","getColumnByField","offsetWidth","offsetHeight","uid","dragStart","dragElement","drag","animateDropper","cloneElement","draggableType","dragStop","preventDrop","rearrangeGroup","field","getColumnByUid","columns","ungroupColumn","dragField","dropTarget","grouped","slice","cols","JSON","parse","stringify","dropField","dropIndex","dragIndex","splice","flag","innerHTML","addColToGroupDrop","addLabel","removeColFromGroupDrop","drop","droppedElement","aria","setDropTarget","setGrabbed","getHeaderTable","allowGrouping","getColumnHeaderByUid","log","moduleName","columnName","headerText","groupColumn","contentRefresh","getService","addEventListener","groupGenerator","dragLabel","updateModel","columnDrag","columnDragStart","dropArea","columnDrop","isDestroyed","on","enableAfterRender","onActionComplete","clickHandler","refreshSortIcons","keyPressHandler","initialEnd","onGroupAggregates","blazorActionBegin","updateExpand","removeEventListener","off","isCollapseStateEnabled","expandAll","updateGroupDropArea","getColumns","col","selected","allowSelection","getSelectedRowIndexes","rows","getContentTable","dataRow","getDataRows","grpRow","rowIndex","expandCollapseRows","collapseAll","isEdit","getFocusedElement","row","elem","focusModule","currentInfo","applySortFromTarget","unGroupFromTarget","toogleGroupFromHeader","showToggleButton","gHeader","allowSorting","getColumnHeaderByField","sortColumn","trgt","cellIdx","cellIndex","rowIdx","rowNodes","isHide","expandElem","dataManager","query","toExpand","indent","expand","notify","isExpand","updateVirtualRows","enableLazyLoading","contentModule","captionExpand","captionCollapse","setExpand","updateVisibleexpandCollapseRows","getRowsObject","isDataRow","getRowElementByUID","visible","rObj","getRowObjectFromUID","closest","getDataModule","generateQuery","queries","aggregateQuery","getQuery","clone","rowObject","getData","requiresCount","then","renderModule","dataManagerSuccess","expandCollapse","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","firstChild","showDropArea","initializeGHeaderDrop","initializeGHeaderDrag","dragTarget","distance","accept","instance","handler","arg1","showGroupedColumn","colName","enableColumnVirtualization","filter","setVisible","sortSettings","dataBind","groupAddSortingQuery","isJsComponent","direction","isFromGroup","animator","groupedColumn","childDiv","headerCell","title","tabindex","showUngroupButton","createSeparator","isRemove","headers","getElementsByClassName","showColumnMenu","getGHeaderCell","parent_1","module","j","oldProperties","refreshHeader","updateGroupedColumn","updateButtonVisibility","freezeRefresh","isVisible","enable","gridElement","refreshing","clearGrouping","header","gCols","fieldNames","editedData","aggregates","iterateGroupAggregates","rowData","generateRows","summaryRows","updateSummaryRows","data","isReact","destroyTemplate","cells","cell","isDataCell","dataUid","updatedData","initData","getCurrentViewRecords","deletedCols","changeds","edit","changes","getPrimaryKeyFieldNames","mergeData","item","pKeyVal","getObject","hasVal","some","cItem","eData","result","aggrds","aggregateRows","k","aggr","groupedCols","l","group","_loop_1","childRow","closestParent","parentUid","x","state_1","isFrozen","Data","dataState","isPending","resolver","foreignKeyDataState","initDataManager","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","dataSource","json","toIndex","fromIndex","isQueryInvokedFromData","skipPage","columnQueryMode","isPrimaryKey","selectQueryFields","filterQuery","searchQuery","sortQuery","virtualGroupPageQuery","pageQuery","groupQuery","isForeign","types","aggregate","fName","allowPaging","enableVirtualization","enableInfiniteScrolling","pageSettings","currentPage","pageCount","pageSize","infiniteScrollModule","page","lazyLoad","isGrpFmt","enableGroupByFormat","formatGroupColumn","sortGrp","setSortDirection","fn","sortComparer","isRemote","isForeignColumn","sortByForeignKey","sortBy","getSortDirection","fcolumn","isForeignKey","sSettings","searchSettings","fields","getSearchColumnFieldNames","predicateList","needForeignKeySearch","getForeignKeyColumns","adaptor","foreignKeyValue","fGeneratePredicate","operator","ignoreCase","ignoreAccent","predList","or","where","search","skipFoerign","foreignColEmpty","actualFilter","foreignColumn","allowFiltering","filterSettings","colType","foreignCols","defaultFltrCols","_b","columns_1","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","getPredicate","_c","_d","_e","foreignCols_1","column_1","grabColumnByUidFromAllCols","columnData","_f","_g","and","fPredicate","predicate","predicates","getKey","foreignKeyData","def","eventPromise","promise","crud","fromTable","addedRecords","deletedRecords","changedRecords","saveChanges","insert","isArray","catch","executeQuery","ready","deferred_1","resolve","reject","getDay","getFormatter","formatVal","toView","pr","update","previousData","original","getStateEventArgument","deff","endEdit","setState","offline","url","records","getState","state","getForeignKeyDataState","setForeignKeyDataState","adaptr","dm","processQuery","pvtData","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","allowSearching","OTHERMONTH","OTHERDECADE","DEVICE","HEADER","RTL","CONTENT","YEAR","MONTH","DECADE","ICON","PREVICON","NEXTICON","PREVSPAN","NEXTSPAN","ICONCONTAINER","DISABLED","OVERLAY","WEEKEND","WEEKNUMBER","OTHERMONTHROW","TODAY","TITLE","LINK","CELL","WEEKHEADER","ZOOMIN","FOOTER","BTN","FLAT","CSS","PRIMARY","DAYHEADERLONG","dayMilliSeconds","minutesMilliSeconds","CalendarBase","effect","isDateSelected","isTodayClicked","rangeValidation","calendarEleCopy","setSeconds","firstDayOfWeek","getFirstDayOfWeek","todayDisabled","todayDate","createHeader","createContent","wireEvents","spacebar","altRightArrow","altLeftArrow","popupElement","parseInt","ariaPrevAttrs","ariaNextAttrs","ariaTitleAttrs","headerElement","iconContainer","previousIcon","selector","isCenterRipple","nextIcon","headerTitleElement","adjustLongHeaderSize","table","createContentHeader","createContentBody","showTodayButton","createContentFooter","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","obj","toCapitalize","text","toUpperCase","shortNames","daysCount","html","tableHeadElement","weekNumber","shiftArray","days","start","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","today","role","footer","todayButtonClick","ref","keyConfig","getElementById","blazorRef","serverModuleName","navigateTitle","dateWireEvents","isCustomDate","getViewNumber","checkDeviceMode","multiSelection","selectedDate","focusedDate","targetEle","Action","Key","Events","SelectDate","FocusedDate","Id","TargetClassList","depthValue","levelRestrict","KeyboardNavigate","selectDate","contentClick","firstDay","lastDay","addMonths","addYears","number","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","values","isTodayDate","cellsCount","getDate","timezone","currentMonth","getMonth","titleUpdate","setStartDate","day","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","renderDayCellArgs","isDisabled","isOutOfRange","argument","renderDayCellEvent","argsDate","localDateString","tempDateString","otherMnthBool","disabledCls","getDateVal","updateFocus","tempValue","getFromatStringValue","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","setMonth","setDate","month","localMonth","yearCell","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","year","collection","lastDate","timeOffset","abs","findLastDay","elements","count","classNm","trEle","weekNumCell","numberCell","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","currentTarget","getIdValue","islamicDate","getIslamicDate","toGregorian","switchView","getPersistData","keyEntity","addOnPersist","validateValues","copyValues","skipIndex","tempValueString","minFormatOption","minStringValue","minString","maxFormatOption","maxStringValue","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","stringVal","previous","islamicPrevious","next","islamicNext","ld","gregorianFormat","islamicFormat","mainVal","ceil","time","tzOffset","tzOffsetDiff","setTime","getMaxDays","node","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","dateSeperator","dates","previousValue","checkPrevious","compare","startDate","endDate","modifier","array","concat","findNextTD","rangeValue","tmpDate","inValue","toUTCString","toLocaleString","timeZone","Calendar","isMultiSelection","tempValues","limit","copyDate","previousValues","setEnable","setClass","form","formResetHandler","setMinutes","todayButtonEvent","changeHandler","triggerChange","previousDateTime","isMultiSelect","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","addDate","tempDates","removeDate","setTodayDate","Number","NaN","FieldSettings","apply","dropDownBaseClasses","root","rtl","hover","noData","fixedHead","li","grouping","ITEMTEMPLATE_PROPERTY","VALUETEMPLATE_PROPERTY","GROUPTEMPLATE_PROPERTY","HEADERTEMPLATE_PROPERTY","FOOTERTEMPLATE_PROPERTY","NORECORDSTEMPLATE_PROPERTY","ACTIONFAILURETEMPLATE_PROPERTY","DropDownBase","isPreventChange","getPropObject","newProperty","oldProperty","propName","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","typeof","dataSource_1","checkingAccent","String","checkIgnoreCase","getItemValue","checkNonIgnoreCase","itemValue","dataItem","ignoreDiacritics","textItem","typedText","getFormattedValue","templateCompiler","baseTemplate","checkTemplate","exception","l10nUpdate","actionFailure","ele","ulElement","list","noRecordsTemplate","actionFailureTemplate","DropDownBaseresetBlazorTemplates","template","compiledString","templateId","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","templateName","noDataCompTemp","isStringTemplate","DropDownBaseupdateBlazorTemplates","componentLocale","getLocaleName","liElem","getTextByValue","parseFloat","enableRtlElements","bindEvent","jsonElement","createJsonFromElement","resetList","renderItemsBySelect","setListData","noRecord","isEmpty","itemTemplate","itemTemplateId","groupTemplate","groupTemplateId","valueTemplateId","headerTemplateId","footerTemplateId","updateDataAttribute","invalidAttr","a","option","getJSONfromOption","optionGroup","label","isHeader","child","updateFields","groupBy","iconCss","items","options_1","innerText","scrollTimer","isRequested","isDataFetched","isActive","showSpinner","emptyDataRequest","listItems","renderItems","renderGroupTemplate","bindChildItems","onActionFailure","hideSpinner","executeLocal","localDataArgs","setTimeout","childNode","remainingItems","sortedData","liCollections","updateListValues","raiseDataBound","findListElement","findNode","liElement","listArr","dataBoundEventArgs","spliceData","skip","listElements","templateListItem","childNodes","createListItemFromArray","listOption","createListItemFromJson","clearTemplate","fixedHeaderElement","postRender","listElement","focusItem","selectedItem","listEle","groupTemplateID","headerItems","groupcheck","groupValue","createListItems","sortOrder","getSortedDataSource","groupDataSource","take","createList","fieldValues","showIcon","ariaAttributes","groupItemRole","setFloatingHeader","setFixedHeader","scrollStop","liHeight","getComputedStyle","getPropertyValue","topIndex","round","scrollTop","currentLi","top","isTempEmpty","templateID","itemcheck","renderContentTemplate","listDataType","isNullData","borderWidth","defaultView","liWidth","firstLi","textField","getDataSource","addSorting","getIndexByValue","getItems","dispatchEvent","evt","createEvent","initEvent","setFields","selectData","updateSelectElementData","isFiltering","updateSelection","renderList","updateDataSource","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleModel","rippleFun","isGroupChecking","wrapperElement","addItem","itemIndex","newList","itemsCount","selectedItemValue","itemText","addItemTemplate","createTextNode","updateActionCompleteData","updateAddItemList","listGroupItem","parentNode","tempLi","updateDataList","hidden","itemCount","getDataByValue","queryString","prevString","matches","activeClass","prevElementId","incrementalSearch","keyCode","selectedIndex","elementId","isBlazor","fromCharCode","strLength","substr","Search","searchType","itemData","queryStr","toLocaleLowerCase","itemsData","Column","disableHtmlEncode","allowResizing","allowEditing","showInColumnChooser","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","setFormatter","getFormatFunction","setParser","getParserFunction","toJSON","commands","textAlign","commandsTemplate","templateFn","headerTemplate","headerTemplateFn","fltrTemplateFn","editTemplate","filterTemplate","params","foreignKeyField","a_1","y","xObj","yObj","window","z","fnDescending","fnAscending","getFreezeTableName","freezeTable","refreshReactColumnTemplateByUid","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","CommandColumnModel","SummaryModelGenerator","footerTemplate","groupFooterTemplate","groupCaptionTemplate","columnSelector","detailTemplate","childGrid","isRowDragable","getIndentCount","input","buildSummaryData","getGeneratedRow","level","summaryRow","raw","tmp","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","Indent","DetailFooterIntent","class","getRowUid","cellType","sColumn","scolumn","opt","dummy","single","setTemplate","disp","Summary","GroupSummaryModelGenerator","v","indx","GroupSummary","CaptionSummaryModelGenerator","initVal","reduce","prev","cur","CaptionSummary","ButtonsDirective","ButtonsPlugin","DialogButtonDirective","DialogButtonPlugin","DialogComponent","getButtons","isFullScreen","DialogPlugin","AriaService","setOptions","setStateAndProperties","config","setSort","sort","setBusy","isBusy","busy","isGrabbed","grabbed","isTarget","dropeffect","multiselectable","haspopup","colcount","rowcount","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_RTL","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_DISABLE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARBTN","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARRIGHT","CLS_TBARLEFT","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLCNT","CLS_VSCROLLCNT","CLS_HSCROLLBAR","CLS_POPUPNAV","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARBTNTEXT","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDPOPUP","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","resize","popupOpen","popupClose","unwireEvents","tempId","forEach","lastElementChild","removeChild","trgtEle","ctrlTem","clearProperty","popObj","tbarAlign","attrb","enableCollision","scrollStep","scrollModule","tbarItemsCol","isVertical","isExtendedOpen","popupPriCount","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","unwireKeyboardEvent","popCheck","overflowMode","keyCheck","destroyScroll","docEvent","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","destroyItems","el","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","clst","keyHandling","navChk","scrollChk","rootEle","popAnimate","eleFocus","nodes","popupCheck","popFrstEle","ele_1","activeEle","activeEleRemove","tbarScrollChk","disable","eleContains","pos","sib","skipEle","itemObj","clsList","isPopupElement","popupNav","popupClickHandler","tempItem","originalEvent","click","clickedArgs","offsetX","getElementOffsetY","minHeight","renderControl","info","ariaAttr","renderLayout","renderOverflowMode","itemPositioning","childElementCount","checkPopupRefresh","separator","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","overflow","portals","renderReactTemplates","changeOrientation","refreshOverflow","initScroll","innerItems","checkOverflow","itemWidthCal","marginTop","marginRight","marginBottom","marginLeft","getScrollCntEle","trgClass","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleInlineItem","eleItem","multiVar","extendVar","offsetLeft","innerEle","innerNav","vertical","createPopupIcon","innerNavDom","checkPriority","removeProperty","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","nodeIndex","poppedEle","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","clientHeight","maxHeight","eleStyles","borderRightWidth","tbarPopupHandler","isOpen","toolEle","popupElePos","offsetTop","popIcon","scrollVal","scrollY","innerHeight","overflowHeight","tbEleData","getBoundingClientRect","bottom","inEle","pre","eleOffset","checkoffset","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","cls","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","minWidth","sepEle","popedEle","nav","navItem","tbarPriRef","sepPri","des","elWid","wid","ig","ignoreCount","priEleCnt","eleSep","ignoreCheck","sepDisplay","eleSepWidth","prevSep","previousElementSibling","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","this_1","sepBeforePri_1","refreshPositioning","margin","tbarWid","popWid","left","right","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","keyVal","enableItems","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","templateRender","templateProp","isComponent","itemType","eleObj","tempStr","tempArray","toolbarTemplateID","buttonRendering","dom","iconPos","textStr","btnTxt","enableHtmlSanitizer","sanitize","prefixIcon","suffixIcon","btnObj","iconPosition","tempDom","tooltipText","itemClick","showTextOn","sTxt","curEle","multirowele","tEle","changedProb","property","refresh","popupPriCheck","booleanCheck","itemCol","hideItem","initIndex","isElement","eleIndex","innerItems_1","innerItems_2","nextEle","setFlag","removeFlag","initELe","$","$trim","forcedStringTrimMethod","proto","forced","CommandColumnRenderer","locator","buttonElement","unbounDiv","tempID","renderTemplates","command","renderButton","setAttributes","buttonOption","button","localizer","onclick","buttonObj","commandType","CommandColumn","initiateRender","cellFac","addCellRenderer","commandClickHandler","commandColumn","ej2_instances","columnModel","commandCols","idInString","typeInString","commandclickargs","editModule","startEdit","closeEdit","editSettings","mode","commandDelIndex","clearSelection","selectRow","deleteRecord","load","commandCol","dropDownListClasses","base","inputFocus","icon","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","filterParent","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","inputObject","DropDownList","isListSearched","checkBlazor","isServerBlazor","initializeData","opacity","activeIndex","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initial","initRemoteRender","isNotSearchList","isTyped","isSelected","preventFocus","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","isUpdated","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","down","up","space","unWireListEvents","wireListEvents","floatLabelChange","floatElement","clearAll","resetFocusElement","removeHover","removeSelection","removeFocus","resetSelection","getItemData","onChangeEvent","selectedLI","valueTempElement","setSelection","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","defaultAttr","validateAttr","getAriaAttributes","targetElement","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","setHiddenValue","onBlur","relatedTarget","isFilterLayout","focusOutAction","onFocusOut","onFocus","resetValueHandler","wireEvent","dropDownClick","onSearch","bindCommonEvent","mobileKeyActionHandler","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","charCode","isServerIncrementalSearch","searchKeyEvent","onServerIncrementalSearch","isValidLI","history","back","delay","closePopup","setHover","hoveredItem","setScrollPosition","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavAction","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","getPageCount","pageDownSelection","updateHomeEndAction","showPopup","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isServerNavigation","focusEle","isSelectFocusItem","nextItem","startIndex","findLi","steps","previousItem","unWireEvent","checkSelector","onDocumentClick","isIE","activeStateChange","which","proxy_1","updateSelectedItem","preventSelect","isSelection","selectedData","selectEventCallback","setSelectOptions","detachChanges","previousItemData","focusedItem","activeItem","valueTemplate","setValueTemplate","previousSibling","previousSelectedLI","dropdownCompiler","dropdownTemplate","templateData","valuecheck","valueCompTemp","selectedItems","dataValue","dataText","detachChangeEvent","defineProperties","enumerable","preItems","enablePersistence","onFilterUp","ctrlKey","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","setSelectionRange","filterType","dataType","selectionStart","selectionEnd","clearElement","eventArgs_1","preventDefaultAction","filteringAction","baseEventArgs","focusIndexItem","setSearchBox","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","pasteHandler","renderPopup","checkField_1","checkVal","addNewItem","newElement","value_1","isExist","actionCompleteDataUpdate","highlightedItem","refreshPopup","serverPopupEle","searchBox","listHeight","popupHeight","setHeaderTemplate","setFooterTemplate","updateServerPopup","searchBoxHeight","getOffsetValue","firstItem","isEmptyList","textIndent","paddingLeft","borderLeftWidth","getFocusElement","checkCollision","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements","getScrollableParent","scrollParentElements_1","scrollHandler","listScroll","inputParent","animModel","popupInstance","animation","destroyPopup","serverBlazorUpdateSelection","bindServerScrollEvent","resolveCollision","popupStyles","borderTop","borderTopWidth","borderBottom","borderBottomWidth","setPopupPosition","isResetItem","actionList","border","popupOffset","lastItem","lastItemOffsetValue","paddingBottom","inputHeight","popupWidth","inputWidth","scrollBottom","isInitial","currentOffset","nextBottom","nextOffset","paddingTop","boxRange","isPopupButton","setEleWidth","scrollableParentElements","scrollableParentElements_1","fixedHeader","popupHolderEle","wireFloatingEvents","customTag","selectElement","onselect","stopImmediatePropagation","onchange","footercheck","footerCompTemp","headercheck","headerCompTemp","contentEle","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","ddlProps","newClass","oldClass","invokeRenderPopup","isDropdownComp","proxy_2","onpopstate","pushState","clientRenderPopup","renderHightSearch","updateclientItemData","initValueItemData","serverUpdateListElement","isFooter","isSelectVal","isFocused","attrArray","exports","requireObjectCoercible","whitespaces","whitespace","ltrim","RegExp","rtrim","createMethod","TYPE","$this","string","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","inserted","mCell","isIntersecting","intersectingCell","Width","Height","CellStyle","numFmtId","backColor","fontName","fontSize","fontColor","italic","bold","underline","wrapText","hAlign","vAlign","rotation","numberFormat","borders","Borders","isGlobalStyle","Font","sz","u","color","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","code","formatCode","Border","mLine","mColor","lineStyle","all","Row","Rows","Image","Cell","Cells","Encoding","includeBom","emitBOM","encodingType","initBOM","get","configurable","set","getByteCount","chars","validateNullOrUndefined","byte","utf8Len","charCodeAt","getByteCountInternal","codePoint","bytes","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","high","low","getBytes","s","RangeError","ArrayBuffer","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteLength","out","byteCal","Uint8Array","getStringOfUtf8Encoding","byteUnicode","Uint16Array","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","message","Error","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","floor","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","stream","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","write","offset","encode","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","flush","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","m","hash","curMatch","chainLen","niceLen","scan","bestEnd","bestLength","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","reset","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","isClose","bitReverse","writer","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","Int32Array","codeCount","codeLength","codes","lengths","temp","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","n","freq","pPos","leafsCount","nodesCount","iIndex","constructHuffmanTree","buildLength","first","last","lastVal","path","second","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","buffer","checksum_uint","s1","s2","checkSumBitOffset","checksumIterationCount","checksumBase","Save","save","fileName","extension","substring","lastIndexOf","mimeType","getMimeType","Blob","isMicrosoftBrowser","navigator","msSaveBlob","downloadLink","createElementNS","saveInternal","hasDownloadAttribute","download","dataUrl_1","URL","createObjectURL","href","event_1","revokeObjectURL","isPopupBlocked","location","reader_1","FileReader","onloadend","readAsDataURL","CRC32TABLE","ZipArchive","initCrc32Table","files","file","ZipArchiveItem","addDirectory","directoryName","getItem","zipArchive","Promise","saveAsBlob","blob","skipFileSave","zipData","dirLength","compressedObject","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","onload","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","length_1","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","currentIndex","nextIndex","subArray","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","shift","writeFooter","externalFileAttribute","directoryHeader","centralLength","localLength","dirEnd","modTime","modiDate","itemName","ValueFormatter","cultureName","intl","getDateFormat","getNumberFormat","displayText","CsvHelper","csvStr","formatter","globalStyles","Map","worksheets","parseWorksheet","parseRows","rows_1","parseRow","parseCell","csv","parseCellValue","error","has","dwlLink","BlobHelper","parts","append","part","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","currency","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","cellStyle","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","category","company","manager","subject","createdDate","modifiedDate","tags","status","jsonSheet","sheet","mergeCells","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","freeze","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","fromJson","toJson","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","rowId","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","parseGrouping","parseCells","outlineLevel","isCollapsed","isHidden","cellsLength","spanMin","spanMax","cellId","jsonCell","rowSpan","colSpan","hyperlink","hyperLink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","colors","processColor","colorVal","rgbColors","processCellValue","cellValue","processedVal","startindex","endIndex","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","processCellStyle","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","returnFormat","getNumberPattern","useGrouping","processNumFormatId","compareResult","compareStyle","size","isNewFont","toCompareStyle","font","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","image","parserImage","lastRow","lastColumn","horizontalFlip","verticalFlip","blobSaveType","blobData","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_h","_j","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","imageData","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","convertToPixels","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","img","byteStr","atob","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","si","processString","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","alignment","horizontal","numFmtStyle_1","fontStyle","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","toISOString","topRelation","wbRelation","contentTypeString","sheetsOverride","xmlString","archiveItem","startCell","endCell","updatedMergedCellStyles","sCell","eCell","dateToTicks","ticksPerDay","daysToMonth365","daysToMonth366","isLeapYear","timeToTicks","hour","minute","totalSeconds","ticks","daysTo1899","doubleDateOffset","oaDateMinAsTicks","millisPerDay","ExportHelper","hideColumnInclude","totalRecordsCount","getFData","getGridRowModel","hierarchyPrintMode","expandedRows","generateCells","processColumns","childGridLevel","generateCell","getColumnData","gridObj","columnPromise","fColumns","colData","getHeaders","isHideColumnInclude","colDepth","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","gridRows","StackedHeader","isIgnoreFirstCell","Header","columnIndexes","getColumnIndexesInView","len_1","HeaderIndent","checkAndExport","gridPool","globalResolve","bool","failureHandler","childGridObj","createChildGrid","exportType","detailRowModule","getGridModel","isPrinting","parentID","parentPrimaryKeys","parentKeyField","parentKeyFieldValue","parentRowData","exportId","getGridExportColumns","actualGridColumns","gridColumns","ExportValueFormatter","internationalization","returnFormattedValue","customFormat","formatCellValue","isServerBlaz","cFormat","ExcelExport","book","workSheet","rowLength","expType","includeHiddenColumn","isCsvExport","isElementIdChanged","init","isExporting","exportValueFormatter","grid","exportProperties","isMultipleExport","workbook","isCsv","isBlob","isBlb","workbk","isMultiEx","hierarchyExportMode","gridObject","processRecords","exportingSuccess","blobPromise","allPromise_1","processInnerRecords","query_1","isCountRequired","groupedColLength","blankRows","isExportPropertiesPresent","multipleExport","processExcelHeader","processGridExport","organisedRows","organiseRows","processExcelFooter","getVisibleColumns","enableFilter","currencyCode","initialIndex","childRows","excelRows","isFrozenGrid","getFrozenColumns","theme","gColumns","headerRow","groupIndent","processHeaderContent","processRecordContent","currentViewData","returnType","currentViewRecords","excelRow","record","processRecordRows","processGroupedRows","GroupGuid","processAggregates","excelExportProperties","cArgs","captionText","getCaptionThemeStyle","captionModelGen","groupCaptionSummaryRows","fillAggregates","childLevels","lIndex","hIndex","tCell","span","col_1","templateRowHeight","gCell","valueAccessor","fkData","idx","excelCellArgs","base64","excelImage","getColumnStyle","returnVal","beforeDataBound","childGridCell","rowObj","excelExportProps","gRow","intent","rec","byGroup","summaryModel","aggregateModule","prepareSummaryInfo","groupSummaryModel","groupSummaryRows","sRows","customIndex","rows_2","getAggreateValue","Sum","Average","Max","Min","Count","TrueCount","FalseCount","Custom","aggregateStyle","gridCellStyle","row_1","dummyOutlineLevel","dummyGrouping","txt","isVue","JSON1","JSON2","attrname","columnIndex","spannedCells","currentCellIndex","gridCell","DetailHeader","getIndex","spannedCell","getHeaderThemeStyle","headerTextAlign","excelHeaderCellArgs","parseStyles","getRecordThemeStyle","updateThemeStyle","themestyle","caption","noRows","headerRows","updatedCellIndex","footerRows","spannedCells_1","computed","isMobileDevice","Browser","permissions","perm","menu","$store","getters","userPermissions","find","route","$route","fullPath","canEdit","hasPermission","canView","canDelete","cssEdit","cssView","cssDelete","viewTool_click","editTool_click","deleteTool_click","created","mounted","toolbar","methods","updatePermissions","pList","menuPermissions","hasPerm","setDefaultToolbar","getCloneProperties","Print","isAsyncPrint","defered","isContentReady","actionBegin","onEmpty","hierarchyPrint","isPrintGrid","contentReady","removeColGroup","printGridObj","printModule","print","renderPrintGrid","printWind","outerHeight","outerWidth","moveTo","resizeTo","screen","availWidth","availHeight","printGrid","viewContainerRef","getInjectedModules","injectedModues","setInjectedModules","printgrid","registeredTemplate","selectedRows","cssProps","getCssProperties","contentDiv","headerDiv","overflowY","padding","overflowX","waitingPop","printGridElement","groupCaption","colGroups","contentColGroups","hideColGroup","printGridProp","WRAPPERCLASS","POPUPDIMENSION","DAY","HOVER","NAVIGATION","ICONANIMATION","TIMEICON","FOCUS","LISTCLASS","HALFPOSITION","ANIMATIONDURATION","OFFSETVAL","EDITABLE","wrapperAttributes","TimePickerBase","createdEl","timeFormat","interval","timeCollections","listTag","TimePicker","blazorTimeCollections","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","defaultCulture","checkTimeFormat","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","anchor","inputEleValue","getDateObject","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkInValue","scrollTo","checkAttributes","localeText","isNavigate","isTextSelected","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrTime","dateFormat","CldrFormat","isInvalid","valueExpression","valueExp","setCurrentDate","cldrDateTimeString","getBlazorCultureFormat","getCultureTimeObject","ariaAttribute","enableElement","rippleFn","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","checkErrorState","validateState","disableTimeIcon","disableElement","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","toDateString","scrollTime","toLocaleTimeString","getValue","cldrTimeFormat","cldrDateFormat","cldrDate","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","updateBlazorTimeCollections","popupHandler","mouseDownHandler","mouseUpHandler","curPos","cursorDetails","focusSelection","regex","isSeparator","keyHandler","updateValue","objToString","previousState","documentClickHandler","disposeServerPopup","mobileTimePopupWrap","checkValueChange","valueProcess","prevValue","minVal","maxVal","dateVal","strictOperation","maxValue","minValue","clearHandler","inputEvent","timeValue","raiseClearedEvent","isDynamic","getTextFormat","strArray","validateValue","newval","findNextElement","textVal","timeVal","collections","selectNextItem","validLiElement","elementValue","findNextInBlazor","index_1","index_2","index_3","index_4","backward","elementIndex","isCheck","isUpdate","getHoverItem","setActiveClass","formatStr","TimeParse","listBaseOptions","itemCreated","getProperty","popupAlignment","timePopupElement","formatValues","DATEPICKERROOT","DATETIMEWRAPPER","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","DateTimePicker","scrollInvoked","dateTimeOptions","focusHandler","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","timeIcon","renderTimeIcon","appendSpan","timeHandler","dateHandler","inputKeyAction","getCldrFormat","cldrDateTime","isDatePopupOpen","toggle","listCreation","dateObject","startTime","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","TimeKeyActionHandle","unWireTimeListEvents","setDimension","setTimeHover","removeTimeHover","setInputValue","nextElement","lineHeight","getFullDateTime","tempVal","combineDateTime","minutes","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","range","method","hours","milliseconds","tempStartValue","tempMin","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","getTimeActiveElement","status_1","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","getDateParser","getNumberParser","fromView","setCulture","FilterCellRenderer","getGui","tr","innerDIV","fltrData","isReactCompiler","filterBarTemplate","Element","div","appendHtml","showFilterBarOperator","operatorIconRender","templateWrite","innerHtml","fbicon","operators","filterModule","dropOptr","change","internalEvent","beforeOpen","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","customFilterOperators","renderOperatorUI","dlgConetntEle","dlgObj","dialogObj","optr","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","dropDownOpen","renderResponsiveDropDownList","enableAdaptiveUI","selValue","selectedField","optrLen","getFlOperator","SPINNER_CLASS","ComboBox","preventBlur","targetFocus","inputValue","customValue","allowCustom","valueMuteChange","setHoverList","inlineSearch","autofill","setAutoFill","isHover","currentValue","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","currentPoints","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","changeData","comboProps","isEscape","searchItem","highlightSearch","ignoreRegex","replaceQuery","findTextNode","pattern","nodeType","nodeValue","revertHighlightSearch","replaceChild","AutoComplete","isFiltered","searchList","mapping","suggestionCount","queryElements","minLength","filterAction","postBackAction","fieldsSettings","highlight","itemCreated_1","showPopupButton","atcProps","isHighlight","StringFilterUI","serLocator","actObj","getAutoCompleteOptions","foreignColumnQuery","autoComplete","getOptrInstance","localizeText","actionComplete","arr","mapObj","defObj","deffered","filteredValue","struiObj","read","filterOptr","filterObj","actuiObj","filterValue","filterByColumn","enableCaseSensitivity","NumberFilterUI","keyEventHandler","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","distinct","drpuiObj","DateFilterUI","fltrSettings","inputElem","datePickerObj","dateuiObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearCustomFilter","clearBtnClick","applyCustomFilter","filterBtnClick","openDialog","renderDlgContent","closeDialog","unWireEvents","columnType","filterModel","mainDiv","dlgDiv","responsiveCnt","showCloseIcon","closeOnEscape","dialogCreated","buttonModel","isPrimary","animationSettings","renderResponsiveDialog","isModal","renderFilterUI","writeMethod","renderFlValueUI","menuOperator","valueDiv","fObj","instanceofFilterUI","valueInString","compElement","cBox","getAllData","ui","dlgContentEle","flValue","flOptrValue","targ","fltrValue","eControl","checked","closeResponsiveDialog","removeFilteredColsByField","iconClass","flIcon","getFilterUIInfo","renderCheckBoxMenu","getAndSetChkElem","btnClick","getLocalizedLabel","dlg","sBox","CheckBoxFilter","isresetFocus","checkBoxBase","actionPrevent","clearFilter","fltrBtnHandler","LABEL","RIPPLE","WRAPPER","ATTRIBUTES","RadioButton","RadioButton_1","updateChange","radioGrp","getRadioGroup","angularValue","radioWrap","focusOutHandler","getLabel","getSelectedValue","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","rippleSpan","wrapper","for","setText","keyUpHandler","labelRippleHandler","ripple","labelPosition","formControlName","textLabel","rippleLabel","ExcelFilterBase","isExcel","getCMenuDS","datetime","unwireExEvents","cmenu","createMenu","isCheckIcon","eleOptions","ul","isResponsiveFilter","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","menuItem","destroyCMenu","isCMenuOpen","menuObj","focused","submenu","selectedMenu","menuOptions","selectHandler","onClose","beforeClose","preventClose","client","contextRect","getContextBounds","innerWidth","pageYOffset","getCMenuYPosition","existingPredicate","isFilterBack","MouseEvent","context","contextWidth","targetPosition","leftPos","clientWidth","targetBorder","showDialog","filterLength","filteredColumns","renderDialogue","isComplex","complexFieldName","overlayClick","removeDialog","createdDialog","rowResponsiveDlg","removeObjects","datePicker","dateTimePicker","renderCustomFilter","dialog","dlgFields","fieldSet","displayName","checkBoxValue","colValue","fValue","fOperator","sValue","sOperator","checkBox","andRadio","fieldName","firstOperator","firstValue","matchCase","secondOperator","secondValue","mPredicate","fColl","arg","arg2","arg3","arg4","arg5","arg6","arg7","arg8","filterCollection","ejpredicate","actualPredicate","foreignKeyFilter","elementID","isFirst","fieldElement","xlfloptr","menuText","dropDownValueChange","includes","getSelectedText","colGroup","renderRadioButton","td","radioDiv","frstpredicate","secndpredicate","renderMatchCase","orRadio","elements_1","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","checkbox","isRtl","completeAction","colObj","columnvalue","mapObject","ExcelFilter","excelFilterBase","Filter","filterByMethod","cellText","nextFlMenuOpen","filterOperators","endsWith","equal","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","startsWith","fltrDlgDetails","skipNumberInput","skipStringInput","setFullScreenDialog","getFrozenMode","getLocalizedCustomOperators","fltrElem","rowRenderer","cellrender","generateRow","thead","getFrozenRightHeader","getHeaderContent","rowdrag","detail","gCells","case","showCustomFilter","responsiveDialogRenderer","showResponsiveDialog","setFilterModel","updateFilterMsg","dropdownlist","filterBarElement","registerAdaptiveService","isFilter","RowDragHIcon","filterObjIndex","getFilteredColsIndexByField","prevFilterObject","arrayVal","currentFilterObject","actualFilterValue","actualOperator","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","initialLoad","columnPositionChanged","filterMenuClose","columnMenuFilter","filterIconClickHandler","filterOperator","filterCell","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","filterColumn","fColumn","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","colLen","addFilteredClass","updateFilterIcon","refreshFilterSettings","updateFilter","updateExternalMessage","filterElement","getFilterBarElement","fltrIconElement","refreshFilter","clearFiltering","colUid","f","filteredcols","fltrElement","filterDialogOpen","createOptions","hideSearchbox","filterHandler","localizedStrings","getLocaleConstants","localeObj","allowCaseSensitive","isClearFilterBar","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","clearIndicator","updateCrossIcon","getFormatFlValue","showFilterBarStatus","formater_1","formater","isSkip","operatorSymbols","stopTimer","startTimer","timer","setInterval","onTimerTick","immediateModeDelay","clearInterval","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","booleanOperator","gClient","fClient","inputId","datepickerEle","hasDialog","hasDialogClosed","targetText","filterIconElement","refreshFilterIcon","renderCheckboxOnFilterMenu","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","cells_1","rowArgs","cellArgs","attrCopy","chekBoxEnable","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","cellRenderer","getCellRenderer","DetailExpand","requestTypeAction","isRowSpanned","prevRowCells","uid_1","prevRowCell","rowSpanRange","cellSpan","cellMerge","isSpanned","rowHeight","lazyLoadCssClass","vFTable","frozenColumns","scrollHeight","summarycell","lastSummaryCell","firstSummaryCell","classes","isAltRow","rowindex","dataUID","ariaSelected","RowModelGenerator","getInfiniteIndex","ensureColumns","RowDragIcon","pid","tIndex","parentGid","enableAltRow","selectionModule","checkBoxState","selectedRowIndexes","refreshForeignKeyRow","foreignKeyColumns","dummies","oIndex","refreshRows","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","ButtonComponent","ButtonPlugin","ContentRender","freezeRows","movableRows","freezeRowElements","prevCurrentView","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","mutableData","rafCallback","mContentRows","getMovableVirtualContent","fContentRows","getFrozenVirtualContent","mHdr","getMovableVirtualHeader","fHdr","getFrozenVirtualHeader","ariaService","getPanel","renderFrozenRightContent","getFrozenRightRowsObject","allowTextWrap","generator","getModelGenerator","colGroupRefresh","refreshContentRows","beforeCellFocused","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","setPanel","innerDiv","renderTable","virtualTable","virtualTrack","createContentTable","setTable","getTable","selectionSettings","initializeContentDrop","frozenRows","cellspacing","setColGroup","getColGroup","currentMovableRows","frag","createDocumentFragment","initialPageRecords","hdrTbody","trElement","hdrfrag","frzCols","isInfiniteScroll","rowElements","tbdy","tableName","modelData","fCont","mCont","cont","emptyVcRows","prevInfo","virtualInfo","sentinelInfo","axis","mRow","sRow","isPersistSelection","removeClassByUid","getRows","addClassByUid","renderMovableContent","checkCache","setGroupCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","updateVirtualCells","tbody","blockLoad","vcRows","top_1","offsets","offsets_1","vGroupOffsets","bSize","blockIndexes","contentPanel","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","rowTemplateID","copied","getRowTemplate","isTR","nodeName","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","splitRows","getFrozenHeader","parentTable","setIsFrozen","isVFTable","frCont","getContent","appendContent","renderNextFrozentPart","vRows","maintainRows","infiniteScrollSettings","enableCache","frozenCols","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","infiniteRows","panel","contentTable","getMovableRows","getRowElements","getMovableRowElements","setRowElements","colgroup","testRow","fRows","mRows","rowLen","cellLen","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","isDetailRow","clen","getNormalizedColumnIndex","colIdx","getColumnIndexByUid","displayVal","getFrozenLeftColumnsCount","movable","getMovableColumnsCount","colG","getFrozenRightDataRows","infiniteFreezeData","mTable","getMovableDataRows","infiniteMovableData","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","isXaxis","getHeaderColGroup","droppable","canSkip","renderEmpty","getRowByIndex","getInfiniteRowIndex","firstRowIndex","getVirtualRowIndex","getMovableRowByIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","setRowValue","old","primaryKey","getBatchChanges","newRowPosition","isDirty","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","isFirstCol","isReplaceDragEle","draggable","currentStateTarget","parentEle","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","colIndex","getColumnIndexByField","widthService","getFrozenRightColumnsCount","colPosRefresh","renderCustomToolbar","rowRenderingMode","updateCustomResponsiveToolbar","isRendered","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","skipDom","createTable","tableEle","tblName","getFrozenLeftCount","findHeaderRow","createHeaderContent","bodyCell","rowBody","updateColGroup","frozenMode","colHeader","getHeaderCells","colFreezeMode","pop","indexes","len_2","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","scrollLeft","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","isTrue","lockColsCount","getFrozenColSpan","normalizedfrzCols","mTblColGrp","mTbl","refreshUI","freezeReorder","setFrozenTable","getVirtualFreezeHeader","setWidthToColumns","updateDefaultCursor","textWrapSettings","wrapMode","stackedHdr","cnt","abort","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","clean","hValueAccer","headerValueAccessor","checkAllWrap","buildAttributeFromCell","matchFlColumns","customAttributes","extendPrepareHeader","headerTempID","str","clipMode","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","renderer","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","emptyRow","setHeight","setPadding","refreshDataManager","preventUpdate","resetTemplates","bulkChanges","tempPreventUpdate","getSelectedRecords","tempSelectedRecord","dataLength","prevPageMoving","pagerModule","pagerObj","allowServerDataBinding","serverDataBind","detailTemplateID","toolbarTemplate","guid","refreshComplete","isFActon","isNeedForeignAction","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerFailure","deferred","foreignKey","fbool","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","isTrigger","spanCount","colspan","dynamicColumnChange","updateColumnType","equalTo","fmtr","validationRules","isColTypeDef","isServerDateMap","actionArgs","isInfiniteDelete","isInfiniteEnd","updatesOnInitialRender","isInitialLoad","agg","enableImmutableMode","alert","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","childKeys","complexCols","instantiateRenderer","addRenderer","GroupCaption","GroupCaptionEmpty","Expand","group0","groupN","addWhere","groups","curDm","curFilter","newQuery","rPredicate","updateGroupInfo","current","untouched","uGroup","itemGroup","uGroupItem","data_1","customAggregate","CellRendererFactory","cellRenderMap","ServiceLocator","services","register","isAdaptiveUI","RendererFactory","rendererMap","rName","PageSettings","ColumnChooserSettings","searchString","refreshSearch","onSearchComplete","actionCompleteFunc","cancelBeginEvent","ShowHide","showBy","getToggleFields","hideBy","finalized","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","persistSelection","colsInCurrentView","col1","col2","Scroll","lastScrollTop","oneTimeReady","uiupdate","toolbarModule","mHdrHeight","getScrollBarWidth","height_1","getRowHeight","ensureOverflow","scrollWidth","getThreshold","removePadding","hDiv","footerDiv","getFooterContent","getSiblingsHeight","appName","setScrollLeft","headerModule","getMovableHeader","onFrozenContentScroll","isPreventScrollEvent","onContentScroll","scrollTarget","isLeft","isDown","scrollDown","onCustomScrollbarScroll","onTouchScroll","pointerType","pageXY","getPointXY","scrollBar","setPageXY","touches","pageX","pageY","mScrollBar","sLeft","sHeight","css","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","isSelect","keyDownHandler","isMacLike","platform","metaKey","cellSelectionMode","clipBoardTextArea","x_1","scrollX","y_1","paste","getSelectedRowCellIndexes","cellIndexes","isAvail","cIdx","rIdx","frRows","dataRows","getCellFromIndex","fTr","mTr","frTr","getColumnByIndex","updateCell","selectCellsByRange","copy","setCopyData","withHeader","getSelection","getFrozenRightRows","selectedIndexes","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","rowIndexes","userAgent","isCell","splitKey","queryCommandSupported","execCommand","removeAllRanges","rowCellIndxes","gridObserver","BlazorAction","virtualHeight","onDetailRowClick","addDeleteSuccess","editSuccess","setColumnVisibility","setServerOffSet","modelChanged","onGroupClick","setColVTableWidthAndTranslate","invokeServerDataBind","contentColGroup","dataSourceModified","currentAction","editArgs","rIndex","gridRowId","gridRow","unshift","dataSuccess","virtualContentModule","activeKey","blzRowIndex","preventScroll","blazorDataLoad","foreignColumnsData","aggRows","aggRow","rowUid","offsetTime","sign","setClientOffSet","keyField","batchChanges","getMediaColumns","setVirtualHeight","removeDisplayNone","renderedContentRows","renderedContentCells","setVirtualTrackHeight","VisibleGroupedRowsCount","translateX","getColumnOffset","startColIndex","endColIndex","virtualEle","setWrapperWidth","adjustTable","dataSourceChanged","transform","refreshOffsets","refreshVirtualElement","parseJson","serverTimeZone","exactTopIndex","setPersistData","mergePersistGridData","resetPersistData","parseArgs","persistArgs","movableContentTable","movableHeaderTable","dataFailure","SortDescriptor","SortSettings","Predicate","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","Grid","keyA","frozenRightCount","frozenLeftCount","tablesCount","movableCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","isVirtualAdaptive","pageTemplateChange","mediaBindInstance","asyncTimeOut","enableLogger","needsID","Grid_1","Inject","ignoreOnPersist","selectedRowIndex","scrollPosition","currentObject","pagerTemplate","setFrozenCount","allowExcelExport","allowPdfExport","allowRowDragAndDrop","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","ignoreCollectionWatch","isExpanded","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Items","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","EndsWith","Contains","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Ungroup","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","ctrlDownArrow","ctrlUpArrow","ctrlPlusA","ctrlPlusP","delete","f2","ctrlEnter","shiftEnter","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","gcol","getShowHideService","pushMediaColumn","matchMedia","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","footerContent","checkboxColumn","checkboxMode","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","enableBoxSelection","enableAutoFill","checkCursor","requireRefresh","requireGridRefresh","isEllipsisTooltip","updateColumnObject","properties_1","updateAutoFillPosition","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","contextMenuModule","getContextMenu","columnMenuModule","getColumnMenu","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","isModeChg","pending_1","getPrototypeOf","deepWatch","pKeyField","setRowData","gResult","names","scrollRefresh","isSelectedRowIndexUpdating","setWidthToTable","enableVerticalRendering","fn_1","setTablesCount","frozenLeft","frozenRight","getTablesCount","headerCells","stdHdrCell","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","stackedHeader","individualColumn","stackedColumn","setColumnIndexesInView","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getFrozenRightRowByIndex","getRowInfo","rowsObject","getFrozenRightRowElements","getAllDataRows","includeAdd","getFrozenLeftContentTbody","addMovableRows","generateDataRows","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","setCellValue","fieldIdx","rowuID","pkName","selectedRow","movableSelectedRow","rowObjects","movableRowObjects","refreshTD","columnUid","rowsObj","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","isFrozenRight","getMovableRowsObject","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","selectedRecords","selectedRowCellIndexes","getSelectedColumnsUid","selectedColumnsIndexes","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","visibleFrozenColumns","goToPage","pageNo","isMultiSort","sortModule","clearSorting","removeSortColumn","isToggle","selectRows","selectCell","fieldname","addRecord","deleteRow","editCell","saveCell","updateRow","enableToolbarItems","clipboardModule","recalcIndentWidth","indentWidth","headerCol","contentCol","perPixel","parentOffset","applyWidth","newWidth","toFixed","resetIndentWidth","tgridWidth","getTableWidth","setMinwidthBycalculation","refreshFrozenScrollbar","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","sCols","sLen","parentDetails","initForeignColumn","rendererFactory","createGridPopUpElement","createTooltip","dataReady","gridLines","opensOn","getTooltipStatus","headerDivTag","htable","ctable","mouseMoveHandler","prevElement","elemNames","hoverFrozenRows","tag","myTableDiv","cssText","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","dblClickHandler","tapEvent","dataBoundFunction","blazorTemplate","isChildGrid","checkEdit","clonedColumn","filterClear","ariaOwns","keyPress","editFormValidate","persistedData","getLocalData","dataObj","isProtectedOnChange","keys_1","mergeColumns","storedColumn","storedColumns","_loop_2","localCol","tCol","this_2","presskey","altKey","collapse","focusHeader","addOutline","focusContent","injectedModules","refreshColumns","fCnt","frCnt","isColFrozen","getMovableContent","frTbl","getFrozenRightContent","colGrp","excelExport","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","groupModule","groupExpandAll","groupCollapseAll","openColumnChooser","detailCollapseAll","detailExpandAll","clearCellSelection","clearRowSelection","selectCells","rowCellIndexes","selectRowsByRange","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","previousRowData","hideScroll","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","clearTimeout","prefix","frozenRigtRows","frHdr","cntRows","getHiddenColumns","calculatePageSizeByParentHeight","containerHeight","pagesize","nonContentHeight","getNoncontentHeight","contentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","gridModel","getFormat","setHeaderText","gridInput","submit","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","batchUpdate","processRowChanges","batchAsyncUpdate","processBulkRowChanges","dataToBeUpdated","loopstring","assign","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","_loop_3","this_3","_loop_4","isRowExist","this_4","renderRowElement","mTbody","addRowObject","moveTbody","getHeight","isInteger","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","CHECK","FRAME","INDETERMINATE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","changeState","ariaState","frameSpan","getWrapper","indeterminate","changeEventArgs","updateVueArrayModel","labelMouseHandler","labelWrap","getElementsByTagName","SPINICON","SPINUP","SPINDOWN","INCREMENT","DECREMENT","INTREGEXP","DECIMALSEPARATOR","COMPONENT","NUMERIC_FOCUS","HIDDENELEMENT","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","ejInstance","angularTagName","formEle","attributeName","incrementTitle","decrementTitle","inputName","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","validateStep","updatePlaceholder","hiddenInput","showSpinButton","spinDown","spinUp","wireSpinBtnEvents","createWrapper","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","elementPrevValue","setNumber","stepValue","updatedCssClassValue","getNumericValidClassList","inputObj","updateHTMLAttrToWrapper","pro","numericClassName","numericStyle","MAX_VALUE","formattedValue","maximumFractionDigits","minimumFractionDigits","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","keyupEvent","setSpinButton","touchStartEvent","mouseDownOnSpinner","touchEndEvent","mouseUpOnSpinner","touchMoveEvent","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","isInteraction","beforeUpdate","numericRegex","preventHandler","iOS","currentPos","prevPos","ignoreKeyCode","valArray","numericObject","prevVal","cursorPosChanged","parseValue","numerictextboxObj","fireFox","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","exec","stepCount","roundValue","precision","divide","pow","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","formatNumber","serverDecimalSeparator","EXPREGEXP","decimalPart","result1","result2","cancelEvent","version","currentChar","fractionRule","validateDecimalOnType","mouseWheel","delta","rawEvent","wheelDelta","focusEventArgs","formatValue_1","isIos","blurEventArgs","focusEvent","getElementData","mouseUpClick","timeOut","elementFromPoint","clientX","clientY","floatLabelTypeUpdate","validateInputType","updateSpinButton","updateClearButton","propValue","CheckBoxFilterBase","foreignKeyQuery","filterState","cBoxTrue","cBoxFalse","keyupHandler","searchHandler","searchBoxKeyUp","fpred","foreignFilter","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","inputargs","spinner","dialogOpen","renderResponsiveFilter","filterTemplateCol","filterItemTemplate","check","ddlValue","isMenuNotEqual","searchInput","caseSen","defaults","isNotEqual","itemsCnt","coll","generateNullValuePredicates","initiateFilter","firstVal","foreignQuery","pred","predicte","parsed","addDistinct","filterChoiceCount","filterargs","excelSearchOperator","filterEvent","processSearch","getPredicateFromCols","isGrid","processDataOperation","filteredColumn","allPromise","runArray","fullData","args1","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","result_1","res","selectAll","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes","cBoxes_1","createCheckbox","dummyData","nullCounter","selectAllValue","isColFiltered","isRndere","args_1","getCheckedState","checkState","ejValue","lookup","foreignDataObj","generatePredicate","operate","updateDateFilter","getCaseValue","CellRenderer","rowChkBox","evaluate","fData","literals","rNumber","invokeFormatter","refreshCell","parentRow","newTD","cloneAttributes","source","displayAsCheckBox","localeStr","fromFormatter","checkWrap","isCheckBoxType","isTemplate","colindex","DESCRIPTORS","global","isForced","redefine","classof","inheritIfRequired","toPrimitive","fails","getOwnPropertyNames","NUMBER","NativeNumber","NumberPrototype","BROKEN_CLASSOF","toNumber","third","radix","maxCode","digits","it","NumberWrapper","ErrorOption","InlineEditRender","addNew","frTbody","frTbody_1","getEditElement","checkLastRow","mEle","renderMovableform","frEle","renderFrozenRightForm","frozenRightForm","appendChildren","renderRightFrozen","movableForm","renderMovable","updateFreezeEdit","getFreezeRow","getFreezeRightRow","cloneRow","tdElement","refreshFreezeEdit","fCls","frozen","cloneFrozen","mTd","frTd","refreshEditForm","updateFrozenCont","updateFrozenRightCont","gLen","td_1","isAdd","editTemplateID","setRules","formObj","rules","BatchEditRender","cloneCell","columnObject","newTd","DialogEditRender","setLocaleObj","createDialog","createDialogHeader","responsiveDlgRenderer","renderResponsiveHeader","getDialogEditTemplateElement","primaryKeyValue","allowDragging","dialogClose","adaptiveDlgTarget","dialogEditTemplates","dialogTemp","tempDiv","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","fForm","frForm","cols_1","focusElement","mTdElement","fTdElement","frTdElement","chkBox","onClick","isFocus","rowID","tArgs","tempData","ruleColumn","func","isInput","isIdentity","BooleanEditCell","activeClasses","classNames","selectChkBox","chkState","editRow","checkBoxChange","DropDownEditCell","isInline","ddActionComplete","dropdownCreated","dlgElement","NumericEditCell","instances","DefaultEditCell","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","primaryKeys","primaryKeyValues","virtualRow","begineditargs","editargs","originalRow","applyFormValidation","edFail","form1","validate","form2","mFormObj","form3","frFormObj","isDlg","dlgWrapper","dlgForm","virtualData","getCurrentEditedData","mhdrFrm","mCntFrm","mvblEle","frHdrFrm","frCntFrm","eleLength","endEditArgs","addedRowIndex","destroyElements","destroyWidgets","destroyForm","editHandler","edSucc","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","closeForm","isLastRow","checkboxOnly","needRefresh","editedRow","closeEditArgs","isLazyLoad","defaultValue","addArgs","dataLen","tmpRecord","contained","dataInString","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","editNext","preventSaveCell","onBeforeCellFocused","onCellFocused","dataBound","batchCancelFunction","batchCancel","editNextValCell","restoreFocus","setCellIdx","isAddRow","validateFormObj","byClick","clickArgs","frzRightCols","isContent","isLastCellPrimaryKey","editCellFromIndex","isAdded","allRows","isInsert","removeBatchElementChanges","prevRowIndex","refreshRowIdx","isInstertedRemoved","removeHideAndSelection","tdElements","bulkDelete","bulkAddRow","batchSave","replaceWith","checkAllBox","removeSelectedData","beforeBatchSaveArgs","insertedRow","removeRowObjectFromUID","isTop","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","out_j_1","dataObjects","getIndexFromData","defaultData","getDefaultData","beforeBatchAddArgs","removeFrozenTbody","renderFrozenAddRow","forgetPrevious","dRecords","btmIdx","findNextEditableCell","rightEle","isValOnly","validation","checkNPCell","dValues","editCellExtend","mRowData","getDataByIndex","getColIndex","getCellIdx","cellEditArgs","isColored","insertCell","setChanges","currentRowObj","movableRowObject","movRowEle","movRowIndex","frRowObject","rowcell","newReactTd","escapeCellEdit","generateCellArgs","successCallBack","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","visibleColumns","addCancelWhilePaging","DialogEdit","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","required","infoElement","selectQuery","localyMessage","defaultMessages","email","dateIso","creditcard","rangeLength","tel","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","name_1","clearForm","getInputElement","validClass","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","rule","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","clearEvents","excludeKeys","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","isValid","ignore","removeErrorRules","showMessage","createErrorElement","errorElement","optionalValidationStatus","refer","param","currentRule","checkValidator","ruleValue","formats","errorOption","Message","errorContainer","containerId","divElement","customPlacement","nextSibling","checkRequired","inputType","uNum","compareTo","Label","DatePickerEditCell","dateanddatetimerender","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","templteCell","editCellType","alertDObj","refreshToolbar","showConfirmDialog","showDeleteConfirmDialog","endEditing","getCurrentEditCellData","getValueFromType","destroyToolTip","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","preventBatch","actionBeginFunction","onActionBegin","actionCompleteFunction","actions","inputs","restrictedRequestTypes","preventObj","mForm","mRules","frRules","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFHdr","resetElemPosition","tdRight","elemRight","offSet","gcontent","validationForBottomRowPos","isScroll","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHeraderRows","inputClient","arrow","getEditCell","maxWidth","rowsCount","rowsHeight","AddEditors","editors","ResponsiveDialogRenderer","sortedCols","sortPredicate","closeCustomDialog","setCustomFilterHeader","refreshCustomFilterOkBtn","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","refreshCustomFilterClearBtn","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","filterClearBtn","getHeaderTitle","renderResponsiveContent","customColumnDiv","sortBtnParent","filteredCols","cDiv","isSort","getSortedFieldsAndDirections","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","columndiv","allowMultiSorting","isSortApplied","resetSortButtons","setSortedCols","getCurrentSortedFields","isRowResponsive","colDiv","isDialogClose","removeCustomDlgFilterEle","filteredCol","setTopToChildDialog","renderCustomFilterDialog","customFilterDlg","dialogEle","outerDiv","getDialogOptions","beforeDialogClose","sortField","closeCustomFilter","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","mainfilterdiv","destroyCustomFilterDialog","customEle","NumericContainer","pagerElement","renderNumericContainer","refreshNumericLinks","updateTotalPages","links","updateLinksHtml","updateStyles","link","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","totalPages","customText","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","firstPage","firstPageDisabled","prevPage","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","regx","Pager","hasParent","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","containerModule","pagerMessageModule","isReactTemplate","initLocalization","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","compile","setPageSize","pageSizes","newPageNo","oldPageNo","enableQueryString","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","uri","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","convertValue","dropDownListObject","onChange","beforeValueChange","pageSizeValue","ExternalMessage","externalMessage","Page","isInitialRender","pagerDestroy","dropDownChanged","onSelect","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isForceCancel","previousPage","keyActions","appendToElement","handlers","complete","updateLayout","inboundChange","__assign","t","Selection","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","factory","initializeSelection","fDataUpdate","getRowObj","hidePopUp","isEditing","getSelectedMovableRow","getSelectedFrozenRightRow","getCurrentBatchRecordChanges","added","deleted","currentRecords","enableSimpleMultiRowSelection","addRowsToSelection","selectedMovableRow","selectedFrozenRightRow","isRemoved","frozenData","getRowObjectByIndex","prevSelectedData","isRowType","isRowSelected","activeTarget","can","rowSelectingCallBack","isHybrid","isCtrlPressed","isShiftPressed","previousRow","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","frRow","mObj","previousMovRow","frozenRightRow","previousFrozenRightRow","getCollectionFromIndexes","isSingleSel","currentRow","prevRow","selectRowFn","rowIndexes_1","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","reverse","clearRowCallBack","updatePersistCollection","updateCheckBoxes","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","pKey","isPresent","checkedTarget","setCheckAllState","getPrevIndexes","mouseButton","clearColumnSelection","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","target_1","isRowClicked","checkSelectAllClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","cancl_1","rowDeselectObj","rowInString","target_2","rowidx","rowidxex","data_2","isHeaderCheckBxClick","rowIndex_2","data_3","getSelectedMovableCell","isCellType","selectedCell","isCellSelected","prevCIdxs","previousRowCell","prevECIdxs","getCellIndex","currentCell","previousRowCellIndex","cellSelectingArgs","cncl","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","stIndex","edIndex","getLastColIndex","addAttribute","cellSelectedArgs","isDragged","cellSelectArgs","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","cancl","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","rowCell","cLen","bdrElement","showHideBorders","gBRect","x1","y1","x2","y2","isCellDrag","shiftKey","startAFCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastCell","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","offsetParent","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","frcBdrElement","fhBdrElement","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","createBeforeAutoFill","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","startCellIndex","trIdx","mUPTarget","lastCell","updateStartCellsIndex","rindex","isFrozenCol","isFrozenRow","clientRect","colWidth","isDrag","enableDrag","postion","clearSelAfterRefresh","rowsRemoved","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","beforeFragAppend","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","gobj","chkField","refreshPersistSelection","setRowSelection","mtbody","frtbody","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","rowCache","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","checkToSelectAll","isServerRenderedVirtualization","checkedLen","spanEle","allowColumnSelection","popUpClickHandler","chkSelect","isEqualNode","headerSelectionHandler","isJump","isSelectable","headerAction","thLen","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","applySpaceSelection","allowNextRowEdit","innerColumn","getstackedColumns","lastIndex","firstIndex","applyUpDown","selectColumn","cIndex","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","isCanceled","columnDeselect","selectedHeader","getSelectedColumnCells","isRowTemplate","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteHandler","resizeEndFn","isInfinitecroll","ColumnWidthService","wFlag","totalColumnsWidth","setColumnWidth","tWidth","difference","tmWidth","collection_1","isWidthUndefined","setUndefinedColumnWidth","cWidth","getWidth","elementWidth","fWidth","isDraggable","freezeLeft","freezeRight","getColumnLevelFrozenColgroup","editTableCol","frzMode","frozenScrollbar","movableScrollbar","frozencontent","movableContent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getHeightFromDirection","sibling","isWidUndefCount","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","RIPPLE_CHECK","Switch","bar","handle","initialSwitchCheckedValue","onLabel","offLabel","setLabel","switchInner","rippleHandler","rippleTouchHandler","eventType","onText","offText","switchFocusHandler","switchMouseUp","delegateMouseUpHandler","delegateKeyUpHandler","SwitchComponent","SwitchPlugin","TooltipComponent","TooltipPlugin","ColumnsDirective","ColumnsPlugin","ColumnDirective","ColumnPlugin","AggregateColumnsDirective","AggregateColumnsPlugin","AggregateColumnDirective","AggregateColumnPlugin","AggregatesDirective","AggregatesPlugin","AggregateDirective","AggregatePlugin","GridComponent","GridPlugin","L10n","dropdowns","datetimepicker","daterangepicker","startLabel","endLabel","applyText","cancelText","selectedDays","customRange","uploader","invalidMinFileSize","invalidMaxFileSize","invalidFileType","Browse","Upload","dropFilesHint","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","inProgress","readyToUploadMessage","datepicker","loadCldr","numberingSystems","gregorian","numbers","timeZoneNames","weekData","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","isVirtualScroll","rowModelGen","focusCheck","setActive","enableHeaderFocus","matrix","generate","validator","passiveFocus","skipAction","getFocusInfo","elementToFocus","force","beforeArgs","clearOutline","onKeyPress","skipOn","bValue","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","setActiveByKey","lastIdxCell","th","inputTarget","focusVirtualElement","isCancel","isKeyFocus","empty","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","resetFocus","getInfo","focusedColumnUid","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","newMovableRows","newFrozenRows","newfrRows","handlerInstance","cellPosition","gridPosition","documentElement","passiveHandler","evts","filterfocus","actionsG","restoreFocusWithAction","internalCellFocus","getFocusable","Matrix","allow","emptyTable","inValid","vector","indexesByKey","getCurrentFromAction","editNextRow","visibleIndex","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","isData","isCellWidth","getGridSeletion","headerSwap","fMatrix","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","headerMat","non","METHOD_NAME","rowDataBound","queryCellInfo","headerCellInfo","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","beforePrint","printComplete","detailDataBound","toolbarClick","batchAdd","batchDelete","beforeBatchAdd","beforeBatchDelete","beforeBatchSave","beginEdit","cellEdit","cellSave","cellSaved","recordDoubleClick","recordClick","resizeStart","onResize","resizeStop","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","commandClick","exportGroupCaption","uiUpdate","inBoundModelChanged","headerRefreshed","pageComplete","sortComplete","filterComplete","searchComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","rowSelectionComplete","cellSelectionComplete","cellFocused","keyPressed","columnVisibilityChanged","scroll","columnWidthChanged","rowsAdded","columnDragStop","headerDrop","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","saveComplete","deleteComplete","dialogDestroy","crudAction","addDeleteAction","doubleTap","beforeExcelExport","excelExportComplete","excelQueryCellInfo","excelHeaderQueryCellInfo","exportDetailDataBound","freezeRender","filterOpen","filterDialogCreated","initForeignKeyColumn","getForeignKeyData","showEmptyGrid","dataStateChange","rtlUpdated","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","expandChildGrid","printGridInit","exportRowDataBound","exportDataBound","rowPositionChanged","batchForm","beforeStartEdit","beforeBatchCancel","batchEditFormRendered","partialRefresh","beforeCustomFilterOpen","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","beforeFltrcMenuOpen","valCustomPlacement","filterCboxValue","componentRendered","detailIndentCellInfo","virtaulCellFocus","virtualScrollEditActionBegin","virtualScrollEditSuccess","virtualScrollEditCancel","virtualScrollEdit","refreshVirtualCache","editReset","virtualScrollAddActionBegin","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","initialCollapse","closeFilterDialog","getFilterBarOperator","resetColumns","excelAggregateQueryCellInfo","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","nextCellIndex","refreshInfiniteCurrentViewData","filterDialogClose","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","refreshExpandandCollapse","rowModeChange","enterKeyHandler","refreshVirtualMaxPage","GroupModelGenerator","summaryModelGen","getGroupedRecords","ensureRowVisibility","parentid","childId","isRenderCaption","prevKey","captionRow","generateCaptionRow","rowCnt","isCaptionRow","aggregatesCount","getCaptionRowCells","visibles","groupedLen","generateIndentCell","captionCells","cIndex_1","tmpFlag","childID","childGid","gSummary","fkValue","cRow","selectedHandler","containerElement","resizeWestWidth","proxy","elementClass","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","RESIZE_HANDLER","FOCUSED_HANDLER","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","resizeEnd","setLeft","previousWidth","dialogBorderResize","createResize","resizeBegin","resizing","resizeComplete","getDOMElement","boundary","directions","setBorderResizeElm","resizeHandler","calculateValues","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseMove","onMouseUp","coordinates","changedTouches","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","containerTop","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","containerWidth","calculatedWidth","containerLeft","left_1","setMinHeight","minimumHeight","setMaxWidth","setMaxHeight","removeResize","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CONTENT","DLG_CLOSE_ICON","DLG_OVERLAY","DLG_TARGET","DLG_CONTAINER","SCROLL_DISABLED","DLG_PRIMARY_BUTTON","POPUP_ROOT","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_HIDE","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_REF_ELEMENT","Dialog","initRender","enableResize","setResize","getMinHeight","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","checkPositionData","prevOnChange","isNumberValue","isNumber","getEle","computedHeaderHeight","computedFooterHeight","footerEle","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","wireWindowResizeEvent","unWireWindowResizeEvent","keyDown","ftrTemplateContent","focusableElements","isTagName","isContentEdit","primaryButtonEle","buttonIndex_1","firstPrimary","setCSSClass","initialRender","setzIndex","calculatezIndex","setTargetContent","setHeader","renderCloseIcon","setContent","setButton","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","actionOnScroll","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragObj","isDragScroll","dragEventArgs","dragArea","buttonContent","buttonType","footerBtn","innerContentElement","HTMLElement","sanitizeHelper","toElement","templateProps","templateValue","fromElements","isString","dialogItem","beforeSanitize","beforeEvent","serializeValue","headerEle","join","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","getAutoFocusNode","validNode","elementMatch","webkitMatchesSelector","msMatchesSelector","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","positionX","positionY","zIndexElement","setPopupZindex","windowResizeHandler","classArray","fullScreen","beforeOpenArgs","beforeCloseArgs","closeAnimation","DialogUtility","alertDialogObj","dialogElement","okButtonModel","alertOptions","confirm","confirmDialogObj","okCancelButtonModel","confirmOptions","dialogObject","formOptions","setAlertButtonModel","setConfirmButtonModel","alertButtonModel","okButton","formButtonModel","cancelButtonModel","cancelButton","buttonPropModel","buttonProps","doesImplementInterface","checkFor","getUpdateUsingRaf","updateFunction","callBack","requestAnimationFrame","isExportColumns","updateColumnTypeForExportColumns","exportColumns","updatecloneRow","nRows","actualRows","getCollapsedRowsCount","total","dataRowCnt","agrCnt","gLevel","recursive","rCount","nLevel","iterateArrayOrObject","iterateExtend","getActualProperties","setStyleAndAttributes","copyAttr","extend","exclude","moved","setColumnIndex","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","isBottomTail","popUpSpan","getPopupLeftPosition","getPosition","parentsUntil","isID","inArray","getActualPropFromColl","getUid","calculateAggregate","Global","divNode","rect","isComplexField","getComplexFieldID","setComplexFieldID","isEditable","isOldRow","isActionPrevent","inst","wrap","clName","isServer","addRemoveActiveClasses","distinctStringValues","getFilterMenuPostion","elementVisible","newpos","dlgWidth","getZIndexCalcualtion","toogleCheckbox","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","getForeignData","lValue","fField","fdata","getDatePredicate","getColumnByForeignKeyValue","filterObject","datePredicate","nextDate","prevObj","nextObj","predicateSt","predicateEnd","isGroupAdaptive","object","splits","getCustomDateFormat","formatvalue","getExpandedState","printMode","getPrintGridModel","printGridModel","extendObjWithFn","deep","obj1","getPrototypesOfObj","i_1","cpy","cln","measureColumnDepth","checkDepth","indices","refreshFilteredColsUid","rootElement","alignFrozenEditForm","mTD","fTD","mHeight","fHeight","ispercentageWidth","percentageCol","undefinedWidthCol","resetRowIndex","rowElms","compareChanges","newArray","o","frozenRightRowElements","splitFrozenRowObjectCells","rightIndex","mvblIndex","mvblEndIdx","gridActionHandler","getGridRowObjects","getGridRowElements","sliceElements","getCellsByTableName","getCellByColAndRowIndex","setValidationRuels","getMovableTbody","getFrozenRightTbody","patternRegex","mtch_1","'","addBiggerDialog","dialogs","performComplexDataOperation","returnObj","duplicateMap","CellMergeRender","targetCell_1","colSpanLen","colSpanRange","spanText","containsKey","backupMergeCells","setMergeCells","generteKey","fname","getMergeCells","mCells","merge","getIndexFromAllColumns","vColumnIndices","predefinedItems","gridID","preItems_1","itemStr","localeName","ColumnChooser","responsiveFilter","responsiveSort","responsiveBack","createToolbar","addReactToolbarPortals","bindSearchEvents","searchElement","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","getResponsiveToolbarItems","clicked","toolbarClickHandler","viewStr","registerTemp","ID","renderResponsiveSearch","isRender","refreshResponsiveToolbarItems","isSearch","searchBoxObj","disableItems","hasData","toolbarItems_1","getItemObject","itemObject","items_2","gID","newArgs","toolbarargs","tarElement","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","isModelChanged","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","sortColumns","gObj_1","initiateSort","showPopUp","allowUnsort","enableSortMultiTouch","updateAriaAttr","isValDiff","makechanges","DropDownListComponent","DropDownListPlugin","HIDE_CLEAR","TEXTBOX_FOCUS","TextBox","isHiddenInput","isForm","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","isBlank","autocomplete","multiline","textarea","apiAttributes","attrs_1","autoCompleteTxt","getInputValidClassList","initialValue","setInitialValue","inputClassName","resetForm","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","addIcon","icons"],"mappings":"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CrCE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,aAAS,GACtCE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,mBAAe,GAC5CE,EAAW,CACP,eAAS,KACVohK,EAAethK,UAAW,sBAAkB,GAC/CE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,sBAAkB,GAC/CE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,gBAAY,GACzCE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,eAAW,GACxCE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,uBAAmB,GAChDE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,yBAAqB,GAClDE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,cAAU,GACvCE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,gBAAY,GACzCE,EAAW,CACP,eAAS,OACVohK,EAAethK,UAAW,oBAAgB,GAC7CE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,kBAAc,GAC3CE,EAAW,CACP,gBAAS,IACVohK,EAAethK,UAAW,6BAAyB,GACtDE,EAAW,CACP,eAAS,UACVohK,EAAethK,UAAW,sBAAkB,GAC/CE,EAAW,CACP,kBACDohK,EAAethK,UAAW,eAAW,GACxCE,EAAW,CACP,kBACDohK,EAAethK,UAAW,iBAAa,GAC1CE,EAAW,CACP,kBACDohK,EAAethK,UAAW,cAAU,GACvCE,EAAW,CACP,kBACDohK,EAAethK,UAAW,aAAS,GACtCE,EAAW,CACP,kBACDohK,EAAethK,UAAW,YAAQ,GACrCshK,EAAiBphK,EAAW,CACxB,QACDohK,GACIA,EA5xCwB,CA6xCjC,S,kCCh1CF,0KAiBI+H,EAAoC,WAKpC,SAASA,EAAmBnvJ,GACxBpa,KAAK0lH,kBAAoB,GACzB1lH,KAAKwpK,gBAAkB,IAAI,OAE3BxpK,KAAKypK,aAAc,EACnBzpK,KAAK88B,OAAS,GACd98B,KAAKqjI,aAAc,EACnBrjI,KAAK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","file":"js/calendars~param~param2~param3~people~requests~security.2f69e486.js","sourcesContent":["var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\n// tslint:disable-next-line\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar RTL = 'e-rtl';\nvar LINK = 'e-day';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar CLOSEDURATION = 200;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousElementValue = '';\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.isBlazorServer = false;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n this.renderComplete();\n if (!this.isBlazorServer) {\n this.setTimeZone(this.serverTimezoneOffset);\n }\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n if (!this.isBlazorServer) {\n this.checkInvalidValue(this.value);\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput();\n }\n else {\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + DATEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n this.setAllowEdit();\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function () {\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n if (!this.isBlazorServer) {\n this.disabledDates();\n }\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n this.updateInputValue('');\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n ;\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // tslint:disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n ;\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString)) {\n if (this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler), this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.dateIconHandler));\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && (this.inputWrapper.clearButton || (this.isBlazorServer))) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.updateInputValue('');\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n if (!this.isBlazorServer) {\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n }\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n // tslint:enable\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n // tslint:enable\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isCalendar() && !this.isBlazorServer) {\n this.hide(e);\n }\n else {\n if (!this.isBlazorServer || (this.isBlazorServer && this.inputWrapper.container.nextElementSibling)) {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[key];\n }\n }\n else {\n setStyle = this.htmlAttributes[key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.CalendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function (e) {\n this.isPopupClicked = false;\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: isBlazor() && this.isServerRendered ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.CalendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(e.target) ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper'))\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value) && !this.isBlazorServer)) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (this.getModuleName() === 'datepicker') {\n if (!this.isBlazorServer) {\n this.show(null, e);\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n // tslint:enable\n }\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (!this.isBlazorServer) {\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnStrictModeUpdate', this.inputElement.value);\n // tslint:enable\n }\n this.hide(e);\n break;\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (!this.isBlazorServer) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value) && !this.isBlazorServer) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === '') {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.calendarElement = this.popupWrapper.firstElementChild;\n this.tableBodyElement = select('tbody', this.calendarElement);\n this.contentElement = select('.e-content', this.calendarElement);\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.isBlazorServer ? null : this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.CalendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.CalendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value && !_this.isBlazorServer) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!this.isBlazorServer) {\n this.popupObj.element.className += ' ' + this.cssClass;\n }\n this.setAriaAttributes();\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.selectCalendar(event);\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /**\n * Shows the Calendar.\n * @returns void\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +this.min && +this.value <= +this.max)) {\n outOfRange = new Date(this.checkValue(this.value));\n if (!this.isBlazorServer) {\n this.setProperties({ 'value': null }, true);\n }\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n }\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = 'auto';\n _this.popupWrapper.style.height = 'auto';\n }\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n if (!_this.isBlazorServer) {\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n // tslint:disable\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n }\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n * @returns void\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: isBlazor() && this.isServerRendered ? null : this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n var closeAnimation = {\n name: 'FadeOut',\n duration: CLOSEDURATION,\n };\n if (!this.isBlazorServer) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n }\n else {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n this.isAltKeyPressed = false;\n this.popupWrapper = this.popupObj = null;\n }\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n var focusArguments = {\n model: this\n };\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /**\n * Gets the current view of the DatePicker.\n * @returns string\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n * @returns void\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (!this.isBlazorServer) {\n _super.prototype.destroy.call(this);\n this.keyboardModules.destroy();\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n }\n var ariaAttrs = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n if (!this.isBlazorServer) {\n this.keyboardModule.destroy();\n }\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n detach(this.inputWrapper.container);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'datepicker') ? true : false;\n if (!this.isBlazorServer) {\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n }\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.isBlazorServer) {\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n }\n };\n ;\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = isBlazor() ? this.format.replace(/tt/, 'a') : this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic) && !this.isBlazorServer) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic) && !this.isBlazorServer) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic) && !this.isBlazorServer) {\n var placeholder = this.inputElement.getAttribute(prop);\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'name':\n if (!this.isBlazorServer) {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic) && !this.isBlazorServer) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text' && !this.isBlazorServer) {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function () {\n var valueCopy;\n var formatOptions;\n var globalize;\n valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!this.isBlazorServer) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isBlazorServer) {\n if (this.isCalendar()) {\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var id = (focusedEle || selectedEle) ? (focusedEle || selectedEle).getAttribute('id') : 'null';\n attributes(this.inputElement, { 'aria-activedescendant': '' + id });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n else {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !(+new Date(+this.value).setMilliseconds(0) >= +this.min\n && +new Date(+this.value).setMilliseconds(0) <= +this.max))\n || (!this.strictMode && this.inputElement.value !== '' && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var options;\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.checkInvalidValue(newProp.value);\n }\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (!this.isBlazorServer) {\n if (isNullOrUndefined(this.value)) {\n this.updateInputValue('');\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput();\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n }\n this.isInteracted = true;\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement && !this.isBlazorServer) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (!this.isBlazorServer) {\n this.updateInput();\n }\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n default:\n if (this.calendarElement && !this.isBlazorServer) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nexport var properties = ['cssClass', 'currency', 'currencyCode', 'decimals', 'enablePersistence', 'enableRtl', 'enabled', 'floatLabelType', 'format', 'htmlAttributes', 'locale', 'max', 'min', 'placeholder', 'readonly', 'showClearButton', 'showSpinButton', 'step', 'strictMode', 'validateDecimalOnType', 'value', 'width', 'blur', 'change', 'created', 'destroyed', 'focus'];\nexport var modelProps = ['value'];\n/**\n * Represents the Essential JS 2 VueJS NumericTextBox Component\n * ```html\n * \n * ```\n */\nvar NumericTextBoxComponent = /** @class */ (function (_super) {\n __extends(NumericTextBoxComponent, _super);\n function NumericTextBoxComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new NumericTextBox({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n NumericTextBoxComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n NumericTextBoxComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n NumericTextBoxComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n NumericTextBoxComponent.prototype.decrement = function (step) {\n return this.ej2Instances.decrement(step);\n };\n NumericTextBoxComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n NumericTextBoxComponent.prototype.focusOut = function () {\n return this.ej2Instances.focusOut();\n };\n NumericTextBoxComponent.prototype.getText = function () {\n return this.ej2Instances.getText();\n };\n NumericTextBoxComponent.prototype.increment = function (step) {\n return this.ej2Instances.increment(step);\n };\n NumericTextBoxComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], NumericTextBoxComponent);\n return NumericTextBoxComponent;\n}(ComponentBase));\nexport { NumericTextBoxComponent };\nexport var NumericTextBoxPlugin = {\n name: 'ejs-numerictextbox',\n install: function (Vue) {\n Vue.component(NumericTextBoxPlugin.name, NumericTextBoxComponent);\n }\n};\n","import { Draggable, Droppable, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, closest, remove, classList, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { parentsUntil, isActionPrevent, isGroupAdaptive, updatecloneRow } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @class */ (function () {\n /**\n * Constructor for Grid group module\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(events.columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, 'e-gridcontent') || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, 'e-gridcontent') || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup(e);\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n // tslint:disable-next-line\n var grouped = [].slice.call(_this.element.querySelectorAll('.e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[c]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.querySelectorAll('.e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function (e) {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering) {\n this.animateDropper(e);\n }\n var gObj = this.parent;\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n e.target.classList.contains('e-groupdroparea') ? this.element.classList.add('e-hover') : this.element.classList.remove('e-hover');\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var gObj = this.parent;\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.groupComplete, this.onActionComplete, this);\n this.parent.on(events.ungroupComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.columnDrag, this.columnDrag, this);\n this.parent.on(events.columnDragStart, this.columnDragStart, this);\n this.parent.on(events.headerDrop, this.columnDrop, this);\n this.parent.on(events.columnDrop, this.columnDrop, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.sortComplete, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.groupAggregates, this.onGroupAggregates, this);\n this.parent.on('blazor-action-begin', this.blazorActionBegin, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.groupComplete, this.onActionComplete);\n this.parent.off(events.ungroupComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.columnDrag, this.columnDrag);\n this.parent.off(events.columnDragStart, this.columnDragStart);\n this.parent.off(events.columnDrop, this.columnDrop);\n this.parent.off(events.headerDrop, this.columnDrop);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.sortComplete, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.groupAggregates, this.onGroupAggregates);\n this.parent.off('blazor-action-begin', this.blazorActionBegin);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.blazorActionBegin = function () {\n if (this.parent.allowGrouping && !this.parent.isCollapseStateEnabled()) {\n this.expandAll();\n }\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.onEmpty, this.initialEnd);\n if (isBlazor() && gObj.isServerRendered) {\n for (var i = 0; i < gObj.columns.length; i++) {\n this.removeColFromGroupDrop(gObj.columns[i].field);\n }\n this.updateGroupDropArea();\n }\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector('tbody').children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-detailrow')) {\n grpRow = rows[i];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null)) {\n return;\n }\n var element = this.focus.getFocusedElement();\n var row = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row) {\n break;\n }\n this.expandCollapseRows(row);\n break;\n case 'ctrlSpace':\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n column.field && gObj.groupSettings.columns.indexOf(column.field) < 0 ?\n this.groupColumn(column.field) : this.ungroupColumn(column.field);\n }\n break;\n }\n };\n Group.prototype.clickHandler = function (e) {\n this.expandCollapseRows(e.target);\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).querySelectorAll('.e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var cellIdx = trgt.cellIndex;\n var rowIdx = trgt.parentElement.rowIndex;\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var rows = [].slice.call(rowNodes).slice(rowIdx + 1, rowNodes.length);\n var isHide = void 0;\n var expandElem = void 0;\n var dataManager = void 0;\n var query = void 0;\n var toExpand = [];\n var gObj = this.parent;\n var indent = trgt.parentElement.querySelectorAll('.e-indentcell').length;\n var expand = false;\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', {\n uid: trgt.parentElement.getAttribute('data-uid'),\n isExpand: trgt.classList.contains('e-recordpluscollapse')\n });\n return;\n }\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n expand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].querySelectorAll('td')[cellIdx] &&\n rows[i].querySelectorAll('td')[cellIdx].classList.contains('e-indentcell') && rows) {\n if (isHide) {\n rows[i].style.display = 'none';\n }\n else {\n if (rows[i].querySelectorAll('.e-indentcell').length === indent + 1) {\n rows[i].style.display = '';\n expandElem = rows[i].querySelector('.e-recordplusexpand');\n if (expandElem) {\n toExpand.push(expandElem);\n }\n if (rows[i].classList.contains('e-detailrow')) {\n if (rows[i - 1].querySelectorAll('.e-detailrowcollapse').length) {\n rows[i].style.display = 'none';\n }\n }\n }\n }\n }\n else {\n break;\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n for (var i = 0, len = toExpand.length; i < len; i++) {\n removeClass([toExpand[i]], 'e-recordplusexpand');\n addClass([toExpand[i]], 'e-recordpluscollapse');\n toExpand[i].firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n this.expandCollapseRows(toExpand[i]);\n }\n }\n };\n Group.prototype.updateVisibleexpandCollapseRows = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].isDataRow && this.parent.getRowElementByUID(rows[i].uid).style.display === 'none') {\n rows[i].visible = false;\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(events.refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (isBlazor() && this.parent.isCollapseStateEnabled()) {\n this.parent.notify('group-expand-collapse', { isExpand: isExpand });\n return;\n }\n if (!isExpand) {\n this.parent.notify(events.initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector('tbody').children;\n var row;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[i].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row = rowNodes[i].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row) {\n row.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n row.firstElementChild.className = isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' :\n 'e-icons e-gnextforward e-icon-grightarrow';\n }\n if (!(rowNodes[i].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[i].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[i].style.display = isExpand ? '' : 'none';\n }\n }\n this.updateVisibleexpandCollapseRows();\n this.parent.notify(events.refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n * @return {Element}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * @return {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n if (isBlazor() && gObj.isServerRendered) {\n var setVisible = [];\n setVisible[0] = column;\n this.parent.notify('setvisibility', setVisible);\n }\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[i].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n gObj.sortSettings.columns = gObj.sortSettings.columns;\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n * @return {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var gObj = this.parent;\n var i = 0;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var gObj = this.parent;\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: events.actionComplete\n } : { requestType: 'ungrouping', type: events.actionComplete };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[i].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n this.parent.sortSettings.columns = this.parent.sortSettings.columns;\n }\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[i].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode \n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': 'Drag the grouped column' }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'ungroup button' }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'sort the grouped column' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: isBlazor() ? this.l10n.getConstant('UnGroupButton') : this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': 'ungroup the grouped column' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n var index = this.groupSettings.columns.indexOf(field);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n if (this.groupSettings.allowReordering\n && this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']')) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.querySelectorAll('.e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n //Todo: rtl \n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': 'Separator for the grouped columns' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[i].classList.contains('e-emptycell')) || (headers[i].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[i].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[i].querySelectorAll('.e-grptogglebtn').length) {\n remove(headers[i].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[i].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' +\n (this.groupSettings.columns.indexOf(column.field) > -1 ? 'e-toggleungroup e-icon-ungroup'\n : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1', 'aria-label': 'Group button' }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[j].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[i];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[i]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[prop].length ? 'grouping' : 'ungrouping',\n type: events.actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: events.actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[prop].indexOf(columns[i]) === -1) {\n this.parent.getColumnByField(columns[i]).visible = true;\n }\n }\n }\n var requestType = 'requestType';\n if (isBlazor() && this.parent.isServerRendered && this.parent.isCollapseStateEnabled() &&\n args[requestType] === 'grouping') {\n this.parent.refreshHeader();\n }\n this.parent.notify(events.modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n this.groupSettings.showDropArea ? this.element.style.display = '' : this.element.style.display = 'none';\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(events.modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[i]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.querySelectorAll('.' + className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[i].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n * @return {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.isDestroyed && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.removeEventListener();\n this.refreshToggleBtn(true);\n remove(this.element);\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[i]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function (e) {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[i].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[i].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[i].field) && this.getGHeaderCell(cols[i].field).querySelectorAll('.e-groupsort').length) {\n if (cols[i].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[i].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[i]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[i]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row) { return !row.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row = updateSummaryRows[i];\n var cells = row.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row.data, dataUid: summaryRows[i] ? summaryRows[i].uid : '' };\n this.parent.notify(events.refreshAggregateCell, args);\n }\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row) {\n if (row.edit === 'delete') {\n deletedCols.push(row.data);\n }\n return row.changes instanceof Object ? row.changes : row.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[i]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row = aggregateRows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var aggr = {};\n var type = row.columns[k].type.toString();\n aggr = { type: type.toLowerCase(), field: row.columns[k].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[l], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n if (row.uid === uid || isNullOrUndefined(uid)) {\n row.isExpand = isExpand;\n var _loop_1 = function (j) {\n var childRow = rows[j];\n var closestParent = void 0;\n if (childRow.parentUid !== row.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row.uid) {\n childRow.visible = row.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_1 = _loop_1(j);\n if (state_1 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(events.contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\nexport { Group };\n","import { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n * @return {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n * @return {Query}\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[i].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n this.groupQuery(query);\n return query;\n };\n /** @hidden */\n Data.prototype.aggregateQuery = function (query, isForeign) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[j];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var gObj = this.parent;\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n var fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[i].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[i].direction === 'string') {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[i].field);\n query.sortByForeignKey(sortGrp[i].field, sortGrp[i].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @return {Promise}\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[promise] = crud;\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n if (isBlazor()) {\n return crud.then(function (result) {\n return _this.insert(query, args);\n }).catch(function (e) {\n return null;\n });\n }\n else {\n return crud.then(function (result) {\n return _this.insert(query, args);\n });\n }\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function (e) {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var gObj = this.parent;\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(events.crudAction, args);\n };\n /** @hidden */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var state = void 0;\n state = this.getStateEventArgument(query);\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var data = 'data';\n if (isBlazor() && this.parent.isServerRendered) {\n for (var i = 0; i < changes[changedRecords].length; i++) {\n var args = { data: changes[changedRecords][i] };\n this.parent.notify('offset', args);\n changes[changedRecords][i] = args[data];\n }\n for (var i = 0; i < changes[addedRecords].length; i++) {\n var args = { data: changes[addedRecords][i] };\n this.parent.notify('offset', args);\n changes[addedRecords][i] = args[data];\n }\n }\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /** @hidden */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value, index) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var state;\n var dataArgs = args;\n state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function (e) {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n * @return {string[]}\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\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 { Component, EventHandler, Internationalization, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n * @param {CalendarModel} options?\n * @param {string|HTMLElement} element?\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n * @returns void\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'role': 'calendar'\n });\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '' } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = (isBlazor() ? 'days.' : 'days.stand-alone.') + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n var shortNames;\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n shortNames = this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek);\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n if (!(isBlazor() && ref)) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n }\n else {\n this.element = document.getElementById(id);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n }\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.blazorRef = ref;\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.checkDeviceMode = function (ref) {\n if (Browser.isDevice && isBlazor() && ref) {\n // tslint:disable-next-line\n ref.invokeMethodAsync('OnDevice', true);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n if (isBlazor() && this.blazorRef) {\n e.preventDefault();\n if (!this.tableBodyElement) {\n this.element = closest(e.target, '.' + 'e-calendar');\n this.tableBodyElement = this.element.querySelector('tbody');\n }\n multiSelection = false;\n }\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n if (isBlazor() && this.blazorRef) {\n this.tableBodyElement.focus();\n var targetEle = e.target;\n var args = {\n Action: e.action, Key: e.key, Events: e,\n SelectDate: selectedDate ? selectedDate.id : null,\n FocusedDate: focusedDate ? focusedDate.id : null,\n classList: selectedDate ? selectedDate.classList.toString() : focusedDate ? focusedDate.classList.toString() : 'e-cell',\n Id: focusedDate ? focusedDate.id : selectedDate ? selectedDate.id : null,\n TargetClassList: targetEle.classList.toString()\n };\n // tslint:disable-next-line\n this.blazorRef.invokeMethodAsync('OnCalendarKeyboardEvent', args);\n if (targetEle.classList.contains('e-today')) {\n targetEle.blur();\n this.tableBodyElement.focus();\n }\n if (this.serverModuleName === 'sf.calendars.Calendar') {\n this.tableBodyElement = null;\n }\n }\n else {\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.KeyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.KeyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.KeyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.KeyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.KeyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.KeyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n (view === 0) ? this.renderMonths(e) : ((view === 1) ? this.renderYears(e) : this.renderDecades(e));\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n }\n };\n CalendarBase.prototype.KeyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n ;\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var numCells = this.weekNumber ? 8 : 7;\n // 8 and 7 denotes the number of columns to be specified.\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n var numberOfDays = void 0;\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'D' : 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n if (date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var days;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n var disabled = (this.min > localDate) || (this.max < localDate);\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'MMM' : null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: isBlazor() ? 'F' : 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n ;\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n if (multiSelection && !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0])) {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n this.createContentHeader();\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n prop === 'min' ? this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true) :\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.setProperties({ start: this.currentView() }, true);\n detach(this.tableBodyElement);\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n this.createContentBody();\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n this.createContentHeader();\n this.createContentBody();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.createContentHeader();\n this.createContentBody();\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n /* tslint:disable-next-line:max-line-length */\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: isBlazor() ? 'd' : 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: isBlazor() ? 'yyyy' : null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'D' : 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: isBlazor() ? 'y' : 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: isBlazor() ? 'yyyy' : null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) ?\n this.element.setAttribute('tabindex', this.tabIndex) : this.element.removeAttribute('tabindex');\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /**\n * Gets the current view of the Calendar.\n * @returns string\n */\n CalendarBase.prototype.currentView = function () {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.gregorian.days.format.') + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = (isBlazor() ? '.dates.days.' :\n '.dates.calendars.islamic.days.format.') + this.dayHeaderFormat.toLowerCase();\n var mainVal = isBlazor() ? '' : 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n ;\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: isBlazor() ? 'F' : 'full', calendar: type };\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.getFromatStringValue = function () {\n return isBlazor() ?\n // tslint:disable-next-line\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n /* tslint:disable-next-line:max-line-length */\n var localDateString = this.globalize.formatDate(dates, {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n /* tslint:disable-next-line:max-line-length */\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: this.getFromatStringValue(), type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var month;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n ;\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n * @param {CalendarModel} options?\n * @param {string|HTMLElement} element?\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n * @returns void\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n this.setEnable(this.enabled);\n if (this.getModuleName() === 'calendar') {\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n else if (!isNullOrUndefined(this.timezone)) {\n var date = this.value || new Date();\n this.setProperties({ value: _super.prototype.getDate.call(this, date, this.timezone) }, true);\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (value) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: _super.prototype.getDate.call(this, tempValue, this.timezone) }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n ;\n /**\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns void\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /**\n * Gets the current view of the Calendar.\n * @returns string\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n * @param {Date || Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns void\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n * @param {Date || Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns void\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n * @private\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (+this.value !== +this.previousDate || this.previousDate == null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\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 { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { updateBlazorTemplate, resetBlazorTemplate, isBlazor, remove, select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n return _this;\n }\n ;\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n ;\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === value.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n this.DropDownBaseresetBlazorTemplates(false, false, true, true);\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // tslint:disable-next-line\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, !actionFailure, actionFailure, false, false, false, false);\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n }\n else {\n ele.innerHTML = content;\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n ;\n DropDownBase.prototype.getTextByValue = function (value) {\n var text;\n text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (isBlazor() && isNullOrUndefined(value) || value === 'null') {\n return null;\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return (value === 'true');\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n this.enableRtl ? addClass(this.enableRtlElements, dropDownBaseClasses.rtl) :\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n };\n ;\n /**\n * Initialize the Component.\n */\n DropDownBase.prototype.initialize = function () {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n };\n ;\n DropDownBase.prototype.DropDownBaseupdateBlazorTemplates = function (item, group, noRecord, action, value, header, footer, isEmpty) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n updateBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.groupTemplate && group) {\n updateBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.noRecordsTemplate && noRecord) {\n updateBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY, this, isEmpty);\n }\n if (this.actionFailureTemplate && action) {\n updateBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (value) {\n updateBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY, this, isEmpty);\n }\n if (header) {\n updateBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY, this);\n }\n if (footer) {\n updateBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY, this);\n }\n }\n };\n DropDownBase.prototype.DropDownBaseresetBlazorTemplates = function (item, group, noRecord, action, value, header, footer) {\n if (!this.isStringTemplate) {\n if (this.itemTemplate && item) {\n resetBlazorTemplate(this.itemTemplateId, ITEMTEMPLATE_PROPERTY);\n }\n if (this.groupTemplate && group) {\n resetBlazorTemplate(this.groupTemplateId, GROUPTEMPLATE_PROPERTY);\n }\n if (this.noRecordsTemplate && noRecord) {\n resetBlazorTemplate(this.noRecordsTemplateId, NORECORDSTEMPLATE_PROPERTY);\n }\n if (this.actionFailureTemplate && action) {\n resetBlazorTemplate(this.actionFailureTemplateId, ACTIONFAILURETEMPLATE_PROPERTY);\n }\n if (value) {\n resetBlazorTemplate(this.valueTemplateId, VALUETEMPLATE_PROPERTY);\n }\n if (header) {\n resetBlazorTemplate(this.headerTemplateId, HEADERTEMPLATE_PROPERTY);\n }\n if (footer) {\n resetBlazorTemplate(this.footerTemplateId, FOOTERTEMPLATE_PROPERTY);\n }\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ;\n /**\n * Sets the enabled state to DropDownBase.\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n var items = element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n * @private\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.list], dropDownBaseClasses.noData);\n };\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n this.listData = list;\n if (isBlazor() && this.isServerRendered && this.getModuleName() === 'listbox') {\n remove(this.list.querySelector('.e-list-parent'));\n remove(this.list.querySelector('.e-hidden-select'));\n }\n else {\n // tslint:disable-next-line \n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.list.innerHTML = '';\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n };\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n }\n else {\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n }\n this.DropDownBaseupdateBlazorTemplates(false, true, false, false, false, false, false, false);\n }\n };\n /**\n * To create the ul li list items\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n ;\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n ;\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n prepend([this.fixedHeaderElement], this.list);\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = e.target;\n var liHeight = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = e.target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n /**\n * To render the list items\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n var isTempEmpty = (this.getModuleName() === 'listbox') ? true : false;\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false, false, false, false, isTempEmpty);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n ;\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n ;\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n this.list.parentElement.style.display = 'block';\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n }\n var liWidth = this.liCollections[0].offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n ;\n /**\n * To dispatch the event manually\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n this.setListData(dataSource, fields, query);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n * @private\n */\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n ;\n /**\n * Build and render the component\n * @private\n */\n DropDownBase.prototype.render = function (isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n this.setEnabled();\n if (!isEmptyData) {\n this.initialize();\n }\n };\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n ;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var compiledString = compile(this.itemTemplate);\n // tslint:disable-next-line\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.list.appendChild(this.ulElement);\n this.liCollections = liCollections;\n append(liCollections, this.ulElement);\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n _super.prototype.destroy.call(this);\n };\n ;\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"enabled\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]] } items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, isBlazor) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () { queryString = ''; }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches[index];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n i === -1 ? index = 0 : index = i;\n item = listItems[index];\n if (isBlazor) {\n text = ignoreCase ? item.textContent.trim().toLowerCase() : item.textContent.trim();\n }\n else {\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n }\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches[0];\n }\n}\nexport function Search(inputVal, items, searchType, ignoreCase) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var item = itemsData[i];\n var text = (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr)) {\n itemData.item = item;\n itemData.index = i;\n return { item: item, index: i };\n }\n }\n return itemData;\n }\n return itemData;\n}\n","var __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 { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /** @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /** @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || options.format.format)) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', isBlazor() ? ' ' : 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'columns') {\n col[keys[i]] = [];\n for (var j = 0; j < _this[keys[i]].length; j++) {\n col[keys[i]].push(_this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = _this[keys[i]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function comparer(x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /** @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /** @hidden */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /** @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /** @hidden */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact && keys[i] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid);\n }\n }\n };\n /**\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /** @hidden */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /** @hidden */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /** @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /** @hidden */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /** @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /** @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /** @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\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})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[i].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid) || (this.parent.isRowDragable() && !start)) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[i], data[i], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel(raw);\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.isRowDragable()) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n if (isBlazor() && this.parent.isServerRendered && !isNullOrUndefined(parentUid)) {\n row.uid = this.parent.getRowUid('grid-row');\n }\n else {\n row.uid = getUid('grid-row');\n }\n row.parentUid = parentUid;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n var key = '';\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[i].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function (data) {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[i].toLowerCase();\n var disp = column.columnName;\n var val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[disp].field = group.field;\n single[disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar ButtonsDirective = /** @class */ (function (_super) {\n __extends(ButtonsDirective, _super);\n function ButtonsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ButtonsDirective.prototype.render = function () {\n return;\n };\n ButtonsDirective = __decorate([\n EJComponentDecorator({})\n ], ButtonsDirective);\n return ButtonsDirective;\n}(Vue));\nexport { ButtonsDirective };\nexport var ButtonsPlugin = {\n name: 'e-buttons',\n install: function (Vue) {\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n/**\n * 'e-button' directive represent a button of Vue Dialog\n * It must be contained in a Dialog component(`ejs-dialog`).\n * ```html\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar DialogButtonDirective = /** @class */ (function (_super) {\n __extends(DialogButtonDirective, _super);\n function DialogButtonDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DialogButtonDirective.prototype.render = function () {\n return;\n };\n DialogButtonDirective = __decorate([\n EJComponentDecorator({})\n ], DialogButtonDirective);\n return DialogButtonDirective;\n}(Vue));\nexport { DialogButtonDirective };\nexport var DialogButtonPlugin = {\n name: 'e-dialogbutton',\n install: function (Vue) {\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ButtonsDirective, DialogButtonDirective, ButtonsPlugin, DialogButtonPlugin } from './buttons.directive';\nexport var properties = ['allowDragging', 'animationSettings', 'buttons', 'closeOnEscape', 'content', 'cssClass', 'enableHtmlSanitizer', 'enablePersistence', 'enableResize', 'enableRtl', 'footerTemplate', 'header', 'height', 'isModal', 'locale', 'minHeight', 'position', 'resizeHandles', 'showCloseIcon', 'target', 'visible', 'width', 'zIndex', 'beforeClose', 'beforeOpen', 'beforeSanitizeHtml', 'close', 'created', 'destroyed', 'drag', 'dragStart', 'dragStop', 'open', 'overlayClick', 'resizeStart', 'resizeStop', 'resizing'];\nexport var modelProps = ['visible'];\n/**\n * Represents the VueJS Dialog component\n * ```html\n * \n * ```\n */\nvar DialogComponent = /** @class */ (function (_super) {\n __extends(DialogComponent, _super);\n function DialogComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = false;\n _this.tagMapper = { \"e-buttons\": \"e-dialogbutton\" };\n _this.tagNameMapper = {};\n _this.ej2Instances = new Dialog({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n DialogComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n DialogComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n DialogComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n DialogComponent.prototype.getButtons = function (index) {\n return this.ej2Instances.getButtons(index);\n };\n DialogComponent.prototype.hide = function (event) {\n return this.ej2Instances.hide(event);\n };\n DialogComponent.prototype.refreshPosition = function () {\n return this.ej2Instances.refreshPosition();\n };\n DialogComponent.prototype.show = function (isFullScreen) {\n return this.ej2Instances.show(isFullScreen);\n };\n DialogComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], DialogComponent);\n return DialogComponent;\n}(ComponentBase));\nexport { DialogComponent };\nexport var DialogPlugin = {\n name: 'ejs-dialog',\n install: function (Vue) {\n Vue.component(DialogPlugin.name, DialogComponent);\n Vue.component(DialogButtonPlugin.name, DialogButtonDirective);\n Vue.component(ButtonsPlugin.name, ButtonsDirective);\n }\n};\n","/**\n * AriaService\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[i]], options[props[i]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\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 { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n * @param options - Specifies Toolbar model properties as options.\n * @param element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end',\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n * @returns void.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n }\n this.clearProperty();\n this.popObj = null;\n this.tbarAlign = null;\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'aria-haspopup', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n };\n /**\n * Initialize the event handler\n * @private\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.element.setAttribute('tabIndex', '0');\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) {\n detach(el);\n });\n }\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n if (this.tbarAlign) {\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n // tslint:disable-next-line:max-line-length\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n var ele = void 0;\n var nodes = void 0;\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst) || (value === 'next' && popEle.lastElementChild === clst)) {\n return;\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n this.element.removeAttribute('tabindex');\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var clst;\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns void.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n value ? rootEle.classList.add(CLS_DISABLE) : rootEle.classList.remove(CLS_DISABLE);\n rootEle.setAttribute('tabindex', !value ? '0' : '-1');\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', !value ? '0' : '-1');\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n // tslint:disable-next-line:max-line-length\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el);\n // tslint:enable-next-line:max-line-length\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var clsList = trgt.classList;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n ;\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false', 'aria-haspopup': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical',\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[i], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[i], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[i].align.toLowerCase());\n if (innerPos) {\n if (!(items[i].showAlwaysInPopup && items[i].overflow !== 'Show')) {\n this.tbarAlgEle[(items[i].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n var portals = 'portals';\n // tslint:disable-next-line:no-any\n this.notify('render-react-toolbar-template', this[portals]);\n this.renderReactTemplates();\n }\n };\n /** @hidden */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n * @returns void.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('tabIndex', '0');\n this.element.querySelector('.' + CLS_TBARNAV).setAttribute('role', 'list');\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var eleInlineItem;\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[i].offsetLeft < 30 && eleItem[i].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[i].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[i].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[index]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[i];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var eleHeight;\n var eleItem;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS)) {\n ele = element.querySelector('#' + element.id + '_popup.' + CLS_POPUPCLASS);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n popup.appendTo(ele);\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n this.element.setAttribute('aria-haspopup', 'true');\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n isOpen ? this.add(this.element, CLS_EXTENDEDPOPOPEN) : this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n };\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[i];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n popObj.refreshPosition();\n }\n };\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[i]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[i] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[i], [CLS_POPPRI]) && popPriority) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset = (inEle[i].offsetTop + inEle[i].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset = (inEle[i].offsetLeft + inEle[i].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[i].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[i];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[i].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[i], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[i].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[i], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[i], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[i].offsetHeight : inEle[i].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'list');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n ele.setAttribute('aria-haspopup', 'false');\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var checkOverflow;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[index].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n this.enableRtl ? innerItem[2].style.top = popWid : innerItem[2].style.bottom = popWid;\n }\n else {\n this.enableRtl ? innerItem[2].style.left = popWid : innerItem[2].style.right = popWid;\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n this.enableRtl ? innerItem[1].style.marginBottom = mrgn : innerItem[1].style.marginTop = mrgn;\n }\n else {\n this.enableRtl ? innerItem[1].style.marginRight = mrgn : innerItem[1].style.marginLeft = mrgn;\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[i];\n keyVal === 'class' ? this.add(element, attr[keyVal]) : element.setAttribute(keyVal, attr[keyVal]);\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns void.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[a];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[a] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n isEnable ? removeClass(elements, CLS_DISABLE) : addClass(elements, CLS_DISABLE);\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[index]) {\n return this.tbarEle[index];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n * @param {ItemsModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns void.\n\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[algIndex];\n ele.insertBefore(innerEle, ele.children[index]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[index]);\n }\n this.items.splice(index, 0, item);\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns void.\n\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[index] && innerItems[index]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[index]);\n if (this.tbarAlign) {\n var indexAgn = void 0;\n indexAgn = this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].indexOf(this.tbarEle[eleIdx]);\n this.tbarAlgEle[(this.items[eleIdx].align + 's').toLowerCase()].splice(indexAgn, 1);\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(innerItems[index]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n var e = void 0;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n item.id ? (ele.id = item.id) : (ele.id = getUniqueID('tbr-ipt'));\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n item.id ? (dom.id = item.id) : dom.id = getUniqueID('e-tbr-btn');\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var innerEle;\n var dom;\n innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', '-1');\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', '-1');\n }\n this.activeEle = curEle;\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', '0');\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n * @returns string\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n * @param {ToolbarModel} newProp\n * @param {ToolbarModel} oldProp\n * @returns void\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array) && !this.isServerRendered) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var property = Object.keys(newProp.items[index])[0];\n var newProperty = Object(newProp.items[index])[property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[index].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n detach(itemCol[index]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[index]], index);\n this.items.splice(index, 1);\n if (this.items[index].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n var wid = tEle.offsetWidth;\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.add(tEle, CLS_RTL) : this.remove(tEle, CLS_RTL);\n if (!isNOU(this.scrollModule)) {\n newProp.enableRtl ? this.add(this.scrollModule.element, CLS_RTL) : this.remove(this.scrollModule.element, CLS_RTL);\n }\n if (!isNOU(this.popObj)) {\n newProp.enableRtl ? this.add(this.popObj.element, CLS_RTL) : this.remove(this.popObj.element, CLS_RTL);\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns void.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var initIndex;\n var ele;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[eleIndex]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[eleIndex];\n }\n if (ele) {\n value ? ele.classList.add(CLS_HIDDEN) : ele.classList.remove(CLS_HIDDEN);\n if (value && isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex'))) {\n ele.firstElementChild.setAttribute('tabindex', '-1');\n var innerItems_2 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n eleIndex = innerItems_2.indexOf(ele);\n }\n var nextEle = innerItems_2[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n nextEle.firstElementChild.removeAttribute('tabindex');\n break;\n }\n nextEle = innerItems_2[++eleIndex];\n }\n }\n }\n else if (isNOU(this.element.getAttribute('tabindex')) && !ele.classList.contains(CLS_SEPARATOR)) {\n initIndex = 0;\n var setFlag = false;\n var removeFlag = false;\n var initELe = innerItems[initIndex];\n while (initELe) {\n if (!initELe.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(initELe.firstElementChild.getAttribute('tabindex'))) {\n initELe.firstElementChild.setAttribute('tabindex', '-1');\n setFlag = true;\n }\n else {\n if (setFlag && removeFlag) {\n break;\n }\n var skipEle = this.eleContains(initELe);\n if (!skipEle) {\n initELe.firstElementChild.removeAttribute('tabindex');\n removeFlag = true;\n }\n initELe = innerItems[++initIndex];\n }\n }\n else {\n initELe = innerItems[++initIndex];\n }\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","'use strict';\nvar $ = require('../internals/export');\nvar $trim = require('../internals/string-trim').trim;\nvar forcedStringTrimMethod = require('../internals/string-trim-forced');\n\n// `String.prototype.trim` method\n// https://tc39.es/ecma262/#sec-string.prototype.trim\n$({ target: 'String', proto: true, forced: forcedStringTrimMethod('trim') }, {\n trim: function trim() {\n return $trim(this);\n }\n});\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { addClass, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren } from '../base/util';\n/**\n * `CommandColumn` used to render command column in grid\n * @hidden\n */\nvar CommandColumnRenderer = /** @class */ (function (_super) {\n __extends(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n role: 'gridcell', tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', 'is Command column column header ' + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes.index, command[uid]);\n }\n }\n this.setAttributes(node, cell, attributes);\n if (this.parent.isEdit) {\n addClass(node.querySelectorAll('.e-edit-delete'), 'e-hide');\n removeClass(node.querySelectorAll('.e-save-cancel'), 'e-hide');\n }\n else {\n addClass(node.querySelectorAll('.e-save-cancel'), 'e-hide');\n removeClass(node.querySelectorAll('.e-edit-delete'), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\nexport { CommandColumnRenderer };\n","import { closest, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { click, keyPressed, commandClick, initialEnd } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport { CommandColumnRenderer } from '../renderer/command-column-renderer';\nimport { getUid } from '../base/util';\n/**\n * `CommandColumn` used to handle the command column actions.\n * @hidden\n */\nvar CommandColumn = /** @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var gID = gObj.element.id;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row = gObj.getRowObjectFromUID(closest(target, '.e-row').getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].commands) {\n var commandCols = cols[i].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (isBlazor() && !gObj.isJsComponent && commandCols[j][idInString] === uid) {\n commandColumn = commandCols[j];\n type = commandCols[j][typeInString];\n }\n else if (commandCols[j][idInString] === uid && commandCols[j][typeInString] === type) {\n commandColumn = commandCols[j];\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row) ? undefined : row.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute('aria-rowindex'), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n * @method destroy\n * @return {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n if (isBlazor() && !this.parent.isJsComponent) {\n return;\n }\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[i].commands) {\n var commandCol = col[i].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[j][uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\nexport { CommandColumn };\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/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\n/* tslint:disable */\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n// don't use space in classnames \nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n ;\n /**\n * Initialize the event handler.\n * @private\n */\n DropDownList.prototype.preRender = function () {\n var checkBlazor = isBlazor() && this.isServerRendered;\n this.isServerBlazor = (checkBlazor) ? true : false;\n if (this.isServerBlazor) {\n this.initializeData();\n }\n else {\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n }\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (isEmptyData) {\n if (!this.isServerBlazor) {\n _super.prototype.render.call(this, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n this.inputElement.value = '';\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n htmlAttr === 'placeholder' ? Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputElement) :\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ;\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n ;\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return this.inputWrapper.container;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n ;\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlur = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlur, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlur);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n */\n DropDownList.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n ;\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n if (!this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.isServerIncrementalSearch = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var classList = target.classList;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n ;\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n ;\n DropDownList.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n ;\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = (this.isServerBlazor && this.popupObj && this.popupObj.element) ?\n this.popupObj.element.querySelectorAll('.' + dropDownBaseClasses.hover) :\n this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n ;\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n ;\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id, this.isServerBlazor);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n ;\n /**\n * Hides the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n * @returns void.\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (!(this.isServerBlazor && (e.action === 'open' || e.action === 'space')) && isNullOrUndefined(this.list) ||\n (!isNullOrUndefined(this.liCollections) && isNavigation && this.liCollections.length === 0) || this.isRequested) {\n if (!(this.isServerBlazor && isNavAction)) {\n return;\n }\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup();\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else {\n var nextItem = void 0;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n }\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n if (this.isServerBlazor && isNullOrUndefined(this.list)) {\n this.isServerNavigation = true;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', true, false);\n }\n else {\n this.isServerNavigation = false;\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup();\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n ;\n DropDownList.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n */\n DropDownList.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n ;\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup();\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup();\n }\n var proxy_1 = this;\n var duration = (isBlazor()) ? 1000 : (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () { proxy_1.cloneElements(); proxy_1.isSecondClick = true; }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (_this.isServerBlazor) {\n // tslint:disable-next-line\n _this.interopAdaptor.invokeMethodAsync('OnServerItemData', _this.itemData);\n }\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerItemData', this.itemData);\n }\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n if (isBlazor() && dataItem.text !== null || dataItem.text !== '') {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.isServerBlazor) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerValueTemplate', dataItem);\n }\n if (this.valueTemplate && this.itemData !== null && !this.isServerBlazor) {\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, true);\n this.setValueTemplate();\n }\n else if (this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if (this.isPopupOpen) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n if (this.isFilterLayout() && this.filterInput) {\n attributes(this.filterInput, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n attributes(this.inputElement, { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id });\n this.targetElement().removeAttribute('aria-live');\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n var exception = void 0;\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n this.valueTempElement.innerHTML = '';\n var templateData = (isBlazor()) ? JSON.parse(JSON.stringify(this.itemData)) : this.itemData;\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // tslint:disable-next-line\n var valueCompTemp = compiledString(templateData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, true, true, true);\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n ;\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n ;\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n if (this.isServerBlazor && this.enablePersistence) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('ServerChange');\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.isServerBlazor && this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n else if (!this.isServerBlazor) {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow \n case 40: //down arrow \n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow \n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab \n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.getModuleName() === 'combobox' && this.isFiltering() && !this.beforePopupOpen)\n ? !this.beforePopupOpen : this.beforePopupOpen;\n if (this.filterInput.value === '' && this.getModuleName() !== 'dropdownlist') {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, false);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n }\n else {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n }\n };\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n if (this.isServerBlazor) {\n parentElement.innerHTML = '';\n }\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null,\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlur, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n ;\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.updateValues();\n this.initRemoteRender = false;\n this.initial = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var checkVal = list.some(function (x) { return x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n });\n }\n }\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }, 0);\n }\n else {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index != null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n ;\n DropDownList.prototype.renderPopup = function () {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = (_this.serverPopupEle) ? _this.serverPopupEle : _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate && !_this.isServerBlazor) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate && !_this.isServerBlazor) {\n _this.setFooterTemplate(popupEle);\n }\n if (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer')) {\n popupEle.appendChild(popupEle.querySelector('.e-ddl-footer'));\n }\n document.body.appendChild(popupEle);\n _this.updateServerPopup(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-header'))) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate || (_this.isServerRendered && popupEle && popupEle.querySelector('.e-ddl-footer'))) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (Browser.isDevice && _this.isFilterLayout()) {\n EventHandler.add(_this.list, 'scroll', _this.listScroll, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true' });\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = (isBlazor() && _this.isServerRendered) ? null : _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.serverBlazorUpdateSelection();\n _this.bindServerScrollEvent();\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.serverBlazorUpdateSelection = function () {\n if (this.isServerBlazor && (this.value !== null || this.index !== null || this.text !== null) ||\n (this.getModuleName() !== 'dropdownlist' && !this.isTyped)) {\n if (this.getModuleName() === 'dropdownlist') {\n this.removeSelection();\n this.removeFocus();\n this.removeHover();\n this.updateValues();\n }\n if (this.getModuleName() === 'combobox' && this.ulElement &&\n this.findListElement(this.ulElement, 'li', 'data-value', this.value) && !this.isTyped) {\n this.updateValues();\n }\n if (this.isServerBlazor && this.getModuleName() !== 'dropdownlist' &&\n (this.text === '' || this.text === null) && this.ulElement) {\n if (!this.ulElement.querySelector('li').classList.contains(dropDownBaseClasses.hover)) {\n addClass([this.ulElement.querySelector('li')], dropDownBaseClasses.hover);\n }\n }\n }\n };\n DropDownList.prototype.bindServerScrollEvent = function () {\n if (this.isServerBlazor && this.list) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n }\n };\n DropDownList.prototype.updateServerPopup = function (popupEle) {\n if (this.isServerBlazor) {\n if (popupEle && popupEle.querySelector('li')) {\n removeClass([popupEle.querySelector('.e-content')], ['e-nodata']);\n }\n this.initial = false;\n popupEle.removeAttribute('style');\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // tslint:disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.DropDownBaseresetBlazorTemplates(isResetItem, isResetItem, true, true, false, true, true);\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n var formElement = closest(_this.inputElement, 'form');\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.listScroll = function () {\n this.filterInput.blur();\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n EventHandler.remove(this.list, 'scroll', this.listScroll);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlur);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false', 'aria-activedescendant': null });\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = (isBlazor() && this.isServerRendered) ? null : this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete' && !_this.isServerBlazor) {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n var popupHolderEle = select('#' + this.element.id + '_popup_holder', document);\n if (this.isServerBlazor && this.serverPopupEle && popupHolderEle) {\n popupHolderEle.appendChild(this.serverPopupEle);\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerClosePopup');\n }\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n // tslint:disable-next-line\n DropDownList.prototype.render = function () {\n if (this.isServerBlazor) {\n this.inputElement = this.element;\n this.inputWrapper = { container: this.element.parentElement };\n this.hiddenElement = this.inputWrapper.container.querySelector('select');\n this.inputWrapper.buttons = [this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon')];\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.inputWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.element);\n }\n Input.bindInitialEvent({\n element: this.element,\n buttons: null, customTag: null,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n });\n this.setFields();\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n this.initial = false;\n }\n else {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) { e.stopImmediatePropagation(); };\n this.inputElement.onchange = function (e) { e.stopImmediatePropagation(); };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n };\n ;\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // tslint:disable-next-line\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, false, true);\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // tslint:disable-next-line\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n this.DropDownBaseupdateBlazorTemplates(false, false, false, false, false, true, false);\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n * @private\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.isServerBlazor) {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'width':\n this.setEleWidth(newProp.width);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n break;\n case 'readonly':\n if (this.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this.inputElement);\n }\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var li = this.getElementByText(newProp.text);\n if (!this.checkValidLi(li)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (!this.isServerBlazor) {\n this.setOldText(oldProp.text);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this.clearAll();\n break;\n }\n this.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender) {\n var item = this.getElementByValue(newProp.value);\n if (!this.checkValidLi(item)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (!this.isServerBlazor) {\n this.setOldValue(oldProp.value);\n }\n }\n this.updateInputFields();\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this.clearAll();\n break;\n }\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n if (!this.initRemoteRender && this.liCollections) {\n var element = this.liCollections[newProp.index];\n if (!this.checkValidLi(element)) {\n if (this.liCollections && this.liCollections.length === 100 &&\n this.getModuleName() === 'autocomplete' && this.listData.length > 100) {\n this.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else if (!this.isServerBlazor) {\n this.index = oldProp.index;\n }\n }\n this.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this.popupObj) {\n this.setFooterTemplate(this.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this.popupObj) {\n this.setHeaderTemplate(this.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this.itemData) && this.valueTemplate != null) {\n this.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.actionCompleteData = { ulElement: this.ulElement,\n list: this.listData, isUpdated: true };\n this.updateSelectElementData(this.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, newProp.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.inputElement, this.inputWrapper, null, this.createElement);\n this.bindClearEvent();\n break;\n default:\n var ddlProps = void 0;\n ddlProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, ddlProps.newProperty, ddlProps.oldProperty);\n break;\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name.\n * @private\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n */\n DropDownList.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (isBlazor() && this.itemTemplate) {\n this.DropDownBaseupdateBlazorTemplates(true, false, false, false);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList();\n }\n else if (this.isFiltering() && this.isServerBlazor) {\n this.renderList();\n }\n if (!this.isServerBlazor) {\n this.invokeRenderPopup();\n }\n var popupHolderEle = !this.isFiltering() || select('#' + this.element.id + '_popup_holder', document);\n var isDropdownComp = this.getModuleName() === 'dropdownlist' || !this.isFiltering();\n if (this.isServerBlazor && popupHolderEle && !isNullOrUndefined(this.list) && isDropdownComp) {\n this.invokeRenderPopup();\n }\n };\n DropDownList.prototype.invokeRenderPopup = function () {\n if (Browser.isDevice && this.isFilterLayout()) {\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.renderPopup();\n }\n attributes(this.targetElement(), { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n };\n DropDownList.prototype.clientRenderPopup = function (data, popupEle) {\n if (popupEle) {\n this.serverPopupEle = popupEle;\n this.list = popupEle.querySelector('.e-dropdownbase.e-content') ?\n popupEle.querySelector('.e-dropdownbase.e-content') : this.list;\n this.ulElement = this.list.querySelector('ul');\n if (isNullOrUndefined(this.ulElement) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n addClass([this.list], [dropDownBaseClasses.noData]);\n }\n this.liCollections = this.ulElement ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li) : [];\n this.listData = data;\n if (this.getModuleName() === 'autocomplete' && this.liCollections.length > 0) {\n this.renderHightSearch();\n }\n this.initRemoteRender = false;\n if (!this.isPopupOpen) {\n this.serverBlazorUpdateSelection();\n }\n this.unWireListEvents();\n this.wireListEvents();\n if (this.isServerIncrementalSearch && this.searchKeyEvent) {\n this.isServerIncrementalSearch = false;\n this.initial = false;\n this.onServerIncrementalSearch(this.searchKeyEvent);\n }\n if (this.isServerNavigation && this.searchKeyEvent) {\n if (this.searchKeyEvent.action === 'down' || this.searchKeyEvent.action === 'up') {\n this.isServerNavigation = false;\n this.updateUpDownAction(this.searchKeyEvent);\n }\n else if (this.searchKeyEvent.action === 'home' || this.searchKeyEvent.action === 'end') {\n this.isServerNavigation = false;\n this.updateHomeEndAction(this.searchKeyEvent);\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup();\n }\n if (this.getModuleName() !== 'dropdownlist') {\n this.onActionComplete(this.ulElement, this.listData);\n }\n }\n else if (data != null && this.listData !== data) {\n this.listData = data;\n this.initRemoteRender = false;\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search \n };\n DropDownList.prototype.updateclientItemData = function (data) {\n this.listData = data;\n };\n DropDownList.prototype.initValueItemData = function (selectData) {\n this.itemData = selectData;\n this.previousValue = this.value;\n this.initial = false;\n };\n DropDownList.prototype.serverUpdateListElement = function (data, popupEle) {\n this.listData = data;\n if (this.ulElement) {\n this.liCollections = this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n }\n };\n /**\n * Hides the popup if it is in an open state.\n * @returns void.\n */\n DropDownList.prototype.hidePopup = function (e) {\n var isHeader = (this.headerTemplate) ? true : false;\n var isFooter = (this.headerTemplate) ? true : false;\n this.DropDownBaseresetBlazorTemplates(false, false, false, false, false, isHeader, isFooter);\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup();\n var dataItem = this.getItemData();\n var isSelectVal = this.isServerBlazor ? !isNullOrUndefined(this.value) : !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /**\n * Sets the focus on the component for interaction.\n * @returns void.\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n */\n DropDownList.prototype.focusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n * @method destroy\n * @return {void}.\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n // tslint:disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (!this.isServerBlazor || (this.popupObj && document.body.contains(this.popupObj.element))) {\n this.hidePopup();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n if (this.isServerBlazor) {\n if ((this.fields.groupBy) && !this.isGroupChecking) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n }\n }\n if (!this.isServerBlazor) {\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'aria-placeholder',\n 'placeholder', 'aria-owns', 'aria-labelledby', 'aria-haspopup', 'aria-expanded',\n 'aria-activedescendant', 'autocomplete', 'aria-readonly', 'autocorrect',\n 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n _super.prototype.destroy.call(this);\n }\n };\n ;\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\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})();\n/**\n * Worksheets class\n * @private\n */\nvar Worksheets = /** @class */ (function (_super) {\n __extends(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\nexport { Worksheets };\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})();\n/**\n * Worksheet class\n * @private\n */\nvar Worksheet = /** @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\nexport { Worksheet };\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\nexport { HyperLink };\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\nexport { Grouping };\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\nexport { FreezePane };\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\nexport { MergeCell };\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @class */ (function (_super) {\n __extends(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\nexport { MergeCells };\n","/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\nexport { CellStyle };\n/**\n * Font Class\n * @private\n */\nvar Font = /** @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n }\n return Font;\n}());\nexport { Font };\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\nexport { CellXfs };\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\nexport { Alignment };\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\nexport { CellStyleXfs };\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\nexport { CellStyles };\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\nexport { NumFmt };\n/**\n * Border class\n * @private\n */\nvar Border = /** @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\nexport { Border };\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\n}());\nexport { Borders };\n","/**\n * Column class\n * @private\n */\nvar Column = /** @class */ (function () {\n function Column() {\n }\n return Column;\n}());\nexport { Column };\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})();\n/**\n * Row class\n * @private\n */\nvar Row = /** @class */ (function () {\n function Row() {\n }\n return Row;\n}());\nexport { Row };\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @class */ (function (_super) {\n __extends(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var r = _a[_i];\n if (r.index === row.index) {\n _this[count] = row;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(row);\n }\n };\n return _this;\n }\n return Rows;\n}(Array));\nexport { Rows };\n","/**\n * Image class\n * @private\n */\nvar Image = /** @class */ (function () {\n function Image() {\n }\n return Image;\n}());\nexport { Image };\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})();\n/**\n * Worksheet class\n * @private\n */\nvar Cell = /** @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\nexport { Cell };\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\nexport { Cells };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","import { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","import { CompressedStreamWriter } from './compression-writer';\nimport { Save } from '@syncfusion/ej2-file-utils';\nvar CRC32TABLE = [];\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n return ZipArchive;\n}());\nexport { ZipArchive };\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\nexport { ZipArchiveItem };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization } from '@syncfusion/ej2-base';\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","import { ValueFormatter } from './value-formatter';\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n CsvHelper.prototype.saveAsBlob = function () {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\nexport { CsvHelper };\n","/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\nexport { BlobHelper };\n","/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\nexport { AutoFilters };\n","import { Worksheets } from './worksheets';\nimport { Worksheet, FreezePane, MergeCell, MergeCells, HyperLink, Grouping } from './worksheet';\nimport { CellStyle, Font, Borders, CellXfs, Alignment, NumFmt, CellStyleXfs, CellStyles } from './cell-style';\nimport { Column } from './column';\nimport { Row, Rows } from './row';\nimport { Image } from './image';\nimport { Cell, Cells } from './cell';\nimport { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { CsvHelper } from './csv-helper';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { BlobHelper } from './blob-helper';\nimport { AutoFilters } from './auto-filters';\n/**\n * Workbook class\n */\nvar Workbook = /** @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n var curCellIndex = 0;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n curCellIndex = (cell.index + 1);\n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + value.substring(0, startindex) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + text + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n var index = 0;\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n var globalStyleIndex = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n var imageId = 0;\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n Workbook.prototype.saveAsBlob = function (blobSaveType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageFile = new BlobHelper();\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\nexport { Workbook };\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\nexport { BuiltInProperties };\n","import { Row } from './../models/row';\nimport { CellType } from '../base/enum';\nimport { isNullOrUndefined, Internationalization, getValue, createElement } from '@syncfusion/ej2-base';\nimport { Cell } from '../models/cell';\nimport { ValueFormatter } from './../services/value-formatter';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getForeignData, measureColumnDepth, getUid } from '../base/util';\nimport { Grid } from '../base/grid';\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @class */ (function () {\n function ExportHelper(parent) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[i];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[startIndex]) {\n options.isExpand = gObj.expandedRows[startIndex].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[i].dataSource) ?\n new DataManager(fColumns[i].dataSource.result) :\n fColumns[i].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[j].field] = e[j].result;\n }\n // tslint:disable-next-line:no-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[i] = new Row({});\n rows[i].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[i].commands) {\n rows = this.appendGridCells(columns[i], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[i].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[i], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[i].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[i], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n // tslint:disable-next-line:no-any\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[exportId] = false;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[i].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[i]);\n }\n }\n return actualGridColumns;\n };\n return ExportHelper;\n}());\nexport { ExportHelper };\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n /* tslint:disable-next-line:no-any */\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /* tslint:disable-next-line:no-any */\n ExportValueFormatter.prototype.formatCellValue = function (args, isServerBlaz) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat({ format: args.column.format })(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = isServerBlaz ? { type: 'date', format: cFormat } : { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = isServerBlaz ? { type: 'time', format: cFormat } : { type: 'time', skeleton: cFormat };\n }\n else {\n format = isServerBlaz ? { type: 'dateTime', format: cFormat } : { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n var customFormat = void 0;\n if (args.column.type === 'date') {\n /* tslint:disable-next-line:max-line-length */\n customFormat = { type: args.column.format.type, format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\nexport { ExportValueFormatter };\n","import * as events from '../base/constant';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { isNullOrUndefined, getEnumValue, compile, getValue, detach, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Data } from '../actions/data';\nimport { ExportHelper, ExportValueFormatter } from './export-helper';\nimport { SummaryModelGenerator, GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { CellType } from '../base/enum';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { getPrintGridModel, getUid, isExportColumns, updateColumnTypeForExportColumns, prepareColumns, measureColumnDepth } from '../base/util';\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n * @hidden\n */\n function ExcelExport(parent, locator) {\n /* tslint:disable-next-line:no-any */\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isElementIdChanged = false;\n this.foreignKeyData = {};\n this.gridPool = {};\n this.sheet = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {isCsv} isCsv - true if export to CSV.\n * @return {Promise}\n */\n /* tslint:disable-next-line:max-line-length */\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob\n };\n gObj.trigger(events.beforeExcelExport, args);\n if (args[cancel]) {\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[isBlb];\n if (args[csv]) {\n this.isCsvExport = args[csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[isMultiEx], args[workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(events.excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n this.sheet.images = [];\n };\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n if (!(exportProperties.dataSource instanceof DataManager)) {\n exportProperties.dataSource = new DataManager(exportProperties.dataSource);\n }\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve, reject) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(events.actionFailure, e);\n });\n });\n }\n };\n /* tslint:disable-next-line:max-func-body-length */\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n /* tslint:disable-next-line:max-line-length */\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n /* tslint:disable-next-line:no-any */\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var autoFilters = {\n row: colDepth, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isBlazor() && gObj.isServerRendered) {\n _this.book.isServerRendered = gObj.isServerRendered;\n }\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n /* tslint:disable-next-line:max-line-length */\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj);\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n /* tslint:disable-next-line:max-line-length */\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource) && !(exportProperties.dataSource instanceof DataManager)) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, exportProperties.dataSource, excelRows, helper);\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(events.exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n if (!isNullOrUndefined(currentViewRecords)) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n /* tslint:disable-next-line:no-any */\n ExcelExport.prototype.processGroupedRows = function (gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n /* tslint:disable-next-line:no-any */\n var cell = {};\n cell.index = index + level;\n var col = gObj.getColumnByField(item.field);\n /* tslint:disable-next-line:no-any */\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn(),\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel' };\n this.parent.trigger(events.exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, dataSource.level + dataSource.childLevels, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n /* tslint:disable-next-line:no-any */\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level), true);\n }\n }\n };\n /* tslint:disable-next-line:max-func-body-length */\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[c];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n /* tslint:disable-next-line:no-any */\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(events.excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n /* tslint:disable-next-line:no-any */\n var excelImage = {\n image: excelCellArgs.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n this.sheet.images.push(excelImage);\n templateRowHeight = excelCellArgs.image.height || 50;\n this.columns[idx - 1].width = excelCellArgs.image.width || this.columns[idx - 1].width;\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[styleIndex], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n /* tslint:disable-next-line:no-any */\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength < 8 && level > 0) {\n excelRow.grouping = { outlineLevel: level, isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if (!isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(events.exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(events.exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[i].grouping = { outlineLevel: intent + childGridObj.childGridLevel,\n isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n // tslint:disable-next-line:max-line-length\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n // tslint:disable-next-line:max-line-length\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n /* tslint:disable-next-line:no-any */\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell\n };\n this.parent.trigger(events.excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n var level = excelRows[excelRows.length - 1][dummyGrouping][dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return txt[0].textContent;\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON1[attrname[index]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[index] !== 'name') {\n result[attrname[index]] = JSON2[attrname[index]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[row].cells.length; column++) {\n /* tslint:disable-next-line:no-any */\n var style = {};\n var cell = {};\n var gridCell = gridRows[row].cells[column];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(events.excelHeaderQueryCellInfo, excelHeaderCellArgs);\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n excelRows.push({ index: this.rowLength++, cells: cells });\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[col], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[row];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[cellId];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[row];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n /**\n * To destroy the excel export\n * @return {void}\n * @hidden\n */\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\nexport { ExcelExport };\n","import { Browser } from \"@syncfusion/ej2-base\";\r\n\r\nexport default {\r\n computed: {\r\n isMobileDevice() {\r\n return Browser.isDevice;\r\n },\r\n\r\n permissions() {\r\n var perm = null;\r\n var menu = this.$store.getters.userPermissions;\r\n if (menu != undefined && menu != null && menu.length > 0) {\r\n perm = menu.find(\r\n el => el.route.toLowerCase() == this.$route.fullPath.toLowerCase()\r\n );\r\n }\r\n return perm;\r\n },\r\n\r\n commands() {\r\n var canEdit = this.hasPermission(\"CanEdit\");\r\n var canView = this.hasPermission(\"CanView\");\r\n var canDelete = this.hasPermission(\"CanDelete\");\r\n\r\n var cssEdit = canEdit\r\n ? \"e-flat e-noback editar\"\r\n : \"e-flat e-noback not-allowed editar\";\r\n var cssView = canView\r\n ? \"e-flat e-noback consultar\"\r\n : \"e-flat e-noback not-allowed consultar\";\r\n var cssDelete = canDelete\r\n ? \"e-flat e-noback eliminar\"\r\n : \"e-flat e-noback not-allowed eliminar\";\r\n\r\n return [\r\n {\r\n type: \"Consultar\",\r\n buttonOption: {\r\n iconCss: \"e-icons e-view inline-command\",\r\n cssClass: cssView,\r\n click: this.viewTool_click,\r\n disabled: !canView\r\n }\r\n },\r\n {\r\n type: \"Editar\",\r\n buttonOption: {\r\n iconCss: \"e-icons e-edit inline-command\",\r\n cssClass: cssEdit,\r\n click: this.editTool_click,\r\n disabled: !canEdit\r\n }\r\n },\r\n {\r\n type: \"Eliminar\",\r\n buttonOption: {\r\n iconCss: \"e-icons e-delete inline-command\",\r\n cssClass: cssDelete,\r\n click: this.deleteTool_click,\r\n disabled: !canDelete\r\n }\r\n }\r\n ];\r\n }\r\n },\r\n created() {},\r\n mounted() {\r\n /*\r\n console.log(\"mounted mixin\");\r\n this.permissions = this.updatePermissions();\r\n console.log(this.permissions);\r\n */\r\n },\r\n data() {\r\n return {\r\n toolbar: []\r\n //permissions: {}\r\n };\r\n },\r\n methods: {\r\n updatePermissions() {\r\n var perm = null;\r\n var menu = this.$store.getters.userPermissions;\r\n if (menu != undefined && menu != null) {\r\n perm = menu.find(\r\n el => el.route.toLowerCase() == this.$route.fullPath.toLowerCase()\r\n );\r\n }\r\n return JSON.parse(JSON.stringify(perm));\r\n },\r\n hasPermission(perm) {\r\n if (this.permissions == null || this.permissions == undefined)\r\n return false;\r\n\r\n //var hasPerm = this.permissions.find()\r\n var pList = this.permissions.menuPermissions ?? [];\r\n\r\n var hasPerm = pList.find(x => x == perm);\r\n return hasPerm == perm ?? false;\r\n },\r\n setDefaultToolbar() {\r\n if (this.hasPermission(\"CanCreate\")) {\r\n this.toolbar.push({\r\n text: \"Nuevo\",\r\n tooltipText: \"Nuevo Registro\",\r\n prefixIcon: \"e-new\",\r\n id: \"addTool\"\r\n });\r\n }\r\n\r\n if (this.isMobileDevice) {\r\n if (this.hasPermission(\"CanView\")) {\r\n this.toolbar.push({\r\n text: \"Consultar\",\r\n tooltipText: \"Consultar Registro\",\r\n prefixIcon: \"e-view\",\r\n id: \"viewTool\"\r\n });\r\n }\r\n if (this.hasPermission(\"CanEdit\")) {\r\n this.toolbar.push({\r\n text: \"Editar\",\r\n tooltipText: \"Editar Registro\",\r\n prefixIcon: \"e-edit\",\r\n id: \"editTool\"\r\n });\r\n }\r\n\r\n if (this.hasPermission(\"CanDelete\")) {\r\n this.toolbar.push({\r\n text: \"Borrar\",\r\n tooltipText: \"Borrar Registro\",\r\n prefixIcon: \"e-delete\",\r\n id: \"deleteTool\"\r\n });\r\n }\r\n }\r\n\r\n if (this.hasPermission(\"CanExport\")) {\r\n this.toolbar.push({\r\n text: \"Exportar\",\r\n tooltipText: \"Exportar a Excel\",\r\n prefixIcon: \"e-excelexport\",\r\n id: \"exportTool\"\r\n });\r\n }\r\n this.toolbar.push({\r\n text: \"Recargar\",\r\n tooltipText: \"Recargar Información\",\r\n prefixIcon: \"e-reload\",\r\n id: \"reloadTool\"\r\n });\r\n }\r\n }\r\n};\r\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n * @return {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[i] = extend({}, printGrid.columns[i]);\n printGrid.columns[i].freeze = undefined;\n }\n }\n /* tslint:disable-next-line:no-any */\n if (this.parent.isAngular) {\n /* tslint:disable-next-line:no-any */\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n /* tslint:disable:no-empty */\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.appendTo(element);\n printGrid.trigger = gObj.trigger;\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.e-content');\n var headerDiv = gObj.element.querySelector('.e-gridheader');\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.querySelectorAll('.e-content')); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = gObj.element.querySelectorAll('.e-spin-show');\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll(id + \"captioncell.e-groupcaption\", element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[i].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colGroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[i].children[j].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\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 { EventHandler, Property, Internationalization, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, blazorCultureFormats } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar DEVICE = 'e-device';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // tslint:disable-next-line\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var end;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.blazorTimeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isBlazorServer = false;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n this.isBlazorServer = (isBlazor() && this.isServerRendered && this.getModuleName() === 'timepicker') ? true : false;\n if (!this.isBlazorServer) {\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n }\n };\n // element creation\n TimePicker.prototype.render = function () {\n if (!this.isBlazorServer) {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n }\n else {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n var parentElement = this.element.parentElement;\n this.inputWrapper = {\n container: parentElement,\n clearButton: parentElement.querySelector('.' + CLEARICON),\n buttons: [parentElement.querySelector('.' + TIMEICON)]\n };\n Input.bindInitialEvent({\n element: this.inputElement,\n floatLabelType: this.floatLabelType\n });\n if (this.showClearButton && this.inputWrapper.clearButton) {\n Input.wireClearBtnEvents(this.inputElement, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n this.bindEvents();\n if (!this.isBlazorServer) {\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n if (!this.isBlazorServer) {\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n var updatedCssClassesValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.CldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // tslint:disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // tslint:disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.CldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n if (this.isBlazorServer) {\n this.unBindEvents();\n }\n else {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-haspopup': 'true', 'aria-autocomplete': 'list', 'tabindex': '0', 'aria-activedescendant': 'null',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) ?\n this.inputElement.setAttribute('tabindex', this.tabIndex) : this.inputElement.removeAttribute('tabindex');\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n }\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n if (!this.isBlazorServer) {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n }\n else {\n this.popupWrapper = this.inputWrapper.container.nextElementSibling;\n this.generateList();\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n if (!this.isBlazorServer) {\n this.createListItems();\n }\n else {\n this.listWrapper = this.popupWrapper.querySelector('.e-content');\n }\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n if (this.isBlazorServer) {\n this.blazorTimeCollections = [];\n for (var index = 0; index < this.liCollections.length; index++) {\n this.blazorTimeCollections.push(this.liCollections[index].getAttribute('data-value'));\n }\n }\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n if (!_this.isBlazorServer) {\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n }\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: isBlazor() ? 't' : 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if (this.validateState(value) && !this.invalidValueString) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue((isBlazor() ? 'dayPeriods.wide' : 'dayPeriods.format.wide'), getDefaultDateObject());\n }\n else {\n var gregorianFormat = (isBlazor() ? '.dates.dayPeriods.abbreviated' :\n '.dates.calendars.gregorian.dayPeriods.format.abbreviated');\n var mainVal = isBlazor() ? '' : 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var listHeight = this.getPopupHeight();\n var element;\n element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.blazorTimeCollections[0]).setMilliseconds(0) : this.timeCollections[0];\n var scrollTime = this.isBlazorServer ? new Date(new Date().toDateString() + ' ' +\n this.scrollTo.toLocaleTimeString()).setMilliseconds(0) :\n this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = isBlazor() ? (getValue('d', getValue(this.locale, blazorCultureFormats))) :\n (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.getBlazorCultureFormat = function (formatVal) {\n return (getValue(formatVal, getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a');\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('t') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = isBlazor() ? this.getBlazorCultureFormat('T') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n // tslint:enable\n };\n TimePicker.prototype.updateBlazorTimeCollections = function (listData) {\n this.blazorTimeCollections = listData;\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (!this.isBlazorServer) {\n e.preventDefault();\n }\n if (this.isPopupOpen() && !this.isBlazorServer) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n var curPos = this.getCursorSelection();\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n this.keyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n if (!this.isBlazorServer) {\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n }\n else {\n if (!this.isBlazorServer) {\n this.updateValue(this.inputElement.value, event);\n }\n else {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnPopupHide', true);\n // tslint:enable\n }\n else {\n this.show(event);\n }\n break;\n case 'escape':\n if (!this.isBlazorServer) {\n this.updateInputValue(this.objToString(this.value));\n this.previousState(this.value);\n }\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.isBlazorServer ? null : this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n // tslint:disable\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n _this.popupWrapper = _this.popupObj = null;\n }\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(SELECTED)) {\n if (!this.isBlazorServer) {\n this.checkValue(li.getAttribute('data-value'));\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n else {\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.inputElement.setAttribute('value', li.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, false);\n this.addSelection();\n }\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n //protected function\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler), this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.isBlazorServer ? this.inputEleValue : this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n if (!this.isBlazorServer) {\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n }\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (!this.isBlazorServer) {\n this.checkErrorState(timeValue);\n }\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', (this.isBlazorServer ? this.preventEventBubbling : this.popupHandler));\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.isBlazorServer) {\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnValueCleared');\n // tslint:enable\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.clear = function (event) {\n if (!this.isBlazorServer) {\n this.setProperties({ value: null }, true);\n }\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n if (!this.isBlazorServer) {\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' || this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n }\n break;\n case 'max':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode && !this.isBlazorServer) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n }\n else {\n this.updateInputValue(time);\n }\n return time;\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) || this.isBlazorServer ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? [] :\n this.blazorTimeCollections) : this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index = this.validLiElement(i);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index = this.validLiElement(i, true);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n if (!this.isBlazorServer) {\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n }\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.elementValue(new Date(this.timeCollections[index]));\n }\n };\n TimePicker.prototype.findNextInBlazor = function (event) {\n var count = isNullOrUndefined(this.blazorTimeCollections) ? 0 : this.blazorTimeCollections.length;\n var index = 0;\n var value = this.createDateObj(this.inputElement.value);\n switch (event.action) {\n case 'home':\n this.activeIndex = index;\n break;\n case 'end':\n index = count - 1;\n this.activeIndex = index;\n break;\n case 'down':\n for (var i = 0; i < count; i++) {\n if (this.isBlazorServer ? (+value < +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value < this.timeCollections[i])) {\n var index_1 = this.validLiElement(i);\n this.activeIndex = index_1;\n break;\n }\n else if (i === count - 1) {\n var index_2 = this.validLiElement(0);\n this.activeIndex = index_2;\n break;\n }\n }\n break;\n case 'up':\n for (var i = count - 1; i >= 0; i--) {\n if (this.isBlazorServer ? (+value > +this.createDateObj(this.blazorTimeCollections[i])) :\n (+value > this.timeCollections[i])) {\n var index_3 = this.validLiElement(i, true);\n this.activeIndex = index_3;\n break;\n }\n else if (i === 0) {\n var index_4 = this.validLiElement(count - 1);\n this.activeIndex = index_4;\n break;\n }\n }\n break;\n }\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n if (this.isBlazorServer && isNullOrUndefined(this.popupWrapper)) {\n var items = this.blazorTimeCollections;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n elementIndex = i;\n break;\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n elementIndex = i;\n break;\n }\n }\n }\n }\n else {\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.isBlazorServer ? (isNullOrUndefined(this.blazorTimeCollections) ? 0 :\n this.blazorTimeCollections.length) : this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (isNullOrUndefined(this.popupObj) && this.isBlazorServer) {\n if (isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', index, true);\n }\n else {\n this.findNextInBlazor(event);\n }\n }\n else {\n if (this.liCollections.length > 0) {\n if (this.isBlazorServer ? (isNullOrUndefined(this.activeIndex)) : (isNullOrUndefined(this.value) &&\n isNullOrUndefined(this.activeIndex))) {\n this.selectNextItem(event);\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n if (!this.isBlazorServer) {\n nextItem = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n if (!this.isBlazorServer) {\n nextItem = this.timeCollections[index];\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n if (this.isBlazorServer) {\n this.inputElement.setAttribute('value', this.selectedElement.getAttribute('data-value'));\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnListItemClick', this.activeIndex, true);\n }\n else {\n this.elementValue(new Date(nextItem));\n }\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (!this.isBlazorServer) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return isBlazor() ? (getValue('t', getValue(c, blazorCultureFormats))).replace(/tt/, 'a') :\n getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return isBlazor() ? (getValue('d', getValue(c, blazorCultureFormats))) :\n getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((!this.isBlazorServer && this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))\n || (this.isBlazorServer && this.blazorTimeCollections[i] === this.blazorTimeCollections[this.activeIndex])) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = isBlazor() ?\n // tslint:disable-next-line\n 'M' + getDefaultDateObject().dateSeperator + 'd' + getDefaultDateObject().dateSeperator + 'yy'\n : null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.TimeParse(today, val);\n }\n }\n else {\n value = this.TimeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.TimeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var start;\n var end;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && (this.inputWrapper.container.contains(target) ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this,\n };\n this.trigger('blur', blurArguments);\n if (!this.isBlazorServer && this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n if (this.isBlazorServer) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnStrictMode', this.inputElement.value);\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n * @returns void\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this.isBlazorServer ? null : this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this.isBlazorServer ? null : this\n };\n if (!this.readonly && !Browser.isDevice) {\n this.selectInputText();\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n * @returns void\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n var focusArguments = {\n model: this\n };\n }\n };\n /**\n * Hides the TimePicker popup.\n * @returns void\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /**\n * Opens the popup to show the list items.\n * @returns void\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.isBlazorServer ? null : (this.popupObj || null),\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n if ((isBlazor() && _this.isServerRendered)) {\n eventArgs.popup = _this.popupObj || null;\n }\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n if (_this.isBlazorServer) {\n _this.popupWrapper.style.visibility = '';\n _this.popupWrapper.style.width = _this.inputWrapper.container.offsetWidth + 'px';\n _this.popupWrapper.style.height = 'auto';\n }\n if (_this.isBlazorServer) {\n _this.openPopupEventArgs.popup = _this.popupObj;\n }\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n if (_this.isBlazorServer) {\n _this.disposeServerPopup();\n // tslint:disable\n _this.inputWrapper.container.parentElement.insertBefore(_this.popupWrapper, _this.inputWrapper.container.nextElementSibling);\n _this.interopAdaptor.invokeMethodAsync('OnPopupHide', false);\n // tslint:enable\n }\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n * @returns string\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To get component name\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n if (!this.isBlazorServer) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n if (!this.isBlazorServer) {\n this.getProperty(newProp, prop);\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n if (!this.isBlazorServer) {\n this.setValue(this.value);\n }\n break;\n case 'value':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'strictMode':\n if (!this.isBlazorServer) {\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n }\n break;\n case 'scrollTo':\n if (!this.isBlazorServer) {\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n }\n else {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\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///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend, isBlazor, blazorCultureFormats } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar RTL = 'e-rtl';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: (isBlazor() && this.isServerRendered) ? null : this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n * @returns void\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'aria-haspopup': 'true', 'aria-activedescendant': 'null',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-owns': this.element.id + '_options', 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n this.inputElement.removeAttribute('aria-placeholder');\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n * @return void\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n this.setValue();\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function () {\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: isBlazor() ? 'd' : 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return isBlazor() ? (getValue('t', getValue(this.locale, blazorCultureFormats))).replace(/tt/, 'a') :\n (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld));\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject :\n new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.TimeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.setAttribute('aria-activedescendant', 'null');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n _super.prototype.changeEvent.call(this, e);\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement;\n popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n var value = li.getAttribute('data-value');\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement)) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n attributes(this.inputElement, { 'aria-activedescendant': 'null' });\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value;\n value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value;\n value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: (isBlazor() && this.isServerRendered) ? null : this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n ;\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.TimeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n var options = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: isBlazor() ? 'd' : 'yMd' };\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.inputElement.setAttribute('aria-placeholder', newProp.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n }\n };\n /**\n * To get component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\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})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell',\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar'\n && !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHTML\n * @returns Element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n var operators = (column.filter && column.filter.operator) ? column.filter.operator : 'equal';\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[i].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\n/**\n * `filter operators` render boolean column.\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n }\n /**\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[optr])) ?\n this.parent.filterSettings.operators[optr] : this.customFilterOperators[optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n open: this.dropDownOpen.bind(this),\n cssClass: 'e-popup-flmenu',\n text: selectedValue\n });\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[i].value === col.filter.operator) {\n selValue = this.optrData[i].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\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/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\n/* tslint:disable */\nimport { Input } from '@syncfusion/ej2-inputs';\n/* tslint:enable */\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n ;\n /**\n * Initialize the event handler\n * @private\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ;\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlur, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlur = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ? null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlur.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-owns': this.element.id + '_options',\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-hasPopup': 'true',\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject);\n };\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.isServerBlazor) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n }\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n this.inlineSearch();\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = this.list.querySelector('.' + dropDownListClasses.selected);\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var activeItem = Search(inputValue, this.liCollections, 'StartsWith', true);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value, 'text': dataItem.text }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n * @returns void.\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n * @returns void.\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n if (this.isServerBlazor && this.isFiltering() && this.isPopupOpen && e) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerRenderList', this.beforePopupOpen, true);\n }\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length < 0) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup();\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ;\n ComboBox.prototype.setAutoFillSelection = function (currentValue) {\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ;\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlur);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup();\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ;\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n var eventArgs = void 0;\n eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n * @private\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default:\n var comboProps = void 0;\n comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n };\n /**\n * To initialize the control rendering.\n * @private\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n ;\n /**\n * Return the module name of this component.\n * @private\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @return {void}.\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /**\n * Opens the popup that displays the list of items.\n * @returns void.\n\n */\n ComboBox.prototype.showPopup = function () {\n _super.prototype.showPopup.call(this);\n };\n /**\n * Hides the popup if it is in open state.\n * @returns void.\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = this.list.querySelector('.' + dropDownListClasses.selected);\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n * @returns void.\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n * @returns void.\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /**\n * Moves the focus from the component if the component is already focused.\n * @returns void.\n\n */\n ComboBox.prototype.focusOut = function (e) {\n _super.prototype.focusOut.call(this, e);\n };\n /**\n * Gets all the list items bound on this component.\n * @returns Element[].\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n * @param { string | number } value - Specifies the value of the list item.\n * @returns Object.\n * @blazorType object\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search \n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n */\nexport function highlightSearch(element, query, ignoreCase, type, isBlazor) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ? '(' + query + ')$' : '(' + query + ')';\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex), isBlazor);\n }\n}\nfunction findTextNode(element, pattern, isBlazor) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n element = (isBlazor && element.classList.contains('e-highlight')) ? element.parentElement : element;\n if (isBlazor && element.getAttribute('data-value')) {\n element.innerHTML = element.getAttribute('data-value').replace(pattern, '$1');\n }\n else {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n }\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern, isBlazor);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n * @param {HTMLElement} content - Specifies an content element.\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, attributes, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\n/* tslint:disable */\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\n/* tslint:enable */\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n */\n function AutoComplete(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFiltered = false;\n _this.searchList = false;\n return _this;\n }\n ;\n /**\n * Initialize the event handler\n * @private\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n ;\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (this.isServerBlazor) {\n this.beforePopupOpen = (this.isFiltering() && !this.beforePopupOpen) ? !this.beforePopupOpen : this.beforePopupOpen;\n this.queryString = this.filterInput.value;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n // tslint:disable-next-line\n this.interopAdaptor.invokeMethodAsync('OnServerFilter', this.filterInput.value);\n }\n else {\n this.hidePopup();\n }\n }\n else {\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, true);\n }\n this.queryString = this.filterInput.value;\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.searchList = true;\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @return {void}.\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query);\n }\n else {\n this.hidePopup();\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n if (this.isServerBlazor) {\n this.removeHover();\n }\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n _super.prototype.setAutoFill.call(this, li);\n }\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedLI ? this.selectedLI.id : null });\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.element.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () { highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType); }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n ;\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function () {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n * @returns void.\n\n */\n AutoComplete.prototype.showPopup = function () {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen && !this.isServerBlazor) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list) || this.isServerBlazor) {\n this.renderList();\n }\n else {\n this.resetList(this.dataSource, this.fields);\n }\n };\n /**\n * Hides the popup if it is in open state.\n * @returns void.\n */\n AutoComplete.prototype.hidePopup = function () {\n this.DropDownBaseresetBlazorTemplates(true, false, false, false);\n _super.prototype.hidePopup.call(this);\n this.activeIndex = -1;\n };\n /**\n * Dynamically change the value of properties.\n * @private\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n if (!this.isServerBlazor) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n }\n else if (this.inputWrapper && this.inputWrapper.container) {\n var button = this.inputWrapper.container.querySelector('.e-input-group-icon.e-ddl-icon');\n this.inputWrapper.buttons[0] = button;\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else if (!this.isServerBlazor) {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default:\n var atcProps = void 0;\n atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType, this.isServerBlazor);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n * @private\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n * @private\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n ;\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * `string filterui` render string column.\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n }\n StringFilterUI.prototype.create = function (args) {\n var data;\n var floptr;\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.actObj = this.getAutoCompleteOptions(args);\n this.actObj.appendTo(this.instance);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args) {\n var _this = this;\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n foreignColumnQuery = new Query();\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.query.clone(),\n sortOrder: 'Ascending',\n open: this.openPopup.bind(this),\n cssClass: 'e-popup-flmenu',\n focus: function () {\n _this.actObj.filterType = args.getOptrInstance.getFlOperator();\n },\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionComplete: function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(_this.actObj.fields.value, mapObj));\n }).indexOf(getValue((_this.actObj.fields.value), obj)) === index;\n });\n }\n }, args.column.filter.params));\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n return autoComplete;\n };\n StringFilterUI.prototype.write = function (args) {\n var columns = this.filterSettings.columns;\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\n/**\n * `numberfilterui` render number column.\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n /* tslint:disable-next-line:no-any */\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl,\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\n/**\n * `boolfilterui` render boolean column.\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n actionComplete: function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n }\n }, args.column.filter.params));\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.text = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\n/**\n * `datefilterui` render date column.\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n open: this.openPopup.bind(this),\n }, args.column.filter.params));\n }\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var columns = this.fltrSettings.columns;\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { Browser, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (isBlazor()) {\n var columns = this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].filterTemplate) {\n var tempID = this.parent.element.id + columns[i].uid + 'filterTemplate';\n updateBlazorTemplate(tempID, 'FilterTemplate', columns[i]);\n }\n }\n }\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['filterTemplate']);\n this.parent.renderTemplates();\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true, cssClass: 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'), cssClass: 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj, this.parent);\n }\n this.renderFilterUI(target, column);\n this.parent.notify(events.filterDialogCreated, {});\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var args = { target: valueDiv, column: column, getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj };\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n updateBlazorTemplate(tempID, 'FilterTemplate', column);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var flOptrValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isBlazor() && !isNullOrUndefined(element.children[0].ej2_instances)) {\n fltrValue = element.querySelector('input').ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n * @return {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function (args) {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\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 { Component, rippleEffect, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n * @private\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n this.trigger('change', { value: value, event: event });\n if (this.tagName === 'EJS-RADIOBUTTON') {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.element.parentElement;\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n * @method getSelectedValue\n * @return {string}\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n if (this.isVue && value && value === this.value) {\n this.checked = true;\n }\n if (this.isVue ? this.value && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([label], this.cssClass.split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelRippleHandler = function (e) {\n var ripple = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, ripple);\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([label], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([label], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (!isNullOrUndefined(this.htmlAttributes) && this.htmlAttributes.value) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n * @private\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n if (label) {\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.getLabel();\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n * @public\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n * @public\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\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})();\nimport { EventHandler, remove, Browser, isBlazor, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', '', 'CustomFilter'],\n };\n options.date = options.number;\n options.datetime = options.number;\n var model = [];\n for (var i = 0; i < options[type].length; i++) {\n if (options[type][i].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[type][i].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[type][i]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.destroy.call(this);\n }\n if (this.cmenu && this.cmenu.parentElement) {\n remove(this.cmenu);\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // tslint:disable-next-line:no-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'Ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'Descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter ? 'e-res-contextmenu-wrapper' : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj.open(height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n var contextRect = this.getContextBounds(this.menuObj);\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg, this.menuObj);\n }\n this.menuObj.open(pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function (context) {\n var elementVisible = this.menuObj.element.style.display;\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target, context) {\n var contextWidth = this.getContextBounds(context).width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n this.parent.notify(events.filterDialogCreated, {});\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n _super.prototype.closeDialog.call(this);\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /** @hidden */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n if (isBlazor()) {\n row.querySelector('.e-xlfl-valuediv').children[0].focus();\n }\n else {\n row.querySelector('#' + _this.options.column.field + '-xlfl-frstvalue').focus();\n }\n }\n else {\n row.cells[1].querySelector('input:not([type=hidden])').focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true, cssClass: 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'), cssClass: 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /** @hidden */\n ExcelFilterBase.prototype.removeDialog = function () {\n if (isBlazor()) {\n var columns = this.options.columns || [];\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].filterTemplate) {\n var tempID = this.parent.element.id + columns[i].uid + 'filterTemplate';\n updateBlazorTemplate(tempID, 'FilterTemplate', columns[i]);\n }\n }\n }\n this.parent.notify(events.customFilterClose, {});\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['filterTemplate']);\n this.parent.renderTemplates();\n }\n this.removeObjects([this.dropOptr, this.datePicker, this.dateTimePicker, this.actObj, this.numericTxtObj, this.dlgObj]);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n this.parent.notify(events.setCustomFilterHeader, { title: this.getLocalizedLabel('CustomFilter') });\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n /* tslint:disable-next-line:max-line-length */\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /** @hidden */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.options.column.filterTemplate && isBlazor() ?\n this.dlgDiv.querySelector('.-xlfl-frstvalue').children[0].querySelector('.e-control').ej2_instances[0]\n : this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.options.column.filterTemplate && isBlazor() ?\n this.dlgDiv.querySelector('.-xlfl-secndvalue').children[0].querySelector('.e-control').ej2_instances[0]\n : this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var orRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-secndpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: firstValue,\n type: this.options.type\n });\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), firstValue, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: secondValue,\n type: this.options.type\n });\n /* tslint:disable-next-line:max-line-length */\n mPredicate = mPredicate[predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields' });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n this.dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n open: this.dropDownOpen.bind(this),\n enableRtl: this.parent.enableRtl,\n change: this.dropDownValueChange.bind(this)\n }, col.filter.params));\n this.dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table' });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement('colGroup');\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n /* tslint:disable-next-line:max-line-length */\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate' });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n /* tslint:disable-next-line:max-line-length */\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n /* tslint:disable-next-line:max-line-length */\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n /* tslint:disable-next-line:max-line-length */\n var andRadio = new RadioButton({ label: this.getLocalizedLabel('AND'), name: 'default', cssClass: 'e-xlfl-radio-and', checked: true, enableRtl: this.parent.enableRtl });\n // Initialize OR RadioButton component.\n /* tslint:disable-next-line:max-line-length */\n var orRadio = new RadioButton({ label: this.getLocalizedLabel('OR'), name: 'default', cssClass: 'e-xlfl-radio-or', enableRtl: this.parent.enableRtl });\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n };\n /* tslint:disable-next-line:no-any */\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n obj.destroy();\n }\n }\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isBlazor()) {\n valueDiv.children[0].classList.add(elementId);\n if (this.dlgDiv.querySelectorAll('.e-xlfl-value').length > 1) {\n updateBlazorTemplate(tempID, 'FilterTemplate', columnObj);\n }\n }\n else {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n }\n value.appendChild(valueDiv);\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[predIndex] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ? this.options.column.columnData[indx][columnObj.foreignKeyValue] :\n fltrPredicates[indx].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column.columnData[indx][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n /* tslint:disable-next-line:max-line-length */\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue\n });\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n this.datePicker = new DatePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.datePicker.appendTo(inputValue);\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n this.dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n this.numericTxtObj = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n }, options.column.filter.params));\n this.numericTxtObj.appendTo(inputValue);\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var _this = this;\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: 'e-popup-flmenu',\n autofill: true,\n focus: function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n },\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n actionComplete: function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[_this.actObj.fields.value]) === index;\n });\n },\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n actObj.appendTo(inputValue);\n this.actObj = actObj;\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\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})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n * @return {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n /* tslint:disable-next-line:max-line-length */\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n /* tslint:disable-next-line:max-line-length */\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches, isBlazor } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n * @return {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === 'Left-Right' &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var row = void 0;\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar' });\n row = this.generateRow();\n row.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n * @return {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function () {\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /** @hidden */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = this.element.querySelectorAll('.e-filterbaroperator');\n for (var i = 0; i < dropdownlist.length; i++) {\n dropdownlist[i].ej2_instances[0].destroy();\n }\n }\n if (this.element) {\n remove(this.element);\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function (index) {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n * @return {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[i], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[index] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n }\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].uid === col.uid || (col.isForeignColumn() && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n * @return {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length && this.parent.enablePersistence) {\n this.initialEnd();\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValue);\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValue.bind(this));\n };\n /**\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.clickHandler);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n };\n Filter.prototype.filterMenuClose = function (args) {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if (filterValue.length < 1 || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = filterValue.length < 1 ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime') ?\n new Date(filterValue) : parseFloat(filterValue);\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[i]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n var col = 'columns';\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.addFilteredClass(args.currentFilteringColumn);\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[i].uid);\n var filterValue = this.filterSettings.columns[i].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[i].field;\n this.values[key] = this.filterSettings.columns[i].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[i].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[i].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[i].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[i].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[i].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.querySelectorAll('.e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[i].removeAttribute('aria-filtered');\n fltrIconElement[i].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[i].uid = cols[i].uid || this.parent.getColumnByField(cols[i].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[i]).field, false);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.querySelectorAll('.e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /** @hidden */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[i].uid = cols[i].uid || this_1.parent.getColumnByField(cols[i].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[i]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[field];\n }\n }\n while (len_1--) {\n if (cols[len_1].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar') {\n var iconClass = this_1.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[field]) {\n delete this_1.actualPredicate[field];\n }\n if (this_1.values[field]) {\n delete this_1.values[field];\n }\n if (this_1.refresh) {\n if (isBlazor() && !this_1.parent.isJsComponent) {\n this_1.parent.setProperties({ filterSettings: { columns: this_1.filterSettings.columns } }, true);\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: {\n field: column.field, operator: this_1.operator, value: this_1.value, predicate: this_1.predicate,\n matchCase: this_1.matchCase, ignoreAccent: this_1.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n }, currentFilterColumn: column\n });\n }\n else {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var formater = this.serviceLocator.getService('valueFormatter');\n var column = void 0;\n var value = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[index].uid) || gObj.grabColumnByFieldFromAllCols(columns[index].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), column.type) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime')) {\n var formater_1 = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater_1.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging \n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var gObj = this.parent;\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[i]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (value.charAt(0) === '*') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(value.length - 1) === '%') {\n this.value = this.value.slice(0, -1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(0) === '%') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.endsWith;\n }\n else {\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function (e) {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n ;\n /** @hidden */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter();\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n closest(e.target, 'div').querySelector('.e-filterbaroperator').focus();\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var gObj = this.parent;\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n if (this.filterSettings.mode === 'Immediate' && target.classList.contains('e-clear-icon')) {\n var targetText = target.previousElementSibling;\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n var filterIconElement;\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[i].field === this.filterSettings.columns[j].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (args.action === 'clear-filter' && isBlazor() && !this.parent.isJsComponent) {\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var iconClass = this.parent.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array } \n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[i].field) ||\n getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[i].field;\n if (!this.parent.getColumnByField(cols[i].field)) {\n fieldName = getColumnByForeignKeyValue(cols[i].field, this.parent.getForeignKeyColumns()).field;\n }\n /* tslint:disable-next-line:max-line-length */\n this.refreshFilterIcon(fieldName, cols[i].operator, cols[i].value, cols[i].type, cols[i].predicate, cols[i].matchCase, cols[i].ignoreAccent, cols[i].uid);\n }\n };\n /* tslint:disable-next-line:max-line-length */\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj;\n obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n this.actualPredicate[fieldName] ? this.actualPredicate[fieldName].push(obj) : this.actualPredicate[fieldName] = [obj];\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n if (this.parent.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (this.parent.getColumnByField(fieldName)) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n * @return {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\n/**\n * RowRenderer class which responsible for building row content.\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /**\n * Function to render the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /**\n * Function to refresh the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var attrCopy = extend({}, attributes, {});\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n if (row.isDataRow) {\n row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {\n this.parent.getSelectedRowIndexes().push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, attrCopy);\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = tr.querySelectorAll('.e-summarycell');\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /**\n * Function to check and add alternative row css class.\n * @param {Element} tr\n * @param {{[x:string]:Object}} attr\n */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push('e-row');\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n var isServerRendered = 'isServerRendered';\n options.uid = isBlazor() && this.parent[isServerRendered] ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization && this.parent.selectionModule.checkBoxState) {\n options.isSelected = this.parent.selectionModule.checkBoxState;\n if (options.isSelected && this.parent.selectionModule.selectedRowIndexes.indexOf(index) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(index);\n }\n }\n else {\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n }\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = isBlazor() ? new Row(options) :\n new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","/**\n * Defines types of Cell\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\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 { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nexport var properties = ['content', 'cssClass', 'disabled', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'iconCss', 'iconPosition', 'isPrimary', 'isToggle', 'locale', 'created'];\nexport var modelProps = [];\n/**\n * Represents the Essential JS 2 VueJS Button Component\n * ```html\n * Button\n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new Button({});\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n ButtonComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n ButtonComponent.prototype.render = function (createElement) {\n return createElement('button', this.$slots.default);\n };\n ButtonComponent.prototype.click = function () {\n return this.ej2Instances.click();\n };\n ButtonComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n ButtonComponent = __decorate([\n EJComponentDecorator({\n props: properties\n })\n ], ButtonComponent);\n return ButtonComponent;\n}(ComponentBase));\nexport { ButtonComponent };\nexport var ButtonPlugin = {\n name: 'ejs-button',\n install: function (Vue) {\n Vue.component(ButtonPlugin.name, ButtonComponent);\n }\n};\n","import { Droppable, isBlazor, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate, removeClass } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { getScrollBarWidth, isGroupAdaptive } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n this.mutableData = false;\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var mContentRows = [].slice.call(_this.parent.getMovableVirtualContent().querySelectorAll('.e-row'));\n var fContentRows = [].slice.call(_this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n _this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().querySelectorAll('.e-row'));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().querySelectorAll('.e-row'));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.e-content'), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.isLoaded) {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.mutableData = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.e-gridcontent');\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.e-content'), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: 'e-gridcontent' });\n var innerDiv = this.parent.createElement('div', {\n className: 'e-content'\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)\n && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.e-table'));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n * @return {Element}\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (!isBlazor()) {\n if (this.getTable()) {\n remove(this.getTable());\n }\n }\n var table = innerDiv.querySelector('.e-table') ? innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement('tbody'));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.e-frozencontent');\n var mCont = this.getPanel().querySelector('.e-movablecontent');\n var cont = this.getPanel().querySelector('.e-content');\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n modelData = this.generator.generateRows(dataSource, args);\n if (this.parent.enableVirtualization) {\n this.prevInfo = this.prevInfo ? this.prevInfo : args.virtualInfo;\n this.prevInfo = args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== args.virtualInfo.page ? this.currentInfo : args.virtualInfo;\n }\n this.rows = modelData;\n this.freezeRows = modelData;\n this.rowElements = [].slice.call(this.getTable().querySelectorAll('tr.e-row[data-uid]'));\n if (frzCols) {\n this.movableRows = modelData.map(function (mRow) {\n var sRow = new Row(mRow);\n sRow.cells = mRow.cells.slice(frzCols, mRow.cells.length);\n mRow.cells = mRow.cells.slice(0, frzCols);\n return sRow;\n });\n this.freezeRowElements = this.rowElements;\n }\n this.isLoaded = true;\n this.parent.hideSpinner();\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n var arg = extend({ rows: this.rows }, args);\n if (this.getTable().querySelector('.e-emptyrow')) {\n remove(this.getTable().querySelector('.e-emptyrow'));\n if (!isNullOrUndefined(this.getTable().querySelectorAll('.e-table > tbody')[1])) {\n remove(this.getTable().querySelectorAll('.e-table > tbody')[1]);\n }\n }\n this.parent.notify('contentcolgroup', {});\n this.rafCallback(arg)();\n if (frzCols) {\n cont.style.overflowY = 'hidden';\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n this.parent.notify(events.contentReady, { rows: this.movableRows, args: extend({}, arg, { isFrozen: false }) });\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection && !this.parent.enableVirtualization)) {\n var rowIndex = 'editRowIndex';\n if (this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(args[rowIndex])) {\n this.parent.selectRow(args[rowIndex]);\n }\n }\n if (this.parent.enableVirtualization && !this.parent.getHeaderContent().querySelectorAll('.e-check').length) {\n var removeClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected'); })\n .map(function (y) { return y.getAttribute('data-uid'); });\n var addClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected') === null; })\n .map(function (y) { return y.getAttribute('data-uid'); });\n for (var i = 0; i < removeClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(removeClassByUid[i])) &&\n !this.parent.getRowObjectFromUID(removeClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(removeClassByUid[i]).removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check'))) {\n removeClass([this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(removeClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(removeClassByUid[i])\n .children[j].classList.remove('e-selectionbackground', 'e-active');\n }\n }\n }\n for (var i = 0; i < addClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(addClassByUid[i]))\n && this.parent.getRowObjectFromUID(addClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(addClassByUid[i]).setAttribute('aria-selected', 'true');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame'))) {\n addClass([this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(addClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(addClassByUid[i])\n .children[j].classList.add('e-selectionbackground', 'e-active');\n }\n }\n }\n }\n return;\n }\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === 'Left-Right' && tableName === 'frozen-right';\n /* tslint:disable:no-any */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* tslint:enable:no-any */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.isReact && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n this.parent.destroyTemplate(['columnTemplate', 'rowTemplate', 'detailTemplate', 'captionTemplate', 'commandsTemplate']);\n this.parent.renderTemplates();\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector('tbody');\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.setRowsInLazyGroup(modelData[i], i);\n if (isNullOrUndefined(modelData[i].indent)) {\n continue;\n }\n }\n this.setInfiniteVisibleRows(args, modelData[i], tableName);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n var isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[i]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n gObj.renderTemplates();\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector('tbody');\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n if (!isBlazor() || this.parent.isJsComponent) {\n args.rows = this.rows.slice(0);\n }\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(tbdy);\n tbdy = _this.parent.createElement('tbody');\n }\n else {\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement('tbody');\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector('tbody'), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector('tbody'), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'frozen-right'))\n || (gObj.getFrozenMode() === 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.contentModule.maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length &&\n (args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && this.parent.contentModule.getGroupCache()[this.parent.pageSettings.currentPage]) {\n this.useGroupCache = true;\n return this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === 'frozen-left' || (this.parent.getFrozenMode() === 'Right' && tableName === 'frozen-right')) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute('aria-rowindex'), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n var last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[i]]) : rows.concat(this.infiniteCache[keys[i]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n * @return {Element}\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n * @param {Element} panel\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n * @return {Element}\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n * @param {Element} table\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Row collection in the Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n * @param {Column[]} columns?\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === 'Left-Right') {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n var rightLen = rightRows.length ? rightRows[i].cells.length : 0;\n row = fRows[i].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[i].cells[k]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var element;\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var tasks = [];\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === 'frozen-right') {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('colgroup');\n setStyleAttribute(colG.childNodes[idx], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('colgroup');\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (this.parent.isRowDragable()) {\n var index = this.parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[i]].cells[index].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return isBlazor() ? this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true) :\n this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2) \n row.cells[index].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n if (isBlazor() && !this.parent.isJsComponent && this.parent.frozenRows) {\n return;\n }\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('tbody').innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n var cells = row[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute('aria-rowindex'), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[index];\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /** @hidden */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement('tbody');\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector('tbody').children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[i][key]] = oldKeys[this.prevCurrentView[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldKeys[this.prevCurrentView[i][key]] = i;\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[i][key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.mutableData) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[i], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[i] && this.rowElements[i].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[i] === dataSource[i])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!this.mutableData && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.mutableData && !isEqual)) {\n oldRowObjs[oldIndex].setRowValue(dataSource[i]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var modelData = this.generator.generateRows([dataSource[i]]);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector('tbody'));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n /** @hidden */\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== next[keys[i]]) {\n isEqual = false;\n break;\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[i][primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n row.isAltRow ? tr.classList.add('e-altrow') : tr.classList.remove('e-altrow');\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute('aria-rowindex', index.toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[i].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.querySelectorAll('.e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var result = void 0;\n var colIndex = gObj.getColumnIndexByField(col.field);\n result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.e-gridheader');\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.e-headercontent') :\n this.parent.createElement('div', { className: 'e-headercontent' });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header table\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.e-table'));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n * @param {Element} panel\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n * @param {Element} table\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n * @return {Element[]}\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n * @return {Element}\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n if (!skipDom) {\n innerDiv.appendChild(table);\n }\n return innerDiv;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (!(isBlazor() && !gObj.isJsComponent) && this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var columns = gObj.getColumns();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n var table = skipDom ? tableEle || innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement('tbody', { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement('colgroup');\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, this.parent);\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n var cell = rows[i].cells[j];\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n if (!skipDom) {\n tbody.appendChild(rowBody);\n }\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n if (!skipDom) {\n table.appendChild(tbody);\n }\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === 'Left-Right' && colFreezeMode === 'frozen-right')) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === 'frozen-left') {\n rows[0].cells[0].column.freeze = colFreezeMode === 'frozen-left' ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === 'frozen-right') {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + 'colGroup';\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var column;\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n count++;\n }\n }\n return count;\n };\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n * @param {Column[]} columns?\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = [].slice.call(this.getRows()); //NodeList -> Array \n var displayVal;\n var idx;\n var className;\n var element;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(this.getTable().querySelector('colgroup').children[idx], { 'display': displayVal });\n setStyleAttribute(this.getTable().querySelectorAll('th')[idx], { 'display': displayVal });\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup');\n var mTbl = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('table');\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(mTbl.querySelectorAll('th')[idx - frzCols], { 'display': displayVal });\n }\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n if (isBlazor() && this.parent.isServerRendered && this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.freezeReorder = true;\n }\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var setFrozenTable = isBlazor() && this.parent.isServerRendered && this.parent.frozenRows !== 0 && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table')\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (setFrozenTable && !isVFTable) {\n table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table') :\n this.headerPanel.querySelector('.e-frozenheader').querySelector('.e-table');\n }\n if (table) {\n if (isBlazor() && this.parent.isServerRendered) {\n table.removeChild(table.querySelector('colgroup'));\n table.removeChild(table.querySelector('thead'));\n }\n else {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n }\n var colGroup = this.parent.createElement('colgroup');\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable && !setFrozenTable) {\n this.setTable(table);\n }\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.appendContent(table);\n }\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, 'e-movableheader')) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.e-headercontent').appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar && (gObj.allowSorting || gObj.allowFiltering)) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({});\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.e-gridheader'));\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\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})();\nimport { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons' });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Cell} cell\n * @param {Element} node\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid,\n });\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[count].field === column.field || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[count].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = isBlazor() ? column.toJSON() : column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n if (isReactCompiler) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[str]);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu' }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[j].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\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})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\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})();\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var result;\n var helper = {};\n var fKeyValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n if (isBlazor()) {\n var tempID = gObj.element.id + 'captionTemplate';\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, null, null, tempID);\n }\n else {\n if (isReactCompiler) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node.innerHTML = cell.column.headerText + ': ' + value;\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\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})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n * @param {Cell} cell\n * @param {Object} data\n * @param {{ [x: string]: string }} attr\n * @param {boolean} isExpand\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\n }));\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\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})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\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})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon'\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\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})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, updateBlazorTemplate, blazorTemplates, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n var isServerRendered = 'isServerRendered';\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n if (!(isBlazor() && this.parent[isServerRendered])) {\n this.refreshDataManager();\n }\n };\n /**\n * Refresh the entire Grid.\n * @return {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n var preventUpdate = 'preventUpdate';\n gObj.notify(e.requestType + \"-begin\", e);\n if (isBlazor()) {\n this.resetTemplates();\n }\n if (isBlazor() && gObj.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].dataSource) {\n delete gObj[bulkChanges].dataSource;\n }\n gObj.notify('blazor-action-begin', e);\n if (e.requestType === 'filtering') {\n var columns = 'columns';\n e[columns] = null;\n }\n if (e.requestType === 'sorting') {\n var target = 'target';\n e[target] = null;\n }\n if (gObj.editSettings.mode === 'Batch' && !gObj.isEdit) {\n gObj.notify('closebatch', {});\n }\n }\n var tempPreventUpdate = this.parent[preventUpdate];\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.requestType === 'delete' && isBlazor() && !gObj.isJsComponent) {\n var data = 'data';\n if (isNullOrUndefined(gObj.commandDelIndex)) {\n args[data] = gObj.getSelectedRecords();\n }\n else {\n var tempSelectedRecord = args[data];\n args[data] = {};\n args[data][0] = tempSelectedRecord;\n }\n }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (isBlazor() && gObj.editSettings.mode === 'Normal' && gObj.isEdit && e.requestType !== 'infiniteScroll') {\n gObj.notify('closeinline', {});\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n if (!(currentViewData - dataLength) && count && currentViewData !== dataLength) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (isBlazor() && _this.parent.isServerRendered) {\n if (tempPreventUpdate) {\n var bulkChanges = 'bulkChanges';\n gObj[bulkChanges] = {};\n return;\n }\n if (e.requestType === 'refresh') {\n _this.parent.notify('updateaction', args);\n }\n if (args.requestType !== 'virtualscroll') {\n _this.parent.showSpinner();\n }\n if (args.requestType === 'delete' || args.requestType === 'save') {\n _this.parent.notify(events.addDeleteAction, args);\n _this.parent.notify('add-delete-success', args);\n }\n else {\n _this.parent.allowServerDataBinding = true;\n _this.parent.serverDataBind();\n _this.parent.allowServerDataBinding = false;\n }\n }\n else if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && _this.parent.contentModule.getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n * @return {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.e-content'), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n if (isBlazor() && !this.parent.isJsComponent) {\n promise.then(function (e) {\n _this.parent.notify('editsuccess', args);\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n }\n else {\n var query_1 = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n promise.then(function (e) {\n _this.data.getData(args, query_1)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n * @return {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector('tbody');\n var tr;\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement('tbody');\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getColumns().length + spanCount).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type || (isBlazor() && this.parent.isServerRendered && columns[i].type === 'none')) {\n columns[i].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[i].type = columns[i].type || (isBlazor() && this.parent.isServerRendered ? 'none' : null);\n }\n var valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || columns[i].format.format)) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n var isServerRendered = 'isServerRendered';\n var isServerDateMap = this.parent[isServerRendered] || this.parent.printModule.isPrintGrid();\n setFormatter(this.locator, columns[i], isServerDateMap);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /** @hidden */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (isBlazor() && gObj.filterSettings.type === 'FilterBar'\n && (isNullOrUndefined(gObj.currentViewData) ||\n (!isNullOrUndefined(gObj.currentViewData) && !gObj.currentViewData.length))) {\n var gridColumns = gObj.getColumns();\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].filterTemplate) {\n var tempID = gObj.element.id + gridColumns[i].uid + 'filterTemplate';\n resetBlazorTemplate(tempID, 'FilterTemplate');\n var fieldName = gridColumns[i].field;\n var filteredColumns = gObj.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName === filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(tempID, 'FilterTemplate', gridColumns[i], false);\n }\n }\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.e-content'), false);\n _this.renderEmptyRow();\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n });\n };\n /** @hidden */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.e-content'), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n var gObj = this.parent;\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[e] !== 'BlazId'; }).\n map(function (field) { return complexCols[field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /** @hidden */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[index];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[i].field).and(_this.getPredicate('key', 'equal', groups[i].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote() || isBlazor()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n var itemGroup = elements[i].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[l] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n elements[i].aggregates[key] = row.columns[k].customAggregate ?\n row.columns[k].customAggregate\n .call(context, data_1, row.columns[k]) : '';\n }\n else {\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n this.cellRenderMap[name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[name])) {\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\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 * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\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 * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n * @hidden\n */\n function ShowHide(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key, index) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item, index) {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n /**\n * Shows or hides columns by given column collection.\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @return {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns :\n isBlazor() ? (JSON.parse(JSON.stringify(columns))) : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n * @hidden\n */\n function Scroll(parent) {\n this.lastScrollTop = 0;\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.e-content');\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent().querySelector('tbody');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.querySelectorAll('.e-addedrow').length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right' ? '0.5px' : '1px';\n content.querySelector('.e-headercontent').style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.e-headercontent');\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n * @return\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.e-gridcontent';\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.e-headercontent').scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains('e-headercontent');\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var sLimit = target.scrollWidth;\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector('tbody') === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.e-movableheader') :\n _this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.e-movablecontent') :\n _this.parent.getContent().querySelector('.e-content');\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.e-content');\n this.header = this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = this.content.querySelector('.e-movablecontent');\n var fCont = this.content.querySelector('.e-frozencontent');\n var mHdr = this.header.querySelector('.e-movableheader');\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.e-movablecontent').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft =\n _this.content.querySelector('.e-movablecontent').scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[width]));\n };\n /**\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.removeEventListener();\n //Remove padding\n this.removePadding();\n var cont = this.parent.getContent().querySelector('.e-content');\n removeClass([this.parent.getHeaderContent().querySelector('.e-headercontent')], 'e-headercontent');\n removeClass([cont], 'e-content');\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n };\n /**\n * Function to get the scrollbar width of the browser.\n * @return {number}\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\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 { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n * @hidden\n */\n function Clipboard(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.e-rowcell');\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[rIdx];\n var mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[rIdx];\n isAvail = frTr.querySelector('[aria-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': 'clipboard' }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.parent.getVisibleColumns()[i].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[selectedIndexes[i]].\n querySelectorAll('.e-rowcell:not(.e-hide)'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[i]].\n querySelectorAll('.e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false,\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n this.copyContent += this.parent.getColumns()[parseInt(cells[j].getAttribute('aria-colindex'), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n if (isBlazor()) {\n if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-check')).length) {\n this.copyContent += true;\n }\n else if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-uncheck')).length) {\n this.copyContent += false;\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n }\n else {\n this.copyContent += cells[j];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n * @return {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var isBox = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { Observer, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { AriaService } from '../services/aria-service';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport { DataUtil } from '@syncfusion/ej2-data';\nexport var gridObserver = new Observer();\n/**\n * BlazorAction is used for performing Blazor related Grid Actions.\n * @hidden\n */\nvar BlazorAction = /** @class */ (function () {\n function BlazorAction(parent) {\n this.aria = new AriaService();\n this.actionArgs = {};\n this.virtualHeight = 0;\n this.parent = parent;\n this.addEventListener();\n }\n BlazorAction.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('detailclick', this.onDetailRowClick, this);\n this.parent.on('add-delete-success', this.addDeleteSuccess, this);\n this.parent.on('editsuccess', this.editSuccess, this);\n this.parent.on('setvisibility', this.setColumnVisibility, this);\n this.parent.on('offset', this.setServerOffSet, this);\n this.parent.on('updateaction', this.modelChanged, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on('group-expand-collapse', this.onGroupClick, this);\n this.parent.on('setcolumnstyles', this.setColVTableWidthAndTranslate, this);\n this.parent.on('refresh-virtual-indices', this.invokeServerDataBind, this);\n this.parent.on('contentcolgroup', this.contentColGroup, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n };\n BlazorAction.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('detailclick', this.onDetailRowClick);\n this.parent.off('add-delete-success', this.addDeleteSuccess);\n this.parent.off('editsuccess', this.editSuccess);\n this.parent.off('setvisibility', this.setColumnVisibility);\n this.parent.off('offset', this.setServerOffSet);\n this.parent.off('updateaction', this.modelChanged);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off('group-expand-collapse', this.onGroupClick);\n this.parent.off('setcolumnstyles', this.setColVTableWidthAndTranslate);\n this.parent.off('refresh-virtual-indices', this.invokeServerDataBind);\n this.parent.off('contentcolgroup', this.contentColGroup);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n };\n BlazorAction.prototype.getModuleName = function () { return 'blazor'; };\n ;\n BlazorAction.prototype.modelChanged = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n };\n BlazorAction.prototype.addDeleteSuccess = function (args) {\n var _this = this;\n var editArgs;\n var action = 'action';\n var data = 'data';\n var index = 'index';\n editArgs = {\n requestType: args.requestType,\n data: args[data],\n action: args[action]\n };\n if (!isNullOrUndefined(args[index])) {\n editArgs[index] = args[index];\n }\n args.promise.then(function (e) { return _this.editSuccess(editArgs); }).catch(function (e) {\n if (isBlazor() && _this.parent.isServerRendered) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n _this.parent.trigger(events.actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n _this.parent.hideSpinner();\n _this.parent.log('actionfailure', { error: e });\n });\n };\n BlazorAction.prototype.editSuccess = function (args) {\n this.parent.renderModule.resetTemplates();\n this.invokeServerDataBind(args);\n };\n BlazorAction.prototype.invokeServerDataBind = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n };\n BlazorAction.prototype.onDetailRowClick = function (target) {\n var gObj = this.parent;\n var adaptor = 'interopAdaptor';\n var rIndex = 'rowIndex';\n var invokeMethodAsync = 'invokeMethodAsync';\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var args = {\n uid: uid, classList: target.classList[0], index: tr.getAttribute('aria-rowindex'),\n rowIndex: gObj.getRowsObject().indexOf(rowObj), colSpan: this.parent.getVisibleColumns().length\n };\n gObj[adaptor][invokeMethodAsync]('OnDetailClick', args);\n if (target.classList.contains('e-detailrowcollapse')) {\n var rows = gObj.getRowsObject();\n var rowData = rowObj.data;\n var gridRowId = this.parent.getRowUid('grid-row');\n var len = gObj.groupSettings.columns.length;\n var gridRow = new Row({\n isDataRow: true,\n isExpand: true,\n uid: gridRowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0; i < len; i++) {\n gridRow.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n rows.splice(args[rIndex] + 1, 0, gridRow);\n gObj.trigger(events.detailDataBound, { data: rowData });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = true;\n this.aria.setExpand(target, true);\n }\n else {\n gObj.getRowsObject().splice(args[rIndex] + 1, 1);\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n BlazorAction.prototype.setColumnVisibility = function (columns) {\n var visible = {};\n var adaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n for (var i = 0; i < columns.length; i++) {\n visible[columns[i].uid] = columns[i].visible;\n }\n this.parent[adaptor][invokeMethodAsync]('setColumnVisibility', { visible: visible });\n };\n BlazorAction.prototype.dataSuccess = function (args) {\n if (this.parent.enableVirtualization && Object.keys(this.actionArgs).length === 0) {\n this.actionArgs.requestType = 'virtualscroll';\n }\n var startIndex = 'startIndex';\n var endIndex = 'endIndex';\n this.actionArgs[startIndex] = args[startIndex];\n this.actionArgs[endIndex] = args[endIndex];\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n if (this.virtualContentModule.activeKey === 'downArrow' || this.virtualContentModule.activeKey === 'upArrow') {\n var row = this.parent.getRowByIndex(this.virtualContentModule.blzRowIndex);\n if (row) {\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n // tslint:disable-next-line:no-any\n row.cells[0].focus({ preventScroll: true });\n }\n }\n this.virtualContentModule.blazorDataLoad = false;\n }\n if (args.foreignColumnsData) {\n var columns = this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (args.foreignColumnsData[columns[i].field]) {\n columns[i].columnData = args.foreignColumnsData[columns[i].field];\n }\n }\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n var agg = [];\n var aggRows = this.parent.aggregates;\n for (var i = 0; i < aggRows.length; i++) {\n var aggRow = aggRows[i];\n for (var j = 0; j < aggRow.columns.length; j++) {\n var aggr = {};\n var type = aggRow.columns[j].type.toString();\n aggr = { type: type.toLowerCase(), field: aggRow.columns[j].field };\n agg.push(aggr);\n }\n }\n var data = void 0;\n var aggrds = void 0;\n var groupedCols = this.parent.groupSettings.columns;\n for (var k = 0; k < groupedCols.length; k++) {\n aggrds = data ? data : args.result;\n data = DataUtil.group(aggrds, groupedCols[k], agg, null, null);\n }\n args.result = data ? data : args.result;\n }\n var rowUid = 'rowUid';\n var offsetTime = 'offsetTime';\n var off = 'offset';\n this.parent[rowUid] = args[rowUid];\n args[off] = Math.sign(args[off]) === 1 ? -Math.abs(args[off]) : Math.abs(args[off]);\n this.parent[offsetTime] = args[off];\n if (this.parent[offsetTime] !== new Date().getTimezoneOffset() / 60) {\n if (this.parent.editSettings.mode !== 'Batch') {\n var action = 'action';\n var rowIndex = 'rowIndex';\n var index = 'index';\n if (this.actionArgs[action] === 'edit') {\n this.setClientOffSet(args, this.actionArgs[rowIndex]);\n }\n else if (this.actionArgs[action] === 'add') {\n this.setClientOffSet(args, this.actionArgs[index]);\n }\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n var changes = 'changes';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var batchChanges = this.actionArgs[changes] || { changedRecords: [], addedRecords: [] };\n for (var i = 0; i < batchChanges[changedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[changedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[addedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n }\n }\n this.parent.renderModule.dataManagerSuccess(args, this.actionArgs);\n this.parent.getMediaColumns();\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n this.setColVTableWidthAndTranslate();\n if (this.parent.groupSettings.columns.length) {\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n }\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.removeDisplayNone = function () {\n var renderedContentRows = this.parent.getContentTable().querySelectorAll('tr');\n for (var i = 0; i < renderedContentRows.length; i++) {\n var renderedContentCells = renderedContentRows[i].querySelectorAll('td');\n for (var j = 0; j < renderedContentCells.length; j++) {\n renderedContentCells[j].style.display = '';\n }\n }\n };\n BlazorAction.prototype.setVirtualTrackHeight = function (args) {\n this.virtualHeight = args.VisibleGroupedRowsCount * this.parent.getRowHeight();\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n };\n BlazorAction.prototype.setColVTableWidthAndTranslate = function (args) {\n if (this.parent.enableColumnVirtualization && this.virtualContentModule.prevInfo &&\n (JSON.stringify(this.virtualContentModule.currentInfo.columnIndexes) !==\n JSON.stringify(this.virtualContentModule.prevInfo.columnIndexes)) || ((args && args.refresh))) {\n var translateX = this.virtualContentModule.getColumnOffset(this.virtualContentModule.startColIndex - 1);\n var width = this.virtualContentModule.getColumnOffset(this.virtualContentModule.endColIndex - 1) - translateX + '';\n this.virtualContentModule.header.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.header.virtualEle.adjustTable(translateX, 0);\n this.parent.getContentTable().parentElement.style.width = width + 'px';\n }\n if (this.dataSourceChanged) {\n this.virtualContentModule.getPanel().firstElementChild.scrollTop = 0;\n this.virtualContentModule.getPanel().firstElementChild.scrollLeft = 0;\n if (this.virtualContentModule.header.virtualEle) {\n this.virtualContentModule.header.virtualEle.adjustTable(0, 0);\n }\n this.parent.getContentTable().parentElement.style.transform = 'translate(0px,0px)';\n this.virtualContentModule.refreshOffsets();\n this.virtualContentModule.refreshVirtualElement();\n this.dataSourceChanged = false;\n }\n };\n BlazorAction.prototype.dataSourceModified = function () {\n this.dataSourceChanged = true;\n };\n BlazorAction.prototype.setClientOffSet = function (args, index) {\n var timeZone = DataUtil.serverTimezoneOffset;\n DataUtil.serverTimezoneOffset = 0;\n args.result[index] = DataUtil.parse.parseJson(JSON.stringify(args.result[index]));\n DataUtil.serverTimezoneOffset = timeZone;\n };\n BlazorAction.prototype.setServerOffSet = function (args) {\n var serverTimeZone = DataUtil.serverTimezoneOffset;\n var offsetTime = 'offsetTime';\n var data = 'data';\n var timeZone = new Date().getTimezoneOffset() / 60 * 2 + this.parent[offsetTime];\n DataUtil.serverTimezoneOffset = timeZone;\n args[data] = DataUtil.parse.parseJson(JSON.stringify(args[data]));\n DataUtil.serverTimezoneOffset = serverTimeZone;\n };\n BlazorAction.prototype.onGroupClick = function (args) {\n var _this = this;\n var adaptor = 'interopAdaptor';\n var content = 'contentModule';\n var invokeMethodAsync = 'invokeMethodAsync';\n var exactTopIndex = 'exactTopIndex';\n args[exactTopIndex] = Math.round((this.parent.element.querySelector('.e-content').scrollTop) / this.parent.getRowHeight());\n var rowHeight = 'rowHeight';\n args[rowHeight] = this.parent.getRowHeight();\n this.parent[adaptor][invokeMethodAsync]('OnGroupExpandClick', args).then(function () {\n _this.parent[content].rowElements = [].slice.call(_this.parent.getContentTable().querySelectorAll('tr.e-row[data-uid]'));\n });\n };\n BlazorAction.prototype.setPersistData = function (args) {\n var gObj = this.parent;\n gObj.mergePersistGridData(args);\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n gObj.notify('persist-data-changed', {});\n gObj.notify(events.columnVisibilityChanged, gObj.getColumns());\n };\n ;\n BlazorAction.prototype.resetPersistData = function (args) {\n var gObj = this.parent;\n var bulkChanges = 'bulkChanges';\n var parseArgs = JSON.parse(args);\n var persistArgs = { filterSettings: parseArgs.filterSettings,\n groupSettings: parseArgs.groupSettings, pageSettings: parseArgs.pageSettings, sortSettings: parseArgs.sortSettings,\n searchSettings: parseArgs.searchSettings, columns: parseArgs.columns };\n if (!persistArgs.sortSettings.columns) {\n persistArgs.sortSettings.columns = [];\n }\n if (!persistArgs.groupSettings.columns) {\n persistArgs.groupSettings.columns = [];\n }\n if (!persistArgs.pageSettings.currentPage) {\n gObj.pageSettings.currentPage = 1;\n }\n for (var i = 0; i < gObj.columns.length; i++) {\n if (gObj.groupSettings.columns.indexOf(gObj.columns[i].field) > -1) {\n gObj.columns[i].visible = true;\n }\n }\n gObj.mergePersistGridData(persistArgs);\n gObj.notify('persist-data-changed', {});\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n for (var i = 0; i < gObj.columns.length; i++) {\n gObj.columns[i].editType = gObj.columns[i].editType.toLowerCase();\n }\n gObj.setProperties({ filterSettings: { columns: [] } }, true);\n };\n BlazorAction.prototype.contentColGroup = function () {\n var gObj = this.parent;\n var contentTable = gObj.getContent().querySelector('.e-table');\n contentTable.insertBefore(contentTable.querySelector(\"#content-\" + gObj.element.id + \"colGroup\"), contentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var headerTable = gObj.getHeaderContent().querySelector('.e-table');\n headerTable.insertBefore(headerTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), headerTable.querySelector('tbody'));\n }\n if (gObj.getFrozenColumns() !== 0) {\n var movableContentTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('.e-table');\n movableContentTable.insertBefore(movableContentTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableContentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var movableHeaderTable = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('.e-table');\n movableHeaderTable.insertBefore(movableHeaderTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableHeaderTable.querySelector('tbody'));\n }\n }\n };\n BlazorAction.prototype.dataFailure = function (args) {\n this.parent.renderModule.dataManagerFailure(args, this.actionArgs);\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n return BlazorAction;\n}());\nexport { BlazorAction };\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 { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getValue, isBlazor, blazorTemplates } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, updateBlazorTemplate, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { gridObserver } from '../actions/blazor-action';\nimport { RowModelGenerator } from '../services/row-model-generator';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n * @return {string}\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource', 'headerText'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n this.pageSettings.template = undefined;\n /* tslint:disable-next-line:no-any */\n if (this.isAngular) {\n /* tslint:disable:no-string-literal */\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n * @return {ModuleDeclaration[]}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n if (isBlazor()) {\n modules.push({ member: 'blazor', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n /* tslint:disable */\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n if (isBlazor() && this.enableVirtualization && this.allowGrouping) {\n var isExpanded = 'isExpanded';\n this[isExpanded] = false;\n }\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No Matches Found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No Matches Found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n /* tslint:enable */\n };\n /**\n * For internal use only - To Initialize the component rendering.\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n if (isBlazor()) {\n this.renderComplete();\n }\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.getMediaColumns();\n setColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(events.initialEnd, {});\n if (isBlazor() && this.isServerRendered) {\n gridObserver.notify(events.componentRendered, { id: this.element.id, grid: this });\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n */\n Grid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually showed spinner needs to hide by `hideSpinnner`.\n */\n Grid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.e-gridfooter');\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n * @method destroy\n * @return {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'none';\n }\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n if (this.isAngular && !this.isFreezeRefresh) {\n this.element = null;\n }\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n /* tslint:disable */\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().querySelectorAll('.e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = 'frozen-left';\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = 'frozen-right';\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = 'frozen-left';\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = 'frozen-left';\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Gets the header div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n * @param {Element} element - Specifies the Grid header.\n * @return {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n * @param {Element} element - Specifies the Grid content table.\n * @return {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n * @param {Element} element - Specifies the Grid content.\n * @return {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n * @param {Element} element - Specifies the Grid header table.\n * @return {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n * @return {Element}\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n * @param {Element} element - Specifies the Grid pager.\n * @return {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n * @return {Element[]}\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n * @param {Element}\n * @return RowInfo\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.e-rowcell');\n if (!cell) {\n var row = closest(ele, '.e-row');\n if (!isNullOrUndefined(row)) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute('aria-colindex'), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.e-row');\n var rowIndex = parseInt(row_1.getAttribute('aria-rowindex'), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === 'frozen-left') {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === 'frozen-right') {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n * @return {Element[]}\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector('tbody'))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody() : this.getContentTable().querySelector('tbody');\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody')\n : this.getHeaderTable().querySelector('tbody');\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains('e-row') && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute(\"aria-rowindex\"))] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-movablecontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.e-frozencontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var fieldIdx;\n var col;\n var tr;\n var mTr;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var selectedRow = {};\n var movableSelectedRow = {};\n var rowObjects = this.contentModule.getRows();\n var movableRowObjects = this.contentModule.getMovableRows();\n fieldIdx = this.getColumnIndexByField(field);\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n col = this.getColumnByField(field);\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n movableSelectedRow = movableRowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n tr = !isNullOrUndefined(selectedRow) ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n mTr = !isNullOrUndefined(movableSelectedRow) ? this.element.querySelector('[data-uid=' + movableSelectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var td = !isNullOrUndefined(tr[cells][fieldIdx]) ?\n tr[cells][fieldIdx] : mTr[cells][fieldIdx - this.frozenColumns];\n if (!isNullOrUndefined(td)) {\n var sRow = selectedRow[cells][fieldIdx];\n var mRow = void 0;\n if (this.frozenColumns) {\n mRow = movableSelectedRow[cells][fieldIdx - this.frozenColumns];\n }\n cell.refreshTD(td, !isNullOrUndefined(sRow) ? sRow : mRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(movableSelectedRow) && !isNullOrUndefined(movableSelectedRow['changes'])) {\n movableSelectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n //tslint:disable-next-line:no-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rwdata = 'data';\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var selectedRow;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * Gets a cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().querySelectorAll('.e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().querySelectorAll('.e-headercell')[index];\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n * @param {string} field - Specifies the column name.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n * @param {string} field - Specifies the column uid.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n * @param {string} field - Specifies the column name.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n * @param {string} field - Specifies the column name.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item, index) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n * @param {string} field - Specifies the column name.\n * @return {string}\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets TH index by column uid value.\n * @private\n * @param {string} uid - Specifies the column uid.\n * @return {number}\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n * @private\n * @return {number}\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n * @return {string[]}\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n * @return {Function}\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n * @return {string[]}\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n * @return {Element[]}\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n * @return {string[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n * @return {Data}\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n ;\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n ;\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n ;\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n * @return {Object}\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @return {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @return {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n * @return {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n * @return {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector('colgroup').childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector('colgroup').childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @return {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e, args) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * @param {string |string[]} fieldNames - Defines the column names.\n * @return {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n * @return {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var width;\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerDivTag = 'e-gridheader';\n var contentDivTag = 'e-gridcontent';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var td = element;\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /** @hidden */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, 'e-row');\n if ([].slice.call(this.element.querySelectorAll('.e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.querySelectorAll('.e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute('aria-rowindex') + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') != 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n * @hidden\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n /* tslint:disable-next-line:no-any */\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n * @hidden\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n /* tslint:disable-next-line:no-any */\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n this.on(events.contentReady, this.blazorTemplate, this);\n };\n /**\n * @hidden\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n Grid.prototype.blazorTemplate = function () {\n if (isBlazor()) {\n if (this.pageSettings.template) {\n updateBlazorTemplate(this.element.id + \"_template\", 'Template', this.pageSettings);\n }\n for (var i = 0; i < this.columnModel.length; i++) {\n if (this.columnModel[i].template) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid, 'Template', this.columnModel[i], false);\n }\n if (this.columnModel[i].headerTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'headerTemplate', 'HeaderTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type == 'FilterBar' && this.columnModel[i].filterTemplate) {\n var fieldName = this.columnModel[i].field;\n var tempID = this.element.id + this.columnModel[i].uid + 'filterTemplate';\n var filteredColumns = this.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName == filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type != 'FilterBar' && this.columnModel[i].filterTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i]);\n }\n }\n if (this.groupSettings.captionTemplate) {\n updateBlazorTemplate(this.element.id + 'captionTemplate', 'CaptionTemplate', this.groupSettings);\n }\n var guid = 'guid';\n for (var k = 0; k < this.aggregates.length; k++) {\n for (var j = 0; j < this.aggregates[k].columns.length; j++) {\n if (this.aggregates[k].columns[j].footerTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'footerTemplate', 'FooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupFooterTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupFooterTemplate', 'GroupFooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupCaptionTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupCaptionTemplate', 'GroupCaptionTemplate', this.aggregates[k].columns[j]);\n }\n }\n }\n }\n };\n /**\n * Get current visible data of grid.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n ;\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length && this.currentViewData.records) ?\n this.currentViewData.records : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.querySelectorAll('.e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, 'e-gridcontent') ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell'))) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isBlazor()) {\n var clonedColumn = extend({}, args.column);\n args = { rowData: args.rowData, rowIndex: args.rowIndex,\n cellIndex: args.cellIndex, column: clonedColumn };\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, 'e-row');\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains('e-editedrow') || tr.classList.contains('e-addedrow'));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, 'e-rowcell') &&\n parentsUntil(e.target, 'e-rowcell').classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n };\n /**\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this[key]);\n }\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n if (isBlazor()) {\n var guid = 'guid';\n storedColumns[i][guid] = localCol[guid];\n storedColumns[i].uid = localCol.uid;\n }\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false, });\n this.trigger(\"keyPressed\", presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this.columns);\n }\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.e-table');\n remove(mTbl.querySelector('colgroup'));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.e-table');\n remove(frTbl.querySelector('colgroup'));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup')).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector('tbody'));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* tslint:disable-next-line:no-any */\n workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n * @param {pdfExportProperties} PdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, pdfDoc, isBlob) {\n if (isBlazor()) {\n this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n return null;\n }\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n * @return {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.e-content');\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n * @param {string} value - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n for (var i = 0; i < this.getRowsObject().length; i++) {\n var pKvalue = this.getRowsObject()[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, this.getRowsObject()[i].data);\n }\n if (pKvalue === value) {\n return this.getRowsObject()[i].index;\n }\n }\n return -1;\n };\n ;\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n * @return {Object[] | Promise}\n\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.e-movablecontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.e-frozencontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-movableheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozenheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector('tbody').children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector('tbody').children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector('tbody').children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector('tbody').children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector('tbody').children)).concat(frozenRigtRows);\n }\n ;\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector('tbody').children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode == 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') != -1) {\n containerHeight = parseInt(containerHeight) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector(\".e-columnheader\").clientHeight)) {\n height += this.element.querySelector(\".e-columnheader\").clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.querySelectorAll('.e-summaryrow').length; i++) {\n height += this.element.querySelectorAll('.e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *@param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n *@param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel data in server side.\n * @param {string} url - Pass Url for server side excel export action.\n * @return {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf data in server side.\n * @param {string} url - Pass Url for server side pdf export action.\n * @return {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n var _this = this;\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = state.data;\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n gridModel.filterSettings.columns = JSON.parse(queries).where;\n gridModel.columns.forEach(function (e) {\n var column = grid.getColumnByUid(e.uid);\n if (column) {\n e.headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n e.template = \"true\";\n }\n ;\n if (e.format) {\n e.format = getNumberFormat(_this.getFormat(e.format), e.type, _this.isExcel);\n }\n }\n if (e.columns) {\n _this.setHeaderText(e.columns);\n }\n });\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: \"gridModel\" } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = \"POST\";\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = \"true\";\n }\n ;\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns);\n }\n }\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData,\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = ['addedRecords', 'changedRecords', 'deletedRecords'];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function (e) {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute('aria-rowindex'), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().querySelectorAll('.e-row'));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector('tbody');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = this.getContent().querySelector('tbody');\n }\n tbody = this.getContent().querySelector('tbody');\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') != -1) {\n height = parseInt(height) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /** @hidden */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector('tbody');\n }\n return tbody;\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomFilter = function () {\n if (this.filterModule) {\n this.filterModule.showCustomFilter();\n }\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomSort = function () {\n if (this.sortModule) {\n this.sortModule.showCustomFilter();\n }\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('18.4.49')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\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 { Component, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n * @private\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n return _this;\n }\n CheckBox.prototype.changeState = function (state) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n }\n this.getWrapper().setAttribute('aria-checked', ariaState);\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n * @returns void\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n * @private\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check');\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER, attrs: { 'role': 'checkbox', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n * @private\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n * @private\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseHandler, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // tslint:disable-next-line:no-any\n return this.value;\n }\n }\n }\n return this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n * @public\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n * @public\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\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 { Component, EventHandler, Property, Event, Browser, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off', 'aria-live': 'assertive' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n if (!(isBlazor() && this.isServerRendered)) {\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null && !(isBlazor() && this.isServerRendered)) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (!(isBlazor() && this.isServerRendered)) {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n }\n else {\n this.container = this.element.parentElement;\n this.inputWrapper = { container: this.container };\n this.hiddenInput = this.container.querySelector('input[type=\"hidden\"]');\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n Input.bindInitialEvent({\n element: this.element, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties\n });\n }\n this.wireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[pro]) :\n this.htmlAttributes[pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n attributes(this.element, { 'aria-valuemin': this.min.toString(), 'aria-valuemax': this.max.toString() });\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide'))) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var ignoreKeyCode = void 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n ;\n NumericTextBox.prototype.inputHandler = function (event) {\n // tslint:disable-next-line\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n ;\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n ;\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n ;\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var valueText = value.toString();\n var stepText = step.toString();\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n ;\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n ;\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = void 0;\n numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n ;\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n ;\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals;\n numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n ;\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n ;\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n ;\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n };\n ;\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n ;\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // tslint:disable-next-line\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n ;\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n ;\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () { _this.isCalled = true; _this.action(action, event); }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target = document.elementFromPoint(event.clientX, event.clientY);\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n * @method destroy\n * @return {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'autocorrect', 'aria-disabled', 'aria-placeholder', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'tabindex', 'aria-valuemin',\n 'aria-valuemax', 'aria-live', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var elementVal;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n break;\n case 'currencyCode':\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n if (isBlazor()) {\n if (this.showClearButton) {\n this.inputWrapper.clearButton = this.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.element, this.inputWrapper.clearButton, this.inputWrapper.container);\n }\n }\n else {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n }\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (isBlazor()) {\n if (this.showSpinButton) {\n this.spinDown = this.container.querySelector('.' + SPINDOWN);\n this.spinUp = this.container.querySelector('.' + SPINUP);\n this.wireSpinBtnEvents();\n }\n }\n else {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n }\n };\n /**\n * Gets the component name\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked } from '../base/util';\nimport { remove, debounce } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n EventHandler.add(this.dialogObj.element.querySelector('.e-searchinput'), 'keyup', this.searchHandler, this);\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search')\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj, this.parent);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n this.parent.notify(events.filterDialogCreated, e);\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // tslint:disable-next-line:no-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n this.parent.renderTemplates();\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n /* tslint:disable-next-line:max-line-length */\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n var value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n var args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type\n },\n field: this.options.field\n };\n value !== undefined && value !== null && value !== '' ? this.isForeignColumn(this.options.column) ?\n this.foreignFilter(args, value) : this.options.handler(args) : this.closeDialog();\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput = this.searchBox.querySelector('.e-searchinput');\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n /* tslint:disable-next-line:max-line-length */\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (isBlazor() && !this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = {};\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n filterargs.operator = (isBlazor() && filterargs.excelSearchOperator !== 'none') ?\n filterargs.excelSearchOperator : filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // tslint:disable-next-line:no-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && this.parent.getColumnByField(prop).isForeignColumn()) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n /* tslint:disable-next-line:max-line-length */\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[i];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n this.sInput.focus();\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n this.createFilterItems(dataSource, isInitial, args);\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('True') : this.getLocalizedLabel('False');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n if (isReactCompiler) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[uid] = getValue(key, data[i]);\n var value = getValue(this.options.field, data[i]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[i] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ||\n (isBlazor() && this.parent.isServerRendered) ? [] : data };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.result[value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[len];\n value = getObject(field, value); //local remote diff, check with mdu \n if (!(value in lookup)) {\n var obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var first;\n var operate = 'or';\n first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend, isBlazor, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\n/**\n * CellRenderer class which responsible for building cell content.\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: 'e-rowcell', attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n * @returns string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var literals = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n var index = 'index';\n if (isBlazor() && isEdit) {\n var rNumber = this.parent.editSettings.mode !== 'Batch' ? parseInt(attributes[index], 10) : null;\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str], rNumber);\n window[templateID] = null;\n if (this.parent.editSettings.mode !== 'Batch') {\n updateBlazorTemplate(templateID, 'Template', cell.column, false);\n }\n }\n else {\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n parentRow.cells.length !== cellIndex - 1 ? parentRow.insertBefore(newTD, parentRow.cells[cellIndex])\n : parentRow.appendChild(newTD);\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // tslint:disable-next-line:no-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // tslint:disable-next-line:no-any\n var attrs = source.attributes;\n // tslint:disable-next-line:no-any\n var i = attrs.length;\n // tslint:disable-next-line:no-any\n var attr;\n while (i--) {\n attr = attrs[i];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add('e-gridchkbox');\n node.setAttribute('aria-label', 'checkbox');\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[property] = innerHtml;\n return node;\n };\n /**\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': 'aria-colindex' };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar isForced = require('../internals/is-forced');\nvar redefine = require('../internals/redefine');\nvar has = require('../internals/has');\nvar classof = require('../internals/classof-raw');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar toPrimitive = require('../internals/to-primitive');\nvar fails = require('../internals/fails');\nvar create = require('../internals/object-create');\nvar getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar defineProperty = require('../internals/object-define-property').f;\nvar trim = require('../internals/string-trim').trim;\n\nvar NUMBER = 'Number';\nvar NativeNumber = global[NUMBER];\nvar NumberPrototype = NativeNumber.prototype;\n\n// Opera ~12 has broken Object#toString\nvar BROKEN_CLASSOF = classof(create(NumberPrototype)) == NUMBER;\n\n// `ToNumber` abstract operation\n// https://tc39.es/ecma262/#sec-tonumber\nvar toNumber = function (argument) {\n var it = toPrimitive(argument, false);\n var first, third, radix, maxCode, digits, length, index, code;\n if (typeof it == 'string' && it.length > 2) {\n it = trim(it);\n first = it.charCodeAt(0);\n if (first === 43 || first === 45) {\n third = it.charCodeAt(2);\n if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix\n } else if (first === 48) {\n switch (it.charCodeAt(1)) {\n case 66: case 98: radix = 2; maxCode = 49; break; // fast equal of /^0b[01]+$/i\n case 79: case 111: radix = 8; maxCode = 55; break; // fast equal of /^0o[0-7]+$/i\n default: return +it;\n }\n digits = it.slice(2);\n length = digits.length;\n for (index = 0; index < length; index++) {\n code = digits.charCodeAt(index);\n // parseInt parses a string to a first unavailable symbol\n // but ToNumber should return NaN if a string contains unavailable symbols\n if (code < 48 || code > maxCode) return NaN;\n } return parseInt(digits, radix);\n }\n } return +it;\n};\n\n// `Number` constructor\n// https://tc39.es/ecma262/#sec-number-constructor\nif (isForced(NUMBER, !NativeNumber(' 0o1') || !NativeNumber('0b1') || NativeNumber('+0x1'))) {\n var NumberWrapper = function Number(value) {\n var it = arguments.length < 1 ? 0 : value;\n var dummy = this;\n return dummy instanceof NumberWrapper\n // check on 1..constructor(foo) case\n && (BROKEN_CLASSOF ? fails(function () { NumberPrototype.valueOf.call(dummy); }) : classof(dummy) != NUMBER)\n ? inheritIfRequired(new NativeNumber(toNumber(it)), dummy, NumberWrapper) : toNumber(it);\n };\n for (var keys = DESCRIPTORS ? getOwnPropertyNames(NativeNumber) : (\n // ES3:\n 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +\n // ES2015 (in case, if modules with ES2015 Number statics required before):\n 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +\n 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger,' +\n // ESNext\n 'fromString,range'\n ).split(','), j = 0, key; keys.length > j; j++) {\n if (has(NativeNumber, key = keys[j]) && !has(NumberWrapper, key)) {\n defineProperty(NumberWrapper, key, getOwnPropertyDescriptor(NativeNumber, key));\n }\n }\n NumberWrapper.prototype = NumberPrototype;\n NumberPrototype.constructor = NumberWrapper;\n redefine(global, NUMBER, NumberWrapper);\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 { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// tslint:disable-next-line:no-any\nexport var regex = {\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n};\n/**\n * ErrorOption values\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n // Initializes the FormValidator \n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // tslint:disable-next-line:no-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text',\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n // tslint:enable\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @return {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[name], rules, {});\n }\n else {\n this.rules[name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @return {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[name] && !rules) {\n delete this.rules[name];\n }\n else if (!isNullOrUndefined(this.rules[name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[name][rules[i]];\n }\n }\n else {\n return;\n }\n };\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n * @param {string} selected - Optional parameter to validate specified element.\n * @return {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /**\n * Reset the value of all the fields in form.\n * @return {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /**\n * Get input element by name.\n * @param {string} name - Input element name attribute value.\n * @return {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /**\n * Destroy the form validator object and error elements.\n * @return {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @private\n */\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n ;\n /**\n * @private\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[key] = value;\n }\n };\n /**\n * @private\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formValidator';\n };\n /**\n * @private\n */\n // tslint:disable-next-line:no-any\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n * @return {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules \n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n break;\n case 'equalto':\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[name]) {\n return;\n }\n var rules = Object.keys(this.rules[name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[name][rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[name][rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[name][rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[rule](args);\n }\n };\n // Return default error message or custom error message \n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[rule] : this.defaultMessages[rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[i] : ruleValue;\n message = message.replace(formats[i], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[i];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n return !isNaN(new Date(option.value).getTime());\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n },\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","import { isNullOrUndefined, addClass, extend, closest, updateBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, alignFrozenEditForm, getMovableTbody, getFrozenRightTbody, setStyleAndAttributes } from '../base/util';\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector('tbody');\n }\n else {\n tbody = this.parent.getContentTable().querySelector('tbody');\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.isFrozenGrid()) {\n var moveTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n this.parent.editSettings.newRowPosition === 'Top' ? tbody.insertBefore(args.row, tbody.firstChild) : tbody.appendChild(args.row);\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (this.parent.isFrozenGrid()) {\n var mEle = this.renderMovableform(args.row, args);\n this.parent.editSettings.newRowPosition === 'Top' ? mTbody.insertBefore(mEle, mTbody.firstChild) : mTbody.appendChild(mEle);\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n this.parent.editSettings.newRowPosition === 'Top' ? frTbody.insertBefore(frEle, frTbody.firstChild)\n : frTbody.appendChild(frEle);\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(events.frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup').innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup').innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n td = td.concat([].slice.call(this.getFreezeRightRow(row).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row) {\n var idx = parseInt(row.getAttribute('aria-rowindex'), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row) || frHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n return row;\n };\n InlineEditRender.prototype.getFreezeRow = function (row) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row.getAttribute('aria-rowindex'), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row) || fHdr.contains(row)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row) || mHdr.contains(row)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var cloneRow = 'cloneRow';\n if (closest(args.row, '.e-movablecontent') || closest(args.row, '.e-movableheader')) {\n args.row = this.getFreezeRow(args.row);\n if (isBlazor() && this.parent.isServerRendered) {\n args[cloneRow] = args.row.cloneNode(true);\n }\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n if (isBlazor() && this.parent.isServerRendered) {\n args.row.parentNode.insertBefore(args[cloneRow], args.row);\n args.row.classList.add('e-hiddenrow');\n var tdElement = [].slice.call(args[cloneRow].querySelectorAll('td.e-rowcell'));\n args[cloneRow].innerHTML = '';\n tdElement = this.updateFreezeEdit(args[cloneRow], tdElement);\n args[cloneRow].appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args[cloneRow].classList.add('e-editedrow');\n this.refreshFreezeEdit(args[cloneRow], args);\n }\n else {\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add('e-editedrow');\n this.parent.editModule.checkLastRow(args.row, args);\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row, args) {\n var td = row.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector('colgroup').innerHTML = this.parent.getHeaderContent().querySelector('.e-frozenheader').\n querySelector('colgroup').innerHTML;\n }\n var fCls;\n var cont;\n var frozen = 'frozen';\n var cloneFrozen = 'cloneFrozen';\n var idx = parseInt(row.getAttribute('aria-rowindex'), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.e-frozenheader';\n }\n else {\n cont = this.parent.getContent();\n fCls = '.e-frozencontent';\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n if (isBlazor() && this.parent.isServerRendered) {\n args[frozen] = fRows;\n args[cloneFrozen] = fRows.cloneNode(true);\n fRows.classList.add('e-hiddenrow');\n fRows.parentNode.insertBefore(args[cloneFrozen], fRows);\n this.updateFrozenCont(args[cloneFrozen], td, mTd);\n }\n else {\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === 'Left-Right') {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n if (isBlazor() && this.parent.isServerRendered) {\n args[frozen] = fRows;\n args[cloneFrozen] = fRows.cloneNode(true);\n fRows.parentNode.insertBefore(args[cloneFrozen], fRows);\n fRows.classList.add('e-hiddenrow');\n this.updateFrozenCont(args[cloneFrozen], mTd, td);\n }\n else {\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === 'Left-Right') {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n }\n if (isBlazor() && this.parent.isServerRendered) {\n args[cloneFrozen].appendChild(mTd);\n args[cloneFrozen].classList.add('e-editedrow');\n }\n else {\n fRows.appendChild(mTd);\n fRows.classList.add('e-editedrow');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frRows.appendChild(frTd);\n frRows.classList.add('e-editedrow');\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row, ele, frEle) {\n row.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup').innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row, ele, mEle) {\n row.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector('colgroup').innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup').innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === 'frozen-right') {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[index]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[i].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[k]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: { colspan: (gObj.getVisibleColumns().length - gObj.getVisibleFrozenColumns() + this.parent.getIndentCount()).toString() }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25' } });\n table.appendChild(gObj.getContentTable().querySelector('colgroup').cloneNode(true));\n var tbody = this.parent.createElement('tbody');\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n while ((isEdit && m < tdElement.length && i < gObj.getColumns().length) || i < gObj.getColumns().length) {\n var span = isEdit ? tdElement[m].getAttribute('colspan') : null;\n var col = gObj.getColumns()[i];\n var td_1 = this.parent.createElement('td', {\n className: 'e-rowcell', attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].validationRules) {\n _this.parent.editModule.formObj.rules[cols[i].field] =\n cols[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList, isBlazor } from '@syncfusion/ej2-base';\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (isBlazor() && this.parent.isServerRendered) {\n var cloneCell = 'cloneCell';\n args[cloneCell].innerHTML = '';\n args[cloneCell].appendChild(this.getEditElement(elements, args));\n args[cloneCell].classList.remove('e-ellipsistooltip');\n args[cloneCell].classList.add('e-editedbatchcell');\n classList(args.row, ['e-editedrow', 'e-batchrow'], []);\n }\n else {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, parentRow.children[parseInt(args.cell.getAttribute('aria-colindex'), 10)]);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.remove('e-ellipsistooltip');\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, ['e-editedrow', 'e-batchrow'], []);\n }\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = this.getDialogEditTemplateElement('HeaderTemplate', args);\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n this.dialog.setAttribute('aria-label', 'Dialog edit');\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true, cssClass: 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'), cssClass: 'e-primary', isPrimary: true }\n },\n { click: this.btnClick.bind(this), buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n if (!isBlazor()) {\n args.dialog = this.dialogObj;\n }\n else {\n this.dialogObj.locale = this.parent.locale;\n }\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[i]]) {\n var templateName = dialogEditTemplates[i].charAt(0).toUpperCase() + dialogEditTemplates[i].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? 'e-editedrow' : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n if (isReactCompiler) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].validationRules) {\n _this.parent.editModule.formObj.rules[columns[i].field] =\n columns[i].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '6px' } });\n var tbody = this.parent.createElement('tbody');\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[i]) || cols[i].commands || cols[i].commandsTemplate ||\n cols[i].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr');\n var dataCell = this.parent.createElement('td', {\n className: 'e-rowcell', attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n var label = this.parent.createElement('label', { innerHTML: cols[i].field });\n elements[cols[i].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[i].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, isBlazor, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * Edit render module is used to render grid edit row.\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables \n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.querySelectorAll('.e-gridform')[index];\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute('aria-rowindex'), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.e-movableheader').querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.e-movablecontent').querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === 'frozen-right' && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, 'e-addedrow'))) {\n elem.focus();\n }\n else {\n // tslint:disable-next-line:no-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var _this = this;\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[i];\n if (this.parent.editModule.checkColumnIsGrouped(col)) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cells = void 0;\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[i], args.rowData, { 'index': args.row ? args.row.getAttribute('aria-rowindex') : 0 });\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n if (isReactCompiler) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n if (isBlazor()) {\n var setRules = function (ruleColumn) {\n var column = ruleColumn;\n var func = function () {\n _this.parent.editModule.formObj.rules[column.field] = column.validationRules;\n };\n return func;\n };\n updateBlazorTemplate(tempID, 'EditTemplate', col, true, setRules(col));\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, getComplexFieldID, getObject } from '../base/util';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function () {\n function BooleanEditCell(parent) {\n this.activeClasses = ['e-selectionbackground', 'e-active'];\n this.parent = parent;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n var complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: classNames, attrs: {\n type: 'checkbox', value: args.value, 'e-mappinguid': col.uid,\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName\n }\n });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n var isAddRow = args.requestType === 'add' || args.row.classList.contains('e-addedrow');\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.querySelectorAll('.e-rowcell')), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.checkBoxChange.bind(this)\n }, args.column.edit.params));\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.querySelectorAll('.e-rowcell')), add].concat(this.activeClasses));\n }\n };\n BooleanEditCell.prototype.destroy = function () {\n if (this.obj) {\n this.obj.destroy();\n }\n };\n return BooleanEditCell;\n}());\nexport { BooleanEditCell };\n","import { extend, isNullOrUndefined, isBlazor, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function () {\n function DropDownEditCell(parent) {\n //constructor\n this.parent = parent;\n this.flag = false;\n }\n DropDownEditCell.prototype.create = function (args) {\n //create\n var complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, type: 'text', 'e-mappinguid': args.column.uid,\n }\n });\n };\n DropDownEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.ddActionComplete.bind(this),\n created: this.dropdownCreated.bind(this),\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always', open: this.dropDownOpen.bind(this),\n sortOrder: 'Ascending'\n }, args.column.edit.params));\n this.obj.query.params = this.parent.query.params;\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n DropDownEditCell.prototype.destroy = function () {\n if (this.obj) {\n this.obj.destroy();\n }\n };\n return DropDownEditCell;\n}());\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n /* tslint:disable-next-line:no-any */\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n var complexFieldName = getComplexFieldID(args.column.field);\n this.instances = new Internationalization(this.parent.locale);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': args.column.uid\n }\n });\n };\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, getComplexFieldID } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function () {\n function DefaultEditCell(parent) {\n this.parent = parent;\n }\n DefaultEditCell.prototype.create = function (args) {\n var col = args.column;\n var input = this.parent.createElement('input', {\n className: 'e-field e-input e-defaultcell', attrs: {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', 'e-mappinguid': col.uid,\n id: this.parent.element.id + getComplexFieldID(col.field), name: getComplexFieldID(col.field),\n style: 'text-align:' + col.textAlign,\n }\n });\n return input;\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n }, col.edit.params));\n this.obj.appendTo(args.element);\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj) {\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}());\nexport { DefaultEditCell };\n","import { extend, isBlazor, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, 'e-gridcontent') &&\n parentsUntil(parentsUntil(target, 'e-gridcontent'), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, 'e-headercontent'))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, 'e-rowcell') ? parseInt(target.parentElement.getAttribute('aria-rowindex'), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, 'e-rowcell') && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, 'e-row'));\n }\n };\n /**\n * The function used to trigger editComplete\n * @return {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n if (isBlazor() && !this.parent.isJsComponent) {\n var d = 'data';\n e[d] = e[d][0];\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n var primaryKeys = gObj.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[aria-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n if (isBlazor()) {\n var cols = this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n resetBlazorTemplate(gObj.element.id + col.uid, 'Template', this.rowIndex);\n }\n }\n }\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var e = { data: this.previousData, index: this.rowIndex };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n this.previousData = e.data;\n }\n else {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[i], this.previousData));\n }\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: this.previousData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.row = tr;\n }\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n var cloneRow = 'cloneRow';\n var frozen = 'frozen';\n var cloneFrozen = 'cloneFrozen';\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (isBlazor() && gObj.isServerRendered) {\n _this.originalRow = editargs.row;\n _this.cloneRow = editargs.row.cloneNode(true);\n editargs[cloneRow] = _this.cloneRow;\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n _this.renderer.update(editargs);\n if (isBlazor()) {\n editargs.form = null;\n _this.cloneFrozen = editargs[cloneFrozen];\n _this.frozen = editargs[frozen];\n _this.cloneRow = editargs[cloneRow];\n _this.originalRow = editargs.row;\n }\n _this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n _this.args = editargs;\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n if (isBlazor()) {\n _this.parent.notify(events.toolbarRefresh, {});\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n _this.parent.notify('start-edit', {});\n }\n }\n });\n });\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[index],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n gObj.refresh();\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var form1 = gObj.editModule.formObj.validate();\n var form2 = gObj.editModule.mFormObj ? gObj.editModule.mFormObj.validate() : true;\n var form3 = gObj.editModule.frFormObj ? gObj.editModule.frFormObj.validate() : true;\n return (form1 && form2 && form3);\n };\n NormalEdit.prototype.endEdit = function () {\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.querySelectorAll('.e-gridform')[index];\n var data = { virtualData: {}, isAdd: false };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && !dlgForm) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === 'Left-Right') {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n if (isBlazor()) {\n var form = 'form';\n var movableForm = 'movableForm';\n args[form] = null;\n args[movableForm] = null;\n args.row = {};\n }\n var eleLength = [].slice.call(gObj.element.querySelectorAll('.e-editedrow')).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.querySelectorAll('.e-editedrow').length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n if (isBlazor() && this.parent.isServerRendered) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add') {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[rowData], args.data), e);\n }\n var editArgs;\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = false;\n if (isBlazor() && this.parent.isServerRendered) {\n this.closeForm();\n var rowIndex = 'rowIndex';\n var action = 'action';\n var data = 'data';\n editArgs = { requestType: args.requestType,\n rowIndex: args[rowIndex], action: args[action], data: args[data] };\n this.parent.notify('editsuccess', editArgs);\n }\n else {\n this.refreshRow(args.data);\n }\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.editRowIndex = null;\n this.parent.trigger(events.actionComplete, args);\n }\n if (isBlazor()) {\n this.parent.notify(events.toolbarRefresh, {});\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n if (isBlazor() && this.parent.isServerRendered) {\n var rowIndex = 'editRowIndex';\n editArgs[rowIndex] = this.rowIndex > -1 ? this.rowIndex : this.editRowIndex;\n }\n else {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n }\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.trigger(events.actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : { error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, data);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[aria-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[i].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n row.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[i]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n if (isBlazor()) {\n var form = 'form';\n args[form] = null;\n }\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = events.actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n if (isBlazor() && gObj.isServerRendered) {\n _this.closeForm();\n }\n else {\n _this.refreshRow(closeEditArgs.data);\n }\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n if (isBlazor()) {\n _this.parent.notify(events.toolbarRefresh, {});\n _this.parent.notify('close-edit', {});\n }\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = (gObj.columnModel);\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field) {\n DataUtil.setValue(cols[i].field, cols[i].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined\n };\n var rowData = { virtualData: {} };\n this.parent.notify(events.getVirtualData, rowData);\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (isBlazor()) {\n var form = 'form';\n args[form] = null;\n }\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n _this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.e-addedrow');\n gObj.trigger(events.actionComplete, addArgs);\n if (isBlazor()) {\n _this.parent.notify(events.toolbarRefresh, {});\n _this.parent.notify('start-add', {});\n }\n _this.args = addArgs;\n });\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var index = 0;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_1 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[i] === getObject(fieldname, record) || data[i] === record;\n });\n data[i] = contained ? tmpRecord : (_a = {}, _a[fieldname] = data[i], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_1(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n var dataInString = 'data';\n if (isBlazor() && !this.parent.isJsComponent) {\n args[dataInString] = args[dataInString][0];\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.querySelectorAll('.e-addedrow'));\n var editElements = [].slice.call(gObj.element.querySelectorAll('.e-editedrow'));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[i]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[i].classList.remove('e-editedrow');\n }\n };\n /**\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.crudAction, this.editHandler, this);\n this.parent.on(events.doubleTap, this.dblClickHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.recordAdded, this.requestSuccess, this);\n this.parent.on(events.dblclick, this.dblClickHandler, this);\n this.parent.on(events.deleteComplete, this.editComplete, this);\n this.parent.on(events.saveComplete, this.editComplete, this);\n this.parent.on(events.rowModeChange, this.closeEdit, this);\n this.parent.on('closeinline', this.closeForm, this);\n };\n /**\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.crudAction, this.editHandler);\n this.parent.off(events.doubleTap, this.dblClickHandler);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.recordAdded, this.requestSuccess);\n this.parent.off(events.dblclick, this.dblClickHandler);\n this.parent.off(events.deleteComplete, this.editComplete);\n this.parent.off(events.saveComplete, this.editComplete);\n this.parent.off(events.rowModeChange, this.closeEdit);\n this.parent.off('closeinline', this.closeForm);\n };\n /**\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\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})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, isBlazor, closest, select } from '@syncfusion/ej2-base';\nimport { remove, classList, updateBlazorTemplate, blazorTemplates, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, inArray, refreshForeignData, getObject, alignFrozenEditForm, gridActionHandler } from '../base/util';\nimport { splitFrozenRowObjectCells, getGridRowElements } from '../base/util';\nimport { sliceElements, getCellByColAndRowIndex, getMovableTbody, getFrozenRightTbody } from '../base/util';\nimport { getGridRowObjects } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.dblclick, this.dblClickHandler, this);\n this.parent.on(events.beforeCellFocused, this.onBeforeCellFocused, this);\n this.parent.on(events.cellFocused, this.onCellFocused, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n this.parent.on(events.doubleTap, this.dblClickHandler, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.editNextValCell, this.editNextValCell, this);\n this.parent.on('closebatch', this.closeForm, this);\n };\n /**\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.dblclick, this.dblClickHandler);\n this.parent.off(events.beforeCellFocused, this.onBeforeCellFocused);\n this.parent.off(events.cellFocused, this.onCellFocused);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n this.parent.off(events.doubleTap, this.dblClickHandler);\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.editNextValCell, this.editNextValCell);\n this.parent.off('closebatch', this.closeForm);\n };\n BatchEdit.prototype.batchCancel = function (args) {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, 'e-rowcell') && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, 'e-rowcell');\n var tr = parentsUntil(e.target, 'e-row');\n if (target && tr && !isNaN(parseInt(target.getAttribute('aria-colindex'), 10))\n && !target.parentElement.classList.contains('e-editedrow')) {\n this.editCell(parseInt(tr.getAttribute('aria-rowindex'), 10), this.parent.getColumns()[parseInt(target.getAttribute('aria-colindex'), 10)].field, this.isAddRow(parseInt(tr.getAttribute('aria-rowindex'), 10)));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.e-movablecontent');\n var mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (!e.byKey || clear) {\n if (this.parent.isEdit && clear) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.querySelectorAll('.e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n var col = this.parent.getColumns()[e.indexes[1]];\n if (col && !this.parent.isEdit) {\n this.editCell(e.indexes[0], col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n if (isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[index].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[cellIdx].field, this.isAddRow(rowIdx));\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n var cols = this.parent.getColumns();\n if (isBlazor()) {\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n }\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[i].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[i], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (isBlazor() && gObj.isServerRendered) {\n gObj.selectRow(gObj.selectionModule.prevRowIndex);\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n if (isBlazor() && gObj.isServerRendered) {\n this.removeHideAndSelection(tr);\n this.closeForm();\n }\n else {\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.querySelectorAll('.e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[i]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function (data) {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[i] === Object.keys(this.cloneCell)[j]) {\n this.cloneCell[Object.keys(this.cloneCell)[j]].replaceWith(this.originalCell[Object.keys(this.originalCell)[i]]);\n if (this.originalCell[Object.keys(this.originalCell)[i]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[i]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var _this = this;\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n var cols = this.parent.getColumns();\n if (isBlazor()) {\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (col.template) {\n blazorTemplates[this.parent.element.id + col.uid] = [];\n resetBlazorTemplate(this.parent.element.id + col.uid, 'Template');\n }\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n if (isBlazor() && _this.parent.isServerRendered) {\n var content = _this.parent.getContent();\n _this.closeForm();\n removeClass(content.querySelectorAll('.e-updatedtd'), ['e-updatedtd']);\n if (content.querySelector('.e-insertedrow, .e-hiddenrow')) {\n removeClass(content.querySelectorAll('.e-hiddenrow'), ['e-hiddenrow']);\n var insertedRow = [].slice.call(content.querySelectorAll('.e-insertedrow'));\n for (var i = 0; i < insertedRow.length; i++) {\n insertedRow[i].remove();\n }\n }\n _this.refreshRowIdx();\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[i].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row.clone();\n rowClone.cells = splitFrozenRowObjectCells(gObj, rowClone.cells, tableName);\n isTop ? rows.unshift(rowClone) : rows.push(rowClone);\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[index] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[index] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute('aria-rowindex'), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === 'Left-Right') {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[i]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === 'Left-Right') {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector('tbody').appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[i];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[i].getAttribute('data-uid');\n if (selectedRows[i].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[i]);\n }\n else {\n classList(selectedRows[i], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[i];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute('aria-rowindex'), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[i].classList.contains('e-row') && !rows[i].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].setAttribute('aria-rowindex', j.toString());\n rowObjects[i].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[i].removeAttribute('aria-rowindex');\n rowObjects[i].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var mTr;\n var frTr;\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector('tbody');\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.isFrozenGrid()) {\n frTr = tr.cloneNode(true);\n mTr = _this.renderMovable(tr, frTr);\n tr = gObj.getFrozenMode() === 'Right' ? frTr : tr;\n _this.renderFrozenAddRow(tr, mTr, frTr);\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector('tbody');\n }\n else {\n tbody = gObj.getContentTable().querySelector('tbody');\n }\n _this.parent.editSettings.newRowPosition === 'Top' ? tbody.insertBefore(tr, tbody.firstChild) : tbody.appendChild(tr);\n addClass(tr.querySelectorAll('.e-rowcell'), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var addedRecords = 'addedRecords';\n var dRecords = 'deletedRecords';\n var btmIdx = _this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length - 1;\n _this.parent.editSettings.newRowPosition === 'Top' ? gObj.selectRow(0) : gObj.selectRow(btmIdx);\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[index];\n _this.parent.editSettings.newRowPosition === 'Top' ? _this.editCell(0, col.field, true) :\n _this.editCell(btmIdx, col.field, true);\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: tr.cells[index]\n };\n gObj.trigger(events.batchAdd, args1);\n if (gObj.isFrozenGrid()) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n if (isBlazor()) {\n _this.parent.notify(events.toolbarRefresh, {});\n _this.parent.notify('start-add', {});\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (tr, mTr, frTr) {\n var gObj = this.parent;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n gObj.editSettings.newRowPosition === 'Top' ? mTbody.insertBefore(mTr, mTbody.firstChild) : mTbody.appendChild(mTr);\n addClass(mTr.querySelectorAll('.e-rowcell'), ['e-updatedtd']);\n if (frTbody && frTr) {\n gObj.editSettings.newRowPosition === 'Top' ? frTbody.insertBefore(frTr, frTbody.firstChild)\n : frTbody.appendChild(frTr);\n addClass(frTr.querySelectorAll('.e-rowcell'), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(events.frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === 'Left-Right') {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[i].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[i])) {\n return i;\n }\n else if (isAdd && !cols[i].template && cols[i].visible && cols[i].allowEditing &&\n !(cols[i].isIdentity && cols[i].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, col.defaultValue ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index));\n if (isBlazor() && col.template && !isAdd) {\n resetBlazorTemplate(this.parent.element.id + col.uid, 'Template', index);\n }\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && col.allowEditing) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === 'frozen-right') {\n row = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[index] : gObj.getFrozenRightDataRows()[index];\n mRowData = this.parent.getRowObjectFromUID(row.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row = gObj.getDataRows()[index];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity)) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute('aria-colindex'), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n if (isBlazor() && gObj.isServerRendered) {\n var cell = 'cells';\n var cloneCell = 'cloneCell';\n var indent = cellEditArgs.row.querySelectorAll('.e-indentcell, .e-detailrowcollapse, .e-detailrowexpand, .e-rowdragdrop').length;\n _this.cloneCell[\"\" + _this.cellDetails.rowIndex + cellEditArgs.columnObject.index] =\n cellEditArgs[cloneCell] = cellEditArgs.cell.cloneNode(true);\n if ((parentsUntil(cellEditArgs.cell, 'e-movableheader') || parentsUntil(cellEditArgs.cell, 'e-movablecontent'))) {\n cellEditArgs.row.insertCell(cellEditArgs.columnObject.index - gObj.getFrozenColumns());\n cellEditArgs.row.replaceChild(cellEditArgs[cloneCell], cellEditArgs.row[cell][cellEditArgs.columnObject.index - gObj.getFrozenColumns()]);\n }\n else {\n cellEditArgs.row.insertCell(cellEditArgs.columnObject.index + indent);\n cellEditArgs.row.replaceChild(cellEditArgs[cloneCell], cellEditArgs.row[cell][cellEditArgs.columnObject.index + indent]);\n }\n _this.originalCell[\"\" + _this.cellDetails.rowIndex + cellEditArgs.columnObject.index] =\n cellEditArgs.cell.parentElement.removeChild(cellEditArgs.cell);\n removeClass([_this.cloneCell[\"\" + _this.cellDetails.rowIndex + cellEditArgs.columnObject.index]], ['e-focus', 'e-focused']);\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey) {\n var td = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[rowIndex] :\n col.getFreezeTableName() === 'frozen-right' ? gObj.getFrozenRightRowsObject()[rowIndex]\n : gObj.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(events.queryCellInfo, {\n cell: td, column: col, data: rowObj.changes\n });\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value, td) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[field] !== value) {\n rowObj.isDirty = true;\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute('aria-rowindex'), 10);\n currentRowObj = this.parent.getRowsObject()[rowIndex];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = void 0;\n if (isBlazor() && this.parent.isServerRendered && (parentsUntil(td, 'e-movableheader') ||\n parentsUntil(td, 'e-movablecontent'))) {\n var movRowEle = this.parent.getMovableRowByIndex(this.cellDetails.rowIndex);\n var movRowIndex = parseInt(movRowEle.getAttribute('aria-rowindex'), 10);\n movableRowObject = this.parent.getMovableRowsObject()[movRowIndex];\n }\n else {\n movableRowObject = this.parent.getMovableRowsObject()[rowIndex];\n }\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frRowObject = this.parent.getFrozenRightRowsObject()[rowIndex];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value, td);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === 'frozen-right'\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[cellIndex];\n parentElement.cells[cellIndex].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var changes = this.getBatchChanges();\n var addedRecords = 'addedRecords';\n var dRecords = 'deletedRecords';\n var btmIdx = (this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length) - 1;\n if (this.isAdded && !gObj.isEdit) {\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[index];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n args.cell = this.form.parentElement;\n args.columnObject = column;\n }\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = isBlazor() ? parentsUntil(this.form, 'e-row') : args.cell.parentElement;\n var col = isBlazor() ? this.cellDetails.column : args.column;\n if (isBlazor()) {\n delete args.column;\n }\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n if (isBlazor() && column.template && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow')) {\n updateBlazorTemplate(gObj.element.id + column.uid, 'Template', column, false);\n }\n _this.parent.notify(events.tooltipDestroy, {});\n if (isBlazor() && gObj.isServerRendered && (parentsUntil(cellSaveArgs.cell, 'e-movableheader') ||\n parentsUntil(cellSaveArgs.cell, 'e-movablecontent'))) {\n _this.refreshTD(cellSaveArgs.cell, column, gObj.getMovableRowsObject()[_this.cellDetails.rowIndex], cellSaveArgs.value);\n }\n else {\n var rowObj = parentsUntil(cellSaveArgs.cell, 'e-movablecontent')\n || parentsUntil(cellSaveArgs.cell, 'e-movableheader') ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === 'Left-Right' && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n }\n removeClass([tr], ['e-editedrow', 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(_this.cellDetails.value) &&\n !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n if (isBlazor() && gObj.isServerRendered && (!isNullOrUndefined(cellSaveArgs.value) ? cellSaveArgs.value : '').toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString()) {\n if (_this.cloneCell[\"\" + parseInt(tr.getAttribute('aria-rowindex'), 10) + cellSaveArgs.columnObject.index].\n classList.contains('e-selectionbackground')) {\n _this.originalCell[\"\" + parseInt(tr.getAttribute('aria-rowindex'), 10) + cellSaveArgs.columnObject.index].\n classList.add('e-selectionbackground', 'e-active');\n }\n else {\n _this.originalCell[\"\" + parseInt(tr.getAttribute('aria-rowindex'), 10) + cellSaveArgs.columnObject.index].\n classList.remove('e-selectionbackground', 'e-active');\n }\n _this.cloneCell[\"\" + parseInt(tr.getAttribute('aria-rowindex'), 10) + cellSaveArgs.columnObject.index]\n .replaceWith(_this.originalCell[\"\" + parseInt(tr.getAttribute('aria-rowindex'), 10) + cellSaveArgs\n .columnObject.index]);\n }\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && col.allowEditing) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[index].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit) {\n var gObj = this.parent;\n var changes = this.getBatchChanges();\n var addedRecords = 'addedRecords';\n var dRecords = 'deletedRecords';\n var btmIdx = (this.parent.getCurrentViewRecords().length + changes[addedRecords].length - changes[dRecords].length) - 1;\n var rowcell = parentsUntil(e.target, 'e-rowcell');\n if (rowcell) {\n var cell = rowcell.querySelector('.e-field');\n if (cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (visibleColumns[columnIndex].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\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})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","import { extend, isBlazor } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isEditable, getComplexFieldID, getObject, getCustomDateFormat } from '../base/util';\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function () {\n function DatePickerEditCell(parent) {\n this.parent = parent;\n }\n DatePickerEditCell.prototype.create = function (args) {\n /* tslint:disable-next-line:no-any */\n var complexFieldName = getComplexFieldID(args.column.field);\n return this.parent.createElement('input', {\n className: 'e-field', attrs: {\n id: this.parent.element.id + complexFieldName,\n name: complexFieldName, type: 'text', 'e-mappinguid': args.column.uid\n }\n });\n };\n DatePickerEditCell.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n DatePickerEditCell.prototype.write = function (args) {\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl), args.column.edit.params));\n }\n if (isBlazor()) {\n this.obj.locale = this.parent.locale;\n }\n this.obj.appendTo(args.element);\n };\n DatePickerEditCell.prototype.destroy = function () {\n if (this.obj) {\n this.obj.destroy();\n }\n };\n return DatePickerEditCell;\n}());\nexport { DatePickerEditCell };\nfunction dateanddatetimerender(args, mode, rtl) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n };\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue, resetBlazorTemplate, updateBlazorTemplate, isBlazor } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[i].editTemplate) {\n var templteCell = 'templateedit';\n cols[i].edit = extend(new Edit.editCellType[templteCell](this.parent), cols[i].edit || {});\n }\n else {\n cols[i].edit = extend(new Edit.editCellType[cols[i].editType && Edit.editCellType[cols[i].editType] ?\n cols[i].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[i].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n if (!isBlazor()) {\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n }\n };\n /**\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args &&\n args.requestType === 'add' && this.parent.height > this.parent.getContentTable().scrollHeight) {\n addClass(tr.querySelectorAll('.e-rowcell'), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass(tr.querySelectorAll('.e-rowcell'), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.querySelectorAll('.e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n if (!isBlazor()) {\n this.refreshToolbar();\n this.parent.notify('close-edit', {});\n }\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n if (!isBlazor()) {\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n * @return {boolean}\n */\n Edit.prototype.editFormValidate = function () {\n if (this.formObj) {\n return this.formObj.validate();\n }\n return false;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
' + this.l10n.getConstant(content) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.querySelectorAll('.e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-primary', isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this), buttonModel: { content: this.l10n.getConstant('OKButton'), cssClass: 'e-flat', isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' }\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n };\n Edit.prototype.dlgOk = function (e) {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n if (isBlazor() && this.parent.isServerRendered) {\n this.editModule.closeEdit();\n }\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n /**\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.initialEnd, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyPressHandler, this);\n this.parent.on(events.autoCol, this.updateColTypeObj, this);\n this.parent.on(events.tooltipDestroy, this.destroyToolTip, this);\n this.parent.on(events.preventBatch, this.preventBatch, this);\n this.parent.on(events.destroyForm, this.destroyForm, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.initialEnd, this.initialEnd);\n this.parent.off(events.keyPressed, this.keyPressHandler);\n this.parent.off(events.autoCol, this.updateColTypeObj);\n this.parent.off(events.tooltipDestroy, this.destroyToolTip);\n this.parent.off(events.preventBatch, this.preventBatch);\n this.parent.off(events.destroyForm, this.destroyForm);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if ((elements[k].hasAttribute('name') && (elements[k].className !== 'e-multi-hidden')) ||\n elements[k].classList.contains('e-multiselect')) {\n var field = (elements[k].hasAttribute('name')) ? setComplexFieldID(elements[k].getAttribute('name')) :\n setComplexFieldID(elements[k].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[k].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[k].checked;\n }\n else if (elements[k].value) {\n value = elements[k].value;\n if (elements[k].ej2_instances &&\n elements[k].ej2_instances.length &&\n !isNullOrUndefined(elements[k].ej2_instances[0].value)) {\n elements[k].blur();\n value = elements[k].ej2_instances[0].value;\n if ((column.type === 'date' || column.type === 'dateTime' || column.type === 'datetime') &&\n (elements[k].ej2_instances[0].isServerRendered)) {\n value = elements[k].value;\n }\n }\n }\n else if (elements[k].ej2_instances) {\n value = elements[k].ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[k], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[k], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[k].type === 'radio') {\n if (elements[k].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[j].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[j].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[j].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[j], temp[k], editedData);\n DataUtil.setValue(col[j].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.querySelectorAll('.e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[i].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[i], editedData);\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances &&\n !(isBlazor() && input.ej2_instances[0].isServerRendered\n && (col.type === 'date' || col.type === 'datetime')) ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.e-editedrow');\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, 'e-row').getAttribute('aria-rowindex'), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll'];\n if (this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && restrictedRequestTypes.indexOf(e.requestType) === -1 && !e.cancel) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getVisibleColumns();\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (isBlazor() && col.editTemplate) {\n resetBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate');\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col, false);\n }\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[i].hasAttribute('name')) {\n if (elements[i].ej2_instances &&\n elements[i].ej2_instances.length &&\n !elements[i].ej2_instances[0].isDestroyed) {\n elements[i].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n if (this.formObj && !this.formObj.isDestroyed) {\n this.formObj.destroy();\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n * @return {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, 'e-gridcontent') || (this.parent.frozenRows\n && parentsUntil(e.target, 'e-headercontent')))\n && !document.querySelectorAll('.e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.closeEdit();\n }\n }\n break;\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.querySelectorAll('.e-gridform')[idx] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.querySelectorAll('.e-gridform')[index];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[i].visible) {\n continue;\n }\n if (isBlazor() && cols[i].editTemplate) {\n continue;\n }\n if (cols[i].validationRules) {\n setValidationRuels(cols[i], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frForm = gObj.element.querySelectorAll('.e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n if (isBlazor() && this.parent.editSettings.template) {\n this.parent.editModule.formObj = this.createFormObj(form, {});\n }\n else {\n this.parent.editModule.formObj = this.createFormObj(form, rules);\n }\n };\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value,\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n if (this.parent.editSettings.mode !== 'Dialog') {\n isFHdr = (this.parent.frozenRows && this.parent.frozenRows\n > (parseInt(closest(inputElement, '.e-row').getAttribute('aria-rowindex'), 10) || 0));\n }\n return this.parent.editSettings.mode !== 'Dialog' ? isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable() :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper', document);\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, 'e-rowcell');\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n // tslint:disable-next-line:max-func-body-length\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === 'Left-Right' && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === 'frozen-right' ? this.frFormObj.element : this.formObj.element;\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.e-rowcell');\n var row = closest(element, '.e-row');\n var fCont = this.parent.getContent().querySelector('.e-frozencontent');\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().querySelectorAll('.e-row'))\n : [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute('aria-rowindex') === row.getAttribute('aria-rowindex')) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector('tbody').children\n : this.parent.getHeaderTable().querySelector('tbody').children;\n isFHdr = fHeraderRows.length > (parseInt(row.getAttribute('aria-rowindex'), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute('aria-rowindex'), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains('e-addedrow')))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.e-table');\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.e-frozencontent') || closest(element, '.e-frozenheader'))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n div.style.bottom = (this.parent.height - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n /**\n * Constructor for Grid Responsive dialog renderer\n * @hidden\n */\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.parent.on(events.filterDialogClose, this.closeCustomDialog, this);\n this.parent.on(events.setCustomFilterHeader, this.setCustomFilterHeader, this);\n this.parent.on(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn, this);\n this.parent.on(events.renderResponsiveCmenu, this.renderResponsiveContextMenu, this);\n this.parent.on(events.filterCmenuSelect, this.renderCustomFilterDiv, this);\n this.parent.on(events.customFilterClose, this.customExFilterClose, this);\n this.parent.on(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n if (this.action === ResponsiveDialogAction.isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[i].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[i].field);\n cDiv.setAttribute('data-e-mappinguid', cols[i].uid);\n var span = gObj.createElement('span', { innerHTML: cols[i].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (this.action === ResponsiveDialogAction.isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[i].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[i].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n button.innerHTML = index > -1 ? this.parent.sortSettings.columns[index].direction : 'None';\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (this.action === ResponsiveDialogAction.isFilter && filteredCols.indexOf(cols[i].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[i].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[i][name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var direction = txt === 'None' ? 'Ascending' : txt === 'Ascending' ? 'Descending' : 'None';\n target.innerHTML = direction;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.querySelectorAll('.e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i] !== target) {\n buttons[i].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[i]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n * @return {void}\n * @hidden\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter', className: 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n this.customFilterDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n });\n var isStringTemplate = 'isStringTemplate';\n options[isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader();\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id, className: 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[i].field);\n var sortField = this.parent.sortSettings.columns[i].field;\n var sortDirection = this.parent.sortSettings.columns[i].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[i].field, this.sortPredicate[i].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /** @hidden */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: 'e-primary e-flat e-res-apply-btn',\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: 'e-primary e-flat e-res-' + id_1 + '-clear-btn',\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[i].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setCustomFilterHeader = function (args) {\n if (this.parent.rowRenderingMode !== 'Vertical') {\n return;\n }\n var header = this.customResponsiveDlg.element.querySelector('.e-reslabel');\n if (header && header.firstElementChild) {\n header.firstElementChild.innerHTML = args.title;\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n this.parent.off(events.filterDialogClose, this.closeCustomDialog);\n this.parent.off(events.setCustomFilterHeader, this.setCustomFilterHeader);\n this.parent.off(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn);\n this.parent.off(events.renderResponsiveCmenu, this.renderResponsiveContextMenu);\n this.parent.off(events.filterCmenuSelect, this.renderCustomFilterDiv);\n this.parent.off(events.customFilterClose, this.customExFilterClose);\n this.parent.off(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': 'Goto Page ' + i,\n href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('FirstPageTooltip') :\n this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPageTooltip') :\n this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('PreviousPagerTooltip') :\n this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPagerTooltip') :\n this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('NextPageTooltip') :\n this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': isBlazor() ? this.pagerModule.getLocalizedLabel('LastPageTooltip') :\n this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[i].style.display = '';\n this.links[i].setAttribute('index', pageNo.toString());\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[i].classList.add('e-pager-default');\n }\n else {\n this.links[i].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[i].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[i].style.display = 'none';\n }\n classList(this.links[i], [], ['e-currentitem', 'e-active']);\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","import { createElement, append, isBlazor } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': 'Pager Information' } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n if (isBlazor()) {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('CurrentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('TotalItemsInfo'), [pagerObj.totalRecordsCount || 0]);\n }\n else {\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n }\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[i].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\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 { Component, L10n, Browser, isBlazor } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren } from '../grid/base/util';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n * @hidden\n */\n function Pager(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager',\n previousPagerTooltip: 'Go to previous pager',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager',\n PreviousPagerTooltip: 'Go to previous pager',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n */\n Pager.prototype.render = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on('pager-refresh', this.pagerTemplate, this);\n this.notify('pager-refresh', {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.initLocalization();\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n * @method destroy\n * @return {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isReactTemplate()) {\n this.off('pager-refresh', this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n * @param {number} pageNo - Defines page number.\n * @return {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate()) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = isBlazor() ? this.getPagerTemplate()(data, this, 'template', tempId, this.isStringTemplate) :\n this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /** @hidden */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /** @hidden */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Pager.prototype.compile = function (template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n * @return {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify('pager-refresh', {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.containerModule.refresh();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('FirstPageTooltip') : this.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('PreviousPageTooltip') :\n this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('NextPageTooltip') :\n this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: isBlazor() ? this.getLocalizedLabel('LastPageTooltip') :\n this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[i]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return this.isReact && this.template && typeof (this.template) !== 'string';\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","import { createElement, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '1' } });\n this.pagerCons = createElement('span', { className: 'e-constant', innerHTML: isBlazor() ?\n this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown') });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n cssClass: 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.pagerModule.pageSize === this.pagerModule.totalRecordsCount) {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerAllDropDown') :\n this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = isBlazor() ? this.pagerModule.getLocalizedLabel('PagerDropDown') :\n this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[i] = parseInt(item[i], 10) ? item[i].toString() : (this.pagerModule.getLocalizedLabel(item[i]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[i]) : item[i];\n }\n return item;\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.dropDownListObject[prop] = value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n * @method destroy\n * @return {void}\n * @hidden\n */\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n * @param {Pager} pagerModule?\n * @returns defaultType\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': 'Pager external message' } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n * @method destroy\n * @return {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n * @return {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n var pagerObj;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n this.pagerObj = new Pager(pagerObj);\n this.pagerObj.hasParent = true;\n this.pagerObj.on('pager-refresh', this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[i].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[i].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[i]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[j]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n * @return {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n * @return {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[prop] = newProp[prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n this.pageSettings.currentPage = e.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, type: events.actionBegin\n };\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n e.cancel = true;\n }\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function (e) {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.addEventListener('created', this.handlers.created.bind(this));\n }\n this.parent.on(events.initialLoad, this.handlers.load, this);\n this.parent.on(events.initialEnd, this.handlers.end, this); //For initial rendering\n this.parent.on(events.dataReady, this.handlers.ready, this);\n this.parent.on(events.pageComplete, this.handlers.complete, this);\n this.parent.on(events.uiUpdate, this.handlers.updateLayout, this);\n this.parent.on(events.inBoundModelChanged, this.handlers.inboundChange, this);\n this.parent.on(events.keyPressed, this.handlers.keyPress, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return this.parent.isReact && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n };\n /**\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact) {\n this.parent.removeEventListener('created', this.handlers.created);\n }\n this.parent.off('pager-refresh', this.renderReactPagerTemplate);\n this.parent.off(events.initialLoad, this.handlers.load);\n this.parent.off(events.initialEnd, this.handlers.end); //For initial rendering\n this.parent.off(events.dataReady, this.handlers.ready);\n this.parent.off(events.pageComplete, this.handlers.complete);\n this.parent.off(events.uiUpdate, this.handlers.updateLayout);\n this.parent.off(events.inBoundModelChanged, this.handlers.inboundChange);\n this.parent.off(events.keyPressed, this.handlers.keyPress);\n };\n /**\n * To destroy the pager\n * @return {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked } from '../base/util';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables \n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.e-movablecontent')) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === 'Left-Right' && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n var added = 'addedRecords';\n var deleted = 'deletedRecords';\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[added]) :\n this.parent.editModule.getBatchChanges()[added].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[deleted];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n this.parent.notify(events.selectVirtualRow, { selectedIndex: index });\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (index === this.selectedRowIndexes[0]) : false);\n var args;\n var can = 'cancel';\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, previousRowIndex: this.prevRowIndex,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', [index]);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === 'Left-Right' && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === 'Left-Right' && frRow) {\n mObj[frozenRightRow] = frRow;\n mObj[previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @return {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n }\n var isHybrid = 'isHybrid';\n this.activeTarget();\n var args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(rowIndexes.slice(-1)[0]);\n var selectRowFn = function (index) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === 'Left-Right' ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIdx = rowIndexes_1[_i];\n selectRowFn(rowIdx);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: _this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[_this.prevRowIndex],\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n * @param {number} startIndex - Specifies the row indexes.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n for (var _i = 0, rowIndexes_2 = rowIndexes; _i < rowIndexes_2.length; _i++) {\n var rowIndex = rowIndexes_2[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n var isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey_1] = chkState;\n if (!this.persistSelectedData.some(function (data) { return data[_this.primaryKey] === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey) {\n var _this = this;\n delete (this.selectedRowState[pKey]);\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return data[_this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n * @return {void}\n */\n Selection.prototype.clearSelection = function () {\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[i]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n mRow_1.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n if (gObj.getFrozenMode() === 'Left-Right') {\n fRightRow_1.push(gObj.getFrozenRightRows()[this.selectedRowIndexes[i]]);\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[i], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[j], false);\n }\n _this.updateCheckBoxes(element[j]);\n }\n if (isBlazor() && _this.parent.isServerRendered && _this.parent.enableVirtualization) {\n _this.getRenderer().setSelection(null, false, true);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!_this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[i]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked)) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && this.parent.checkAllRows === 'Uncheck'\n && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ?\n this.persistSelectedData : data, foreignKeyData: foreignKeyData,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var data_2 = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[data_2] = rowDeselectObj[data_2][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n var rowIndex_2 = 'rowIndex';\n var data_3 = 'data';\n rowDeselectObj[rowIndex_2] = rowDeselectObj[rowIndex_2][rowDeselectObj[rowIndex_2].length - 1];\n rowDeselectObj[data_3] = rowDeselectObj[data_3][rowDeselectObj[data_3].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var selectedTable;\n var cIdx;\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = void 0;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n if (!isBlazor()) {\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n * @param {IIndex} startIndex - Defines the collection of row and column index.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var isHybrid = 'isHybrid';\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === 'frozen-left' ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === 'frozen-right' ? gObj.getFrozenRightRowsObject() : []\n ]);\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === 'frozen-right' ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute('aria-colindex'), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var selectedTable = void 0;\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n var rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (var j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[i].cellIndexes[j]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute('aria-rowindex'), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n var td = parentsUntil(e.target, 'e-rowcell');\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, 'e-rowcell');\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute('aria-colindex'), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === 'Left-Right' && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '0 0 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 0 0';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '2p 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.bdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n this.mcBdrElement.style.borderWidth = '2px';\n this.frcBdrElement.style.borderWidth = '2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n this.mhBdrElement.style.borderWidth = '2px';\n this.frhBdrElement.style.borderWidth = '2px';\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = '2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = '2px';\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 'e-movablecontent') ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.value, 10));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute('aria-colindex'), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n var col;\n switch (true) { //direction \n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, 'e-rowcell'):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute('aria-colindex'), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, 'e-rowcell');\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n var cellIndex = parseInt(target.getAttribute('aria-colindex'), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, 'e-rowcell');\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === 'Left-Right' && col.getFreezeTableName() === 'frozen-right';\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, 'e-table'))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n !isFrozenRow ? !isFrozenCol ? this.parent.getContentTable().parentElement.appendChild(this.autofill) :\n this.parent.contentModule.getMovableContent().appendChild(this.autofill) :\n !isFrozenCol ? this.parent.getHeaderTable().parentElement.appendChild(this.autofill) :\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n if (isFrozenRight) {\n isFrozenRow ? this.parent.getFrozenRightHeader().appendChild(this.autofill)\n : this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, 'e-headercontent') && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, 'e-editedrow')) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 'e-rowcell') && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit) {\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.initialEnd, this.initializeSelection, this);\n this.parent.on(events.rowSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.cellSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.cellFocused, this.onCellFocused, this);\n this.parent.on(events.beforeFragAppend, this.clearSelAfterRefresh, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.on(events.rowsRemoved, this.rowsRemoved, this);\n this.parent.on(events.headerRefreshed, this.refreshHeader, this);\n this.addEventListener_checkbox();\n };\n /**\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.initialEnd, this.initializeSelection);\n this.parent.off(events.rowSelectionComplete, this.onActionComplete);\n this.parent.off(events.cellSelectionComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.cellFocused, this.onCellFocused);\n this.parent.off(events.beforeFragAppend, this.clearSelAfterRefresh);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.off(events.rowsRemoved, this.rowsRemoved);\n this.parent.off(events.headerRefreshed, this.refreshHeader);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n ;\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n ;\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n this.initPerisistSelection();\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === 'Left-Right';\n if (!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n this.parent.off(events.contentReady, this.checkBoxSelectionChanged);\n var gobj = this.parent;\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (var _i = 0, _a = this.getData().records; _i < _a.length; _i++) {\n var data = _a[_i];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (var _b = 0, _c = this.getData(); _b < _c.length; _b++) {\n var data = _c[_b];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (rows !== null && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[j]);\n var pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n var checkState = void 0;\n var chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute('aria-rowindex'), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n this.isSingleSel() && indexes.length > 0 ? this.selectRow(indexes[0], true) : this.selectRows(indexes);\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.e-editedrow');\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = [];\n if (!isBlazor()) {\n records = e.data;\n }\n else {\n records = this.getSelectedRecords();\n }\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[i].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n if (isBlazor() && this.parent.enableVirtualization &&\n !isNullOrUndefined(this.parent.contentModule.currentInfo.endIndex)) {\n this.selectRowsByRange(this.parent.contentModule.currentInfo.startIndex, this.parent.contentModule.currentInfo.endIndex);\n }\n else {\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return data[_this.primaryKey] in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', !state, 'checkbox', null);\n this.checkBoxState = !state;\n if (!state) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n var rowCache = this.parent.contentModule[vgenerator].rowCache;\n Object[values](rowCache).forEach(function (x) { return x.isSelected = true; });\n for (var i = 0; i < Object.keys(rowCache).length; i++) {\n if (this.parent.selectionModule.selectedRowIndexes.indexOf(Number(Object.keys(rowCache)[i])) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(Number(Object.keys(rowCache)[i]));\n }\n }\n }\n }\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.e-rowcell');\n var checkObj = checkBox;\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n if (index && this.parent.getRowByIndex(index).getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n ;\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var isServerRenderedVirtualization = isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization;\n if (isServerRenderedVirtualization) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n checkToSelectAll = !Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected === undefined || x.isSelected === false; }).length &&\n Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected; }).length === this.selectedRowIndexes.length;\n }\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection && !(isServerRenderedVirtualization)) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && checkedLen === this.getData().length)) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (isServerRenderedVirtualization && !this.selectedRowIndexes.length ||\n checkedLen === 0 && !isServerRenderedVirtualization || this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (parentsUntil(target, 'e-row') || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.querySelectorAll('.e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, 'e-row')) ? true : false;\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, 'e-rowcell');\n if ((target && target.parentElement.classList.contains('e-row') && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.e-rowcell').classList.contains('e-gridchkbox'))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (isBlazor() && this.parent.enableVirtualization && this.parent.isServerRendered) {\n var rowIndexes = this.parent.getSelectedRowIndexes();\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', rowIndexes);\n }\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute('aria-rowindex'));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.e-rowcell'))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.e-rowcell'))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute('aria-colindex'));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].columns) {\n this.getstackedColumns(column[i].columns);\n }\n else {\n innerColumnIndexes.push(column[i]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.querySelectorAll('.e-rowcell'));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[index])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n * @param {number} startIndex\n * @param {number} endIndex\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n * @param {number[]} columnIndexes\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[i]).uid), columnIndexes[i]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var frzCols = gObj.getFrozenColumns();\n var isFreeze = frzCols && startIndex >= frzCols;\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n var rows = !isFreeze ? gObj.getDataRows() : gObj.getMovableRows();\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === 'frozen-right') {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().querySelectorAll('.e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[i]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[i]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[clearIndex].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[i]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.e-movablecontent')) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[aria-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[i].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[startIndex])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[startIndex].isSelected = true;\n if (col.getFreezeTableName() === 'frozen-right') {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[j].classList.contains('e-row')) {\n if ((rows[j].classList.contains('e-editedrow') || rows[j].classList.contains('e-addedrow')) &&\n this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(rows[j].querySelector('tr').childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].querySelector('tr').childNodes[startIndex]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[j].childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].childNodes[startIndex]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n this.parent.selectedRowIndex = index;\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\n/**\n * ColumnWidthService\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, this.parent.getColumnIndexByField(collection[i].field));\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount(), true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n var mCont = this.parent.getContent().querySelector('.e-movablecontent');\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols && mHdr && mHdr.querySelector('colgroup')) {\n headerCol = mHdr.querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector('colgroup');\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector('colgroup').children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup');\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector('colgroup').children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[i], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector('colgroup')) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector('colgroup').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[index].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[index].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /** @hidden */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.e-frozencontent');\n var movableContent = this.parent.getContent().querySelector('.e-movablecontent');\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = ['e-gridheader', 'e-gridfooter', 'e-groupdroparea', 'e-gridpager', 'e-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === 'frozen-left' || column.getFreezeTableName() === 'frozen-right')) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('.e-table');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.e-table');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild) {\n this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.e-movablecontent').firstElementChild.style.width =\n movableWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\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 { Component, NotifyPropertyChanges, Property, closest } from '@syncfusion/ej2-base';\nimport { Event, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, isRippleEnabled, removeClass, rippleEffect, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { rippleMouseHandler, destroy, preRender, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-switch-disabled';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLE_CHECK = 'e-ripple-check';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-switch-wrapper';\nvar ACTIVE = 'e-switch-active';\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar Switch = /** @class */ (function (_super) {\n __extends(Switch, _super);\n /**\n * Constructor for creating the widget.\n * @private\n */\n function Switch(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isDrag = false;\n return _this;\n }\n Switch.prototype.changeState = function (state) {\n var ariaState;\n var rippleSpan;\n var wrapper = this.getWrapper();\n var bar = wrapper.querySelector('.e-switch-inner');\n var handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n ariaState = 'true';\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n else {\n removeClass([bar, handle], ACTIVE);\n ariaState = 'false';\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n wrapper.setAttribute('aria-checked', ariaState);\n };\n Switch.prototype.clickHandler = function (evt) {\n this.isDrag = false;\n this.focusOutHandler();\n this.changeState(!this.checked);\n this.element.focus();\n var changeEventArgs = { checked: this.element.checked, event: evt };\n this.trigger('change', changeEventArgs);\n };\n /**\n * Destroys the Switch widget.\n * @returns void\n */\n Switch.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n destroy(this, this.getWrapper(), this.tagName);\n };\n Switch.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n Switch.prototype.focusOutHandler = function () {\n this.getWrapper().classList.remove('e-focus');\n };\n /**\n * Gets the module name.\n * @private\n */\n Switch.prototype.getModuleName = function () {\n return 'switch';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n * @private\n */\n Switch.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n Switch.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n Switch.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n };\n Switch.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER, attrs: { 'role': 'switch', 'aria-checked': 'false' }\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var switchInner = this.createElement('span', { className: 'e-switch-inner' });\n var onLabel = this.createElement('span', { className: 'e-switch-on' });\n var offLabel = this.createElement('span', { className: 'e-switch-off' });\n var handle = this.createElement('span', { className: 'e-switch-handle' });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changes.\n * @private\n */\n Switch.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.split(' '));\n }\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n * @private\n */\n Switch.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER, element, this.getModuleName());\n };\n /**\n * Initialize control rendering.\n * @private\n */\n Switch.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n Switch.prototype.rippleHandler = function (e) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n };\n Switch.prototype.rippleTouchHandler = function (eventType) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n };\n Switch.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n Switch.prototype.setLabel = function (onText, offText) {\n var wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n };\n Switch.prototype.switchFocusHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n Switch.prototype.switchMouseUp = function (e) {\n var target = e.target;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (e.type === 'touchmove') {\n e.preventDefault();\n }\n if (e.type === 'touchstart') {\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if ((e.type === 'mouseup' && target.className.indexOf('e-switch') < 0) || e.type === 'touchend') {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n };\n Switch.prototype.formResetHandler = function () {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n };\n /**\n * Toggle the Switch component state into checked/unchecked.\n * @returns void\n */\n Switch.prototype.toggle = function () {\n this.clickHandler();\n };\n Switch.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n var handle = wrapper.querySelector('.e-switch-handle');\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n Switch.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n var handle = wrapper.querySelector('.e-switch-handle');\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n /**\n * Click the switch element\n * its native method\n * @public\n */\n Switch.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Switch\n * its native method\n * @public\n */\n Switch.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], Switch.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Switch.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], Switch.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Switch.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"onLabel\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"offLabel\", void 0);\n __decorate([\n Property('')\n ], Switch.prototype, \"value\", void 0);\n Switch = __decorate([\n NotifyPropertyChanges\n ], Switch);\n return Switch;\n}(Component));\nexport { Switch };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Switch } from '@syncfusion/ej2-buttons';\nexport var properties = ['checked', 'cssClass', 'disabled', 'enablePersistence', 'enableRtl', 'locale', 'name', 'offLabel', 'onLabel', 'value', 'change', 'created'];\nexport var modelProps = ['checked'];\n/**\n * Represents the Essential JS 2 VueJS Switch Component.\n * ```html\n * \n * ```\n */\nvar SwitchComponent = /** @class */ (function (_super) {\n __extends(SwitchComponent, _super);\n function SwitchComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new Switch({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n SwitchComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n SwitchComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n SwitchComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n SwitchComponent.prototype.click = function () {\n return this.ej2Instances.click();\n };\n SwitchComponent.prototype.focusIn = function () {\n return this.ej2Instances.focusIn();\n };\n SwitchComponent.prototype.toggle = function () {\n return this.ej2Instances.toggle();\n };\n SwitchComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], SwitchComponent);\n return SwitchComponent;\n}(ComponentBase));\nexport { SwitchComponent };\nexport var SwitchPlugin = {\n name: 'ejs-switch',\n install: function (Vue) {\n Vue.component(SwitchPlugin.name, SwitchComponent);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nexport var properties = ['animation', 'closeDelay', 'content', 'cssClass', 'enableHtmlParse', 'enableHtmlSanitizer', 'enablePersistence', 'enableRtl', 'height', 'isSticky', 'locale', 'mouseTrail', 'offsetX', 'offsetY', 'openDelay', 'opensOn', 'position', 'showTipPointer', 'target', 'tipPointerPosition', 'width', 'windowCollision', 'afterClose', 'afterOpen', 'beforeClose', 'beforeCollision', 'beforeOpen', 'beforeRender', 'created', 'destroyed'];\nexport var modelProps = [];\n/**\n * Represents the VueJS Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * Show Tooltip\n * ```\n */\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new Tooltip({});\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n TooltipComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n TooltipComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n TooltipComponent.prototype.close = function (animation) {\n return this.ej2Instances.close(animation);\n };\n TooltipComponent.prototype.open = function (element, animation) {\n return this.ej2Instances.open(element, animation);\n };\n TooltipComponent.prototype.refresh = function (target) {\n return this.ej2Instances.refresh(target);\n };\n TooltipComponent = __decorate([\n EJComponentDecorator({\n props: properties\n })\n ], TooltipComponent);\n return TooltipComponent;\n}(ComponentBase));\nexport { TooltipComponent };\nexport var TooltipPlugin = {\n name: 'ejs-tooltip',\n install: function (Vue) {\n Vue.component(TooltipPlugin.name, TooltipComponent);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.prototype.render = function () {\n return;\n };\n ColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnsDirective);\n return ColumnsDirective;\n}(Vue));\nexport { ColumnsDirective };\nexport var ColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n }\n};\n/**\n * `e-column` directive represent a column of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.prototype.render = function () {\n return;\n };\n ColumnDirective = __decorate([\n EJComponentDecorator({})\n ], ColumnDirective);\n return ColumnDirective;\n}(Vue));\nexport { ColumnDirective };\nexport var ColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(ColumnPlugin.name, ColumnDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AggregateColumnsDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnsDirective, _super);\n function AggregateColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnsDirective.prototype.render = function () {\n return;\n };\n AggregateColumnsDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnsDirective);\n return AggregateColumnsDirective;\n}(Vue));\nexport { AggregateColumnsDirective };\nexport var AggregateColumnsPlugin = {\n name: 'e-columns',\n install: function (Vue) {\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n/**\n * `e-aggregate->e-column` directive represent a aggregate column of the VueJS Grid.\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar AggregateColumnDirective = /** @class */ (function (_super) {\n __extends(AggregateColumnDirective, _super);\n function AggregateColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateColumnDirective.prototype.render = function () {\n return;\n };\n AggregateColumnDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateColumnDirective);\n return AggregateColumnDirective;\n}(Vue));\nexport { AggregateColumnDirective };\nexport var AggregateColumnPlugin = {\n name: 'e-column',\n install: function (Vue) {\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport Vue from 'vue';\nimport { EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nvar AggregatesDirective = /** @class */ (function (_super) {\n __extends(AggregatesDirective, _super);\n function AggregatesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregatesDirective.prototype.render = function () {\n return;\n };\n AggregatesDirective = __decorate([\n EJComponentDecorator({})\n ], AggregatesDirective);\n return AggregatesDirective;\n}(Vue));\nexport { AggregatesDirective };\nexport var AggregatesPlugin = {\n name: 'e-aggregates',\n install: function (Vue) {\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n }\n};\n/**\n * `e-aggregate` directive represent a aggregate row of the VueJS Grid.\n * It must be contained in a Grid component(`ejs-grid`).\n * ```vue\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar AggregateDirective = /** @class */ (function (_super) {\n __extends(AggregateDirective, _super);\n function AggregateDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AggregateDirective.prototype.render = function () {\n return;\n };\n AggregateDirective = __decorate([\n EJComponentDecorator({})\n ], AggregateDirective);\n return AggregateDirective;\n}(Vue));\nexport { AggregateDirective };\nexport var AggregatePlugin = {\n name: 'e-aggregate',\n install: function (Vue) {\n Vue.component(AggregatePlugin.name, AggregateDirective);\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ColumnsDirective, ColumnDirective, ColumnsPlugin, ColumnPlugin } from './columns.directive';\nimport { AggregateColumnsDirective, AggregateColumnDirective, AggregateColumnsPlugin, AggregateColumnPlugin } from './aggregate-columns.directive';\nimport { AggregatesDirective, AggregateDirective, AggregatesPlugin, AggregatePlugin } from './aggregates.directive';\nexport var properties = ['aggregates', 'allowExcelExport', 'allowFiltering', 'allowGrouping', 'allowKeyboard', 'allowMultiSorting', 'allowPaging', 'allowPdfExport', 'allowReordering', 'allowResizing', 'allowRowDragAndDrop', 'allowSelection', 'allowSorting', 'allowTextWrap', 'childGrid', 'clipMode', 'columnChooserSettings', 'columnMenuItems', 'columnQueryMode', 'columns', 'contextMenuItems', 'currencyCode', 'currentAction', 'dataSource', 'detailTemplate', 'editSettings', 'ej2StatePersistenceVersion', 'enableAdaptiveUI', 'enableAltRow', 'enableAutoFill', 'enableColumnVirtualization', 'enableHeaderFocus', 'enableHover', 'enableImmutableMode', 'enableInfiniteScrolling', 'enablePersistence', 'enableRtl', 'enableVirtualization', 'filterSettings', 'frozenColumns', 'frozenRows', 'gridLines', 'groupSettings', 'height', 'hierarchyPrintMode', 'infiniteScrollSettings', 'locale', 'pageSettings', 'pagerTemplate', 'parentDetails', 'printMode', 'query', 'queryString', 'resizeSettings', 'rowDropSettings', 'rowHeight', 'rowRenderingMode', 'rowTemplate', 'searchSettings', 'selectedRowIndex', 'selectionSettings', 'showColumnChooser', 'showColumnMenu', 'sortSettings', 'textWrapSettings', 'toolbar', 'toolbarTemplate', 'width', 'actionBegin', 'actionComplete', 'actionFailure', 'batchAdd', 'batchCancel', 'batchDelete', 'beforeAutoFill', 'beforeBatchAdd', 'beforeBatchDelete', 'beforeBatchSave', 'beforeCopy', 'beforeDataBound', 'beforeExcelExport', 'beforeOpenColumnChooser', 'beforePaste', 'beforePdfExport', 'beforePrint', 'beginEdit', 'cellDeselected', 'cellDeselecting', 'cellEdit', 'cellSave', 'cellSaved', 'cellSelected', 'cellSelecting', 'checkBoxChange', 'columnDataStateChange', 'columnDeselected', 'columnDeselecting', 'columnDrag', 'columnDragStart', 'columnDrop', 'columnMenuClick', 'columnMenuOpen', 'columnSelected', 'columnSelecting', 'commandClick', 'contextMenuClick', 'contextMenuOpen', 'created', 'dataBound', 'dataSourceChanged', 'dataStateChange', 'destroyed', 'detailDataBound', 'excelAggregateQueryCellInfo', 'excelExportComplete', 'excelHeaderQueryCellInfo', 'excelQueryCellInfo', 'exportDetailDataBound', 'exportGroupCaption', 'headerCellInfo', 'keyPressed', 'lazyLoadGroupCollapse', 'lazyLoadGroupExpand', 'load', 'pdfAggregateQueryCellInfo', 'pdfExportComplete', 'pdfHeaderQueryCellInfo', 'pdfQueryCellInfo', 'printComplete', 'queryCellInfo', 'recordClick', 'recordDoubleClick', 'resizeStart', 'resizeStop', 'resizing', 'rowDataBound', 'rowDeselected', 'rowDeselecting', 'rowDrag', 'rowDragStart', 'rowDragStartHelper', 'rowDrop', 'rowSelected', 'rowSelecting', 'toolbarClick'];\nexport var modelProps = ['dataSource'];\n/**\n * `ejs-grid` represents the VueJS Grid Component.\n * ```vue\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = true;\n _this.hasInjectedModules = true;\n _this.tagMapper = { \"e-columns\": \"e-column\", \"e-aggregates\": { \"e-aggregate\": { \"e-columns\": \"e-column\" } } };\n _this.tagNameMapper = {};\n _this.ej2Instances = new Grid({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n GridComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n GridComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n GridComponent.prototype.render = function (createElement) {\n return createElement('div', this.$slots.default);\n };\n GridComponent.prototype.addRecord = function (data, index) {\n return this.ej2Instances.addRecord(data, index);\n };\n GridComponent.prototype.autoFitColumns = function (fieldNames) {\n return this.ej2Instances.autoFitColumns(fieldNames);\n };\n GridComponent.prototype.batchAsyncUpdate = function (changes) {\n return this.ej2Instances.batchAsyncUpdate(changes);\n };\n GridComponent.prototype.batchUpdate = function (changes) {\n return this.ej2Instances.batchUpdate(changes);\n };\n GridComponent.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n return this.ej2Instances.calculatePageSizeByParentHeight(containerHeight);\n };\n GridComponent.prototype.clearCellSelection = function () {\n return this.ej2Instances.clearCellSelection();\n };\n GridComponent.prototype.clearFiltering = function (fields) {\n return this.ej2Instances.clearFiltering(fields);\n };\n GridComponent.prototype.clearGrouping = function () {\n return this.ej2Instances.clearGrouping();\n };\n GridComponent.prototype.clearRowSelection = function () {\n return this.ej2Instances.clearRowSelection();\n };\n GridComponent.prototype.clearSelection = function () {\n return this.ej2Instances.clearSelection();\n };\n GridComponent.prototype.clearSorting = function () {\n return this.ej2Instances.clearSorting();\n };\n GridComponent.prototype.closeEdit = function () {\n return this.ej2Instances.closeEdit();\n };\n GridComponent.prototype.copy = function (withHeader) {\n return this.ej2Instances.copy(withHeader);\n };\n GridComponent.prototype.csvExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.csvExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.dataReady = function () {\n return this.ej2Instances.dataReady();\n };\n GridComponent.prototype.deleteRecord = function (fieldname, data) {\n return this.ej2Instances.deleteRecord(fieldname, data);\n };\n GridComponent.prototype.deleteRow = function (tr) {\n return this.ej2Instances.deleteRow(tr);\n };\n GridComponent.prototype.destroyTemplate = function (propertyNames, index) {\n return this.ej2Instances.destroyTemplate(propertyNames, index);\n };\n GridComponent.prototype.detailCollapseAll = function () {\n return this.ej2Instances.detailCollapseAll();\n };\n GridComponent.prototype.detailExpandAll = function () {\n return this.ej2Instances.detailExpandAll();\n };\n GridComponent.prototype.editCell = function (index, field) {\n return this.ej2Instances.editCell(index, field);\n };\n GridComponent.prototype.enableToolbarItems = function (items, isEnable) {\n return this.ej2Instances.enableToolbarItems(items, isEnable);\n };\n GridComponent.prototype.endEdit = function () {\n return this.ej2Instances.endEdit();\n };\n GridComponent.prototype.excelExport = function (excelExportProperties, isMultipleExport, workbook, isBlob) {\n return this.ej2Instances.excelExport(excelExportProperties, isMultipleExport, workbook, isBlob);\n };\n GridComponent.prototype.extendRequiredModules = function (modules) {\n return this.ej2Instances.extendRequiredModules(modules);\n };\n GridComponent.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n return this.ej2Instances.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n };\n GridComponent.prototype.getBatchChanges = function () {\n return this.ej2Instances.getBatchChanges();\n };\n GridComponent.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getColumnByField = function (field) {\n return this.ej2Instances.getColumnByField(field);\n };\n GridComponent.prototype.getColumnByUid = function (uid) {\n return this.ej2Instances.getColumnByUid(uid);\n };\n GridComponent.prototype.getColumnFieldNames = function () {\n return this.ej2Instances.getColumnFieldNames();\n };\n GridComponent.prototype.getColumnHeaderByField = function (field) {\n return this.ej2Instances.getColumnHeaderByField(field);\n };\n GridComponent.prototype.getColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getColumnHeaderByUid = function (uid) {\n return this.ej2Instances.getColumnHeaderByUid(uid);\n };\n GridComponent.prototype.getColumnIndexByField = function (field) {\n return this.ej2Instances.getColumnIndexByField(field);\n };\n GridComponent.prototype.getColumnIndexByUid = function (uid) {\n return this.ej2Instances.getColumnIndexByUid(uid);\n };\n GridComponent.prototype.getColumns = function (isRefresh) {\n return this.ej2Instances.getColumns(isRefresh);\n };\n GridComponent.prototype.getContent = function () {\n return this.ej2Instances.getContent();\n };\n GridComponent.prototype.getContentTable = function () {\n return this.ej2Instances.getContentTable();\n };\n GridComponent.prototype.getCurrentViewRecords = function () {\n return this.ej2Instances.getCurrentViewRecords();\n };\n GridComponent.prototype.getDataModule = function () {\n return this.ej2Instances.getDataModule();\n };\n GridComponent.prototype.getDataRows = function () {\n return this.ej2Instances.getDataRows();\n };\n GridComponent.prototype.getFilterUIInfo = function () {\n return this.ej2Instances.getFilterUIInfo();\n };\n GridComponent.prototype.getFilteredRecords = function () {\n return this.ej2Instances.getFilteredRecords();\n };\n GridComponent.prototype.getFooterContent = function () {\n return this.ej2Instances.getFooterContent();\n };\n GridComponent.prototype.getFooterContentTable = function () {\n return this.ej2Instances.getFooterContentTable();\n };\n GridComponent.prototype.getForeignKeyColumns = function () {\n return this.ej2Instances.getForeignKeyColumns();\n };\n GridComponent.prototype.getFrozenDataRows = function () {\n return this.ej2Instances.getFrozenDataRows();\n };\n GridComponent.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenLeftColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenLeftCount = function () {\n return this.ej2Instances.getFrozenLeftCount();\n };\n GridComponent.prototype.getFrozenMode = function () {\n return this.ej2Instances.getFrozenMode();\n };\n GridComponent.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getFrozenRightCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getFrozenRightColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getFrozenRightDataRows = function () {\n return this.ej2Instances.getFrozenRightDataRows();\n };\n GridComponent.prototype.getFrozenRightRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRightRowByIndex(index);\n };\n GridComponent.prototype.getFrozenRightRows = function () {\n return this.ej2Instances.getFrozenRightRows();\n };\n GridComponent.prototype.getFrozenRowByIndex = function (index) {\n return this.ej2Instances.getFrozenRowByIndex(index);\n };\n GridComponent.prototype.getHeaderContent = function () {\n return this.ej2Instances.getHeaderContent();\n };\n GridComponent.prototype.getHeaderTable = function () {\n return this.ej2Instances.getHeaderTable();\n };\n GridComponent.prototype.getHiddenColumns = function () {\n return this.ej2Instances.getHiddenColumns();\n };\n GridComponent.prototype.getMediaColumns = function () {\n return this.ej2Instances.getMediaColumns();\n };\n GridComponent.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.ej2Instances.getMovableCellFromIndex(rowIndex, columnIndex);\n };\n GridComponent.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.ej2Instances.getMovableColumnHeaderByIndex(index);\n };\n GridComponent.prototype.getMovableDataRows = function () {\n return this.ej2Instances.getMovableDataRows();\n };\n GridComponent.prototype.getMovableRowByIndex = function (index) {\n return this.ej2Instances.getMovableRowByIndex(index);\n };\n GridComponent.prototype.getMovableRows = function () {\n return this.ej2Instances.getMovableRows();\n };\n GridComponent.prototype.getPager = function () {\n return this.ej2Instances.getPager();\n };\n GridComponent.prototype.getPrimaryKeyFieldNames = function () {\n return this.ej2Instances.getPrimaryKeyFieldNames();\n };\n GridComponent.prototype.getRowByIndex = function (index) {\n return this.ej2Instances.getRowByIndex(index);\n };\n GridComponent.prototype.getRowIndexByPrimaryKey = function (value) {\n return this.ej2Instances.getRowIndexByPrimaryKey(value);\n };\n GridComponent.prototype.getRowInfo = function (target) {\n return this.ej2Instances.getRowInfo(target);\n };\n GridComponent.prototype.getRows = function () {\n return this.ej2Instances.getRows();\n };\n GridComponent.prototype.getSelectedColumnsUid = function () {\n return this.ej2Instances.getSelectedColumnsUid();\n };\n GridComponent.prototype.getSelectedRecords = function () {\n return this.ej2Instances.getSelectedRecords();\n };\n GridComponent.prototype.getSelectedRowCellIndexes = function () {\n return this.ej2Instances.getSelectedRowCellIndexes();\n };\n GridComponent.prototype.getSelectedRowIndexes = function () {\n return this.ej2Instances.getSelectedRowIndexes();\n };\n GridComponent.prototype.getSelectedRows = function () {\n return this.ej2Instances.getSelectedRows();\n };\n GridComponent.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return this.ej2Instances.getSummaryValues(summaryCol, summaryData);\n };\n GridComponent.prototype.getUidByColumnField = function (field) {\n return this.ej2Instances.getUidByColumnField(field);\n };\n GridComponent.prototype.getVisibleColumns = function () {\n return this.ej2Instances.getVisibleColumns();\n };\n GridComponent.prototype.goToPage = function (pageNo) {\n return this.ej2Instances.goToPage(pageNo);\n };\n GridComponent.prototype.groupCollapseAll = function () {\n return this.ej2Instances.groupCollapseAll();\n };\n GridComponent.prototype.groupColumn = function (columnName) {\n return this.ej2Instances.groupColumn(columnName);\n };\n GridComponent.prototype.groupExpandAll = function () {\n return this.ej2Instances.groupExpandAll();\n };\n GridComponent.prototype.hideColumns = function (keys, hideBy) {\n return this.ej2Instances.hideColumns(keys, hideBy);\n };\n GridComponent.prototype.hideScroll = function () {\n return this.ej2Instances.hideScroll();\n };\n GridComponent.prototype.hideSpinner = function () {\n return this.ej2Instances.hideSpinner();\n };\n GridComponent.prototype.isFrozenGrid = function () {\n return this.ej2Instances.isFrozenGrid();\n };\n GridComponent.prototype.openColumnChooser = function (x, y) {\n return this.ej2Instances.openColumnChooser(x, y);\n };\n GridComponent.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.ej2Instances.pdfExport(pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n };\n GridComponent.prototype.print = function () {\n return this.ej2Instances.print();\n };\n GridComponent.prototype.refresh = function () {\n return this.ej2Instances.refresh();\n };\n GridComponent.prototype.refreshColumns = function () {\n return this.ej2Instances.refreshColumns();\n };\n GridComponent.prototype.refreshHeader = function () {\n return this.ej2Instances.refreshHeader();\n };\n GridComponent.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n return this.ej2Instances.reorderColumnByIndex(fromIndex, toIndex);\n };\n GridComponent.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n return this.ej2Instances.reorderColumnByTargetIndex(fieldName, toIndex);\n };\n GridComponent.prototype.reorderColumns = function (fromFName, toFName) {\n return this.ej2Instances.reorderColumns(fromFName, toFName);\n };\n GridComponent.prototype.reorderRows = function (fromIndexes, toIndex) {\n return this.ej2Instances.reorderRows(fromIndexes, toIndex);\n };\n GridComponent.prototype.saveCell = function () {\n return this.ej2Instances.saveCell();\n };\n GridComponent.prototype.search = function (searchString) {\n return this.ej2Instances.search(searchString);\n };\n GridComponent.prototype.selectCell = function (cellIndex, isToggle) {\n return this.ej2Instances.selectCell(cellIndex, isToggle);\n };\n GridComponent.prototype.selectCells = function (rowCellIndexes) {\n return this.ej2Instances.selectCells(rowCellIndexes);\n };\n GridComponent.prototype.selectCellsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectCellsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.selectRow = function (index, isToggle) {\n return this.ej2Instances.selectRow(index, isToggle);\n };\n GridComponent.prototype.selectRows = function (rowIndexes) {\n return this.ej2Instances.selectRows(rowIndexes);\n };\n GridComponent.prototype.selectRowsByRange = function (startIndex, endIndex) {\n return this.ej2Instances.selectRowsByRange(startIndex, endIndex);\n };\n GridComponent.prototype.serverExcelExport = function (url) {\n return this.ej2Instances.serverExcelExport(url);\n };\n GridComponent.prototype.serverPdfExport = function (url) {\n return this.ej2Instances.serverPdfExport(url);\n };\n GridComponent.prototype.setCellValue = function (key, field, value) {\n return this.ej2Instances.setCellValue(key, field, value);\n };\n GridComponent.prototype.setGridContent = function (element) {\n return this.ej2Instances.setGridContent(element);\n };\n GridComponent.prototype.setGridContentTable = function (element) {\n return this.ej2Instances.setGridContentTable(element);\n };\n GridComponent.prototype.setGridHeaderContent = function (element) {\n return this.ej2Instances.setGridHeaderContent(element);\n };\n GridComponent.prototype.setGridHeaderTable = function (element) {\n return this.ej2Instances.setGridHeaderTable(element);\n };\n GridComponent.prototype.setGridPager = function (element) {\n return this.ej2Instances.setGridPager(element);\n };\n GridComponent.prototype.setRowData = function (key, rowData) {\n return this.ej2Instances.setRowData(key, rowData);\n };\n GridComponent.prototype.showColumns = function (keys, showBy) {\n return this.ej2Instances.showColumns(keys, showBy);\n };\n GridComponent.prototype.showSpinner = function () {\n return this.ej2Instances.showSpinner();\n };\n GridComponent.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n return this.ej2Instances.sortColumn(columnName, direction, isMultiSort);\n };\n GridComponent.prototype.startEdit = function () {\n return this.ej2Instances.startEdit();\n };\n GridComponent.prototype.ungroupColumn = function (columnName) {\n return this.ej2Instances.ungroupColumn(columnName);\n };\n GridComponent.prototype.updateCell = function (rowIndex, field, value) {\n return this.ej2Instances.updateCell(rowIndex, field, value);\n };\n GridComponent.prototype.updateExternalMessage = function (message) {\n return this.ej2Instances.updateExternalMessage(message);\n };\n GridComponent.prototype.updateRow = function (index, data) {\n return this.ej2Instances.updateRow(index, data);\n };\n GridComponent.prototype.updateRowValue = function (key, rowData) {\n return this.ej2Instances.updateRowValue(key, rowData);\n };\n GridComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], GridComponent);\n return GridComponent;\n}(ComponentBase));\nexport { GridComponent };\nexport var GridPlugin = {\n name: 'ejs-grid',\n install: function (Vue) {\n Vue.component(GridPlugin.name, GridComponent);\n Vue.component(ColumnPlugin.name, ColumnDirective);\n Vue.component(ColumnsPlugin.name, ColumnsDirective);\n Vue.component(AggregatePlugin.name, AggregateDirective);\n Vue.component(AggregatesPlugin.name, AggregatesDirective);\n Vue.component(AggregateColumnPlugin.name, AggregateColumnDirective);\n Vue.component(AggregateColumnsPlugin.name, AggregateColumnsDirective);\n }\n};\n","\r\nimport { L10n } from \"@syncfusion/ej2-base\";\r\n\r\nL10n.load({\r\n \"es-CO\": { \r\n grid: {\r\n EmptyRecord: \"Sin Registros\",\r\n Add: \"Nuevo\",\r\n Edit: \"Editar\",\r\n Delete: \"Borrar\",\r\n Update: \"Actualizar\",\r\n Cancel: \"Cancelar\",\r\n True: \"SI\",\r\n False: \"NO\",\r\n Item: \"Registro\",\r\n Items: \"Registros\",\r\n StartsWith: \"Empieza Con\",\r\n EndsWith: \"Termina Con\",\r\n Contains: \"Contiene\",\r\n Equal: \"Igual a\",\r\n NotEqual: \"Diferente a\",\r\n LessThan: \"Menor que\",\r\n LessThanOrEqual: \"Menor o igual que\",\r\n GreaterThan: \"Mayor que\",\r\n GreaterThanOrEqual: \"Mayor o igual que\",\r\n FilterButton: \"Filtrar\",\r\n ClearButton: \"Limpiar\",\r\n FirstPage: \"Primera Página\",\r\n LastPage: \"Ultima Página\",\r\n PreviousPage: \"Página Anterior\",\r\n NextPage: \"Siguiente Página\",\r\n SortAscending: \"Orden Ascendente\",\r\n SortDescending: \"Orden Descendente\", \r\n EnterValue: \"Digite un Valor\",\r\n currentPageInfo: \"Página {0} de {1}\",\r\n totalItemsInfo: \"({0} registros)\",\r\n firstPageTooltip: \"Ir a la Primera Página\",\r\n lastPageTooltip: \"Ir a la Ultima Página\",\r\n nextPageTooltip: \"Ir a la Siguiente Página\",\r\n previousPageTooltip: \"Ir a la Página Anterior\",\r\n pagerAllDropDown: \"Registros\",\r\n pagerDropDown: \"Registros por Página\", \r\n FilterTrue: \"SI\",\r\n FilterFalse: \"NO\",\r\n FilterbarTitle: \" Filtro\",\r\n Excelexport: \"Exportar Excel\",\r\n CancelButton: \"Cancelar\",\r\n EditOperationAlert: \"Debe seleccionar un registro para editar\",\r\n DeleteOperationAlert: \"Debe seleccionar un registro para desactivar\",\r\n ConfirmDelete: \"Confirma que desea desactivar el registro?\"\r\n },\r\n dropdowns: {\r\n noRecordsTemplate: \"Sin registros para mostrar\",\r\n actionFailureTemplate: \"Fallo al ejecutar la acción\"\r\n },\r\n datetimepicker: { today: \"Hoy\" },\r\n daterangepicker: {\r\n startLabel: \"Fecha Inicio\",\r\n endLabel: \"Fecha Fin\",\r\n applyText: \"Seleccionar\",\r\n cancelText: \"Cancelar\",\r\n selectedDays: \"Fecha Seleccionada\",\r\n days: \"Dias\",\r\n customRange: \"Otra Fecha\",\r\n today: \"Hoy\"\r\n },\r\n calendar: { today: \"Hoy\" },\r\n uploader: {\r\n invalidMinFileSize: \"El tamaño del archivo es demasiado pequeño\",\r\n invalidMaxFileSize: \"El tamaño del archivo es demasiado grande\",\r\n invalidFileType: \"El tipo de Archivo no está autorizado\",\r\n Browse: \"Buscar\",\r\n Clear: \"Limpiar\",\r\n Upload: \"Subir\",\r\n dropFilesHint: \"o arrastre los archivos aquí..\",\r\n uploadFailedMessage: \"No fué posible adjuntar el archivo\",\r\n uploadSuccessMessage: \"Carga de archivo exitosa\",\r\n removedSuccessMessage: \"Archivo elimiado con éxito\",\r\n removedFailedMessage: \"Error eliminando el archivo\",\r\n inProgress: \"Subiendo..\",\r\n readyToUploadMessage: \"Listo para cargar\",\r\n remove: \"Eliminar\",\r\n cancel: \"Cancelar\",\r\n delete: \"Eliminar el archivo\"\r\n },\r\n datepicker: {\r\n placeholder: \"Seleccione una Fecha\",\r\n today: \"Hoy\"\r\n }\r\n }\r\n});\r\n\r\nimport { loadCldr } from \"@syncfusion/ej2-base\";\r\nimport { setCulture } from \"@syncfusion/ej2-base\";\r\nimport numberingSystems from \"../../node_modules/cldr-data/supplemental/numberingSystems.json\";\r\nimport gregorian from \"../../node_modules/cldr-data/main/es-CO/ca-gregorian.json\";\r\nimport numbers from \"../../node_modules/cldr-data/main/es-CO/numbers.json\";\r\nimport timeZoneNames from \"../../node_modules/cldr-data/main/es-CO/timeZoneNames.json\";\r\nimport weekData from \"../../node_modules/cldr-data/supplemental/weekData.json\"; // To load the culture based first day of week\r\n\r\nloadCldr(numberingSystems, gregorian, numbers, timeZoneNames, weekData);\r\nsetCulture(\"es-CO\");\r\n\r\n\r\nexport default {\r\n methods: {\r\n }\r\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})();\nimport { EventHandler, getValue, closest, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil } from '../base/util';\n/**\n * FocusStrategy class\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function () {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n var added = 'addedRecords';\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[added].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus();\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.e-gridcontent'));\n var isHeader = !isNullOrUndefined(closest(e.target, '.e-gridheader'));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.e-frozencontent')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozenheader'));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader')) ||\n e.target.classList.contains('e-content') ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader'))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.skipOn(e)) {\n return;\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || (filterCell ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.e-gridcontent') === null && closest(target, '.e-gridheader') === null)\n || (e.action === 'space' && (!target.classList.contains('e-gridchkbox') && closest(target, '.e-gridchkbox') === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll) {\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /** @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /** @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /** @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject();\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === 'Left-Right') {\n var frRows = _this.parent.getFrozenRightRowsObject();\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging') {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.parent.on(event.keyPressed, this.onKeyPress, this);\n this.parent.on(event.click, this.onClick, this);\n this.parent.on(event.contentReady, this.refMatrix, this);\n this.parent.on(event.partialRefresh, this.refMatrix, this);\n this.parent.on(event.refreshExpandandCollapse, this.refMatrix, this);\n this.parent.on(event.headerRefreshed, this.refreshMatrix(), this);\n this.parent.on('close-edit', this.restoreFocus, this);\n this.parent.on('restore-Focus', this.restoreFocus, this);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.on(evts[i], this.clearIndicator, this);\n }\n this.parent.on('sorting-complete', this.restoreFocus, this);\n this.parent.on('filtering-complete', this.filterfocus, this);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction, this);\n }\n this.parent.on(event.batchAdd, this.refMatrix, this);\n this.parent.on(event.batchCancel, this.refMatrix, this);\n this.parent.on(event.batchDelete, this.refMatrix, this);\n this.parent.on(event.detailDataBound, this.refMatrix, this);\n this.parent.on(event.onEmpty, this.refMatrix, this);\n this.parent.on(event.cellFocused, this.internalCellFocus, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n this.parent.off(event.keyPressed, this.onKeyPress);\n this.parent.off(event.click, this.onClick);\n this.parent.off(event.contentReady, this.refMatrix);\n this.parent.off(event.partialRefresh, this.refMatrix);\n this.parent.off(event.refreshExpandandCollapse, this.refMatrix);\n this.parent.off(event.headerRefreshed, this.refreshMatrix());\n this.parent.off('close-edit', this.restoreFocus);\n this.parent.off('restore-focus', this.restoreFocus);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.off(evts[i], this.clearOutline);\n }\n this.parent.off('sorting-complete', this.restoreFocus);\n this.parent.off('filtering-complete', this.filterfocus);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction);\n }\n this.parent.off(event.batchAdd, this.refMatrix);\n this.parent.off(event.batchDelete, this.refMatrix);\n this.parent.off(event.batchCancel, this.refMatrix);\n this.parent.off(event.detailDataBound, this.refMatrix);\n this.parent.off(event.onEmpty, this.refMatrix);\n this.parent.off(event.cellFocused, this.internalCellFocus);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell') || e.parent.classList.contains('e-templatecell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[rowIndex], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[i].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current[0];\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[index]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[rowIndex].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[i].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (var j = 0; j < cells.length; j++) {\n this.set(i, j, rows[i].visible === false ? false : selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if ((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString()) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[rowIndex].querySelectorAll('.e-indentcell').length +\n this.getTable().rows[rowIndex].querySelectorAll('.e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains('e-rowcell') && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n target = (target.classList.contains('e-rowcell') ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains('e-table') ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, 'e-rowcell') && !parentsUntil(e.target, 'e-groupcaption'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1)\n || (cell.column && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i < len; i++) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n var right = ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns);\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains('e-row')) {\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right' && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains('e-rowcell');\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute('aria-rowindex'), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute('aria-colindex'), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[rowIndex])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains('e-rowcell');\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains('e-rowcell')) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains('e-rowcell') && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return !isBlazor() && this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains('e-rowcell') ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[rowIndex].cells[cellIndex];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template))) ||\n cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && current[1] === 0;\n var right = (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && current[1] === this.matrix.columns;\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right'\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n for (var i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0);\n return { swap: swap, toHeader: toHeader, toFrozen: toHeader };\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: toHeader,\n toFrozen: toHeader\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frSwap, toFrozen: toFrozen };\n }\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n /** @hidden */\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n };\n SearchBox.prototype.searchBlur = function (args) {\n args.target.parentElement.classList.remove('e-input-focus');\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0),\n toHeader: toHeader,\n toFrozenRight: toHeader\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frozenSwap, toFrozenRight: toFrozen };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = 0;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","var fails = require('../internals/fails');\nvar whitespaces = require('../internals/whitespaces');\n\nvar non = '\\u200B\\u0085\\u180E';\n\n// check that a method works with the correct list\n// of whitespaces and has a correct name\nmodule.exports = function (METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportdetaildatabound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var setCustomFilterHeader = 'set-custom-filter-header';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshVirtualCacheOnRowDD = 'refresh-Virtual-Cache-On-RowDD';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\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})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.getGroupedRecords(0, data[i], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var isRenderCaption = this.isInfiniteScroll && this.prevKey === data.key;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here. \n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var tmp = [];\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = isBlazor() && this.parent.isServerRendered ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[i] = this.generateRow(data[i], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[i].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (var j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// tslint:disable-next-line\nvar proxy;\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// tslint:disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var containerRectValues;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// tslint:disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) < maxWidth\n || (targetRectValues.right - containerRectValues.left) > targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /**\n * Constructor for creating the widget\n * @hidden\n */\n function Dialog(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = this.minHeight.toString();\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n ;\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.hide(event);\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n if (this.showCloseIcon) {\n this.renderCloseIcon();\n }\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && typeof (this.buttons[i].click) === 'function' && footerBtn.length > 0) {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n this.btnObj[i].element.classList.add('e-flat');\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.setContent = function () {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = this.sanitizeHelper(template);\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /**\n * @hidden\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\!?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msMatchesSelector : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n * @private\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons':\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.zIndex = getZindexPartial(zIndexElement);\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n * @method destroy\n * @return {void}\n * @memberof dialog\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n * @return {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @return {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // tslint:disable-next-line:no-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n * @return {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n !isNullOrUndefined(_this.targetEle) ? removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]) :\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n if (args) {\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n * @param { number } index - Index of the button.\n * @return {Button}\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n function alert(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n function confirm(args) {\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n return options;\n }\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, isBlazor, Browser, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n * @param {Object} target\n * @param {string} checkFor\n * @returns no\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n /* tslint:disable:no-any */\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n * @param {string} field\n * @param {Object} data\n * @param {IColumn} column\n * @hidden\n */\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n * @param {string} field\n * @param {IColumn} column\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n * @param {Function} fn - Function that contains the actual action\n * @return {Promise}\n * @hidden\n */\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[i].columns) {\n for (var j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\n/**\n * @hidden\n */\nvar count = 0;\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[items].length; i < len; i++) {\n var gLevel = val.data[items][i];\n count += gLevel[items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[items][records]) ? gLevel[items][records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[items][records]) && !isNullOrUndefined(val[agrCnt])) ? gLevel[items][records].length :\n gLevel[items].length;\n if (gLevel[items].GroupGuid && gLevel[items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[items].length;\n if (!isNullOrUndefined(val[agrCnt])) {\n if (val[agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[agrCnt]) + val[agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[items].length; j < length_1; j++) {\n var nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/** @hidden */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/** @hidden */\nexport function templateCompiler(template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/** @hidden */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/** @hidden */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/** @hidden */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/** @hidden */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c], gObj);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns, null, gObj);\n column = new Column(columns[c], gObj);\n }\n }\n else {\n column = columns[c];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[c] = column;\n }\n return columns;\n}\n/** @hidden */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n var isBottomTail;\n popUpSpan.className = className;\n popUp.style.display = '';\n isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/** @hidden */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/** @hidden */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/** @hidden */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/** @hidden */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/** @hidden */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/** @hidden */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/** @hidden */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/** @hidden */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/** @hidden */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/** @hidden */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/** @hidden */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/** @hidden */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/** @hidden */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/** @hidden */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/** @hidden */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/** @hidden */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/** @hidden */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/** @hidden */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, 'e-row');\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/** @hidden */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/** @hidden */\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n action ? elem[i].classList.add(clName) : elem[i].classList.remove(clName);\n }\n}\n/** @hidden */\nexport function setFormatter(serviceLocator, column, isServerRendered) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n var isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/** @hidden */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[i], args.slice(), []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], args.slice());\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/** @hidden */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/** @hidden */\nexport function getFilterMenuPostion(target, dialogObj, grid) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos;\n newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/** @hidden */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/** @hidden */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/** @hidden */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/** @hidden */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/** @hidden */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n * @param row - Grid Row model object.\n * @param columns - Foreign columns array.\n * @param data - Updated Row data.\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n * @param column - Foreign Key column\n * @param data - Row data.\n * @param lValue - cell value.\n * @param foreignData - foreign data source.\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n * @param foreignKeyValue - Defines ForeignKeyValue.\n * @param columns - Array of column object.\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @hidden\n * @param filterObject - Defines predicate model object\n */\nexport function getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @hidden\n */\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n if (!arguments[i]) {\n continue;\n }\n var obj1 = arguments[i];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[i_1]];\n var cpy = obj1[keys[i_1]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i_1]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i_1]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i_1]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[i] = checkDepth(col.columns[i], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\nexport var Global;\n(function (Global) {\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/** @hidden */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/** @hidden */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.e-row').getBoundingClientRect().height;\n var fHeight = closest(fTD, '.e-row').getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/** @hidden */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/** @hidden */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/** @hidden */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/** @hidden */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/** @hidden */\nexport function eventPromise(args, query) {\n var state;\n state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/** @hidden */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/** @hidden */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/** @hidden */\nexport function resetRowIndex(gObj, rows, rowElms, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDataRow) {\n rows[i].index = startIndex;\n rows[i].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[i].setAttribute('aria-rowindex', startIndex.toString());\n rows[i].isAltRow ? rowElms[i].classList.add('e-altrow') : rowElms[i].classList.remove('e-altrow');\n for (var j = 0; j < rowElms[i].cells.length; j++) {\n rowElms[i].cells[j].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/** @hidden */\nexport function resetRowObjectIndex(gObj, rows, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n startIndex++;\n }\n}\n/** @hidden */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[type].concat(changes[type]).reduce(function (r, o) {\n r[o[keyField]] = r[o[keyField]] === undefined ? o : Object.assign(r[o[keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[type] = Object.keys(newArray).map(function (k) { return newArray[k]; });\n}\n/** @hidden */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === 'Left-Right' ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === 'Left-Right') {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/** @hidden */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === 'frozen-left') {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === 'frozen-right') {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n rowObj ? callBack('frozen-left', rows[0], rowObj[0]) : callBack('frozen-left', rows[0]);\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n rowObj ? callBack('movable', rows[1], rowObj[1]) : callBack('movable', rows[1]);\n }\n if ((gObj.getFrozenMode() === 'Left-Right' || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n rowObj ? callBack('frozen-right', rows[2], rowObj[2]) : callBack('frozen-right', rows[2]);\n }\n}\n/** @hidden */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/** @hidden */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/** @hidden */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[k]);\n k--;\n }\n}\n/** @hidden */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n}\n/** @hidden */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === 'frozen-right'\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/** @hidden */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len) {\n if (col.getFreezeTableName() === 'frozen-left' || (!index && col.getFreezeTableName() === 'frozen-right') || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n}\n/** @hidden */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/** @hidden */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === 'Left-Right') {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/** @hidden */\nexport function getNumberFormat(numberFormat, type, isExcel) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n return mtch_1[pattern];\n });\n }\n return format;\n}\n/** @hidden */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[i].classList.add('e-bigger');\n }\n }\n}\n/** @hidden */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var colSpan = row.cells[i].cellSpan ? row.cells[i].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ? this.parent.getRowsObject()[row.index].cells :\n this.parent.getRowsObject()[row.index - 1].cells;\n var targetCell_1 = row.cells[i];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[j].visible === false) {\n visible++;\n }\n else {\n row.cells[j].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[j].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[i].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[i].spanText;\n td = cellRenderer.render(row.cells[i], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[i].isRowSpanned = true;\n row.cells[i].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[i].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[i].isSpanned = true;\n row.cells[i].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[i].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[i].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, isBlazor, updateBlazorTemplate, select } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n * The `Toolbar` module is used to handle ToolBar actions.\n * @hidden\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.parent.enableAdaptiveUI ? '' : this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: this.l10n.getConstant('Columnchooser'), tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right',\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon'\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n * @return {Element}\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n * @method destroy\n * @return {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n remove(this.element);\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = ' \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar.prototype.createToolbar = function () {\n var items = this.getResponsiveToolbarItems(this.getItems());\n this.toolbar = new tool({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this)\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[viewStr]) {\n this.toolbar[registerTemp] = {};\n this.toolbar[viewStr] = this.parent[viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.toolbar.overflowMode = 'Popup';\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (!isBlazor() && typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n if (isBlazor()) {\n var tempID = this.parent.element.id + 'toolbarTemplate';\n var item = appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', tempID));\n var items_1 = this.getItem(item);\n this.toolbar.items.push(items_1);\n this.toolbar.appendTo(this.element);\n updateBlazorTemplate(this.parent.element.id + 'toolbarTemplate', 'ToolbarTemplate', this.parent);\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n }\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n };\n Toolbar.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n };\n Toolbar.prototype.getResponsiveToolbarItems = function (items) {\n if (this.parent.enableAdaptiveUI) {\n for (var i = 0; i < items.length; i++) {\n items[i].visible = (items[i].id === this.parent.element.id + '_add'\n || items[i].id === this.parent.element.id + '_search' || items[i].id === this.parent.element.id + '_responsivesort'\n || items[i].id === this.parent.element.id + '_responsivefilter');\n }\n }\n return items;\n };\n Toolbar.prototype.refreshResponsiveToolbarItems = function (action) {\n var items = this.toolbar.items;\n var initial = ['add', 'search', 'responsivesort', 'responsivefilter'];\n if (this.parent.getSelectedRowIndexes().length) {\n initial.push('edit', 'delete');\n if (this.parent.rowRenderingMode !== 'Vertical') {\n initial.push('update', 'cancel');\n }\n }\n var search = ['responsiveback', 'search'];\n var buttons = action === ResponsiveToolbarAction.isInitial ? initial : search;\n for (var i = 0; i < items.length; i++) {\n var names = items[i].id.split('_');\n var ele = this.element.querySelector('#' + items[i].id);\n if (ele) {\n var parent_1 = parentsUntil(ele, 'e-toolbar-item');\n if (buttons.indexOf(names[1]) > -1) {\n parent_1.classList.remove('e-hidden');\n }\n else {\n parent_1.classList.add('e-hidden');\n }\n }\n }\n return items;\n };\n Toolbar.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n edit.allowAdding ? enableItems.push(this.gridID + '_add') : disableItems.push(this.gridID + '_add');\n edit.allowEditing && hasData ? enableItems.push(this.gridID + '_edit') : disableItems.push(this.gridID + '_edit');\n edit.allowDeleting && hasData ? enableItems.push(this.gridID + '_delete') : disableItems.push(this.gridID + '_delete');\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.querySelectorAll('.e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n if (this.parent.enableAdaptiveUI) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n * @hidden\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {\n var item = items_2[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = !isBlazor() || this.parent.isJsComponent ? args : { item: args.item, cancel: args.cancel, name: args.name };\n var originalEvent = args.originalEvent;\n gObj.trigger(events.toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n break;\n case gID + '_columnchooser':\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case 'copy':\n if (isBlazor()) {\n gObj.copy();\n }\n break;\n case 'copyheader':\n case 'copyHeader':\n if (isBlazor()) {\n gObj.copy(true);\n }\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n };\n Toolbar.prototype.search = function () {\n this.parent.search(this.searchElement.value);\n };\n Toolbar.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n };\n Toolbar.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n };\n Toolbar.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.reRenderToolbar, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.on(events.uiUpdate, this.onPropertyChanged, this);\n this.parent.on(events.inBoundModelChanged, this.updateSearchBox.bind(this));\n this.parent.on(events.modelChanged, this.refreshToolbarItems, this);\n this.parent.on(events.toolbarRefresh, this.refreshToolbarItems, this);\n this.parent.on(events.inBoundModelChanged, this.modelChanged, this);\n this.parent.on(events.dataBound, this.refreshToolbarItems, this);\n this.parent.on(events.click, this.removeResponsiveSearch, this);\n this.parent.on(events.rowModeChange, this.reRenderToolbar, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.reRenderToolbar);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.uiUpdate, this.onPropertyChanged);\n this.parent.off(events.inBoundModelChanged, this.updateSearchBox);\n this.parent.off(events.modelChanged, this.refreshToolbarItems);\n this.parent.off(events.toolbarRefresh, this.refreshToolbarItems);\n this.parent.off(events.inBoundModelChanged, this.modelChanged);\n this.parent.off(events.dataBound, this.refreshToolbarItems);\n this.parent.off(events.click, this.removeResponsiveSearch);\n this.parent.off(events.rowModeChange, this.reRenderToolbar);\n this.parent.removeEventListener(events.rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(events.rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar;\n}());\nexport { Toolbar };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n * @return {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[i], sortedCols);\n if (this.columnName === gCols[i]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[i]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @return {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n var column = gObj.getColumnHeaderByField(columnName);\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols; \n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[i]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[i].isFromGroup) {\n this.sortedColumns.push(sortColumns[i].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[i].field);\n }\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[i].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, {\n requestType: 'sorting', type: events.actionBegin, target: this.currentTarget\n });\n }\n break;\n }\n }\n this.addSortIcons();\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n return;\n }\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.sortComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(events.keyPressed, this.keyPressed, this);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.sortComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.headerRefreshed, this.refreshSortIcons);\n this.parent.off(events.keyPressed, this.keyPressed);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the sorting\n * @return {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // tslint:disable-next-line:no-any\n if (!this.parent.refreshing) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.querySelectorAll('.e-ascending').length ? 'Ascending' :\n 'Descending';\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.querySelectorAll('.e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n if (isBlazor() && !this.parent.isJsComponent) {\n this.sortSettings.columns = this.sortSettings.columns;\n }\n }\n else {\n this.sortColumn(field, direction, e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey));\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (fieldNames.indexOf(cols[i].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, cols[i].direction);\n if (this.isMultiSort && cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[i].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[i].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[i].field) > -1 &&\n !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[i].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[i].field === field) {\n return this.sortSettings.columns[i];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n * @return {void}\n * @hidden\n */\n Sort.prototype.showCustomFilter = function () {\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n * @param {Object} data - To update new data for the particular row.\n * @return {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @return {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined } from '@syncfusion/ej2-base';\nimport { ComponentBase, EJComponentDecorator } from '@syncfusion/ej2-vue-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nexport var properties = ['actionFailureTemplate', 'allowFiltering', 'cssClass', 'dataSource', 'enablePersistence', 'enableRtl', 'enabled', 'fields', 'filterBarPlaceholder', 'filterType', 'floatLabelType', 'footerTemplate', 'groupTemplate', 'headerTemplate', 'htmlAttributes', 'ignoreAccent', 'ignoreCase', 'index', 'itemTemplate', 'locale', 'noRecordsTemplate', 'placeholder', 'popupHeight', 'popupWidth', 'query', 'readonly', 'showClearButton', 'sortOrder', 'text', 'value', 'valueTemplate', 'width', 'zIndex', 'actionBegin', 'actionComplete', 'actionFailure', 'beforeOpen', 'blur', 'change', 'close', 'created', 'dataBound', 'destroyed', 'filtering', 'focus', 'open', 'select'];\nexport var modelProps = ['value'];\n/**\n * DropDownList contains a list of predefined values from which the user can choose\n * ```html\n * \n * ```\n */\nvar DropDownListComponent = /** @class */ (function (_super) {\n __extends(DropDownListComponent, _super);\n function DropDownListComponent() {\n var _this = _super.call(this) || this;\n _this.propKeys = properties;\n _this.models = modelProps;\n _this.hasChildDirective = false;\n _this.hasInjectedModules = false;\n _this.tagMapper = {};\n _this.tagNameMapper = {};\n _this.ej2Instances = new DropDownList({});\n _this.ej2Instances._trigger = _this.ej2Instances.trigger;\n _this.ej2Instances.trigger = _this.trigger;\n _this.bindProperties();\n _this.ej2Instances._setProperties = _this.ej2Instances.setProperties;\n _this.ej2Instances.setProperties = _this.setProperties;\n return _this;\n }\n DropDownListComponent.prototype.setProperties = function (prop, muteOnChange) {\n var _this = this;\n if (this.ej2Instances && this.ej2Instances._setProperties) {\n this.ej2Instances._setProperties(prop, muteOnChange);\n }\n if (prop && this.models && this.models.length) {\n Object.keys(prop).map(function (key) {\n _this.models.map(function (model) {\n if ((key === model) && !(/datasource/i.test(key))) {\n _this.$emit('update:' + key, prop[key]);\n }\n });\n });\n }\n };\n DropDownListComponent.prototype.trigger = function (eventName, eventProp, successHandler) {\n if ((eventName === 'change' || eventName === 'input') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/checked|value/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n else if ((eventName === 'actionBegin' && eventProp.requestType === 'dateNavigate') && this.models && (this.models.length !== 0)) {\n var key = this.models.toString().match(/currentView|selectedDate/) || [];\n var propKey = key[0];\n if (eventProp && key && !isUndefined(eventProp[propKey])) {\n this.$emit('update:' + propKey, eventProp[propKey]);\n this.$emit('modelchanged', eventProp[propKey]);\n }\n }\n if (this.ej2Instances && this.ej2Instances._trigger) {\n this.ej2Instances._trigger(eventName, eventProp, successHandler);\n }\n };\n DropDownListComponent.prototype.render = function (createElement) {\n return createElement('input', this.$slots.default);\n };\n DropDownListComponent.prototype.addItem = function (items, itemIndex) {\n return this.ej2Instances.addItem(items, itemIndex);\n };\n DropDownListComponent.prototype.clear = function () {\n return this.ej2Instances.clear();\n };\n DropDownListComponent.prototype.filter = function (dataSource, query, fields) {\n return this.ej2Instances.filter(dataSource, query, fields);\n };\n DropDownListComponent.prototype.focusIn = function (e) {\n return this.ej2Instances.focusIn(e);\n };\n DropDownListComponent.prototype.focusOut = function (e) {\n return this.ej2Instances.focusOut(e);\n };\n DropDownListComponent.prototype.getDataByValue = function (value) {\n return this.ej2Instances.getDataByValue(value);\n };\n DropDownListComponent.prototype.getItems = function () {\n return this.ej2Instances.getItems();\n };\n DropDownListComponent.prototype.hidePopup = function (e) {\n return this.ej2Instances.hidePopup(e);\n };\n DropDownListComponent.prototype.hideSpinner = function () {\n return this.ej2Instances.hideSpinner();\n };\n DropDownListComponent.prototype.showPopup = function () {\n return this.ej2Instances.showPopup();\n };\n DropDownListComponent.prototype.showSpinner = function () {\n return this.ej2Instances.showSpinner();\n };\n DropDownListComponent = __decorate([\n EJComponentDecorator({\n props: properties,\n model: {\n event: 'modelchanged'\n }\n })\n ], DropDownListComponent);\n return DropDownListComponent;\n}(ComponentBase));\nexport { DropDownListComponent };\nexport var DropDownListPlugin = {\n name: 'ejs-dropdownlist',\n install: function (Vue) {\n Vue.component(DropDownListPlugin.name, DropDownListComponent);\n }\n};\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\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 { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isBlazor } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-textbox';\nvar CONTROL = 'e-control';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n var attributes = this.element.attributes;\n this.checkAttributes(true);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n if (!(isBlazor() && this.isServerRendered)) {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n // tslint:disable-next-line\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n }\n else {\n this.respectiveElement = this.element;\n this.textboxWrapper = { container: this.element.parentElement };\n if (this.showClearButton && !this.multiline) {\n this.textboxWrapper.clearButton = this.textboxWrapper.container.querySelector('.e-clear-icon');\n Input.wireClearBtnEvents(this.respectiveElement, this.textboxWrapper.clearButton, this.textboxWrapper.container);\n }\n if (this.floatLabelType === 'Auto') {\n Input.wireFloatingEvents(this.respectiveElement);\n }\n // tslint:disable-next-line\n Input.bindInitialEvent({ element: this.respectiveElement, buttons: null, customTag: null, floatLabelType: this.floatLabelType, properties: this.properties });\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n // tslint:disable-next-line\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[key]) :\n this.htmlAttributes[key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.respectiveElement.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.inputHandler = function (args) {\n // tslint:disable-next-line\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n this.raiseChangeEvent(args, true);\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR))) {\n var previousValue = this.value;\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n * @method destroy\n * @return {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (!(isBlazor() && this.isServerRendered)) {\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-placeholder', 'aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n _super.prototype.destroy.call(this);\n }\n else {\n this.textboxWrapper = null;\n }\n };\n /**\n * Adding the icons to the TextBox component.\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @return {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n * @return {string}\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n * @param { { [key: string]: string } } attributes - Specifies the attributes to be add to TextBox element.\n * @return {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @return {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n * @returns void\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n * @returns void\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n"],"sourceRoot":""}