{"version":3,"file":"kendo.columnsorter.min.js","sources":["kendo.columnsorter.js"],"sourcesContent":["(function(f, define) {\n define('kendo.columnsorter',[ \"kendo.core\" ], f);\n})(function() {\n\nvar __meta__ = {\n id: \"columnsorter\",\n name: \"Column Sorter\",\n category: \"framework\",\n depends: [\"core\"],\n advanced: true\n};\n\n(function($, undefined) {\n var kendo = window.kendo;\n var ui = kendo.ui;\n var Widget = ui.Widget;\n var DIR = \"dir\";\n var ASC = \"asc\";\n var SINGLE = \"single\";\n var MULTIPLE = \"multiple\";\n var MIXED = \"mixed\";\n var FIELD = \"field\";\n var DESC = \"desc\";\n var sorterNS = \".kendoColumnSorter\";\n var TLINK = \".k-link\";\n var ARIASORT = \"aria-sort\";\n\n var ColumnSorter = Widget.extend({\n init: function(element, options) {\n\n var that = this, link;\n\n Widget.fn.init.call(that, element, options);\n\n that._refreshHandler = that.refresh.bind(that);\n\n that.dataSource = that.options.dataSource.bind(\"change\", that._refreshHandler);\n\n that.directions = that.options.initialDirection === ASC ? [ASC, DESC] : [DESC, ASC];\n\n link = that.element.find(TLINK);\n\n if (!link[0]) {\n link = that.element.wrapInner('').find(TLINK);\n }\n\n that.link = link;\n\n that.element.on(\"click\" + sorterNS, that._click.bind(that));\n },\n\n options: {\n name: \"ColumnSorter\",\n mode: SINGLE,\n allowUnsort: true,\n compare: null,\n filter: \"\",\n initialDirection: ASC,\n showIndexes: false\n },\n\n events: [\"change\"],\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.element.off(sorterNS);\n\n that.dataSource.unbind(\"change\", that._refreshHandler);\n that._refreshHandler = that.element = that.link = that.dataSource = null;\n },\n\n refresh: function(e) {\n if (e && (e.action === \"itemchange\" || e.action === \"sync\")) {\n return;\n }\n var that = this,\n sort = that.dataSource.sort() || [],\n dir,\n table,\n leafCells,\n element = that.element,\n field = element.attr(kendo.attr(FIELD)),\n descriptor = (that.dataSource._sortFields || {})[field],\n headerIndex,\n sortOrder;\n\n element.removeAttr(kendo.attr(DIR));\n element.removeAttr(ARIASORT);\n\n\n if (descriptor) {\n dir = descriptor.dir;\n element.attr(kendo.attr(DIR), dir);\n sortOrder = descriptor.index;\n }\n\n if (element.is(\"th\") && descriptor) {\n table = getColsTable(element);\n\n if (table) {\n if (element.attr(kendo.attr(\"index\"))) {\n leafCells = leafDataCells(element.closest(\"table\"));\n headerIndex = leafCells.index(element);\n } else {\n headerIndex = element.parent().children(\":visible\").index(element);\n }\n\n table.find(\"col:not(.k-group-col):not(.k-hierarchy-col)\").eq(headerIndex).toggleClass(\"k-sorted\", dir !== undefined);\n }\n }\n element.toggleClass(\"k-sorted\", dir !== undefined);\n element.find(\".k-i-sort-asc-sm,.k-i-sort-desc-sm,.k-sort-order\").remove();\n\n if (dir === ASC) {\n $('').appendTo(that.link);\n element.attr(ARIASORT, \"ascending\");\n } else if (dir === DESC) {\n $('').appendTo(that.link);\n element.attr(ARIASORT, \"descending\");\n }\n if (that.options.showIndexes && sort.length > 1 && sortOrder) {\n $('').html(sortOrder).appendTo(that.link);\n }\n },\n\n _toggleSortDirection: function(dir) {\n var directions = this.directions;\n if (dir === directions[directions.length - 1] && this.options.allowUnsort) {\n return undefined;\n }\n return directions[0] === dir ? directions[1] : directions[0];\n },\n\n _click: function(e) {\n var that = this,\n element = that.element,\n field = element.attr(kendo.attr(FIELD)),\n dir = element.attr(kendo.attr(DIR)),\n options = that.options,\n compare = that.options.compare === null ? undefined : that.options.compare,\n sort = that.dataSource.sort() || [],\n ctrlKey = e.ctrlKey || e.metaKey,\n idx,\n length;\n\n e.preventDefault();\n\n if (options.filter && !element.is(options.filter)) {\n return;\n }\n\n dir = this._toggleSortDirection(dir);\n\n if (this.trigger(\"change\", { sort: { field: field, dir: dir, compare: compare } })) {\n return;\n }\n\n if (options.mode === SINGLE || (options.mode === MIXED && !ctrlKey)) {\n sort = [{ field: field, dir: dir, compare: compare }];\n } else if (options.mode === MULTIPLE || (options.mode === MIXED && ctrlKey)) {\n for (idx = 0, length = sort.length; idx < length; idx++) {\n if (sort[idx].field === field) {\n sort.splice(idx, 1);\n break;\n }\n }\n sort.push({ field: field, dir: dir, compare: compare });\n }\n\n if (this.dataSource.options.endless) {\n element.closest(\".k-grid\").getKendoGrid()._resetEndless();\n }\n this.dataSource.sort(sort);\n }\n });\n\n function leafDataCells(container) {\n var rows = container.find(\"tr:not(.k-filter-row)\");\n var indexAttr = kendo.attr(\"index\");\n\n var cells = rows.find(\"th[\" + indexAttr + \"]:visible\");\n\n cells.sort(function(a, b) {\n a = $(a);\n b = $(b);\n\n var indexA = a.attr(indexAttr);\n var indexB = b.attr(indexAttr);\n\n if (indexA === undefined) {\n indexA = $(a).index();\n }\n if (indexB === undefined) {\n indexB = $(b).index();\n }\n\n indexA = parseInt(indexA, 10);\n indexB = parseInt(indexB, 10);\n return indexA > indexB ? 1 : (indexA < indexB ? -1 : 0);\n });\n\n return cells;\n }\n\n function getColsTable(element) {\n var table = null;\n if (element.is(\"th\")) {\n table = element.closest(\"table\");\n if (table.parent().hasClass(\"k-grid-header-wrap\")) {\n table = table.closest(\".k-grid\").find(\".k-grid-content > table\");\n } else if (table.parent().hasClass(\"k-grid-header-locked\")) {\n table = table.closest(\".k-grid\").find(\".k-grid-content-locked > table\");\n }\n }\n return table;\n }\n\n ui.plugin(ColumnSorter);\n\n})(window.kendo.jQuery);\n\nreturn window.kendo;\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n"],"names":["define","__meta__","id","name","category","depends","advanced","$","window","kendo","jQuery","undefined","ui","Widget","DIR","ASC","SINGLE","MULTIPLE","MIXED","FIELD","DESC","sorterNS","TLINK","ARIASORT","ColumnSorter","extend","init","element","options","that","this","link","fn","call","_refreshHandler","refresh","bind","dataSource","directions","initialDirection","find","wrapInner","on","_click","mode","allowUnsort","compare","filter","showIndexes","events","destroy","off","unbind","e","action","sort","dir","table","leafCells","field","attr","descriptor","_sortFields","headerIndex","sortOrder","removeAttr","index","is","getColsTable","leafDataCells","closest","parent","children","eq","toggleClass","remove","appendTo","length","html","_toggleSortDirection","ctrlKey","metaKey","idx","preventDefault","trigger","splice","push","endless","getKendoGrid","_resetEndless","container","rows","indexAttr","cells","a","b","indexA","indexB","parseInt","hasClass","plugin","amd","a1","a2","a3"],"mappings":"CAAA,SAAaA,QACTA,OAAO,qBAAqB,CAAE,cAC/B,WAEH,IAAIC,EAAW,CACXC,GAAI,eACJC,KAAM,gBACNC,SAAU,YACVC,QAAS,CAAC,QACVC,SAAU,MAGJC,EAkNPC,OAAOC,MAAMC,OAlNHC,OAAb,EACQF,EAAQD,OAAOC,MACfG,EAAKH,EAAMG,GACXC,EAASD,EAAGC,OACZC,EAAM,MACNC,EAAM,MACNC,EAAS,SACTC,EAAW,WACXC,EAAQ,QACRC,EAAQ,QACRC,EAAO,OACPC,EAAW,qBACXC,EAAQ,UACRC,EAAW,YAEXC,EAAeX,EAAOY,OAAO,CAC7BC,KAAM,SAASC,EAASC,GAEpB,IAAIC,EAAOC,KAAMC,EAEjBlB,EAAOmB,GAAGN,KAAKO,KAAKJ,EAAMF,EAASC,GAEnCC,EAAKK,gBAAkBL,EAAKM,QAAQC,KAAKP,GAEzCA,EAAKQ,WAAaR,EAAKD,QAAQS,WAAWD,KAAK,SAAUP,EAAKK,iBAE9DL,EAAKS,WAAaT,EAAKD,QAAQW,mBAAqBxB,EAAM,CAACA,EAAKK,GAAQ,CAACA,EAAML,GAE/EgB,EAAOF,EAAKF,QAAQa,KAAKlB,GAEzB,IAAKS,EAAK,GACNA,EAAOF,EAAKF,QAAQc,UAAU,gCAAgCD,KAAKlB,GAGvEO,EAAKE,KAAOA,EAEZF,EAAKF,QAAQe,GAAG,QAAUrB,EAAUQ,EAAKc,OAAOP,KAAKP,KAGzDD,QAAS,CACLzB,KAAM,eACNyC,KAAM5B,EACN6B,YAAa,KACbC,QAAS,KACTC,OAAQ,GACRR,iBAAkBxB,EAClBiC,YAAa,OAGjBC,OAAQ,CAAC,UAETC,QAAS,WACL,IAAIrB,EAAOC,KAEXjB,EAAOmB,GAAGkB,QAAQjB,KAAKJ,GAEvBA,EAAKF,QAAQwB,IAAI9B,GAEjBQ,EAAKQ,WAAWe,OAAO,SAAUvB,EAAKK,iBACtCL,EAAKK,gBAAkBL,EAAKF,QAAUE,EAAKE,KAAOF,EAAKQ,WAAa,MAGxEF,QAAS,SAASkB,GACd,GAAIA,IAAMA,EAAEC,SAAW,cAAgBD,EAAEC,SAAW,QAChD,OAEJ,IAAIzB,EAAOC,KACPyB,EAAO1B,EAAKQ,WAAWkB,QAAU,GACjCC,EACAC,EACAC,EACA/B,EAAUE,EAAKF,QACfgC,EAAQhC,EAAQiC,KAAKnD,EAAMmD,KAAKzC,IAChC0C,GAAchC,EAAKQ,WAAWyB,aAAe,IAAIH,GACjDI,EACAC,EAEJrC,EAAQsC,WAAWxD,EAAMmD,KAAK9C,IAC9Ba,EAAQsC,WAAW1C,GAGnB,GAAIsC,EAAY,CACZL,EAAMK,EAAWL,IACjB7B,EAAQiC,KAAKnD,EAAMmD,KAAK9C,GAAM0C,GAC9BQ,EAAYH,EAAWK,MAG3B,GAAIvC,EAAQwC,GAAG,OAASN,EAAY,CAChCJ,EAAQW,EAAazC,GAErB,GAAI8B,EAAO,CACP,GAAI9B,EAAQiC,KAAKnD,EAAMmD,KAAK,UAAW,CACnCF,EAAYW,EAAc1C,EAAQ2C,QAAQ,UAC1CP,EAAcL,EAAUQ,MAAMvC,QAE9BoC,EAAcpC,EAAQ4C,SAASC,SAAS,YAAYN,MAAMvC,GAG9D8B,EAAMjB,KAAK,+CAA+CiC,GAAGV,GAAaW,YAAY,WAAYlB,IAAQ7C,IAGlHgB,EAAQ+C,YAAY,WAAYlB,IAAQ7C,GACxCgB,EAAQa,KAAK,oDAAoDmC,SAEjE,GAAInB,IAAQzC,EAAK,CACbR,EAAE,2CAA2CqE,SAAS/C,EAAKE,MAC3DJ,EAAQiC,KAAKrC,EAAU,kBACpB,GAAIiC,IAAQpC,EAAM,CACrBb,EAAE,4CAA4CqE,SAAS/C,EAAKE,MAC5DJ,EAAQiC,KAAKrC,EAAU,cAE3B,GAAIM,EAAKD,QAAQoB,aAAeO,EAAKsB,OAAS,GAAKb,EAC/CzD,EAAE,iCAAiCuE,KAAKd,GAAWY,SAAS/C,EAAKE,OAIzEgD,qBAAsB,SAASvB,GAC3B,IAAIlB,EAAaR,KAAKQ,WACtB,GAAIkB,IAAQlB,EAAWA,EAAWuC,OAAS,IAAM/C,KAAKF,QAAQiB,YAC1D,OAAOlC,EAEX,OAAO2B,EAAW,KAAOkB,EAAMlB,EAAW,GAAKA,EAAW,IAG9DK,OAAQ,SAASU,GACb,IAAIxB,EAAOC,KACPH,EAAUE,EAAKF,QACfgC,EAAQhC,EAAQiC,KAAKnD,EAAMmD,KAAKzC,IAChCqC,EAAM7B,EAAQiC,KAAKnD,EAAMmD,KAAK9C,IAC9Bc,EAAUC,EAAKD,QACfkB,EAAUjB,EAAKD,QAAQkB,UAAY,KAAOnC,EAAYkB,EAAKD,QAAQkB,QACnES,EAAO1B,EAAKQ,WAAWkB,QAAU,GACjCyB,EAAU3B,EAAE2B,SAAW3B,EAAE4B,QACzBC,EACAL,EAEJxB,EAAE8B,iBAEF,GAAIvD,EAAQmB,SAAWpB,EAAQwC,GAAGvC,EAAQmB,QACtC,OAGJS,EAAM1B,KAAKiD,qBAAqBvB,GAEhC,GAAI1B,KAAKsD,QAAQ,SAAU,CAAE7B,KAAM,CAAEI,MAAOA,EAAOH,IAAKA,EAAKV,QAASA,KAClE,OAGJ,GAAIlB,EAAQgB,OAAS5B,GAAWY,EAAQgB,OAAS1B,IAAU8D,EACvDzB,EAAO,CAAC,CAAEI,MAAOA,EAAOH,IAAKA,EAAKV,QAASA,SACxC,GAAIlB,EAAQgB,OAAS3B,GAAaW,EAAQgB,OAAS1B,GAAS8D,EAAU,CACzE,IAAKE,EAAM,EAAGL,EAAStB,EAAKsB,OAAQK,EAAML,EAAQK,IAC9C,GAAI3B,EAAK2B,GAAKvB,QAAUA,EAAO,CAC3BJ,EAAK8B,OAAOH,EAAK,GACjB,MAGR3B,EAAK+B,KAAK,CAAE3B,MAAOA,EAAOH,IAAKA,EAAKV,QAASA,IAGjD,GAAIhB,KAAKO,WAAWT,QAAQ2D,QACxB5D,EAAQ2C,QAAQ,WAAWkB,eAAeC,gBAE9C3D,KAAKO,WAAWkB,KAAKA,MAI7B,SAASc,EAAcqB,GACnB,IAAIC,EAAOD,EAAUlD,KAAK,yBAC1B,IAAIoD,EAAYnF,EAAMmD,KAAK,SAE3B,IAAIiC,EAAQF,EAAKnD,KAAK,MAAQoD,EAAY,aAE1CC,EAAMtC,KAAK,SAASuC,EAAGC,GACnBD,EAAIvF,EAAEuF,GACNC,EAAIxF,EAAEwF,GAEN,IAAIC,EAASF,EAAElC,KAAKgC,GACpB,IAAIK,EAASF,EAAEnC,KAAKgC,GAEpB,GAAII,IAAWrF,EACXqF,EAASzF,EAAEuF,GAAG5B,QAElB,GAAI+B,IAAWtF,EACXsF,EAAS1F,EAAEwF,GAAG7B,QAGlB8B,EAASE,SAASF,EAAQ,IAC1BC,EAASC,SAASD,EAAQ,IAC1B,OAAOD,EAASC,EAAS,EAAKD,EAASC,GAAU,EAAI,IAGzD,OAAOJ,EAGX,SAASzB,EAAazC,GAClB,IAAI8B,EAAQ,KACZ,GAAI9B,EAAQwC,GAAG,MAAO,CAClBV,EAAQ9B,EAAQ2C,QAAQ,SACxB,GAAIb,EAAMc,SAAS4B,SAAS,sBACxB1C,EAAQA,EAAMa,QAAQ,WAAW9B,KAAK,gCACnC,GAAIiB,EAAMc,SAAS4B,SAAS,wBAC/B1C,EAAQA,EAAMa,QAAQ,WAAW9B,KAAK,kCAG9C,OAAOiB,EAOf,OAJI7C,EAAGwF,OAAO5E,GAIPhB,OAAOC,QAhOd,CAkOoB,mBAAVT,QAAwBA,OAAOqG,IAAMrG,OAAS,SAASsG,EAAIC,EAAIC,IAAOA,GAAMD"}