@refinitiv-ui/efx-grid 6.0.4 → 6.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/lib/column-dragging/es6/ColumnDragging.d.ts +13 -11
  2. package/lib/column-dragging/es6/ColumnDragging.js +21 -15
  3. package/lib/column-format-dialog/lib/column-format-dialog.d.ts +1 -1
  4. package/lib/column-format-dialog/lib/column-format-dialog.js +3 -4
  5. package/lib/column-format-dialog/lib/preview-table.js +3 -4
  6. package/lib/column-selection-dialog/lib/column-selection-dialog.d.ts +2 -2
  7. package/lib/column-selection-dialog/lib/column-selection-dialog.js +23 -7
  8. package/lib/core/dist/core.css +1 -1
  9. package/lib/core/dist/core.js +392 -230
  10. package/lib/core/dist/core.min.js +1 -1
  11. package/lib/core/es6/data/ColumnStats.d.ts +3 -3
  12. package/lib/core/es6/data/DataCache.d.ts +9 -9
  13. package/lib/core/es6/data/DataTable.d.ts +28 -28
  14. package/lib/core/es6/data/DataTable.js +33 -10
  15. package/lib/core/es6/data/DataView.d.ts +62 -62
  16. package/lib/core/es6/data/DataView.js +42 -22
  17. package/lib/core/es6/data/Segment.d.ts +4 -4
  18. package/lib/core/es6/data/SegmentCollection.d.ts +7 -7
  19. package/lib/core/es6/data/WrappedView.d.ts +62 -62
  20. package/lib/core/es6/grid/Core.d.ts +97 -95
  21. package/lib/core/es6/grid/Core.js +180 -26
  22. package/lib/core/es6/grid/ILayoutGrid.d.ts +20 -20
  23. package/lib/core/es6/grid/ILayoutGrid.js +2 -1
  24. package/lib/core/es6/grid/LayoutGrid.d.ts +2 -2
  25. package/lib/core/es6/grid/LayoutGrid.js +18 -10
  26. package/lib/core/es6/grid/VirtualizedLayoutGrid.d.ts +2 -2
  27. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +14 -3
  28. package/lib/core/es6/grid/components/Cell.d.ts +6 -6
  29. package/lib/core/es6/grid/components/CellFloatingPanel.d.ts +2 -2
  30. package/lib/core/es6/grid/components/CellSpans.d.ts +2 -2
  31. package/lib/core/es6/grid/components/Column.d.ts +2 -2
  32. package/lib/core/es6/grid/components/ElementWrapper.d.ts +19 -19
  33. package/lib/core/es6/grid/components/Scrollbar.d.ts +11 -9
  34. package/lib/core/es6/grid/components/Scrollbar.js +13 -0
  35. package/lib/core/es6/grid/components/StretchedCells.js +12 -2
  36. package/lib/core/es6/grid/event/EventDispatcher.d.ts +3 -3
  37. package/lib/core/es6/grid/event/EventListeners.d.ts +5 -5
  38. package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +45 -44
  39. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +62 -65
  40. package/lib/core/es6/grid/util/Conflator.d.ts +4 -4
  41. package/lib/core/es6/grid/util/HttpRequest.d.ts +3 -3
  42. package/lib/core/es6/grid/util/PercentBar.d.ts +8 -8
  43. package/lib/core/es6/grid/util/PercentBarRenderer.d.ts +8 -8
  44. package/lib/core/es6/grid/util/RangeBar.d.ts +1 -1
  45. package/lib/core/es6/grid/util/RangeBar.js +1 -1
  46. package/lib/core/es6/grid/util/Reverter.d.ts +1 -1
  47. package/lib/core/es6/grid/util/SectionSettings.d.ts +13 -13
  48. package/lib/core/es6/grid/util/SelectionList.d.ts +2 -2
  49. package/lib/core/es6/grid/util/TrackLayout.d.ts +9 -9
  50. package/lib/core/es6/grid/util/Virtualizer.d.ts +3 -3
  51. package/lib/core/es6/grid/util/util.d.ts +6 -4
  52. package/lib/core/es6/grid/util/util.js +16 -91
  53. package/lib/core/es6/tr-grid-theme.js +1 -1
  54. package/lib/filter-dialog/lib/checkbox-list.d.ts +1 -1
  55. package/lib/filter-dialog/lib/filter-dialog.d.ts +1 -1
  56. package/lib/filter-dialog/lib/filter-dialog.js +27 -9
  57. package/lib/filter-dialog/themes/base-checkbox.less +0 -1
  58. package/lib/filter-dialog/themes/base.less +1 -1
  59. package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
  60. package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +2 -2
  61. package/lib/filter-dialog/themes/elemental/dark/filter-dialog.js +1 -1
  62. package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
  63. package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +2 -2
  64. package/lib/filter-dialog/themes/elemental/light/filter-dialog.js +1 -1
  65. package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
  66. package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +2 -2
  67. package/lib/filter-dialog/themes/halo/dark/filter-dialog.js +1 -1
  68. package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
  69. package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +2 -2
  70. package/lib/filter-dialog/themes/halo/light/filter-dialog.js +1 -1
  71. package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
  72. package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +2 -2
  73. package/lib/filter-dialog/themes/solar/charcoal/filter-dialog.js +1 -1
  74. package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
  75. package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +2 -2
  76. package/lib/filter-dialog/themes/solar/pearl/filter-dialog.js +1 -1
  77. package/lib/grid/index.js +1 -1
  78. package/lib/grid/lib/efx-grid.js +7 -44
  79. package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
  80. package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
  81. package/lib/grid/themes/halo/efx-grid.less +5 -5
  82. package/lib/grid/themes/halo/light/efx-grid.js +1 -1
  83. package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
  84. package/lib/row-segmenting/es6/RowSegmenting.d.ts +30 -24
  85. package/lib/row-segmenting/es6/RowSegmenting.js +122 -21
  86. package/lib/rt-grid/dist/rt-grid.js +1354 -435
  87. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  88. package/lib/rt-grid/es6/ColumnDefinition.d.ts +46 -42
  89. package/lib/rt-grid/es6/ColumnDefinition.js +31 -1
  90. package/lib/rt-grid/es6/DataConnector.d.ts +6 -4
  91. package/lib/rt-grid/es6/DataConnector.js +8 -0
  92. package/lib/rt-grid/es6/FieldDefinition.d.ts +2 -2
  93. package/lib/rt-grid/es6/FieldDefinition.js +12 -5
  94. package/lib/rt-grid/es6/Grid.d.ts +106 -91
  95. package/lib/rt-grid/es6/Grid.js +151 -106
  96. package/lib/rt-grid/es6/ReferenceCounter.d.ts +5 -5
  97. package/lib/rt-grid/es6/RowDefSorter.d.ts +2 -2
  98. package/lib/rt-grid/es6/RowDefinition.d.ts +22 -22
  99. package/lib/rt-grid/es6/RowDefinition.js +12 -5
  100. package/lib/rt-grid/es6/SnapshotFiller.d.ts +5 -2
  101. package/lib/rt-grid/es6/SnapshotFiller.js +121 -15
  102. package/lib/rt-grid/es6/StyleLoader.d.ts +1 -1
  103. package/lib/tr-grid-cell-selection/es6/CellSelection.d.ts +11 -11
  104. package/lib/tr-grid-cell-selection/es6/CellSelection.js +20 -35
  105. package/lib/tr-grid-checkbox/es6/Checkbox.d.ts +18 -16
  106. package/lib/tr-grid-checkbox/es6/Checkbox.js +1 -0
  107. package/lib/tr-grid-column-formatting/es6/ColumnFormatting.d.ts +29 -27
  108. package/lib/tr-grid-column-formatting/es6/ColumnFormatting.js +1 -0
  109. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +28 -14
  110. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +556 -11
  111. package/lib/tr-grid-column-resizing/es6/ColumnResizing.d.ts +2 -2
  112. package/lib/tr-grid-column-resizing/es6/ColumnResizing.js +1 -0
  113. package/lib/tr-grid-column-selection/es6/ColumnSelection.js +2 -3
  114. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +15 -13
  115. package/lib/tr-grid-column-stack/es6/ColumnStack.js +96 -72
  116. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +14 -4
  117. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +314 -114
  118. package/lib/tr-grid-content-wrap/es6/ContentWrap.js +1 -6
  119. package/lib/tr-grid-contextmenu/es6/ContextMenu.js +3 -3
  120. package/lib/tr-grid-contextmenu/es6/MenuEventAPI.d.ts +2 -2
  121. package/lib/tr-grid-contextmenu/es6/MenuItem.d.ts +2 -2
  122. package/lib/tr-grid-heat-map/es6/HeatMap.d.ts +2 -1
  123. package/lib/tr-grid-heat-map/es6/HeatMap.js +6 -9
  124. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +5 -2
  125. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +311 -71
  126. package/lib/tr-grid-percent-bar/es6/PercentBar.d.ts +1 -1
  127. package/lib/tr-grid-percent-bar/es6/PercentBar.js +8 -11
  128. package/lib/tr-grid-printer/es6/SectionWriter.js +8 -0
  129. package/lib/tr-grid-range-bar/es6/RangeBar.js +3 -10
  130. package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +6 -0
  131. package/lib/tr-grid-row-dragging/es6/RowDragging.js +56 -23
  132. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +4 -3
  133. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +57 -13
  134. package/lib/tr-grid-row-grouping/es6/RowGrouping.js +1 -1
  135. package/lib/tr-grid-row-selection/es6/RowSelection.js +16 -13
  136. package/lib/tr-grid-rowcoloring/es6/RowColoring.d.ts +0 -2
  137. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +1 -40
  138. package/lib/tr-grid-util/es6/CellPainter.d.ts +30 -30
  139. package/lib/tr-grid-util/es6/CellPainter.js +9 -8
  140. package/lib/tr-grid-util/es6/Conflator.d.ts +4 -4
  141. package/lib/tr-grid-util/es6/CoralItems.d.ts +1 -1
  142. package/lib/tr-grid-util/es6/DateTime.d.ts +10 -10
  143. package/lib/tr-grid-util/es6/Deferred.d.ts +3 -1
  144. package/lib/tr-grid-util/es6/Deferred.js +11 -1
  145. package/lib/tr-grid-util/es6/Delay.d.ts +2 -2
  146. package/lib/tr-grid-util/es6/Dom.d.ts +10 -10
  147. package/lib/tr-grid-util/es6/Dom.js +14 -10
  148. package/lib/tr-grid-util/es6/DragUI.js +5 -2
  149. package/lib/tr-grid-util/es6/ElementObserver.d.ts +2 -2
  150. package/lib/tr-grid-util/es6/ElementObserver.js +6 -3
  151. package/lib/tr-grid-util/es6/ElementWrapper.d.ts +4 -4
  152. package/lib/tr-grid-util/es6/ElfDate.d.ts +5 -5
  153. package/lib/tr-grid-util/es6/ElfDate.js +1 -0
  154. package/lib/tr-grid-util/es6/ElfUtil.d.ts +13 -4
  155. package/lib/tr-grid-util/es6/ElfUtil.js +178 -26
  156. package/lib/tr-grid-util/es6/EventDispatcher.d.ts +5 -5
  157. package/lib/tr-grid-util/es6/ExpanderIcon.d.ts +2 -2
  158. package/lib/tr-grid-util/es6/ExpanderIcon.js +1 -1
  159. package/lib/tr-grid-util/es6/Ext.d.ts +1 -1
  160. package/lib/tr-grid-util/es6/FieldFormatter.d.ts +12 -12
  161. package/lib/tr-grid-util/es6/FieldFormatter.js +1 -1
  162. package/lib/tr-grid-util/es6/FilterBuilder.d.ts +13 -13
  163. package/lib/tr-grid-util/es6/FilterBuilder.js +15 -8
  164. package/lib/tr-grid-util/es6/FilterOperators.d.ts +22 -22
  165. package/lib/tr-grid-util/es6/FilterOperators.js +3 -3
  166. package/lib/tr-grid-util/es6/GridPlugin.d.ts +10 -10
  167. package/lib/tr-grid-util/es6/GridPlugin.js +20 -0
  168. package/lib/tr-grid-util/es6/Icon.d.ts +3 -3
  169. package/lib/tr-grid-util/es6/MouseDownTrait.d.ts +8 -8
  170. package/lib/tr-grid-util/es6/MultiTableManager.d.ts +6 -6
  171. package/lib/tr-grid-util/es6/NumberFormatter.d.ts +19 -19
  172. package/lib/tr-grid-util/es6/NumberFormatter.js +1 -1
  173. package/lib/tr-grid-util/es6/PercentBar.d.ts +19 -19
  174. package/lib/tr-grid-util/es6/Perf.d.ts +4 -4
  175. package/lib/tr-grid-util/es6/Popup.d.ts +36 -33
  176. package/lib/tr-grid-util/es6/Popup.js +19 -1
  177. package/lib/tr-grid-util/es6/RangeBar.d.ts +5 -5
  178. package/lib/tr-grid-util/es6/RequestQueue.d.ts +4 -4
  179. package/lib/tr-grid-util/es6/RowPainter.d.ts +37 -4
  180. package/lib/tr-grid-util/es6/RowPainter.js +199 -76
  181. package/lib/tr-grid-util/es6/SubTable.d.ts +14 -14
  182. package/lib/tr-grid-util/es6/Table.d.ts +25 -25
  183. package/lib/tr-grid-util/es6/TextHighlighter.d.ts +1 -1
  184. package/lib/tr-grid-util/es6/Timer.d.ts +1 -1
  185. package/lib/tr-grid-util/es6/TouchProxy.d.ts +9 -9
  186. package/lib/tr-grid-util/es6/Util.d.ts +12 -12
  187. package/lib/tr-grid-util/es6/formula/ADCService.d.ts +1 -1
  188. package/lib/tr-grid-util/es6/formula/ADCSubscription.d.ts +1 -1
  189. package/lib/tr-grid-util/es6/formula/AdFinService.d.ts +1 -1
  190. package/lib/tr-grid-util/es6/formula/AdFinSubscription.d.ts +1 -1
  191. package/lib/tr-grid-util/es6/formula/Engine.d.ts +9 -9
  192. package/lib/tr-grid-util/es6/formula/Formula.d.ts +4 -4
  193. package/lib/tr-grid-util/es6/formula/IntervalSubscription.d.ts +1 -1
  194. package/lib/tr-grid-util/es6/formula/Realtime.d.ts +3 -3
  195. package/lib/tr-grid-util/es6/formula/RealtimeService.d.ts +1 -1
  196. package/lib/tr-grid-util/es6/formula/TSIService.d.ts +1 -1
  197. package/lib/tr-grid-util/es6/formula/TSISubscription.d.ts +1 -1
  198. package/lib/tr-grid-util/es6/formula/VariableToken.d.ts +1 -1
  199. package/lib/tr-grid-util/es6/jet/CollectionDict.d.ts +1 -1
  200. package/lib/tr-grid-util/es6/jet/DataGenerator.d.ts +34 -34
  201. package/lib/tr-grid-util/es6/jet/MockArchive.d.ts +1 -1
  202. package/lib/tr-grid-util/es6/jet/MockJET.d.ts +4 -4
  203. package/lib/tr-grid-util/es6/jet/MockJET.js +12 -4
  204. package/lib/tr-grid-util/es6/jet/MockQuotes.d.ts +9 -9
  205. package/lib/tr-grid-util/es6/jet/MockQuotes2.d.ts +17 -9
  206. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +84 -24
  207. package/lib/tr-grid-util/es6/jet/MockRTK.d.ts +42 -2
  208. package/lib/tr-grid-util/es6/jet/MockRTK.js +55 -16
  209. package/lib/tr-grid-util/es6/jet/mockDataAPI.d.ts +2 -2
  210. package/lib/tr-grid-util/es6/jet/mockDataAPI.js +99 -1
  211. package/lib/types/es6/Checkbox.d.ts +18 -16
  212. package/lib/types/es6/ColumnFormatting.d.ts +29 -27
  213. package/lib/types/es6/ColumnGrouping.d.ts +28 -14
  214. package/lib/types/es6/ColumnResizing.d.ts +2 -2
  215. package/lib/types/es6/ColumnStack.d.ts +15 -13
  216. package/lib/types/es6/CompositeGrid/ColumnSelectionPlugin.d.ts +4 -2
  217. package/lib/types/es6/CompositeGrid/ColumnWidthAdjustingPlugin.d.ts +0 -1
  218. package/lib/types/es6/CompositeGrid/CompositeGrid.d.ts +1 -1
  219. package/lib/types/es6/CompositeGrid/DragAndDropTitlePlugin.d.ts +1 -1
  220. package/lib/types/es6/CompositeGrid/DraggableContentPlugin.d.ts +1 -5
  221. package/lib/types/es6/CompositeGrid/Plugin.d.ts +3 -1
  222. package/lib/types/es6/CompositeGrid/ResizableTitlePlugin.d.ts +2 -1
  223. package/lib/types/es6/CompositeGrid/RowSelectionPlugin.d.ts +2 -1
  224. package/lib/types/es6/CompositeGrid/TextWidthCalculator.d.ts +1 -1
  225. package/lib/types/es6/CompositeGrid/TreeIndentingPlugin.d.ts +0 -1
  226. package/lib/types/es6/ConditionalColoring.d.ts +14 -4
  227. package/lib/types/es6/Core/data/ColumnStats.d.ts +3 -3
  228. package/lib/types/es6/Core/data/DataCache.d.ts +9 -9
  229. package/lib/types/es6/Core/data/DataTable.d.ts +28 -28
  230. package/lib/types/es6/Core/data/DataView.d.ts +62 -62
  231. package/lib/types/es6/Core/data/Segment.d.ts +4 -4
  232. package/lib/types/es6/Core/data/SegmentCollection.d.ts +7 -7
  233. package/lib/types/es6/Core/data/WrappedView.d.ts +62 -62
  234. package/lib/types/es6/Core/grid/Core.d.ts +97 -95
  235. package/lib/types/es6/Core/grid/ILayoutGrid.d.ts +20 -20
  236. package/lib/types/es6/Core/grid/LayoutGrid.d.ts +2 -2
  237. package/lib/types/es6/Core/grid/VirtualizedLayoutGrid.d.ts +2 -2
  238. package/lib/types/es6/Core/grid/components/Cell.d.ts +6 -6
  239. package/lib/types/es6/Core/grid/components/CellFloatingPanel.d.ts +2 -2
  240. package/lib/types/es6/Core/grid/components/CellSpans.d.ts +2 -2
  241. package/lib/types/es6/Core/grid/components/Column.d.ts +2 -2
  242. package/lib/types/es6/Core/grid/components/ElementWrapper.d.ts +19 -19
  243. package/lib/types/es6/Core/grid/components/Scrollbar.d.ts +11 -9
  244. package/lib/types/es6/Core/grid/event/EventDispatcher.d.ts +3 -3
  245. package/lib/types/es6/Core/grid/event/EventListeners.d.ts +5 -5
  246. package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +45 -44
  247. package/lib/types/es6/Core/grid/util/Conflator.d.ts +4 -4
  248. package/lib/types/es6/Core/grid/util/HttpRequest.d.ts +3 -3
  249. package/lib/types/es6/Core/grid/util/PercentBar.d.ts +8 -8
  250. package/lib/types/es6/Core/grid/util/PercentBarRenderer.d.ts +8 -8
  251. package/lib/types/es6/Core/grid/util/RangeBar.d.ts +1 -1
  252. package/lib/types/es6/Core/grid/util/Reverter.d.ts +1 -1
  253. package/lib/types/es6/Core/grid/util/SectionSettings.d.ts +13 -13
  254. package/lib/types/es6/Core/grid/util/SelectionList.d.ts +2 -2
  255. package/lib/types/es6/Core/grid/util/TrackLayout.d.ts +9 -9
  256. package/lib/types/es6/Core/grid/util/Virtualizer.d.ts +3 -3
  257. package/lib/types/es6/Core/grid/util/util.d.ts +6 -4
  258. package/lib/types/es6/HeatMap.d.ts +2 -1
  259. package/lib/types/es6/InCellEditing.d.ts +5 -2
  260. package/lib/types/es6/MenuEventAPI.d.ts +2 -2
  261. package/lib/types/es6/MenuItem.d.ts +2 -2
  262. package/lib/types/es6/PercentBar.d.ts +1 -1
  263. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +46 -42
  264. package/lib/types/es6/RealtimeGrid/DataConnector.d.ts +6 -4
  265. package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +2 -2
  266. package/lib/types/es6/RealtimeGrid/Grid.d.ts +104 -89
  267. package/lib/types/es6/RealtimeGrid/ReferenceCounter.d.ts +5 -5
  268. package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +2 -2
  269. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +22 -22
  270. package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +5 -2
  271. package/lib/types/es6/RealtimeGrid/StyleLoader.d.ts +1 -1
  272. package/lib/types/es6/RowColoring.d.ts +0 -2
  273. package/lib/types/es6/RowDragging.d.ts +6 -0
  274. package/lib/types/es6/RowFiltering.d.ts +4 -3
  275. package/lib/types/es6/RowSegmenting.d.ts +30 -24
  276. package/lib/versions.json +26 -26
  277. package/package.json +2 -2
@@ -7,9 +7,9 @@ declare class CellFloatingPanel extends ElementWrapper {
7
7
 
8
8
  public hasItem(): boolean;
9
9
 
10
- public insertItem(item: Element, opt_order?: number): void;
10
+ public insertItem(item: Element|null, opt_order?: number|null): void;
11
11
 
12
- public removeItem(elemRef?: (Element|string)): Element|null|null;
12
+ public removeItem(elemRef?: (Element|string)|null): Element|null|null;
13
13
 
14
14
  public clearItems(): void;
15
15
 
@@ -10,9 +10,9 @@ declare class CellSpans {
10
10
 
11
11
  public removeSpan(indexX: number, indexY: number): CellSpan|null;
12
12
 
13
- public removeSpanByColIndex(at: number, opt_ary?: (CellSpan)[]): (CellSpan)[]|null;
13
+ public removeSpanByColIndex(at: number, opt_ary?: (CellSpan)[]|null): (CellSpan)[]|null;
14
14
 
15
- public removeSpanStartedFromRowIndex(at: number, opt_ary?: (CellSpan)[]): (CellSpan)[]|null;
15
+ public removeSpanStartedFromRowIndex(at: number, opt_ary?: (CellSpan)[]|null): (CellSpan)[]|null;
16
16
 
17
17
  public clearAllSpans(): (CellSpan)[]|null;
18
18
 
@@ -6,11 +6,11 @@ import ILayoutGrid from "../ILayoutGrid.js";
6
6
 
7
7
  declare class Column extends ElementWrapper {
8
8
 
9
- constructor(section: ILayoutGrid);
9
+ constructor(section: ILayoutGrid|null);
10
10
 
11
11
  public clearContent(): void;
12
12
 
13
- public setNextSibling(sibling: Column): void;
13
+ public setNextSibling(sibling: Column|null): void;
14
14
 
15
15
  public isActive(): boolean;
16
16
 
@@ -5,21 +5,21 @@ import Util from "../util/util.js";
5
5
 
6
6
  declare class ElementWrapper extends EventDispatcher {
7
7
 
8
- constructor(opt_element?: Element);
8
+ constructor(opt_element?: Element|null);
9
9
 
10
- public getContent(opt_allContent?: boolean): Element|Node|NodeList|null;
10
+ public getContent(opt_allContent?: boolean|null): Element|Node|NodeList|null;
11
11
 
12
- public setContent(content: string|Element|ElementWrapper|any, opt_tooltip?: string): Element|null;
12
+ public setContent(content: string|Element|ElementWrapper|any, opt_tooltip?: string|null): Element|null;
13
13
 
14
- public addContent(content: Element|Node|ElementWrapper): Element|null;
14
+ public addContent(content: Element|Node|ElementWrapper|null): Element|null;
15
15
 
16
- public removeContent(content: Element|Node|ElementWrapper): boolean;
16
+ public removeContent(content: Element|Node|ElementWrapper|null): boolean;
17
17
 
18
- public listen(type: string, handler: ((...params: any[]) => any), opt_priority?: number): void;
18
+ public listen(type: string, handler: ((...params: any[]) => any)|null, opt_priority?: number|null): void;
19
19
 
20
- public unlisten(type: string, handler: ((...params: any[]) => any)): void;
20
+ public unlisten(type: string, handler: ((...params: any[]) => any)|null): void;
21
21
 
22
- public unlistenAll(opt_type?: string): void;
22
+ public unlistenAll(opt_type?: string|null): void;
23
23
 
24
24
  public dispose(): void;
25
25
 
@@ -29,11 +29,11 @@ declare class ElementWrapper extends EventDispatcher {
29
29
 
30
30
  public getParent(): Element|Node|null;
31
31
 
32
- public setParent(parent: ElementWrapper|Element|Node, opt_prepend?: boolean): void;
32
+ public setParent(parent: ElementWrapper|Element|Node|null, opt_prepend?: boolean|null): void;
33
33
 
34
- public insertBefore(nextSibling: ElementWrapper|Element|Node): void;
34
+ public insertBefore(nextSibling: ElementWrapper|Element|Node|null): void;
35
35
 
36
- public insertAfter(previousSibling: ElementWrapper|Element|Node): void;
36
+ public insertAfter(previousSibling: ElementWrapper|Element|Node|null): void;
37
37
 
38
38
  public hasClass(str: string): boolean;
39
39
 
@@ -41,9 +41,9 @@ declare class ElementWrapper extends EventDispatcher {
41
41
 
42
42
  public removeClass(str: string): void;
43
43
 
44
- public toggleClass(cls: string, forcedVal?: (boolean|null)): void;
44
+ public toggleClass(cls: string, forcedVal?: (boolean|null)|null): void;
45
45
 
46
- public enableClass(str: string, opt_enabled?: boolean): void;
46
+ public enableClass(str: string, opt_enabled?: boolean|null): void;
47
47
 
48
48
  public getClass(): string;
49
49
 
@@ -91,23 +91,23 @@ declare class ElementWrapper extends EventDispatcher {
91
91
 
92
92
  public getBoundingClientRect(): any;
93
93
 
94
- public fillParentWidth(opt_percent?: number): boolean;
94
+ public fillParentWidth(opt_percent?: number|null): boolean;
95
95
 
96
- public fillParentHeight(opt_percent?: number): boolean;
96
+ public fillParentHeight(opt_percent?: number|null): boolean;
97
97
 
98
98
  public getTooltip(): string;
99
99
 
100
100
  public setTooltip(str: string): void;
101
101
 
102
- public show(opt_shown?: boolean): void;
102
+ public show(opt_shown?: boolean|null): void;
103
103
 
104
- public hide(opt_hidden?: boolean): void;
104
+ public hide(opt_hidden?: boolean|null): void;
105
105
 
106
106
  public isVisible(): boolean;
107
107
 
108
- public enable(opt_enabled?: boolean): void;
108
+ public enable(opt_enabled?: boolean|null): void;
109
109
 
110
- public disable(opt_disabled?: boolean): void;
110
+ public disable(opt_disabled?: boolean|null): void;
111
111
 
112
112
  public isEnabled(): boolean;
113
113
 
@@ -9,15 +9,15 @@ declare class Scrollbar extends ElementWrapper {
9
9
 
10
10
  public static updateTrackThickness(): void;
11
11
 
12
- public attachToExternalElement(host: Element|Node): void;
12
+ public attachToExternalElement(host: Element|Node|null): void;
13
13
 
14
14
  public isActive(): boolean;
15
15
 
16
16
  public isEnabled(): boolean;
17
17
 
18
- public enable(opt_enabled?: boolean): void;
18
+ public enable(opt_enabled?: boolean|null): void;
19
19
 
20
- public disable(opt_disabled?: boolean): void;
20
+ public disable(opt_disabled?: boolean|null): void;
21
21
 
22
22
  public getTrackSize(): number;
23
23
 
@@ -33,19 +33,19 @@ declare class Scrollbar extends ElementWrapper {
33
33
 
34
34
  public flash(): void;
35
35
 
36
- public disableKeyboardInput(opt_disabled?: boolean): void;
36
+ public disableKeyboardInput(opt_disabled?: boolean|null): void;
37
37
 
38
- public disableTouchInput(opt_disabled?: boolean): void;
38
+ public disableTouchInput(opt_disabled?: boolean|null): void;
39
39
 
40
40
  public setAutoHide(hide: boolean): void;
41
41
 
42
42
  public getAutoHide(): boolean;
43
43
 
44
- public disableMouseWheel(opt_disabled?: boolean): void;
44
+ public disableMouseWheel(opt_disabled?: boolean|null): void;
45
45
 
46
- public addWheelListener(elem: Element): void;
46
+ public addWheelListener(elem: Element|null): void;
47
47
 
48
- public removeWheelListener(elem: Element): void;
48
+ public removeWheelListener(elem: Element|null): void;
49
49
 
50
50
  public setMouseWheelSpeed(val: string): void;
51
51
 
@@ -53,7 +53,9 @@ declare class Scrollbar extends ElementWrapper {
53
53
 
54
54
  public setScrollingStep(px: number): void;
55
55
 
56
- public freezeScrolling(frozen?: boolean): boolean;
56
+ public freezeScrolling(frozen?: boolean|null): boolean;
57
+
58
+ public restoreTrackPosition(): void;
57
59
 
58
60
  }
59
61
 
@@ -1367,6 +1367,19 @@ Scrollbar.prototype.freezeScrolling = function (frozen) {
1367
1367
  this._isFrozen = frozen !== false;
1368
1368
  return prev;
1369
1369
  };
1370
+ /** @public
1371
+ */
1372
+ Scrollbar.prototype.restoreTrackPosition = function () {
1373
+ // Scroll event will be fired asynchronously, if there is any change
1374
+ var track = this._element;
1375
+ if(this._vertical) {
1376
+ track.scrollTop = this._tScrollVal;
1377
+ if(track.scrollTop){
1378
+ this._tScrollVal = track.scrollTop; //Check to ensure that cache equal to element's scroll
1379
+ }
1380
+ }
1381
+ //TODO: handle restore scrollLeft for hscroll
1382
+ };
1370
1383
 
1371
1384
  Scrollbar._proto = Scrollbar.prototype;
1372
1385
 
@@ -198,7 +198,7 @@ StretchedCells.prototype.getRowIndex = function (cellRef) {
198
198
  * @return {Cell}
199
199
  */
200
200
  StretchedCells.prototype.stretchCell = function (rowIndex, colIndex) {
201
- // Increase the active count regardless of redundancy. This acts as a dirty flag. It does not needed to be accurate
201
+ // Increase the active count regardless of redundancy. This acts as a dirty flag. It does not need to be accurate
202
202
  ++this._activeCount;
203
203
  if(!colIndex || colIndex < 0) {
204
204
  colIndex = 0;
@@ -213,7 +213,17 @@ StretchedCells.prototype.stretchCell = function (rowIndex, colIndex) {
213
213
  }
214
214
  var cellElem = cell["getElement"]();
215
215
  cellElem["stretched"] = true;
216
- cellElem._colIndex = colIndex;
216
+ if(cellElem._colIndex !== colIndex) {
217
+ cellElem._colIndex = colIndex;
218
+ if(colIndex > 0) {
219
+ cellElem.classList.add("right-stretching");
220
+ } else {
221
+ cellElem.classList.remove("right-stretching");
222
+ }
223
+ }
224
+ if(cellElem._rowIndex !== rowIndex) {
225
+ cellElem._rowIndex = rowIndex;
226
+ }
217
227
 
218
228
  var width = this._stretchSize || this._trackX.getTrackSize();
219
229
  _updateXAxis(cell, this._trackX, colIndex, width);
@@ -4,11 +4,11 @@ declare class EventDispatcher {
4
4
 
5
5
  constructor();
6
6
 
7
- public listen(type: string, handler: ((...params: any[]) => any), opt_priority?: number): void;
7
+ public listen(type: string, handler: ((...params: any[]) => any)|null, opt_priority?: number|null): void;
8
8
 
9
- public unlisten(type: string, handler: ((...params: any[]) => any)): void;
9
+ public unlisten(type: string, handler: ((...params: any[]) => any)|null): void;
10
10
 
11
- public unlistenAll(type?: string): void;
11
+ public unlistenAll(type?: string|null): void;
12
12
 
13
13
  }
14
14
 
@@ -4,9 +4,9 @@ declare class EventListeners {
4
4
 
5
5
  constructor(opt_sender?: any|null);
6
6
 
7
- public listen(listener: ((...params: any[]) => any), opt_priority?: number): void;
7
+ public listen(listener: ((...params: any[]) => any)|null, opt_priority?: number|null): void;
8
8
 
9
- public unlisten(listener: ((...params: any[]) => any)): void;
9
+ public unlisten(listener: ((...params: any[]) => any)|null): void;
10
10
 
11
11
  public unlistenAll(): void;
12
12
 
@@ -20,13 +20,13 @@ declare class EventListeners {
20
20
 
21
21
  public isEnabled(): boolean;
22
22
 
23
- public enable(opt_enabled?: boolean): void;
23
+ public enable(opt_enabled?: boolean|null): void;
24
24
 
25
- public disable(opt_disabled?: boolean): void;
25
+ public disable(opt_disabled?: boolean|null): void;
26
26
 
27
27
  public setSender(sender: any|null): void;
28
28
 
29
- public setEventArgExtender(extender?: ((...params: any[]) => any)): void;
29
+ public setEventArgExtender(extender?: ((...params: any[]) => any)|null): void;
30
30
 
31
31
  }
32
32
 
@@ -7,47 +7,48 @@ import DataTable from "../../data/DataTable.js";
7
7
 
8
8
  declare namespace SortableTitlePlugin {
9
9
 
10
- type SortOrder = "a" | "ascending" | "d" | "descending" | "n" | null;
10
+ type SortOrder = "a" | "ascending" | "d" | "descending" | "n" | null|null;
11
11
 
12
12
  type InitialSort = {
13
13
  colIndex: number,
14
- sortOrder?: SortableTitlePlugin.SortOrder,
15
- order?: SortableTitlePlugin.SortOrder
14
+ sortOrder?: SortableTitlePlugin.SortOrder|null,
15
+ order?: SortableTitlePlugin.SortOrder|null
16
16
  };
17
17
 
18
18
  type ColumnOptions = {
19
- sortable?: boolean,
20
- sortBy?: string,
21
- sortLogic?: DataTable.SortLogic,
22
- sortingLogic?: DataTable.SortLogic,
23
- sorter?: DataTable.SortLogic,
24
- sortingSequence?: (SortableTitlePlugin.SortOrder)[]
19
+ sortable?: boolean|null,
20
+ sortBy?: string|null,
21
+ sortLogic?: DataTable.SortLogic|null,
22
+ sortingLogic?: DataTable.SortLogic|null,
23
+ sorter?: DataTable.SortLogic|null,
24
+ sortingSequence?: (SortableTitlePlugin.SortOrder)[]|null
25
25
  };
26
26
 
27
27
  type Options = {
28
- initialSort?: (SortableTitlePlugin.InitialSort|(SortableTitlePlugin.InitialSort)[]),
29
- multicolumn?: (boolean|number),
30
- multiColumn?: (boolean|number),
31
- threeStatesSorting?: boolean,
32
- sortLogic?: { [key: string]: DataTable.SortLogic },
33
- disableDoubleClickToSort?: boolean,
34
- sortableColumns?: boolean,
35
- sortableIndicator?: boolean,
36
- indicatorOnly?: boolean,
37
- mode?: string,
38
- disabled?: boolean,
39
- columnSorted?: ((...params: any[]) => any),
40
- preClicked?: ((...params: any[]) => any),
41
- clicked?: ((...params: any[]) => any),
42
- preDataSorting?: ((...params: any[]) => any),
43
- sortingSequence?: (SortableTitlePlugin.SortOrder)[]
28
+ initialSort?: (SortableTitlePlugin.InitialSort|(SortableTitlePlugin.InitialSort)[])|null,
29
+ multicolumn?: (boolean|number)|null,
30
+ multiColumn?: (boolean|number)|null,
31
+ threeStatesSorting?: boolean|null,
32
+ sortLogic?: { [key: string]: DataTable.SortLogic }|null,
33
+ disableDoubleClickToSort?: boolean|null,
34
+ sortableColumns?: boolean|null,
35
+ sortableIndicator?: boolean|null,
36
+ indicatorOnly?: boolean|null,
37
+ mode?: string|null,
38
+ disabled?: boolean|null,
39
+ columnSorted?: ((...params: any[]) => any)|null,
40
+ preClicked?: ((...params: any[]) => any)|null,
41
+ clicked?: ((...params: any[]) => any)|null,
42
+ preDataSorting?: ((...params: any[]) => any)|null,
43
+ sortingSequence?: (SortableTitlePlugin.SortOrder)[]|null,
44
+ rowSorting?: boolean|null
44
45
  };
45
46
 
46
47
  }
47
48
 
48
49
  declare class SortableTitlePlugin extends EventDispatcher {
49
50
 
50
- constructor(options?: SortableTitlePlugin.Options);
51
+ constructor(options?: SortableTitlePlugin.Options|null);
51
52
 
52
53
  public getName(): string;
53
54
 
@@ -65,13 +66,13 @@ declare class SortableTitlePlugin extends EventDispatcher {
65
66
 
66
67
  public getIcons(): { [key: string]: string }|null;
67
68
 
68
- public setSortLogics(sortLogic: { [key: string]: ((...params: any[]) => any) }): void;
69
+ public setSortLogics(sortLogic: { [key: string]: ((...params: any[]) => any) }|null): void;
69
70
 
70
- public setSortLogic(field: string, func: ((...params: any[]) => any)): void;
71
+ public setSortLogic(field: string, func: ((...params: any[]) => any)|null): void;
71
72
 
72
- public getSortOrder(colIndex?: number): string;
73
+ public getSortOrder(colIndex?: number|null): string;
73
74
 
74
- public getSortedColumnIndex(priority?: number): number;
75
+ public getSortedColumnIndex(priority?: number|null): number;
75
76
 
76
77
  public getSortPriority(colIndex: number): number;
77
78
 
@@ -81,9 +82,9 @@ declare class SortableTitlePlugin extends EventDispatcher {
81
82
 
82
83
  public isSorting(): boolean;
83
84
 
84
- public sortColumn(colRef: number|string, sortOrder?: string, opt_arg?: any): void;
85
+ public sortColumn(colRef: number|string|null, sortOrder?: string|null, opt_arg?: any): void;
85
86
 
86
- public sortColumns(sortOptions: (SortableTitlePlugin.InitialSort)[], opt_arg?: any): void;
87
+ public sortColumns(sortOptions: (SortableTitlePlugin.InitialSort)[]|null, opt_arg?: any): void;
87
88
 
88
89
  public clearSortState(opt_arg?: any): void;
89
90
 
@@ -99,37 +100,37 @@ declare class SortableTitlePlugin extends EventDispatcher {
99
100
 
100
101
  public getDataColumnMap(): (string)[];
101
102
 
102
- public setDataColumnMap(dataMap: (string|null)[]): void;
103
+ public setDataColumnMap(dataMap: (string|null)[]|null): void;
103
104
 
104
105
  public getColumnSortingField(colIndex: number): string;
105
106
 
106
- public setColumnSortingField(colIndex: number, field: string|null, sortLogic?: ((...params: any[]) => any)): void;
107
+ public setColumnSortingField(colIndex: number, field: string|null|null, sortLogic?: ((...params: any[]) => any)|null, rowSorting?: boolean|null): void;
107
108
 
108
109
  public getColumnSortingFields(): (string)[];
109
110
 
110
- public disableTwoStateSorting(disabled?: boolean): void;
111
+ public disableTwoStateSorting(disabled?: boolean|null): void;
111
112
 
112
- public disableSortSymbols(disabled?: boolean): void;
113
+ public disableSortSymbols(disabled?: boolean|null): void;
113
114
 
114
- public disableDataSorting(disabled?: boolean): void;
115
+ public disableDataSorting(disabled?: boolean|null): void;
115
116
 
116
- public disableDoubleClickToSort(disabled?: boolean): void;
117
+ public disableDoubleClickToSort(disabled?: boolean|null): void;
117
118
 
118
- public disableCellClick(cell: ElementWrapper, disabled?: boolean): void;
119
+ public disableCellClick(cell: ElementWrapper|null, disabled?: boolean|null): void;
119
120
 
120
- public disableColumnSorting(columns: number|(number)[], disabled?: boolean): void;
121
+ public disableColumnSorting(columns: number|(number)[]|null, disabled?: boolean|null): void;
121
122
 
122
- public setClickDelayInterval(opt_ms?: number): void;
123
+ public setClickDelayInterval(opt_ms?: number|null): void;
123
124
 
124
- public getSortingSequence(colRef?: (number|string)): (string)[];
125
+ public getSortingSequence(colRef?: (number|string)|null): (string)[];
125
126
 
126
- public setSortingSequence(sequence: (string)[], colRef?: (number|string)): void;
127
+ public setSortingSequence(sequence: (string)[]|null, colRef?: (number|string)|null): void;
127
128
 
128
129
  public clearAllColumnSortingSequences(): void;
129
130
 
130
131
  }
131
132
 
132
- declare function len(disabled?: boolean): void;
133
+ declare function len(disabled?: boolean|null): void;
133
134
 
134
135
  export default SortableTitlePlugin;
135
136
  export { SortableTitlePlugin };
@@ -104,7 +104,7 @@ SortableTitlePlugin.ColumnOptions;
104
104
  * @property {(boolean|number)=} multiColumn=false Alias to `multicolumn`
105
105
  * @property {boolean=} threeStatesSorting=false If enabled, sorting will cycle through ascending, descending and original order states. This option is deprecated in favor of sortingSequence option
106
106
  * @property {Object.<string, DataTable.SortLogic>=} sortLogic=null Custom logic for sorting based on the specified field. The key is field name and the value pair is a function.
107
- * @property {boolean=} disableDoubleClickToSort=false If enabled, double click on column title to sort
107
+ * @property {boolean=} disableDoubleClickToSort=true If disabled, double click will trigger sorting operation
108
108
  * @property {boolean=} sortableColumns=false If enabled, all columns will be sortable by field automatically
109
109
  * @property {boolean=} sortableIndicator=false If enabled, sort indicator (diamond) icon will always show regardless of sorting states. In Halo theme, this option will be enabled by default.
110
110
  * @property {boolean=} indicatorOnly=false If enabled, data will not be sorted, but the UI is rendered normally. This is useful for server side sorting.
@@ -114,7 +114,8 @@ SortableTitlePlugin.ColumnOptions;
114
114
  * @property {Function=} preClicked A shortcut to define the preClicked event handler
115
115
  * @property {Function=} clicked A shortcut to define the clicked event handler
116
116
  * @property {Function=} preDataSorting A shortcut to define the preDataSorting event handler
117
- * @property {Array.<SortableTitlePlugin~SortOrder>=} sortingSequence=["a", "d"] Sequence in which sort order will be changed. The default value is ["a", "d"]. This option override threeStatesSorting
117
+ * @property {Array.<SortableTitlePlugin~SortOrder>=} sortingSequence=["a", "d"] Sequence in which sort order will be changed. The default value is ["a", "d"]. This option overrides threeStatesSorting
118
+ * @property {boolean=} rowSorting=false A flag indicating that the given sortLogic takes entire row data instead of a field value for comparison
118
119
  */
119
120
  SortableTitlePlugin.Options;
120
121
 
@@ -143,7 +144,7 @@ SortableTitlePlugin.prototype._dataSorting = true;
143
144
  /** @private
144
145
  * @type {boolean}
145
146
  */
146
- SortableTitlePlugin.prototype._isDisableDoubleClickToSort = true;
147
+ SortableTitlePlugin.prototype._dblClickAllowed = false;
147
148
 
148
149
  /** @private
149
150
  * @type {number}
@@ -286,19 +287,20 @@ SortableTitlePlugin.prototype.unload = function (host) {
286
287
  SortableTitlePlugin.prototype.afterInit = function () {
287
288
  var t = this;
288
289
 
289
- // Data source not available during initialization
290
+ // Set logic to the data source, since the data source not available during the initialization
290
291
  t.setSortLogics(t._sortLogic);
291
292
 
292
- // Sort columns if initialSort are specified initially
293
- if (t._initialSort != null) {
294
- var initialSort = t._initialSort;
295
- if (!Array.isArray(initialSort)) {
296
- initialSort = [initialSort];
297
- }
298
- if (t._maxCount === 1) {
299
- initialSort = initialSort.slice(0, 1); // Ensure only 1 item is sorted in non-multiColumn mode
293
+ var userInput = t._initialSort;
294
+ if (userInput != null) {
295
+ if(Array.isArray(userInput)) {
296
+ if(t._maxCount === 1) { // TODO: max count could be part of sortColumns method
297
+ t.sortColumns(userInput.slice(0, 1));
298
+ } else {
299
+ t.sortColumns(userInput);
300
+ }
301
+ } else {
302
+ t.sortColumns([userInput]);
300
303
  }
301
- t.sortColumns(initialSort);
302
304
  }
303
305
  };
304
306
 
@@ -476,7 +478,9 @@ SortableTitlePlugin.prototype.getConfigObject = function (gridOptions) {
476
478
  if(this._maxCount !== 1) {
477
479
  extOptions["multiColumn"] = this._maxCount === -1 ? true : this._maxCount;
478
480
  }
479
- extOptions["disableDoubleClickToSort"] = this._isDisableDoubleClickToSort;
481
+ if(this._dblClickAllowed) {
482
+ extOptions["disableDoubleClickToSort"] = !this._dblClickAllowed;
483
+ }
480
484
  extOptions["sortableColumns"] = this._sortableColumns;
481
485
  extOptions["indicatorOnly"] = !this._dataSorting;
482
486
  // extOptions["mode"] = this._mode;
@@ -849,9 +853,10 @@ SortableTitlePlugin.prototype.getColumnSortingField = function (colIndex) {
849
853
  * @public
850
854
  * @param {number} colIndex
851
855
  * @param {string|null} field A field used for sorting
852
- * @param {Function=} sortLogic
856
+ * @param {Function=} sortLogic=null
857
+ * @param {boolean=} rowSorting=false A flag indicating that the given sortLogic takes entire row data instead of a field value for comparison
853
858
  */
854
- SortableTitlePlugin.prototype.setColumnSortingField = function (colIndex, field, sortLogic) {
859
+ SortableTitlePlugin.prototype.setColumnSortingField = function (colIndex, field, sortLogic, rowSorting) {
855
860
  if (typeof colIndex == "number" && field != null) {
856
861
  var options = this._newSortOptions(colIndex);
857
862
  if (!field) {
@@ -863,6 +868,9 @@ SortableTitlePlugin.prototype.setColumnSortingField = function (colIndex, field,
863
868
  if(sortLogic != null && !this._userManagedLogic) {
864
869
  if (options["sortLogic"] !== sortLogic) {
865
870
  options["sortLogic"] = sortLogic || null;
871
+ if(rowSorting && sortLogic) {
872
+ sortLogic["rowSorting"] = true; // Tell data view/table about the argument
873
+ }
866
874
  }
867
875
  }
868
876
  }
@@ -962,10 +970,10 @@ SortableTitlePlugin.prototype.disableDataSorting = function (disabled) {
962
970
  };
963
971
  /** @public
964
972
  * @description To allow double click action to sort. Default value is false.
965
- * @param {boolean=} disabled
973
+ * @param {boolean=} disabled=false
966
974
  */
967
975
  SortableTitlePlugin.prototype.disableDoubleClickToSort = function (disabled) {
968
- this._isDisableDoubleClickToSort = !!disabled;
976
+ this._dblClickAllowed = !disabled;
969
977
  };
970
978
  /** This api is deprecated. Use {@link SortableTitlePlugin.prototype.disableColumnSorting} instead
971
979
  * @public
@@ -1011,54 +1019,26 @@ SortableTitlePlugin.prototype.setClickDelayInterval = function (opt_ms) {
1011
1019
  this._delayInterval = (opt_ms != null) ? opt_ms : 500;
1012
1020
  };
1013
1021
 
1014
- /** @private
1015
- * @description Pre-process columns options to support both composite and rt-grid backward compatible
1016
- * @param {number} colIndex
1017
- * @param {Object} options
1018
- * @returns {Object}
1019
- */
1020
- SortableTitlePlugin.prototype._prepareColumnOptions = function (colIndex, options) {
1021
- var t = this;
1022
- var column = options || {};
1023
- var colOption = {
1024
- "colIndex": colIndex,
1025
- "field": column["field"],
1026
- "sortable": !!t._sortableColumns
1027
- };
1028
-
1029
- if (column["sortBy"] != null) { // composite grid option
1030
- colOption["sortable"] = !!column["sortBy"];
1031
- colOption["sortBy"] = column["sortBy"];
1032
- }
1033
- if (column["sortable"] != null) { // rt grid option
1034
- colOption["sortable"] = !!column["sortable"];
1035
- }
1036
-
1037
- colOption["sortLogic"] = column["sortLogic"] || column["sortingLogic"] || column["sorter"]; // Originally, rt grid support option for sortLogic by column
1038
- colOption["sort"] = column["defaultSort"] || column["sort"]; // composite and rt grid option for default sort order
1039
- return colOption;
1040
- };
1041
-
1042
1022
  /** @private
1043
1023
  * @description Get initial sort from column option `defaultSort` or `sort`
1044
1024
  * @param {Object} options Core model object
1045
1025
  * @returns {Object}
1046
1026
  */
1047
1027
  SortableTitlePlugin.prototype._initialSortByColumnField = function (options) {
1048
- var t = this;
1049
- var columns = options["columns"] || [];
1050
- var initialSort = null;
1051
- for (var i = 0; i < columns.length; i++) {
1052
- var col = t._prepareColumnOptions(i, columns[i]);
1053
- var val = col["sort"];
1054
- if (val) {
1055
- initialSort = {
1056
- "colIndex": col["colIndex"],
1057
- "sortOrder": val
1028
+ var columns = options["columns"];
1029
+ var colCount = columns ? columns.length : 0;
1030
+ for (var i = 0; i < colCount; i++) {
1031
+ var column = columns[i];
1032
+ var sortOrder = column["defaultSort"] || column["sort"]; // composite and rt grid option for default sort order
1033
+ if (sortOrder) {
1034
+ // TODO: Support multi-column sorting
1035
+ return {
1036
+ "colIndex": i,
1037
+ "sortOrder": sortOrder
1058
1038
  };
1059
1039
  }
1060
1040
  }
1061
- return initialSort;
1041
+ return null;
1062
1042
  };
1063
1043
 
1064
1044
  /** @private
@@ -1169,7 +1149,7 @@ SortableTitlePlugin.prototype._onClickTitle = function (grid, e) {
1169
1149
  if(this._disabled) {
1170
1150
  return;
1171
1151
  }
1172
- if (e.detail === 2 && this._isDisableDoubleClickToSort) { // dblclick
1152
+ if (e.detail === 2 && !this._dblClickAllowed) { // dblclick
1173
1153
  if (this._clickTimer) {
1174
1154
  clearTimeout(this._clickTimer);
1175
1155
  this._clickTimer = 0;
@@ -1447,18 +1427,35 @@ SortableTitlePlugin.prototype._sortColumn = function (states, opt_arg) {
1447
1427
  SortableTitlePlugin.prototype._onColumnAdded = function (e) {
1448
1428
  var t = this;
1449
1429
  var colIndex = e["colIndex"];
1450
- var context = e["context"];
1451
- var col = t._prepareColumnOptions(colIndex, context);
1452
- var field = col["sortBy"] || col["field"];
1453
- var logic = col["sortLogic"] || t._sortLogic[field];
1430
+ var column = e["context"] || {};
1431
+
1432
+ var sortable = !!t._sortableColumns;
1433
+ var field = column["field"];
1434
+ var sortBy = column["sortBy"];
1435
+
1436
+ if (sortBy != null) { // composite grid option
1437
+ sortable = !!sortBy;
1438
+ field = sortBy;
1439
+ }
1440
+ if (column["sortable"] != null) { // rt grid option
1441
+ sortable = !!column["sortable"];
1442
+ }
1443
+
1444
+ var sortLogic = column["sortLogic"] || column["sortingLogic"] || column["sorter"]; // Originally, rt grid support option for sortLogic by column
1445
+ if(!sortLogic) {
1446
+ sortLogic = t._sortLogic[field];
1447
+ }
1448
+ if(typeof sortLogic !== "function") {
1449
+ sortLogic = null;
1450
+ }
1454
1451
 
1455
- var sortingSequence = context ? context["sortingSequence"] : null;
1452
+ var sortingSequence = column["sortingSequence"];
1456
1453
  if (sortingSequence != null && field) { // Make sure that column config does not affect grid level config
1457
1454
  t.setSortingSequence(sortingSequence, field);
1458
1455
  }
1459
1456
 
1460
- if (col["sortable"]) {
1461
- t.setColumnSortingField(colIndex, field, typeof logic === "function" ? logic : null);
1457
+ if (sortable) { // TODO: Check if empty field should be sortable
1458
+ t.setColumnSortingField(colIndex, field, sortLogic, column["rowSorting"]);
1462
1459
  } else {
1463
1460
  t.disableColumnSorting(colIndex, true);
1464
1461
  }