@refinitiv-ui/efx-grid 0.0.0-dev.12023565035.1

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 (864) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +61 -0
  3. package/lib/column-dragging/es6/ColumnDragging.d.ts +51 -0
  4. package/lib/column-dragging/es6/ColumnDragging.js +968 -0
  5. package/lib/column-dragging/es6/index.d.ts +1 -0
  6. package/lib/column-dragging/es6/index.js +1 -0
  7. package/lib/column-format-dialog/index.d.ts +2 -0
  8. package/lib/column-format-dialog/index.js +2 -0
  9. package/lib/column-format-dialog/lib/column-format-dialog.d.ts +77 -0
  10. package/lib/column-format-dialog/lib/column-format-dialog.js +2688 -0
  11. package/lib/column-format-dialog/lib/locale/translation-de.d.ts +7 -0
  12. package/lib/column-format-dialog/lib/locale/translation-de.js +94 -0
  13. package/lib/column-format-dialog/lib/locale/translation-en.d.ts +7 -0
  14. package/lib/column-format-dialog/lib/locale/translation-en.js +94 -0
  15. package/lib/column-format-dialog/lib/locale/translation-ja.d.ts +7 -0
  16. package/lib/column-format-dialog/lib/locale/translation-ja.js +94 -0
  17. package/lib/column-format-dialog/lib/locale/translation-zh-hant.d.ts +7 -0
  18. package/lib/column-format-dialog/lib/locale/translation-zh-hant.js +94 -0
  19. package/lib/column-format-dialog/lib/locale/translation-zh.d.ts +7 -0
  20. package/lib/column-format-dialog/lib/locale/translation-zh.js +94 -0
  21. package/lib/column-format-dialog/lib/locale/translation.d.ts +11 -0
  22. package/lib/column-format-dialog/lib/locale/translation.js +18 -0
  23. package/lib/column-format-dialog/lib/preview-table.d.ts +151 -0
  24. package/lib/column-format-dialog/lib/preview-table.js +982 -0
  25. package/lib/column-format-dialog/themes/base.less +429 -0
  26. package/lib/column-format-dialog/themes/elemental/column-format-dialog.less +1 -0
  27. package/lib/column-format-dialog/themes/elemental/dark/column-format-dialog.js +4 -0
  28. package/lib/column-format-dialog/themes/elemental/dark/css/native-elements.css +0 -0
  29. package/lib/column-format-dialog/themes/elemental/dark/es5/all-elements.js +2 -0
  30. package/lib/column-format-dialog/themes/elemental/dark/imports/all-elements.js +1 -0
  31. package/lib/column-format-dialog/themes/elemental/dark/imports/custom-elements.js +1 -0
  32. package/lib/column-format-dialog/themes/elemental/dark/imports/native-elements.js +0 -0
  33. package/lib/column-format-dialog/themes/elemental/dark.js +16 -0
  34. package/lib/column-format-dialog/themes/elemental/defaults.less +1 -0
  35. package/lib/column-format-dialog/themes/elemental/index.less +5 -0
  36. package/lib/column-format-dialog/themes/elemental/light/column-format-dialog.js +4 -0
  37. package/lib/column-format-dialog/themes/elemental/light/css/native-elements.css +0 -0
  38. package/lib/column-format-dialog/themes/elemental/light/es5/all-elements.js +2 -0
  39. package/lib/column-format-dialog/themes/elemental/light/imports/all-elements.js +1 -0
  40. package/lib/column-format-dialog/themes/elemental/light/imports/custom-elements.js +1 -0
  41. package/lib/column-format-dialog/themes/elemental/light/imports/native-elements.js +0 -0
  42. package/lib/column-format-dialog/themes/elemental/light.js +16 -0
  43. package/lib/column-format-dialog/themes/halo/column-format-dialog.less +6 -0
  44. package/lib/column-format-dialog/themes/halo/dark/column-format-dialog.js +4 -0
  45. package/lib/column-format-dialog/themes/halo/dark/css/native-elements.css +0 -0
  46. package/lib/column-format-dialog/themes/halo/dark/es5/all-elements.js +2 -0
  47. package/lib/column-format-dialog/themes/halo/dark/imports/all-elements.js +1 -0
  48. package/lib/column-format-dialog/themes/halo/dark/imports/custom-elements.js +1 -0
  49. package/lib/column-format-dialog/themes/halo/dark/imports/native-elements.js +0 -0
  50. package/lib/column-format-dialog/themes/halo/dark.js +16 -0
  51. package/lib/column-format-dialog/themes/halo/defaults.less +1 -0
  52. package/lib/column-format-dialog/themes/halo/index.less +5 -0
  53. package/lib/column-format-dialog/themes/halo/light/column-format-dialog.js +4 -0
  54. package/lib/column-format-dialog/themes/halo/light/css/native-elements.css +0 -0
  55. package/lib/column-format-dialog/themes/halo/light/es5/all-elements.js +2 -0
  56. package/lib/column-format-dialog/themes/halo/light/imports/all-elements.js +1 -0
  57. package/lib/column-format-dialog/themes/halo/light/imports/custom-elements.js +1 -0
  58. package/lib/column-format-dialog/themes/halo/light/imports/native-elements.js +0 -0
  59. package/lib/column-format-dialog/themes/halo/light.js +16 -0
  60. package/lib/column-format-dialog/themes/luna/column-format-dialog.less +1 -0
  61. package/lib/column-format-dialog/themes/luna/default/column-format-dialog.js +4 -0
  62. package/lib/column-format-dialog/themes/luna/default/css/native-elements.css +0 -0
  63. package/lib/column-format-dialog/themes/luna/default/es5/all-elements.js +2 -0
  64. package/lib/column-format-dialog/themes/luna/default/imports/all-elements.js +1 -0
  65. package/lib/column-format-dialog/themes/luna/default/imports/custom-elements.js +1 -0
  66. package/lib/column-format-dialog/themes/luna/default/imports/native-elements.js +0 -0
  67. package/lib/column-format-dialog/themes/luna/defaults.less +1 -0
  68. package/lib/column-format-dialog/themes/luna/index.less +5 -0
  69. package/lib/column-format-dialog/themes/solar/charcoal/column-format-dialog.js +4 -0
  70. package/lib/column-format-dialog/themes/solar/charcoal/css/native-elements.css +0 -0
  71. package/lib/column-format-dialog/themes/solar/charcoal/es5/all-elements.js +2 -0
  72. package/lib/column-format-dialog/themes/solar/charcoal/imports/all-elements.js +1 -0
  73. package/lib/column-format-dialog/themes/solar/charcoal/imports/custom-elements.js +1 -0
  74. package/lib/column-format-dialog/themes/solar/charcoal/imports/native-elements.js +0 -0
  75. package/lib/column-format-dialog/themes/solar/charcoal.js +16 -0
  76. package/lib/column-format-dialog/themes/solar/column-format-dialog.less +6 -0
  77. package/lib/column-format-dialog/themes/solar/defaults.less +1 -0
  78. package/lib/column-format-dialog/themes/solar/index.less +5 -0
  79. package/lib/column-format-dialog/themes/solar/pearl/column-format-dialog.js +4 -0
  80. package/lib/column-format-dialog/themes/solar/pearl/css/native-elements.css +0 -0
  81. package/lib/column-format-dialog/themes/solar/pearl/es5/all-elements.js +2 -0
  82. package/lib/column-format-dialog/themes/solar/pearl/imports/all-elements.js +1 -0
  83. package/lib/column-format-dialog/themes/solar/pearl/imports/custom-elements.js +1 -0
  84. package/lib/column-format-dialog/themes/solar/pearl/imports/native-elements.js +0 -0
  85. package/lib/column-format-dialog/themes/solar/pearl.js +16 -0
  86. package/lib/column-selection-dialog/index.d.ts +2 -0
  87. package/lib/column-selection-dialog/index.js +2 -0
  88. package/lib/column-selection-dialog/lib/column-selection-dialog.d.ts +66 -0
  89. package/lib/column-selection-dialog/lib/column-selection-dialog.js +2034 -0
  90. package/lib/column-selection-dialog/lib/locale/translation-de.d.ts +7 -0
  91. package/lib/column-selection-dialog/lib/locale/translation-de.js +20 -0
  92. package/lib/column-selection-dialog/lib/locale/translation-en.d.ts +7 -0
  93. package/lib/column-selection-dialog/lib/locale/translation-en.js +20 -0
  94. package/lib/column-selection-dialog/lib/locale/translation-ja.d.ts +7 -0
  95. package/lib/column-selection-dialog/lib/locale/translation-ja.js +20 -0
  96. package/lib/column-selection-dialog/lib/locale/translation-zh-hant.d.ts +7 -0
  97. package/lib/column-selection-dialog/lib/locale/translation-zh-hant.js +20 -0
  98. package/lib/column-selection-dialog/lib/locale/translation-zh.d.ts +7 -0
  99. package/lib/column-selection-dialog/lib/locale/translation-zh.js +20 -0
  100. package/lib/column-selection-dialog/lib/locale/translation.d.ts +11 -0
  101. package/lib/column-selection-dialog/lib/locale/translation.js +18 -0
  102. package/lib/column-selection-dialog/themes/base.less +258 -0
  103. package/lib/column-selection-dialog/themes/elemental/column-selection-dialog.less +1 -0
  104. package/lib/column-selection-dialog/themes/elemental/dark/column-selection-dialog.js +4 -0
  105. package/lib/column-selection-dialog/themes/elemental/dark/css/native-elements.css +0 -0
  106. package/lib/column-selection-dialog/themes/elemental/dark/es5/all-elements.js +2 -0
  107. package/lib/column-selection-dialog/themes/elemental/dark/imports/all-elements.js +1 -0
  108. package/lib/column-selection-dialog/themes/elemental/dark/imports/custom-elements.js +1 -0
  109. package/lib/column-selection-dialog/themes/elemental/dark/imports/native-elements.js +0 -0
  110. package/lib/column-selection-dialog/themes/elemental/dark.js +8 -0
  111. package/lib/column-selection-dialog/themes/elemental/defaults.less +1 -0
  112. package/lib/column-selection-dialog/themes/elemental/index.less +5 -0
  113. package/lib/column-selection-dialog/themes/elemental/light/column-selection-dialog.js +4 -0
  114. package/lib/column-selection-dialog/themes/elemental/light/css/native-elements.css +0 -0
  115. package/lib/column-selection-dialog/themes/elemental/light/es5/all-elements.js +2 -0
  116. package/lib/column-selection-dialog/themes/elemental/light/imports/all-elements.js +1 -0
  117. package/lib/column-selection-dialog/themes/elemental/light/imports/custom-elements.js +1 -0
  118. package/lib/column-selection-dialog/themes/elemental/light/imports/native-elements.js +0 -0
  119. package/lib/column-selection-dialog/themes/elemental/light.js +8 -0
  120. package/lib/column-selection-dialog/themes/halo/column-selection-dialog.less +25 -0
  121. package/lib/column-selection-dialog/themes/halo/dark/column-selection-dialog.js +4 -0
  122. package/lib/column-selection-dialog/themes/halo/dark/css/native-elements.css +0 -0
  123. package/lib/column-selection-dialog/themes/halo/dark/es5/all-elements.js +2 -0
  124. package/lib/column-selection-dialog/themes/halo/dark/imports/all-elements.js +1 -0
  125. package/lib/column-selection-dialog/themes/halo/dark/imports/custom-elements.js +1 -0
  126. package/lib/column-selection-dialog/themes/halo/dark/imports/native-elements.js +0 -0
  127. package/lib/column-selection-dialog/themes/halo/dark.js +8 -0
  128. package/lib/column-selection-dialog/themes/halo/defaults.less +1 -0
  129. package/lib/column-selection-dialog/themes/halo/index.less +6 -0
  130. package/lib/column-selection-dialog/themes/halo/light/column-selection-dialog.js +4 -0
  131. package/lib/column-selection-dialog/themes/halo/light/css/native-elements.css +0 -0
  132. package/lib/column-selection-dialog/themes/halo/light/es5/all-elements.js +2 -0
  133. package/lib/column-selection-dialog/themes/halo/light/imports/all-elements.js +1 -0
  134. package/lib/column-selection-dialog/themes/halo/light/imports/custom-elements.js +1 -0
  135. package/lib/column-selection-dialog/themes/halo/light/imports/native-elements.js +0 -0
  136. package/lib/column-selection-dialog/themes/halo/light.js +8 -0
  137. package/lib/column-selection-dialog/themes/solar/charcoal/column-selection-dialog.js +4 -0
  138. package/lib/column-selection-dialog/themes/solar/charcoal/css/native-elements.css +0 -0
  139. package/lib/column-selection-dialog/themes/solar/charcoal/es5/all-elements.js +2 -0
  140. package/lib/column-selection-dialog/themes/solar/charcoal/imports/all-elements.js +1 -0
  141. package/lib/column-selection-dialog/themes/solar/charcoal/imports/custom-elements.js +1 -0
  142. package/lib/column-selection-dialog/themes/solar/charcoal/imports/native-elements.js +0 -0
  143. package/lib/column-selection-dialog/themes/solar/charcoal.js +8 -0
  144. package/lib/column-selection-dialog/themes/solar/column-selection-dialog.less +5 -0
  145. package/lib/column-selection-dialog/themes/solar/defaults.less +1 -0
  146. package/lib/column-selection-dialog/themes/solar/index.less +6 -0
  147. package/lib/column-selection-dialog/themes/solar/pearl/column-selection-dialog.js +4 -0
  148. package/lib/column-selection-dialog/themes/solar/pearl/css/native-elements.css +0 -0
  149. package/lib/column-selection-dialog/themes/solar/pearl/es5/all-elements.js +2 -0
  150. package/lib/column-selection-dialog/themes/solar/pearl/imports/all-elements.js +1 -0
  151. package/lib/column-selection-dialog/themes/solar/pearl/imports/custom-elements.js +1 -0
  152. package/lib/column-selection-dialog/themes/solar/pearl/imports/native-elements.js +0 -0
  153. package/lib/column-selection-dialog/themes/solar/pearl.js +8 -0
  154. package/lib/core/dist/core.css +1 -0
  155. package/lib/core/dist/core.js +33910 -0
  156. package/lib/core/dist/core.min.js +1 -0
  157. package/lib/core/es6/data/ColumnStats.d.ts +42 -0
  158. package/lib/core/es6/data/ColumnStats.js +428 -0
  159. package/lib/core/es6/data/DataCache.d.ts +43 -0
  160. package/lib/core/es6/data/DataCache.js +597 -0
  161. package/lib/core/es6/data/DataTable.d.ts +156 -0
  162. package/lib/core/es6/data/DataTable.js +2206 -0
  163. package/lib/core/es6/data/DataView.d.ts +332 -0
  164. package/lib/core/es6/data/DataView.js +4144 -0
  165. package/lib/core/es6/data/Segment.d.ts +91 -0
  166. package/lib/core/es6/data/Segment.js +1001 -0
  167. package/lib/core/es6/data/SegmentCollection.d.ts +84 -0
  168. package/lib/core/es6/data/SegmentCollection.js +713 -0
  169. package/lib/core/es6/data/WrappedView.d.ts +290 -0
  170. package/lib/core/es6/data/WrappedView.js +1320 -0
  171. package/lib/core/es6/grid/Core.d.ts +455 -0
  172. package/lib/core/es6/grid/Core.js +6196 -0
  173. package/lib/core/es6/grid/ILayoutGrid.d.ts +212 -0
  174. package/lib/core/es6/grid/ILayoutGrid.js +706 -0
  175. package/lib/core/es6/grid/LayoutGrid.d.ts +37 -0
  176. package/lib/core/es6/grid/LayoutGrid.js +2975 -0
  177. package/lib/core/es6/grid/VirtualizedLayoutGrid.d.ts +28 -0
  178. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +1241 -0
  179. package/lib/core/es6/grid/components/Cell.d.ts +52 -0
  180. package/lib/core/es6/grid/components/Cell.js +826 -0
  181. package/lib/core/es6/grid/components/CellFloatingPanel.d.ts +21 -0
  182. package/lib/core/es6/grid/components/CellFloatingPanel.js +130 -0
  183. package/lib/core/es6/grid/components/CellSpan.d.ts +18 -0
  184. package/lib/core/es6/grid/components/CellSpan.js +99 -0
  185. package/lib/core/es6/grid/components/CellSpans.d.ts +40 -0
  186. package/lib/core/es6/grid/components/CellSpans.js +368 -0
  187. package/lib/core/es6/grid/components/Column.d.ts +22 -0
  188. package/lib/core/es6/grid/components/Column.js +618 -0
  189. package/lib/core/es6/grid/components/ElementWrapper.d.ts +127 -0
  190. package/lib/core/es6/grid/components/ElementWrapper.js +718 -0
  191. package/lib/core/es6/grid/components/HScrollbar.d.ts +28 -0
  192. package/lib/core/es6/grid/components/HScrollbar.js +241 -0
  193. package/lib/core/es6/grid/components/Scrollbar.d.ts +63 -0
  194. package/lib/core/es6/grid/components/Scrollbar.js +1413 -0
  195. package/lib/core/es6/grid/components/StretchedCells.d.ts +17 -0
  196. package/lib/core/es6/grid/components/StretchedCells.js +342 -0
  197. package/lib/core/es6/grid/components/VScrollbar.d.ts +18 -0
  198. package/lib/core/es6/grid/components/VScrollbar.js +139 -0
  199. package/lib/core/es6/grid/components/VirtualItems.d.ts +12 -0
  200. package/lib/core/es6/grid/components/VirtualItems.js +51 -0
  201. package/lib/core/es6/grid/event/EventDispatcher.d.ts +16 -0
  202. package/lib/core/es6/grid/event/EventDispatcher.js +138 -0
  203. package/lib/core/es6/grid/event/EventListeners.d.ts +34 -0
  204. package/lib/core/es6/grid/event/EventListeners.js +166 -0
  205. package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +155 -0
  206. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +1977 -0
  207. package/lib/core/es6/grid/util/CellBoundPainter.d.ts +16 -0
  208. package/lib/core/es6/grid/util/CellBoundPainter.js +171 -0
  209. package/lib/core/es6/grid/util/Conflator.d.ts +32 -0
  210. package/lib/core/es6/grid/util/Conflator.js +191 -0
  211. package/lib/core/es6/grid/util/Reverter.d.ts +14 -0
  212. package/lib/core/es6/grid/util/Reverter.js +79 -0
  213. package/lib/core/es6/grid/util/SectionSettings.d.ts +79 -0
  214. package/lib/core/es6/grid/util/SectionSettings.js +679 -0
  215. package/lib/core/es6/grid/util/SelectionList.d.ts +54 -0
  216. package/lib/core/es6/grid/util/SelectionList.js +491 -0
  217. package/lib/core/es6/grid/util/TrackLayout.d.ts +92 -0
  218. package/lib/core/es6/grid/util/TrackLayout.js +902 -0
  219. package/lib/core/es6/grid/util/Virtualizer.d.ts +40 -0
  220. package/lib/core/es6/grid/util/Virtualizer.js +340 -0
  221. package/lib/core/es6/grid/util/util.d.ts +20 -0
  222. package/lib/core/es6/grid/util/util.js +391 -0
  223. package/lib/core/es6/index.d.ts +79 -0
  224. package/lib/core/es6/index.js +125 -0
  225. package/lib/core/es6/tr-grid-theme.d.ts +5 -0
  226. package/lib/core/es6/tr-grid-theme.js +5 -0
  227. package/lib/filter-dialog/index.d.ts +2 -0
  228. package/lib/filter-dialog/index.js +2 -0
  229. package/lib/filter-dialog/lib/checkbox-list.d.ts +52 -0
  230. package/lib/filter-dialog/lib/checkbox-list.js +444 -0
  231. package/lib/filter-dialog/lib/filter-dialog.d.ts +75 -0
  232. package/lib/filter-dialog/lib/filter-dialog.js +1160 -0
  233. package/lib/filter-dialog/lib/locale/translation-de.d.ts +7 -0
  234. package/lib/filter-dialog/lib/locale/translation-de.js +40 -0
  235. package/lib/filter-dialog/lib/locale/translation-en.d.ts +7 -0
  236. package/lib/filter-dialog/lib/locale/translation-en.js +40 -0
  237. package/lib/filter-dialog/lib/locale/translation-ja.d.ts +7 -0
  238. package/lib/filter-dialog/lib/locale/translation-ja.js +40 -0
  239. package/lib/filter-dialog/lib/locale/translation-zh-hant.d.ts +7 -0
  240. package/lib/filter-dialog/lib/locale/translation-zh-hant.js +40 -0
  241. package/lib/filter-dialog/lib/locale/translation-zh.d.ts +7 -0
  242. package/lib/filter-dialog/lib/locale/translation-zh.js +40 -0
  243. package/lib/filter-dialog/lib/locale/translation.d.ts +11 -0
  244. package/lib/filter-dialog/lib/locale/translation.js +18 -0
  245. package/lib/filter-dialog/themes/base-checkbox.less +42 -0
  246. package/lib/filter-dialog/themes/base.less +191 -0
  247. package/lib/filter-dialog/themes/elemental/checkbox-list.less +3 -0
  248. package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +4 -0
  249. package/lib/filter-dialog/themes/elemental/dark/css/native-elements.css +0 -0
  250. package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +4 -0
  251. package/lib/filter-dialog/themes/elemental/dark/filter-dialog.js +5 -0
  252. package/lib/filter-dialog/themes/elemental/dark/imports/all-elements.js +2 -0
  253. package/lib/filter-dialog/themes/elemental/dark/imports/custom-elements.js +2 -0
  254. package/lib/filter-dialog/themes/elemental/dark/imports/native-elements.js +0 -0
  255. package/lib/filter-dialog/themes/elemental/dark.js +11 -0
  256. package/lib/filter-dialog/themes/elemental/defaults.less +3 -0
  257. package/lib/filter-dialog/themes/elemental/filter-dialog.less +1 -0
  258. package/lib/filter-dialog/themes/elemental/index.less +6 -0
  259. package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +4 -0
  260. package/lib/filter-dialog/themes/elemental/light/css/native-elements.css +0 -0
  261. package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +4 -0
  262. package/lib/filter-dialog/themes/elemental/light/filter-dialog.js +5 -0
  263. package/lib/filter-dialog/themes/elemental/light/imports/all-elements.js +2 -0
  264. package/lib/filter-dialog/themes/elemental/light/imports/custom-elements.js +2 -0
  265. package/lib/filter-dialog/themes/elemental/light/imports/native-elements.js +0 -0
  266. package/lib/filter-dialog/themes/elemental/light.js +11 -0
  267. package/lib/filter-dialog/themes/halo/checkbox-list.less +3 -0
  268. package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +4 -0
  269. package/lib/filter-dialog/themes/halo/dark/css/native-elements.css +0 -0
  270. package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +4 -0
  271. package/lib/filter-dialog/themes/halo/dark/filter-dialog.js +5 -0
  272. package/lib/filter-dialog/themes/halo/dark/imports/all-elements.js +2 -0
  273. package/lib/filter-dialog/themes/halo/dark/imports/custom-elements.js +2 -0
  274. package/lib/filter-dialog/themes/halo/dark/imports/native-elements.js +0 -0
  275. package/lib/filter-dialog/themes/halo/dark.js +11 -0
  276. package/lib/filter-dialog/themes/halo/defaults.less +3 -0
  277. package/lib/filter-dialog/themes/halo/filter-dialog.less +15 -0
  278. package/lib/filter-dialog/themes/halo/index.less +6 -0
  279. package/lib/filter-dialog/themes/halo/light/checkbox-list.js +4 -0
  280. package/lib/filter-dialog/themes/halo/light/css/native-elements.css +0 -0
  281. package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +4 -0
  282. package/lib/filter-dialog/themes/halo/light/filter-dialog.js +5 -0
  283. package/lib/filter-dialog/themes/halo/light/imports/all-elements.js +2 -0
  284. package/lib/filter-dialog/themes/halo/light/imports/custom-elements.js +2 -0
  285. package/lib/filter-dialog/themes/halo/light/imports/native-elements.js +0 -0
  286. package/lib/filter-dialog/themes/halo/light.js +11 -0
  287. package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +4 -0
  288. package/lib/filter-dialog/themes/solar/charcoal/css/native-elements.css +0 -0
  289. package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +4 -0
  290. package/lib/filter-dialog/themes/solar/charcoal/filter-dialog.js +5 -0
  291. package/lib/filter-dialog/themes/solar/charcoal/imports/all-elements.js +2 -0
  292. package/lib/filter-dialog/themes/solar/charcoal/imports/custom-elements.js +2 -0
  293. package/lib/filter-dialog/themes/solar/charcoal/imports/native-elements.js +0 -0
  294. package/lib/filter-dialog/themes/solar/charcoal.js +11 -0
  295. package/lib/filter-dialog/themes/solar/checkbox-list.less +3 -0
  296. package/lib/filter-dialog/themes/solar/defaults.less +3 -0
  297. package/lib/filter-dialog/themes/solar/filter-dialog.less +5 -0
  298. package/lib/filter-dialog/themes/solar/index.less +6 -0
  299. package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +4 -0
  300. package/lib/filter-dialog/themes/solar/pearl/css/native-elements.css +0 -0
  301. package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +4 -0
  302. package/lib/filter-dialog/themes/solar/pearl/filter-dialog.js +5 -0
  303. package/lib/filter-dialog/themes/solar/pearl/imports/all-elements.js +2 -0
  304. package/lib/filter-dialog/themes/solar/pearl/imports/custom-elements.js +2 -0
  305. package/lib/filter-dialog/themes/solar/pearl/imports/native-elements.js +0 -0
  306. package/lib/filter-dialog/themes/solar/pearl.js +11 -0
  307. package/lib/formatters/es6/CoralButtonFormatter.d.ts +20 -0
  308. package/lib/formatters/es6/CoralButtonFormatter.js +45 -0
  309. package/lib/formatters/es6/CoralCheckboxFormatter.d.ts +12 -0
  310. package/lib/formatters/es6/CoralCheckboxFormatter.js +50 -0
  311. package/lib/formatters/es6/CoralComboBoxFormatter.d.ts +23 -0
  312. package/lib/formatters/es6/CoralComboBoxFormatter.js +103 -0
  313. package/lib/formatters/es6/CoralIconFormatter.d.ts +21 -0
  314. package/lib/formatters/es6/CoralIconFormatter.js +50 -0
  315. package/lib/formatters/es6/CoralInputFormatter.d.ts +12 -0
  316. package/lib/formatters/es6/CoralInputFormatter.js +45 -0
  317. package/lib/formatters/es6/CoralRadioButtonFormatter.d.ts +20 -0
  318. package/lib/formatters/es6/CoralRadioButtonFormatter.js +85 -0
  319. package/lib/formatters/es6/CoralSelectFormatter.d.ts +23 -0
  320. package/lib/formatters/es6/CoralSelectFormatter.js +71 -0
  321. package/lib/formatters/es6/CoralToggleFormatter.d.ts +12 -0
  322. package/lib/formatters/es6/CoralToggleFormatter.js +47 -0
  323. package/lib/formatters/es6/DuplexEmeraldDateTimePickerFormatter.d.ts +14 -0
  324. package/lib/formatters/es6/DuplexEmeraldDateTimePickerFormatter.js +119 -0
  325. package/lib/formatters/es6/EFButtonFormatter.d.ts +20 -0
  326. package/lib/formatters/es6/EFButtonFormatter.js +45 -0
  327. package/lib/formatters/es6/EFCheckboxFormatter.d.ts +12 -0
  328. package/lib/formatters/es6/EFCheckboxFormatter.js +50 -0
  329. package/lib/formatters/es6/EFComboBoxFormatter.d.ts +23 -0
  330. package/lib/formatters/es6/EFComboBoxFormatter.js +78 -0
  331. package/lib/formatters/es6/EFDateTimePickerFormatter.d.ts +13 -0
  332. package/lib/formatters/es6/EFDateTimePickerFormatter.js +60 -0
  333. package/lib/formatters/es6/EFIconFormatter.d.ts +21 -0
  334. package/lib/formatters/es6/EFIconFormatter.js +50 -0
  335. package/lib/formatters/es6/EFNumberFieldFormatter.d.ts +12 -0
  336. package/lib/formatters/es6/EFNumberFieldFormatter.js +45 -0
  337. package/lib/formatters/es6/EFRadioButtonFormatter.d.ts +20 -0
  338. package/lib/formatters/es6/EFRadioButtonFormatter.js +132 -0
  339. package/lib/formatters/es6/EFSelectFormatter.d.ts +23 -0
  340. package/lib/formatters/es6/EFSelectFormatter.js +76 -0
  341. package/lib/formatters/es6/EFTextFieldFormatter.d.ts +12 -0
  342. package/lib/formatters/es6/EFTextFieldFormatter.js +40 -0
  343. package/lib/formatters/es6/EFToggleFormatter.d.ts +12 -0
  344. package/lib/formatters/es6/EFToggleFormatter.js +47 -0
  345. package/lib/formatters/es6/EmeraldDateTimePickerFormatter.d.ts +13 -0
  346. package/lib/formatters/es6/EmeraldDateTimePickerFormatter.js +55 -0
  347. package/lib/formatters/es6/FormatterBuilder.d.ts +26 -0
  348. package/lib/formatters/es6/FormatterBuilder.js +493 -0
  349. package/lib/formatters/es6/NumericInputFormatter.d.ts +13 -0
  350. package/lib/formatters/es6/NumericInputFormatter.js +64 -0
  351. package/lib/formatters/es6/PercentBarFormatter.d.ts +25 -0
  352. package/lib/formatters/es6/PercentBarFormatter.js +62 -0
  353. package/lib/formatters/es6/SimpleImageFormatter.d.ts +21 -0
  354. package/lib/formatters/es6/SimpleImageFormatter.js +64 -0
  355. package/lib/formatters/es6/SimpleInputFormatter.d.ts +12 -0
  356. package/lib/formatters/es6/SimpleInputFormatter.js +40 -0
  357. package/lib/formatters/es6/SimpleLinkFormatter.d.ts +21 -0
  358. package/lib/formatters/es6/SimpleLinkFormatter.js +48 -0
  359. package/lib/formatters/es6/SimpleTickerFormatter.d.ts +23 -0
  360. package/lib/formatters/es6/SimpleTickerFormatter.js +66 -0
  361. package/lib/formatters/es6/SimpleToggleFormatter.d.ts +22 -0
  362. package/lib/formatters/es6/SimpleToggleFormatter.js +132 -0
  363. package/lib/formatters/es6/TextFormatter.d.ts +12 -0
  364. package/lib/formatters/es6/TextFormatter.js +35 -0
  365. package/lib/formatters/es6/index.d.ts +64 -0
  366. package/lib/formatters/es6/index.js +88 -0
  367. package/lib/grid/index.d.ts +2 -0
  368. package/lib/grid/index.js +3 -0
  369. package/lib/grid/lib/efx-grid.d.ts +53 -0
  370. package/lib/grid/lib/efx-grid.js +444 -0
  371. package/lib/grid/themes/base.less +137 -0
  372. package/lib/grid/themes/ds/dark/css/native-elements.css +0 -0
  373. package/lib/grid/themes/ds/dark/efx-grid.js +4 -0
  374. package/lib/grid/themes/ds/dark/es5/all-elements.js +2 -0
  375. package/lib/grid/themes/ds/dark/imports/all-elements.js +1 -0
  376. package/lib/grid/themes/ds/dark/imports/custom-elements.js +1 -0
  377. package/lib/grid/themes/ds/dark/imports/native-elements.js +0 -0
  378. package/lib/grid/themes/ds/dark.js +3 -0
  379. package/lib/grid/themes/ds/efx-grid.less +207 -0
  380. package/lib/grid/themes/ds/index.less +3 -0
  381. package/lib/grid/themes/ds/light/css/native-elements.css +0 -0
  382. package/lib/grid/themes/ds/light/efx-grid.js +4 -0
  383. package/lib/grid/themes/ds/light/es5/all-elements.js +2 -0
  384. package/lib/grid/themes/ds/light/imports/all-elements.js +1 -0
  385. package/lib/grid/themes/ds/light/imports/custom-elements.js +1 -0
  386. package/lib/grid/themes/ds/light/imports/native-elements.js +0 -0
  387. package/lib/grid/themes/ds/light.js +3 -0
  388. package/lib/grid/themes/halo/dark/css/native-elements.css +0 -0
  389. package/lib/grid/themes/halo/dark/efx-grid.js +4 -0
  390. package/lib/grid/themes/halo/dark/es5/all-elements.js +2 -0
  391. package/lib/grid/themes/halo/dark/imports/all-elements.js +1 -0
  392. package/lib/grid/themes/halo/dark/imports/custom-elements.js +1 -0
  393. package/lib/grid/themes/halo/dark/imports/native-elements.js +0 -0
  394. package/lib/grid/themes/halo/dark.js +3 -0
  395. package/lib/grid/themes/halo/efx-grid.less +127 -0
  396. package/lib/grid/themes/halo/index.less +3 -0
  397. package/lib/grid/themes/halo/light/css/native-elements.css +0 -0
  398. package/lib/grid/themes/halo/light/efx-grid.js +4 -0
  399. package/lib/grid/themes/halo/light/es5/all-elements.js +2 -0
  400. package/lib/grid/themes/halo/light/imports/all-elements.js +1 -0
  401. package/lib/grid/themes/halo/light/imports/custom-elements.js +1 -0
  402. package/lib/grid/themes/halo/light/imports/native-elements.js +0 -0
  403. package/lib/grid/themes/halo/light.js +3 -0
  404. package/lib/grid/themes/solar/charcoal/css/native-elements.css +0 -0
  405. package/lib/grid/themes/solar/charcoal/efx-grid.js +4 -0
  406. package/lib/grid/themes/solar/charcoal/es5/all-elements.js +2 -0
  407. package/lib/grid/themes/solar/charcoal/imports/all-elements.js +1 -0
  408. package/lib/grid/themes/solar/charcoal/imports/custom-elements.js +1 -0
  409. package/lib/grid/themes/solar/charcoal/imports/native-elements.js +0 -0
  410. package/lib/grid/themes/solar/charcoal.js +3 -0
  411. package/lib/grid/themes/solar/efx-grid.less +27 -0
  412. package/lib/grid/themes/solar/index.less +3 -0
  413. package/lib/grid/themes/solar/pearl/css/native-elements.css +0 -0
  414. package/lib/grid/themes/solar/pearl/efx-grid.js +4 -0
  415. package/lib/grid/themes/solar/pearl/es5/all-elements.js +2 -0
  416. package/lib/grid/themes/solar/pearl/imports/all-elements.js +1 -0
  417. package/lib/grid/themes/solar/pearl/imports/custom-elements.js +1 -0
  418. package/lib/grid/themes/solar/pearl/imports/native-elements.js +0 -0
  419. package/lib/grid/themes/solar/pearl.js +3 -0
  420. package/lib/index.d.ts +100 -0
  421. package/lib/index.js +100 -0
  422. package/lib/row-segmenting/es6/RowSegmenting.d.ts +115 -0
  423. package/lib/row-segmenting/es6/RowSegmenting.js +1182 -0
  424. package/lib/row-segmenting/es6/index.d.ts +1 -0
  425. package/lib/row-segmenting/es6/index.js +1 -0
  426. package/lib/rt-grid/dist/rt-grid.js +54547 -0
  427. package/lib/rt-grid/dist/rt-grid.min.js +1 -0
  428. package/lib/rt-grid/es6/ColumnDefinition.d.ts +174 -0
  429. package/lib/rt-grid/es6/ColumnDefinition.js +1203 -0
  430. package/lib/rt-grid/es6/DataConnector.d.ts +43 -0
  431. package/lib/rt-grid/es6/DataConnector.js +290 -0
  432. package/lib/rt-grid/es6/FieldDefinition.d.ts +40 -0
  433. package/lib/rt-grid/es6/FieldDefinition.js +560 -0
  434. package/lib/rt-grid/es6/Grid.d.ts +376 -0
  435. package/lib/rt-grid/es6/Grid.js +4653 -0
  436. package/lib/rt-grid/es6/PredefinedFormula.d.ts +16 -0
  437. package/lib/rt-grid/es6/PredefinedFormula.js +33 -0
  438. package/lib/rt-grid/es6/ReferenceCounter.d.ts +40 -0
  439. package/lib/rt-grid/es6/ReferenceCounter.js +251 -0
  440. package/lib/rt-grid/es6/RowDefSorter.d.ts +19 -0
  441. package/lib/rt-grid/es6/RowDefSorter.js +231 -0
  442. package/lib/rt-grid/es6/RowDefinition.d.ts +156 -0
  443. package/lib/rt-grid/es6/RowDefinition.js +1478 -0
  444. package/lib/rt-grid/es6/SnapshotFiller.d.ts +36 -0
  445. package/lib/rt-grid/es6/SnapshotFiller.js +537 -0
  446. package/lib/rt-grid/es6/StyleLoader.d.ts +17 -0
  447. package/lib/rt-grid/es6/StyleLoader.js +47 -0
  448. package/lib/rt-grid/es6/index.d.ts +8 -0
  449. package/lib/rt-grid/es6/index.js +43 -0
  450. package/lib/statistics-row/es6/StatisticsRow.d.ts +68 -0
  451. package/lib/statistics-row/es6/StatisticsRow.js +807 -0
  452. package/lib/statistics-row/es6/index.d.ts +1 -0
  453. package/lib/statistics-row/es6/index.js +1 -0
  454. package/lib/tr-grid-auto-tooltip/es6/AutoTooltip.d.ts +46 -0
  455. package/lib/tr-grid-auto-tooltip/es6/AutoTooltip.js +617 -0
  456. package/lib/tr-grid-auto-tooltip/es6/index.d.ts +1 -0
  457. package/lib/tr-grid-auto-tooltip/es6/index.js +1 -0
  458. package/lib/tr-grid-cell-selection/es6/CellSelection.d.ts +70 -0
  459. package/lib/tr-grid-cell-selection/es6/CellSelection.js +1695 -0
  460. package/lib/tr-grid-cell-selection/es6/index.d.ts +1 -0
  461. package/lib/tr-grid-cell-selection/es6/index.js +1 -0
  462. package/lib/tr-grid-checkbox/es6/Checkbox.d.ts +82 -0
  463. package/lib/tr-grid-checkbox/es6/Checkbox.js +1704 -0
  464. package/lib/tr-grid-checkbox/es6/index.d.ts +1 -0
  465. package/lib/tr-grid-checkbox/es6/index.js +1 -0
  466. package/lib/tr-grid-column-fitter/es6/ColumnFitter.d.ts +56 -0
  467. package/lib/tr-grid-column-fitter/es6/ColumnFitter.js +817 -0
  468. package/lib/tr-grid-column-fitter/es6/index.d.ts +1 -0
  469. package/lib/tr-grid-column-fitter/es6/index.js +1 -0
  470. package/lib/tr-grid-column-formatting/es6/ColumnFormatting.d.ts +91 -0
  471. package/lib/tr-grid-column-formatting/es6/ColumnFormatting.js +617 -0
  472. package/lib/tr-grid-column-formatting/es6/index.d.ts +1 -0
  473. package/lib/tr-grid-column-formatting/es6/index.js +1 -0
  474. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +110 -0
  475. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +2028 -0
  476. package/lib/tr-grid-column-grouping/es6/index.d.ts +1 -0
  477. package/lib/tr-grid-column-grouping/es6/index.js +1 -0
  478. package/lib/tr-grid-column-resizing/es6/ColumnResizing.d.ts +68 -0
  479. package/lib/tr-grid-column-resizing/es6/ColumnResizing.js +1010 -0
  480. package/lib/tr-grid-column-resizing/es6/index.d.ts +1 -0
  481. package/lib/tr-grid-column-resizing/es6/index.js +1 -0
  482. package/lib/tr-grid-column-selection/es6/ColumnSelection.d.ts +77 -0
  483. package/lib/tr-grid-column-selection/es6/ColumnSelection.js +1405 -0
  484. package/lib/tr-grid-column-selection/es6/index.d.ts +1 -0
  485. package/lib/tr-grid-column-selection/es6/index.js +1 -0
  486. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +160 -0
  487. package/lib/tr-grid-column-stack/es6/ColumnStack.js +2155 -0
  488. package/lib/tr-grid-column-stack/es6/index.d.ts +1 -0
  489. package/lib/tr-grid-column-stack/es6/index.js +1 -0
  490. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +100 -0
  491. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +1513 -0
  492. package/lib/tr-grid-conditional-coloring/es6/index.d.ts +1 -0
  493. package/lib/tr-grid-conditional-coloring/es6/index.js +1 -0
  494. package/lib/tr-grid-content-wrap/es6/ContentWrap.d.ts +43 -0
  495. package/lib/tr-grid-content-wrap/es6/ContentWrap.js +519 -0
  496. package/lib/tr-grid-content-wrap/es6/index.d.ts +1 -0
  497. package/lib/tr-grid-content-wrap/es6/index.js +1 -0
  498. package/lib/tr-grid-contextmenu/es6/ContextMenu.d.ts +83 -0
  499. package/lib/tr-grid-contextmenu/es6/ContextMenu.js +453 -0
  500. package/lib/tr-grid-contextmenu/es6/MenuEventAPI.d.ts +22 -0
  501. package/lib/tr-grid-contextmenu/es6/MenuEventAPI.js +138 -0
  502. package/lib/tr-grid-contextmenu/es6/MenuItem.d.ts +41 -0
  503. package/lib/tr-grid-contextmenu/es6/MenuItem.js +285 -0
  504. package/lib/tr-grid-contextmenu/es6/PopupMenu.d.ts +33 -0
  505. package/lib/tr-grid-contextmenu/es6/PopupMenu.js +303 -0
  506. package/lib/tr-grid-contextmenu/es6/index.d.ts +1 -0
  507. package/lib/tr-grid-contextmenu/es6/index.js +1 -0
  508. package/lib/tr-grid-filter-input/es6/FilterInput.d.ts +64 -0
  509. package/lib/tr-grid-filter-input/es6/FilterInput.js +1027 -0
  510. package/lib/tr-grid-filter-input/es6/index.d.ts +1 -0
  511. package/lib/tr-grid-filter-input/es6/index.js +1 -0
  512. package/lib/tr-grid-heat-map/es6/HeatMap.d.ts +45 -0
  513. package/lib/tr-grid-heat-map/es6/HeatMap.js +401 -0
  514. package/lib/tr-grid-heat-map/es6/index.d.ts +1 -0
  515. package/lib/tr-grid-heat-map/es6/index.js +1 -0
  516. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +148 -0
  517. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +2671 -0
  518. package/lib/tr-grid-in-cell-editing/es6/index.d.ts +1 -0
  519. package/lib/tr-grid-in-cell-editing/es6/index.js +1 -0
  520. package/lib/tr-grid-pagination/es6/Pagination.d.ts +58 -0
  521. package/lib/tr-grid-pagination/es6/Pagination.js +433 -0
  522. package/lib/tr-grid-pagination/es6/index.d.ts +1 -0
  523. package/lib/tr-grid-pagination/es6/index.js +1 -0
  524. package/lib/tr-grid-percent-bar/es6/PercentBar.d.ts +60 -0
  525. package/lib/tr-grid-percent-bar/es6/PercentBar.js +804 -0
  526. package/lib/tr-grid-percent-bar/es6/index.d.ts +1 -0
  527. package/lib/tr-grid-percent-bar/es6/index.js +1 -0
  528. package/lib/tr-grid-printer/es6/CellWriter.d.ts +50 -0
  529. package/lib/tr-grid-printer/es6/CellWriter.js +234 -0
  530. package/lib/tr-grid-printer/es6/ColumnWriter.d.ts +13 -0
  531. package/lib/tr-grid-printer/es6/ColumnWriter.js +23 -0
  532. package/lib/tr-grid-printer/es6/GridPrinter.d.ts +33 -0
  533. package/lib/tr-grid-printer/es6/GridPrinter.js +794 -0
  534. package/lib/tr-grid-printer/es6/PrintTrait.d.ts +39 -0
  535. package/lib/tr-grid-printer/es6/PrintTrait.js +494 -0
  536. package/lib/tr-grid-printer/es6/SectionWriter.d.ts +57 -0
  537. package/lib/tr-grid-printer/es6/SectionWriter.js +238 -0
  538. package/lib/tr-grid-printer/es6/index.d.ts +1 -0
  539. package/lib/tr-grid-printer/es6/index.js +1 -0
  540. package/lib/tr-grid-range-bar/es6/LEDGuage.d.ts +39 -0
  541. package/lib/tr-grid-range-bar/es6/LEDGuage.js +261 -0
  542. package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +56 -0
  543. package/lib/tr-grid-range-bar/es6/RangeBar.js +514 -0
  544. package/lib/tr-grid-range-bar/es6/index.d.ts +1 -0
  545. package/lib/tr-grid-range-bar/es6/index.js +1 -0
  546. package/lib/tr-grid-row-dragging/es6/RowDragging.d.ts +81 -0
  547. package/lib/tr-grid-row-dragging/es6/RowDragging.js +1479 -0
  548. package/lib/tr-grid-row-dragging/es6/index.d.ts +1 -0
  549. package/lib/tr-grid-row-dragging/es6/index.js +1 -0
  550. package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +159 -0
  551. package/lib/tr-grid-row-filtering/es6/RowFiltering.js +2568 -0
  552. package/lib/tr-grid-row-filtering/es6/index.d.ts +1 -0
  553. package/lib/tr-grid-row-filtering/es6/index.js +1 -0
  554. package/lib/tr-grid-row-grouping/es6/RowGrouping.d.ts +123 -0
  555. package/lib/tr-grid-row-grouping/es6/RowGrouping.js +1728 -0
  556. package/lib/tr-grid-row-grouping/es6/index.d.ts +1 -0
  557. package/lib/tr-grid-row-grouping/es6/index.js +1 -0
  558. package/lib/tr-grid-row-selection/es6/RowSelection.d.ts +75 -0
  559. package/lib/tr-grid-row-selection/es6/RowSelection.js +1447 -0
  560. package/lib/tr-grid-row-selection/es6/index.d.ts +1 -0
  561. package/lib/tr-grid-row-selection/es6/index.js +1 -0
  562. package/lib/tr-grid-rowcoloring/es6/RowColoring.d.ts +64 -0
  563. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +615 -0
  564. package/lib/tr-grid-rowcoloring/es6/index.d.ts +1 -0
  565. package/lib/tr-grid-rowcoloring/es6/index.js +1 -0
  566. package/lib/tr-grid-textformatting/es6/TextFormatting.d.ts +72 -0
  567. package/lib/tr-grid-textformatting/es6/TextFormatting.js +543 -0
  568. package/lib/tr-grid-textformatting/es6/index.d.ts +1 -0
  569. package/lib/tr-grid-textformatting/es6/index.js +1 -0
  570. package/lib/tr-grid-titlewrap/es6/TitleWrap.d.ts +27 -0
  571. package/lib/tr-grid-titlewrap/es6/TitleWrap.js +431 -0
  572. package/lib/tr-grid-titlewrap/es6/index.d.ts +1 -0
  573. package/lib/tr-grid-titlewrap/es6/index.js +1 -0
  574. package/lib/tr-grid-util/es6/CellPainter.d.ts +142 -0
  575. package/lib/tr-grid-util/es6/CellPainter.js +1183 -0
  576. package/lib/tr-grid-util/es6/Color.d.ts +40 -0
  577. package/lib/tr-grid-util/es6/Color.js +210 -0
  578. package/lib/tr-grid-util/es6/Conflator.d.ts +34 -0
  579. package/lib/tr-grid-util/es6/Conflator.js +193 -0
  580. package/lib/tr-grid-util/es6/CoralItems.d.ts +10 -0
  581. package/lib/tr-grid-util/es6/CoralItems.js +42 -0
  582. package/lib/tr-grid-util/es6/DateTime.d.ts +57 -0
  583. package/lib/tr-grid-util/es6/DateTime.js +508 -0
  584. package/lib/tr-grid-util/es6/Deferred.d.ts +16 -0
  585. package/lib/tr-grid-util/es6/Deferred.js +108 -0
  586. package/lib/tr-grid-util/es6/Delay.d.ts +20 -0
  587. package/lib/tr-grid-util/es6/Delay.js +96 -0
  588. package/lib/tr-grid-util/es6/Dom.d.ts +32 -0
  589. package/lib/tr-grid-util/es6/Dom.js +350 -0
  590. package/lib/tr-grid-util/es6/DragUI.d.ts +20 -0
  591. package/lib/tr-grid-util/es6/DragUI.js +263 -0
  592. package/lib/tr-grid-util/es6/ElementObserver.d.ts +12 -0
  593. package/lib/tr-grid-util/es6/ElementObserver.js +134 -0
  594. package/lib/tr-grid-util/es6/ElementWrapper.d.ts +23 -0
  595. package/lib/tr-grid-util/es6/ElementWrapper.js +84 -0
  596. package/lib/tr-grid-util/es6/ElfDate.d.ts +26 -0
  597. package/lib/tr-grid-util/es6/ElfDate.js +164 -0
  598. package/lib/tr-grid-util/es6/ElfUtil.d.ts +46 -0
  599. package/lib/tr-grid-util/es6/ElfUtil.js +637 -0
  600. package/lib/tr-grid-util/es6/EventDispatcher.d.ts +26 -0
  601. package/lib/tr-grid-util/es6/EventDispatcher.js +161 -0
  602. package/lib/tr-grid-util/es6/ExpanderIcon.d.ts +24 -0
  603. package/lib/tr-grid-util/es6/ExpanderIcon.js +120 -0
  604. package/lib/tr-grid-util/es6/ExpressionParser.d.ts +10 -0
  605. package/lib/tr-grid-util/es6/ExpressionParser.js +408 -0
  606. package/lib/tr-grid-util/es6/Ext.d.ts +10 -0
  607. package/lib/tr-grid-util/es6/Ext.js +52 -0
  608. package/lib/tr-grid-util/es6/FieldFormatter.d.ts +55 -0
  609. package/lib/tr-grid-util/es6/FieldFormatter.js +440 -0
  610. package/lib/tr-grid-util/es6/FilterBuilder.d.ts +54 -0
  611. package/lib/tr-grid-util/es6/FilterBuilder.js +580 -0
  612. package/lib/tr-grid-util/es6/FilterOperators.d.ts +56 -0
  613. package/lib/tr-grid-util/es6/FilterOperators.js +255 -0
  614. package/lib/tr-grid-util/es6/GridPlugin.d.ts +86 -0
  615. package/lib/tr-grid-util/es6/GridPlugin.js +1055 -0
  616. package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +74 -0
  617. package/lib/tr-grid-util/es6/GroupDefinitions.js +642 -0
  618. package/lib/tr-grid-util/es6/Icon.d.ts +14 -0
  619. package/lib/tr-grid-util/es6/Icon.js +62 -0
  620. package/lib/tr-grid-util/es6/MouseDownTrait.d.ts +42 -0
  621. package/lib/tr-grid-util/es6/MouseDownTrait.js +250 -0
  622. package/lib/tr-grid-util/es6/MultiTableManager.d.ts +40 -0
  623. package/lib/tr-grid-util/es6/MultiTableManager.js +611 -0
  624. package/lib/tr-grid-util/es6/NumberFormatter.d.ts +85 -0
  625. package/lib/tr-grid-util/es6/NumberFormatter.js +528 -0
  626. package/lib/tr-grid-util/es6/PercentBar.d.ts +71 -0
  627. package/lib/tr-grid-util/es6/PercentBar.js +600 -0
  628. package/lib/tr-grid-util/es6/Perf.d.ts +32 -0
  629. package/lib/tr-grid-util/es6/Perf.js +163 -0
  630. package/lib/tr-grid-util/es6/Popup.d.ts +98 -0
  631. package/lib/tr-grid-util/es6/Popup.js +991 -0
  632. package/lib/tr-grid-util/es6/RangeBar.d.ts +33 -0
  633. package/lib/tr-grid-util/es6/RangeBar.js +260 -0
  634. package/lib/tr-grid-util/es6/RequestQueue.d.ts +30 -0
  635. package/lib/tr-grid-util/es6/RequestQueue.js +228 -0
  636. package/lib/tr-grid-util/es6/RowPainter.d.ts +60 -0
  637. package/lib/tr-grid-util/es6/RowPainter.js +448 -0
  638. package/lib/tr-grid-util/es6/SubTable.d.ts +78 -0
  639. package/lib/tr-grid-util/es6/SubTable.js +642 -0
  640. package/lib/tr-grid-util/es6/Table.d.ts +146 -0
  641. package/lib/tr-grid-util/es6/Table.js +832 -0
  642. package/lib/tr-grid-util/es6/TextHighlighter.d.ts +16 -0
  643. package/lib/tr-grid-util/es6/TextHighlighter.js +268 -0
  644. package/lib/tr-grid-util/es6/TickCodes.d.ts +8 -0
  645. package/lib/tr-grid-util/es6/TickCodes.js +33 -0
  646. package/lib/tr-grid-util/es6/Timer.d.ts +16 -0
  647. package/lib/tr-grid-util/es6/Timer.js +49 -0
  648. package/lib/tr-grid-util/es6/TouchProxy.d.ts +46 -0
  649. package/lib/tr-grid-util/es6/TouchProxy.js +212 -0
  650. package/lib/tr-grid-util/es6/Util.d.ts +66 -0
  651. package/lib/tr-grid-util/es6/Util.js +508 -0
  652. package/lib/tr-grid-util/es6/formula/ADCService.d.ts +11 -0
  653. package/lib/tr-grid-util/es6/formula/ADCService.js +72 -0
  654. package/lib/tr-grid-util/es6/formula/ADCSubscription.d.ts +17 -0
  655. package/lib/tr-grid-util/es6/formula/ADCSubscription.js +317 -0
  656. package/lib/tr-grid-util/es6/formula/AdFinService.d.ts +12 -0
  657. package/lib/tr-grid-util/es6/formula/AdFinService.js +61 -0
  658. package/lib/tr-grid-util/es6/formula/AdFinSubscription.d.ts +19 -0
  659. package/lib/tr-grid-util/es6/formula/AdFinSubscription.js +310 -0
  660. package/lib/tr-grid-util/es6/formula/Engine.d.ts +56 -0
  661. package/lib/tr-grid-util/es6/formula/Engine.js +592 -0
  662. package/lib/tr-grid-util/es6/formula/Formula.d.ts +68 -0
  663. package/lib/tr-grid-util/es6/formula/Formula.js +890 -0
  664. package/lib/tr-grid-util/es6/formula/IntervalSubscription.d.ts +16 -0
  665. package/lib/tr-grid-util/es6/formula/IntervalSubscription.js +165 -0
  666. package/lib/tr-grid-util/es6/formula/Realtime.d.ts +18 -0
  667. package/lib/tr-grid-util/es6/formula/Realtime.js +279 -0
  668. package/lib/tr-grid-util/es6/formula/RealtimeService.d.ts +18 -0
  669. package/lib/tr-grid-util/es6/formula/RealtimeService.js +203 -0
  670. package/lib/tr-grid-util/es6/formula/TSIService.d.ts +11 -0
  671. package/lib/tr-grid-util/es6/formula/TSIService.js +51 -0
  672. package/lib/tr-grid-util/es6/formula/TSISubscription.d.ts +18 -0
  673. package/lib/tr-grid-util/es6/formula/TSISubscription.js +1015 -0
  674. package/lib/tr-grid-util/es6/formula/VariableToken.d.ts +30 -0
  675. package/lib/tr-grid-util/es6/formula/VariableToken.js +314 -0
  676. package/lib/tr-grid-util/es6/formula/functions/AdFin.d.ts +9 -0
  677. package/lib/tr-grid-util/es6/formula/functions/AdFin.js +1778 -0
  678. package/lib/tr-grid-util/es6/formula/functions/Excel.d.ts +8 -0
  679. package/lib/tr-grid-util/es6/formula/functions/Excel.js +21 -0
  680. package/lib/tr-grid-util/es6/formula/functions/Info.d.ts +8 -0
  681. package/lib/tr-grid-util/es6/formula/functions/Info.js +192 -0
  682. package/lib/tr-grid-util/es6/formula/functions/Internal.d.ts +8 -0
  683. package/lib/tr-grid-util/es6/formula/functions/Internal.js +90 -0
  684. package/lib/tr-grid-util/es6/formula/functions/Logic.d.ts +12 -0
  685. package/lib/tr-grid-util/es6/formula/functions/Logic.js +176 -0
  686. package/lib/tr-grid-util/es6/formula/functions/Math.d.ts +18 -0
  687. package/lib/tr-grid-util/es6/formula/functions/Math.js +1624 -0
  688. package/lib/tr-grid-util/es6/formula/functions/Statistics.d.ts +18 -0
  689. package/lib/tr-grid-util/es6/formula/functions/Statistics.js +234 -0
  690. package/lib/tr-grid-util/es6/formula/functions/Text.d.ts +10 -0
  691. package/lib/tr-grid-util/es6/formula/functions/Text.js +676 -0
  692. package/lib/tr-grid-util/es6/index.d.ts +65 -0
  693. package/lib/tr-grid-util/es6/index.js +102 -0
  694. package/lib/tr-grid-util/es6/jet/Adc.d.ts +9 -0
  695. package/lib/tr-grid-util/es6/jet/Adc.js +268 -0
  696. package/lib/tr-grid-util/es6/jet/CollectionDict.d.ts +28 -0
  697. package/lib/tr-grid-util/es6/jet/CollectionDict.js +151 -0
  698. package/lib/tr-grid-util/es6/jet/DataGenerator.d.ts +136 -0
  699. package/lib/tr-grid-util/es6/jet/DataGenerator.js +860 -0
  700. package/lib/tr-grid-util/es6/jet/DataSet.d.ts +8 -0
  701. package/lib/tr-grid-util/es6/jet/DataSet.js +392 -0
  702. package/lib/tr-grid-util/es6/jet/MockArchive.d.ts +21 -0
  703. package/lib/tr-grid-util/es6/jet/MockArchive.js +56 -0
  704. package/lib/tr-grid-util/es6/jet/MockJET.d.ts +25 -0
  705. package/lib/tr-grid-util/es6/jet/MockJET.js +71 -0
  706. package/lib/tr-grid-util/es6/jet/MockQuotes.d.ts +37 -0
  707. package/lib/tr-grid-util/es6/jet/MockQuotes.js +199 -0
  708. package/lib/tr-grid-util/es6/jet/MockQuotes2.d.ts +82 -0
  709. package/lib/tr-grid-util/es6/jet/MockQuotes2.js +890 -0
  710. package/lib/tr-grid-util/es6/jet/MockRTK.d.ts +48 -0
  711. package/lib/tr-grid-util/es6/jet/MockRTK.js +82 -0
  712. package/lib/tr-grid-util/es6/jet/MockUtil.d.ts +7 -0
  713. package/lib/tr-grid-util/es6/jet/MockUtil.js +25 -0
  714. package/lib/tr-grid-util/es6/jet/index.d.ts +9 -0
  715. package/lib/tr-grid-util/es6/jet/index.js +18 -0
  716. package/lib/tr-grid-util/es6/jet/mockDataAPI.d.ts +11 -0
  717. package/lib/tr-grid-util/es6/jet/mockDataAPI.js +111 -0
  718. package/lib/tr-grid-util/es6/jsx.d.ts +223 -0
  719. package/lib/tr-grid-util/es6/locale/translation-de.d.ts +7 -0
  720. package/lib/tr-grid-util/es6/locale/translation-de.js +51 -0
  721. package/lib/tr-grid-util/es6/locale/translation-en.d.ts +7 -0
  722. package/lib/tr-grid-util/es6/locale/translation-en.js +51 -0
  723. package/lib/tr-grid-util/es6/locale/translation-ja.d.ts +7 -0
  724. package/lib/tr-grid-util/es6/locale/translation-ja.js +51 -0
  725. package/lib/tr-grid-util/es6/locale/translation-zh-hant.d.ts +7 -0
  726. package/lib/tr-grid-util/es6/locale/translation-zh-hant.js +51 -0
  727. package/lib/tr-grid-util/es6/locale/translation-zh.d.ts +7 -0
  728. package/lib/tr-grid-util/es6/locale/translation-zh.js +51 -0
  729. package/lib/tr-grid-util/es6/locale/translation.d.ts +11 -0
  730. package/lib/tr-grid-util/es6/locale/translation.js +18 -0
  731. package/lib/types/es6/AutoTooltip.d.ts +46 -0
  732. package/lib/types/es6/CellSelection.d.ts +70 -0
  733. package/lib/types/es6/Checkbox.d.ts +82 -0
  734. package/lib/types/es6/ColumnDragging.d.ts +51 -0
  735. package/lib/types/es6/ColumnFitter.d.ts +56 -0
  736. package/lib/types/es6/ColumnFormatting.d.ts +92 -0
  737. package/lib/types/es6/ColumnGrouping.d.ts +107 -0
  738. package/lib/types/es6/ColumnResizing.d.ts +68 -0
  739. package/lib/types/es6/ColumnSelection.d.ts +77 -0
  740. package/lib/types/es6/ColumnStack.d.ts +160 -0
  741. package/lib/types/es6/CompositeGrid/CollapsibleHeaderPlugin.d.ts +11 -0
  742. package/lib/types/es6/CompositeGrid/ColumnSelectionPlugin.d.ts +41 -0
  743. package/lib/types/es6/CompositeGrid/ColumnWidthAdjustingPlugin.d.ts +45 -0
  744. package/lib/types/es6/CompositeGrid/CompositeGrid.d.ts +289 -0
  745. package/lib/types/es6/CompositeGrid/DragAndDropTitlePlugin.d.ts +23 -0
  746. package/lib/types/es6/CompositeGrid/DraggableContentPlugin.d.ts +41 -0
  747. package/lib/types/es6/CompositeGrid/Plugin.d.ts +30 -0
  748. package/lib/types/es6/CompositeGrid/ResizableTitlePlugin.d.ts +32 -0
  749. package/lib/types/es6/CompositeGrid/RowSelectionPlugin.d.ts +44 -0
  750. package/lib/types/es6/CompositeGrid/TextWidthCalculator.d.ts +24 -0
  751. package/lib/types/es6/CompositeGrid/TreeIndentingPlugin.d.ts +46 -0
  752. package/lib/types/es6/CompositeGrid/index.d.ts +9 -0
  753. package/lib/types/es6/ConditionalColoring.d.ts +100 -0
  754. package/lib/types/es6/ContentWrap.d.ts +43 -0
  755. package/lib/types/es6/ContextMenu.d.ts +83 -0
  756. package/lib/types/es6/CoralButtonFormatter.d.ts +20 -0
  757. package/lib/types/es6/CoralCheckboxFormatter.d.ts +12 -0
  758. package/lib/types/es6/CoralComboBoxFormatter.d.ts +23 -0
  759. package/lib/types/es6/CoralIconFormatter.d.ts +21 -0
  760. package/lib/types/es6/CoralInputFormatter.d.ts +12 -0
  761. package/lib/types/es6/CoralRadioButtonFormatter.d.ts +20 -0
  762. package/lib/types/es6/CoralSelectFormatter.d.ts +23 -0
  763. package/lib/types/es6/CoralToggleFormatter.d.ts +12 -0
  764. package/lib/types/es6/Core/data/ColumnStats.d.ts +42 -0
  765. package/lib/types/es6/Core/data/DataCache.d.ts +43 -0
  766. package/lib/types/es6/Core/data/DataTable.d.ts +156 -0
  767. package/lib/types/es6/Core/data/DataView.d.ts +332 -0
  768. package/lib/types/es6/Core/data/Segment.d.ts +91 -0
  769. package/lib/types/es6/Core/data/SegmentCollection.d.ts +84 -0
  770. package/lib/types/es6/Core/data/WrappedView.d.ts +290 -0
  771. package/lib/types/es6/Core/grid/Core.d.ts +455 -0
  772. package/lib/types/es6/Core/grid/ILayoutGrid.d.ts +212 -0
  773. package/lib/types/es6/Core/grid/LayoutGrid.d.ts +37 -0
  774. package/lib/types/es6/Core/grid/VirtualizedLayoutGrid.d.ts +28 -0
  775. package/lib/types/es6/Core/grid/components/Cell.d.ts +52 -0
  776. package/lib/types/es6/Core/grid/components/CellFloatingPanel.d.ts +21 -0
  777. package/lib/types/es6/Core/grid/components/CellSpan.d.ts +18 -0
  778. package/lib/types/es6/Core/grid/components/CellSpans.d.ts +40 -0
  779. package/lib/types/es6/Core/grid/components/Column.d.ts +22 -0
  780. package/lib/types/es6/Core/grid/components/ElementWrapper.d.ts +127 -0
  781. package/lib/types/es6/Core/grid/components/HScrollbar.d.ts +28 -0
  782. package/lib/types/es6/Core/grid/components/Scrollbar.d.ts +63 -0
  783. package/lib/types/es6/Core/grid/components/StretchedCells.d.ts +17 -0
  784. package/lib/types/es6/Core/grid/components/VScrollbar.d.ts +18 -0
  785. package/lib/types/es6/Core/grid/components/VirtualItems.d.ts +12 -0
  786. package/lib/types/es6/Core/grid/event/EventDispatcher.d.ts +16 -0
  787. package/lib/types/es6/Core/grid/event/EventListeners.d.ts +34 -0
  788. package/lib/types/es6/Core/grid/plugins/SortableTitlePlugin.d.ts +155 -0
  789. package/lib/types/es6/Core/grid/util/CellBoundPainter.d.ts +16 -0
  790. package/lib/types/es6/Core/grid/util/Conflator.d.ts +32 -0
  791. package/lib/types/es6/Core/grid/util/Reverter.d.ts +14 -0
  792. package/lib/types/es6/Core/grid/util/SectionSettings.d.ts +79 -0
  793. package/lib/types/es6/Core/grid/util/SelectionList.d.ts +54 -0
  794. package/lib/types/es6/Core/grid/util/TrackLayout.d.ts +92 -0
  795. package/lib/types/es6/Core/grid/util/Virtualizer.d.ts +40 -0
  796. package/lib/types/es6/Core/grid/util/util.d.ts +20 -0
  797. package/lib/types/es6/Core/index.d.ts +79 -0
  798. package/lib/types/es6/Core/tr-grid-theme.d.ts +5 -0
  799. package/lib/types/es6/DuplexEmeraldDateTimePickerFormatter.d.ts +14 -0
  800. package/lib/types/es6/EFButtonFormatter.d.ts +20 -0
  801. package/lib/types/es6/EFCheckboxFormatter.d.ts +12 -0
  802. package/lib/types/es6/EFComboBoxFormatter.d.ts +23 -0
  803. package/lib/types/es6/EFDateTimePickerFormatter.d.ts +13 -0
  804. package/lib/types/es6/EFIconFormatter.d.ts +21 -0
  805. package/lib/types/es6/EFNumberFieldFormatter.d.ts +12 -0
  806. package/lib/types/es6/EFRadioButtonFormatter.d.ts +20 -0
  807. package/lib/types/es6/EFSelectFormatter.d.ts +23 -0
  808. package/lib/types/es6/EFTextFieldFormatter.d.ts +12 -0
  809. package/lib/types/es6/EFToggleFormatter.d.ts +12 -0
  810. package/lib/types/es6/EmeraldDateTimePickerFormatter.d.ts +13 -0
  811. package/lib/types/es6/ExtensionColumnOptions.d.ts +41 -0
  812. package/lib/types/es6/ExtensionOptions.d.ts +58 -0
  813. package/lib/types/es6/Extensions.d.ts +63 -0
  814. package/lib/types/es6/FilterInput.d.ts +64 -0
  815. package/lib/types/es6/FormatterBuilder.d.ts +26 -0
  816. package/lib/types/es6/GridFormatter.d.ts +63 -0
  817. package/lib/types/es6/HeatMap.d.ts +45 -0
  818. package/lib/types/es6/InCellEditing.d.ts +148 -0
  819. package/lib/types/es6/MenuEventAPI.d.ts +22 -0
  820. package/lib/types/es6/MenuItem.d.ts +41 -0
  821. package/lib/types/es6/NumericInputFormatter.d.ts +13 -0
  822. package/lib/types/es6/Pagination.d.ts +58 -0
  823. package/lib/types/es6/PercentBar.d.ts +60 -0
  824. package/lib/types/es6/PercentBarFormatter.d.ts +25 -0
  825. package/lib/types/es6/PopupMenu.d.ts +33 -0
  826. package/lib/types/es6/RangeBar.d.ts +39 -0
  827. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +176 -0
  828. package/lib/types/es6/RealtimeGrid/DataConnector.d.ts +43 -0
  829. package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +40 -0
  830. package/lib/types/es6/RealtimeGrid/Grid.d.ts +413 -0
  831. package/lib/types/es6/RealtimeGrid/PredefinedFormula.d.ts +16 -0
  832. package/lib/types/es6/RealtimeGrid/ReferenceCounter.d.ts +40 -0
  833. package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +19 -0
  834. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +156 -0
  835. package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +36 -0
  836. package/lib/types/es6/RealtimeGrid/StyleLoader.d.ts +17 -0
  837. package/lib/types/es6/RealtimeGrid/index.d.ts +8 -0
  838. package/lib/types/es6/RowColoring.d.ts +64 -0
  839. package/lib/types/es6/RowDragging.d.ts +81 -0
  840. package/lib/types/es6/RowFiltering.d.ts +159 -0
  841. package/lib/types/es6/RowGrouping.d.ts +123 -0
  842. package/lib/types/es6/RowSegmenting.d.ts +109 -0
  843. package/lib/types/es6/RowSelection.d.ts +75 -0
  844. package/lib/types/es6/SimpleImageFormatter.d.ts +21 -0
  845. package/lib/types/es6/SimpleInputFormatter.d.ts +12 -0
  846. package/lib/types/es6/SimpleLinkFormatter.d.ts +21 -0
  847. package/lib/types/es6/SimpleTickerFormatter.d.ts +23 -0
  848. package/lib/types/es6/SimpleToggleFormatter.d.ts +22 -0
  849. package/lib/types/es6/StatisticsRow.d.ts +68 -0
  850. package/lib/types/es6/TextFormatter.d.ts +12 -0
  851. package/lib/types/es6/TextFormatting.d.ts +72 -0
  852. package/lib/types/es6/TitleWrap.d.ts +27 -0
  853. package/lib/types/es6/Zoom.d.ts +52 -0
  854. package/lib/types/es6/index.d.ts +80 -0
  855. package/lib/types/index.d.ts +1 -0
  856. package/lib/utils/index.d.ts +7 -0
  857. package/lib/utils/index.js +7 -0
  858. package/lib/versions.json +37 -0
  859. package/lib/window-exporter.js +18 -0
  860. package/lib/zoom/es6/Zoom.d.ts +52 -0
  861. package/lib/zoom/es6/Zoom.js +438 -0
  862. package/lib/zoom/es6/index.d.ts +1 -0
  863. package/lib/zoom/es6/index.js +1 -0
  864. package/package.json +69 -0
@@ -0,0 +1,2034 @@
1
+ import { customElement } from "@refinitiv-ui/core/decorators/custom-element.js";
2
+ import { BasicElement, html } from "@refinitiv-ui/core";
3
+ import "@refinitiv-ui/elements/button";
4
+ import { TreeRenderer as DefaultRenderer } from "@refinitiv-ui/elements/tree";
5
+ import "@refinitiv-ui/elements/dialog";
6
+ import "@refinitiv-ui/elements/search-field";
7
+ import "@refinitiv-ui/elements/pill";
8
+ import "@refinitiv-ui/elements/item";
9
+ import translation from "./locale/translation.js";
10
+ import ElementObserver from "../../tr-grid-util/es6/ElementObserver.js";
11
+ import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
12
+ import { isEmptyObject } from "../../tr-grid-util/es6/Util.js";
13
+
14
+ /**
15
+ * @typedef {Object} ColumnSelectionDialog~Config
16
+ * @property {Array.<Object>} data All possible columns for selection.
17
+ * @property {Array.<Object>=} visibleItems Column list that is in existing Grid.
18
+ * @property {Array.<Object>=} defaultItems Column list that is default.
19
+ * @property {Function=} confirm Confirm event callback.
20
+ * @property {Function=} cancel Cancel event callback.
21
+ * @property {number=} excludedColumns Deprecated, Alias wigh excludedLeftColumns.
22
+ * @property {number=} excludedLeftColumns Number of columns on the left side that should be hidden from Visible Columns.
23
+ * @property {number=} excludedRightColumns Number of columns on the right side that should be hidden from Visible Columns.
24
+ * @property {number=} unmovableColumns Depricated, Alias with stationary column option. Number of columns that is unmovable in Visible Columns.
25
+ * @property {boolean=} descriptionBox Show description box
26
+ * @property {string=} middleSeparator Field of column which used as middle separator to divide grid into two sides
27
+ * @property {boolean=} collapseAll=false Default collapse property applies to all groups
28
+ * @property {number=} width Specify width of the dialog, with the minimum width of 490px
29
+ * @property {number=} height Specify height of the dialog
30
+ * @property {Array.<string>=} tags=null All available tags for filtering
31
+ * @property {string=} infoTooltip="" If specified, an informational icon will appear on the top with the given text as its tooltip
32
+ * @property {string=} searchPlaceholder="Search" Placeholder text inside the search input.
33
+ * @property {string=} dialogLabel="" Dialog's title displayed in the title bar of the dialog.
34
+ * @property {string=} availableItemsLabel="" The title of the available column list on the left pane.
35
+ * @property {string=} visibleItemsLabel="" The title of the visible column list on the right pane.
36
+ */
37
+
38
+ /** Insert multiple items to the given array. This is an in-place modification.
39
+ * @private
40
+ * @function
41
+ * @param {Array} ary
42
+ * @param {number} at
43
+ * @param {Array} items
44
+ * @return {Array} In-place edited array
45
+ * @example
46
+ * insertItems(["a", "b"], 1, ["c", "d"]); // ["a", "c", "d", "b"];
47
+ */
48
+ const insertItems = function (ary, at, items) {
49
+ ary.splice.apply(ary, [at, 0].concat(items));
50
+ return ary;
51
+ };
52
+ /** Returns negative value if a < b, 0 if a === b, and positive value if a > b
53
+ * @private
54
+ * @function
55
+ * @param {number} a
56
+ * @param {number} b
57
+ * @returns {number}
58
+ */
59
+ const numberComparer = function (a, b) {
60
+ return a - b;
61
+ };
62
+ /**
63
+ * Checks, if the given numbers have continuous number series
64
+ * @private
65
+ * @function
66
+ * @param {Array.<number>} sortedIndexes
67
+ * @return {boolean}
68
+ */
69
+ const isContinuous = function(sortedIndexes) {
70
+ var len = sortedIndexes ? sortedIndexes.length : 0;
71
+ var val = len ? sortedIndexes[0] : 0;
72
+ for(var i = 1; i < len; ++i) {
73
+ var nextVal = sortedIndexes[i];
74
+ if(val + i !== nextVal) {
75
+ return false;
76
+ }
77
+ }
78
+ return len > 0;
79
+ };
80
+ /** Checks if the given object has "selected" property
81
+ * @private
82
+ * @function
83
+ * @param {Object} item
84
+ * @return {boolean}
85
+ */
86
+ const isSelectedItem = function(item) {
87
+ return (item && item.selected) ? true : false;
88
+ };
89
+ /** Checks if the given object is disabled
90
+ * @private
91
+ * @function
92
+ * @param {Object} item
93
+ * @return {boolean}
94
+ */
95
+ const isEnabledItem = function (item) {
96
+ return (item && !item.disabled) ? true : false;
97
+ };
98
+
99
+
100
+ /** Recursively search through tree structures of items
101
+ * @private
102
+ * @function
103
+ * @param {!Array} items
104
+ * @param {string|Array.<string>} input User input that has been validated
105
+ * @param {!Function} matchingLogic
106
+ * @return {!Array}
107
+ */
108
+ const _recursivelySearch = function (items, input, matchingLogic) {
109
+ var results = [];
110
+ var itemCount = items ? items.length : 0;
111
+ for (var i = 0; i < itemCount; i++) {
112
+ var item = items[i];
113
+ if (item.items) {
114
+ var result = _recursivelySearch(item.items, input, matchingLogic);
115
+ if (result.length > 0) {
116
+ item = Object.assign({}, item); // for header - clone new object to prevent mutate original
117
+ item.items = result;
118
+ results.push(item);
119
+ }
120
+ } else if (matchingLogic(item, input)) {
121
+ results.push(item);
122
+ }
123
+ }
124
+
125
+ return results;
126
+ };
127
+
128
+ /** @private
129
+ * @function
130
+ * @param {Object} item
131
+ */
132
+ const selectItem = function(item) {
133
+ if(item) {
134
+ item.selected = true;
135
+ }
136
+ };
137
+ /** @private
138
+ * @function
139
+ * @param {Object} item
140
+ */
141
+ const deselectItem = function(item) {
142
+ if(item) {
143
+ item.selected = false;
144
+ }
145
+ };
146
+
147
+ /**
148
+ * Returns sorted and selected item indexes from the given list
149
+ * @private
150
+ * @function
151
+ * @param {Array} list
152
+ * @param {string} value
153
+ * @param {string} field
154
+ * @return {number}
155
+ */
156
+ const getItemIndex = function (list, value, field) {
157
+ var listCount = list.length;
158
+ for (var i = 0; i < listCount; ++i) {
159
+ var item = list[i];
160
+ if (item && item[field] === value) {
161
+ return i;
162
+ }
163
+ }
164
+ return -1;
165
+ };
166
+
167
+ /** @private
168
+ * @function
169
+ * @param {Element} elem
170
+ * @return {number}
171
+ */
172
+ const getDomElementIndex = function(elem) {
173
+ if(elem) {
174
+ var p = elem.parentNode;
175
+ if(p) {
176
+ var chdr = p.children;
177
+ var childCount = chdr ? chdr.length : 0;
178
+ for(var i = 0; i < childCount; ++i) {
179
+ if(elem === p.children[i]) {
180
+ return i;
181
+ }
182
+ }
183
+ }
184
+ }
185
+ return -1;
186
+ };
187
+ /**
188
+ * Sets scroll to focus on elements
189
+ * @private
190
+ * @function
191
+ * @param {Element} container
192
+ * @param {number} itemIndex
193
+ */
194
+ const scrollToItem = function(container, itemIndex) {
195
+ if(!container) {
196
+ return;
197
+ }
198
+
199
+ var viewHeight = container.clientHeight;
200
+ var contentHeight = container.scrollHeight;
201
+
202
+ if(contentHeight <= viewHeight) {
203
+ return; // No scrollbar
204
+ }
205
+
206
+ var topView = container.scrollTop;
207
+ var bottomView = topView + viewHeight;
208
+
209
+ var chdr = container.children;
210
+ var childCount = chdr.length;
211
+ if(!itemIndex) {
212
+ itemIndex = 0;
213
+ } else if(itemIndex < 0 || itemIndex >= childCount) {
214
+ itemIndex = childCount - 1; // Last item
215
+ }
216
+
217
+ var targetItem = chdr[itemIndex];
218
+ var itemHeight = targetItem.offsetHeight;
219
+ // Calculate relative position from item to its parent
220
+ var topPos = itemIndex * itemHeight; // WARNING: This only works when we have constant height
221
+ var bottomPos = topPos + itemHeight;
222
+ if(topPos >= topView && bottomPos <= bottomView) {
223
+ return; // The item is already in the view
224
+ }
225
+
226
+ var extraSpace = itemHeight * 2; // Add extra space over the target position to make better UX.
227
+ var targetPos = 0;
228
+ if(topPos < topView) { // Scroll up
229
+ targetPos = topPos - extraSpace;
230
+ if(targetPos < 0) {
231
+ targetPos = 0;
232
+ }
233
+ } else { // Scroll down
234
+ var maxPos = contentHeight - viewHeight;
235
+ targetPos = topView + (bottomPos - bottomView) + extraSpace - itemHeight;
236
+ if(targetPos > maxPos) {
237
+ targetPos = maxPos;
238
+ }
239
+ }
240
+
241
+ if(topView !== targetPos) {
242
+ container.scrollTop = targetPos;
243
+ }
244
+ };
245
+
246
+ /**
247
+ * Returns sorted and selected item indexes from the given list
248
+ * @private
249
+ * @function
250
+ * @param {Array} list
251
+ * @return {!Array.<number>}
252
+ */
253
+ const _getSelectedItemIndexes = function (list) {
254
+ var listCount = list ? list.length : null;
255
+ var indexes = [];
256
+ for (var i = 0; i < listCount; ++i) {
257
+ if (isSelectedItem(list[i])) {
258
+ indexes.push(i);
259
+ }
260
+ }
261
+ return indexes;
262
+ };
263
+
264
+ /** Coral tree item requires label and value. also create nested group
265
+ * @private
266
+ * @param {Object} colObj
267
+ * @param {string} parent parent of this group
268
+ * @param {boolean} defaultExpanded default expand state for tree item
269
+ * @return {Object}
270
+ */
271
+ const _toCoralTreeItem = function (colObj, parent, defaultExpanded) {
272
+ var label = colObj.label || colObj.title || colObj.name || colObj.field;
273
+ var expanded = defaultExpanded;
274
+ if(colObj.expanded != null){
275
+ expanded = colObj.expanded;
276
+ }
277
+ var currentId;
278
+ if(parent) {
279
+ currentId = parent + '/' + label;
280
+ } else {
281
+ currentId = label;
282
+ }
283
+ if (colObj.items) {
284
+ return {
285
+ label: label,
286
+ rawValue: colObj.id,
287
+ value: colObj.id,
288
+ items: colObj.items.map(function (obj) {
289
+ return _toCoralTreeItem(obj, currentId, defaultExpanded);
290
+ }),
291
+ expanded: expanded,
292
+ isGroup: true
293
+ };
294
+ } else {
295
+ return {
296
+ label: label,
297
+ rawValue: colObj.id,
298
+ strGroup: parent,
299
+ value: currentId,
300
+ selected: false,
301
+ disabled: colObj.disabled == true,
302
+ stationary: colObj.stationary == true,
303
+ lowerCase: label.toLowerCase(),
304
+ tags: _toTagList(colObj.tags)
305
+ };
306
+ }
307
+ };
308
+
309
+ /** Coral item requires label and value. So we need to convert column object to coral item
310
+ * @private
311
+ * @param {Object} item
312
+ * @return {!Object}
313
+ */
314
+ const _toCoralItem = function(item) {
315
+ return {
316
+ label: item.label,
317
+ value: item.value,
318
+ selected: false,
319
+ disabled: item.disabled,
320
+ stationary: item.stationary,
321
+ lowerCase: item.label.toLowerCase(),
322
+ tags: _toTagList(item.tags)
323
+ };
324
+ };
325
+ /** Valid item must have an id or a field
326
+ * @private
327
+ * @param {Object} item
328
+ * @return {boolean}
329
+ */
330
+ const _validateItem = function(item) {
331
+ if (item) {
332
+ if (item.items) {
333
+ // group
334
+ if (!item.id) {
335
+ var id = item.label || item.title || item.name || item.field;
336
+ if (id) item.id = 'GROUP_' + id + '_';
337
+ }
338
+ if (item.id) {
339
+ item.items = item.items.filter(_validateItem);
340
+ return true;
341
+ }
342
+ } else {
343
+ // item
344
+ if (!item.field) {
345
+ item.field = item.label || item.value || item.id;
346
+ }
347
+ if (item.field) {
348
+ if (!item.title) {
349
+ item.title = item.label || item.field;
350
+ }
351
+ if (!item.id) {
352
+ item.id = item.field || item.title;
353
+ }
354
+ return true;
355
+ }
356
+ }
357
+ }
358
+ return false;
359
+ };
360
+ /** is item autogenerated
361
+ * @private
362
+ * @param {Object} item
363
+ * @return {boolean}
364
+ */
365
+ const _notAutoGeneratedItem = function (item) {
366
+ if (item.autoGenerated) return false;
367
+ return true;
368
+ };
369
+ /**
370
+ * @private
371
+ * @param {*} item
372
+ * @return {boolean}
373
+ */
374
+ const _ensurePositiveNumber = function(item) {
375
+ var num;
376
+ if (typeof item === "string") {
377
+ num = Number(item);
378
+ } else if (typeof item === "number") {
379
+ num = item;
380
+ }
381
+ if (num < 0 || item == null) {
382
+ num = 0;
383
+ }
384
+ return num;
385
+ };
386
+ /** Filter out any item with duplicate id
387
+ * @private
388
+ * @param {Array} ary
389
+ * @param {Object} idMap
390
+ * @return {Array} Return new array in case of any duplication, otherwise return the same input array
391
+ */
392
+ const _screenDuplication = function (ary, idMap) {
393
+ var uniqeList = [];
394
+ var itemCount = ary ? ary.length : 0;
395
+ for(var i = 0; i < itemCount; ++i) {
396
+ var item = ary[i];
397
+ var itemId = item.id || "";
398
+ if(itemId && !idMap[itemId]) {
399
+ uniqeList.push(item);
400
+ idMap[itemId] = item;
401
+ }
402
+ }
403
+ return uniqeList;
404
+ };
405
+
406
+ /** create object mapping from array
407
+ * @private
408
+ * @param {Array} items
409
+ * @param {string} fieldTobeKey
410
+ * @param {Object} mappingObj
411
+ * @return {Object} mapping object
412
+ */
413
+ const _createMapping = function (items, fieldTobeKey, mappingObj) {
414
+ mappingObj = mappingObj || {};
415
+ var len = items.length;
416
+ var item, value, rawValue;
417
+ for (let i = 0; i < len; i++) {
418
+ item = items[i];
419
+ if(item.items) {
420
+ _createMapping(item.items, fieldTobeKey, mappingObj);
421
+ }
422
+ value = item[fieldTobeKey];
423
+ rawValue = item.rawValue;
424
+ mappingObj[value] = item;
425
+ if(fieldTobeKey === 'id') { // When a column is initialized, no extra properties are assigned for retaining value reason
426
+ continue;
427
+ }
428
+ // add mapping rawValue for map current group
429
+ if(!mappingObj[rawValue]) {
430
+ mappingObj[rawValue] = Object.assign( {isUnique: true}, item);
431
+ } else {
432
+ mappingObj[rawValue].isDuplicate = true;
433
+ }
434
+
435
+ // for map child to parent group
436
+ if(!mappingObj[rawValue].mappingParents) {
437
+ mappingObj[rawValue].mappingParents = [];
438
+ }
439
+ mappingObj[rawValue].mappingParents.push(value);
440
+
441
+ }
442
+ return mappingObj;
443
+ };
444
+
445
+ /**
446
+ * @private
447
+ * @param {Array} items
448
+ * @return {number}
449
+ */
450
+ const _countAutoGenerated = function (items) {
451
+ var agCount = 0;
452
+ var c = items.length;
453
+ for (var i = 0; i < c; i++) {
454
+ if (items[i].autoGenerated) agCount++;
455
+ }
456
+ return agCount;
457
+ };
458
+
459
+ /**
460
+ * @private
461
+ * @param {Array} items
462
+ * @param {Array} visibleList
463
+ * @return {!Array}
464
+ */
465
+ const _getVisibleItems = function (items, visibleList) {
466
+ visibleList = visibleList || [];
467
+ var c = items.length;
468
+ for (let i = 0; i < c; i++) {
469
+ var item = items[i];
470
+ if (item.items) {
471
+ // group
472
+ _getVisibleItems(item.items, visibleList);
473
+ } else {
474
+ // item
475
+ if (item.visible) {
476
+ visibleList.push(item);
477
+ }
478
+ }
479
+ }
480
+ return visibleList;
481
+ };
482
+
483
+ /** Tag value will be used for searching and matching
484
+ * @private
485
+ * @param {string} tag
486
+ * @param {number} idx
487
+ * @return {!Object}
488
+ */
489
+ const _toTagDefinition = function(tag, idx) {
490
+ var tagKeyword = tag.toLowerCase(); // For searching and filtering
491
+
492
+ var tagPill = document.createElement("ef-pill");
493
+ tagPill._keyword = tagKeyword;
494
+ tagPill._tagIndex = idx;
495
+
496
+ tagPill.textContent = tag;
497
+ tagPill.setAttribute("clears", "");
498
+
499
+ return {
500
+ label: tag,
501
+ value: tagKeyword,
502
+ element: tagPill
503
+ };
504
+ };
505
+ /**
506
+ * @private
507
+ * @param {string} str
508
+ * @return {!Object}
509
+ */
510
+ const _toLowerCase = function(str) {
511
+ return str ? str.toLowerCase() : "";
512
+ };
513
+ /** Tag value will be used for searching and matching
514
+ * @private
515
+ * @param {string|Array} tag
516
+ * @return {Array.<string>}
517
+ */
518
+ const _toTagList = function(tag) {
519
+ if(tag) {
520
+ if(Array.isArray(tag)) {
521
+ return tag.map(_toLowerCase);
522
+ } else {
523
+ if(typeof tag !== "string") {
524
+ tag = tag + "";
525
+ }
526
+ return [tag.toLowerCase()];
527
+ }
528
+ }
529
+ return null;
530
+ };
531
+ /** @type {Object.<number, number>}
532
+ * @private
533
+ */
534
+ const NON_CHAR_KEYS = {
535
+ 9: 1, // TAB
536
+ 13: 1, // ENTER
537
+ 16: 1, // SHIFT
538
+ 17: 1, // CTRL
539
+ 18: 1, // ALT
540
+ 35: 1, // END
541
+ 36: 1, // HOME
542
+ 37: 1, // LEFT
543
+ 38: 1, // UP
544
+ 39: 1, // RIGHT
545
+ 40: 1 // DOWN
546
+ };
547
+
548
+ /**
549
+ * @class
550
+ * @public
551
+ */
552
+ class ColumnSelectionDialog extends BasicElement {
553
+
554
+ static get properties() {
555
+ return {
556
+ config: {type: Object},
557
+ data: {type: Object},
558
+ visibleItems: {type: Array},
559
+ isShown: { type: Boolean },
560
+ lang: { type: String, reflect: true }
561
+ };
562
+ }
563
+
564
+ constructor() {
565
+ super();
566
+ this.lang = 'en';
567
+ this._lang = 'en';
568
+ this._translation = translation;
569
+
570
+ this.isShown = false;
571
+ this._descriptionBox = false;
572
+ this._excludedLeftColumns = 0;
573
+ this._excludedRightColumns = 0;
574
+ this._unmovableColumns = 0;
575
+ this._pendingScroll = false;
576
+ this._focusedElement = null;
577
+ this._pendingTreeRefresh = false;
578
+ this._pendingResetSearchInput = false;
579
+ this._middleSeparator = "";
580
+ this._defaultExpanded = true;
581
+ this._width = 0;
582
+ this._height = 0;
583
+ this._tagDefs = null;
584
+ this._activeTags = null;
585
+ this._infoTooltip = "";
586
+ this._searchPlaceholder = "";
587
+ this._dialogLabel = "";
588
+ this._visibleItemsLabel = "";
589
+ this._availableItemsLabel = "";
590
+
591
+ this._allItemMapping = {};
592
+ this._filterItemMapping = {};
593
+ this._initialColumnMap = {};
594
+ this._allColumnList = []; // For keeping original list
595
+ this._filteredColumnList = []; // For filtered list
596
+ this._visibleColumnList = []; // Visible columns that will show in UI
597
+ this._excludedLeftVisibleColumnList = []; // Visible left columns that is currently excluded from UI (eg. auto-generated column)
598
+ this._excludedRightVisibleColumnList = []; // Visible right columns that is currently excluded from UI
599
+ this._selectAllStatus = "";
600
+ this._treeDefualtRenderer = {};
601
+
602
+ this._isMovable = this._isMovable.bind(this);
603
+ this._treeValueChanged = this._treeValueChanged.bind(this);
604
+ this._treeExpandedChanged = this._treeExpandedChanged.bind(this);
605
+ this._removeBtnClicked = this._removeBtnClicked.bind(this);
606
+ this._onSearchInputKeyDown = this._onSearchInputKeyDown.bind(this);
607
+ this._onSearchInputKeyUp = this._onSearchInputKeyUp.bind(this);
608
+ this._restoreDefault = this._restoreDefault.bind(this);
609
+ this._onConfirm = this._onConfirm.bind(this);
610
+ this._onCancel = this._onCancel.bind(this);
611
+ this.hide = this.hide.bind(this);
612
+ this._onUpItem = this._onUpItem.bind(this);
613
+ this._onDownItem = this._onDownItem.bind(this);
614
+ this._handleKeydown = this._handleKeydown.bind(this);
615
+ this._handleMouseover = this._handleMouseover.bind(this);
616
+ this._handleMouseout = this._handleMouseout.bind(this);
617
+ this._handleSelectAllHeaderClick = this._handleSelectAllHeaderClick.bind(this);
618
+ this._handleInfoIconClicked = this._handleInfoIconClicked.bind(this);
619
+ this._handleInfoIconMouseover = this._handleInfoIconMouseover.bind(this);
620
+ this._handleInfoIconMouseout = this._handleInfoIconMouseout.bind(this);
621
+ this._handleClick = this._handleClick.bind(this);
622
+ this._handleFocusIn = this._handleFocusIn.bind(this);
623
+ this._handleFocusOut = this._handleFocusOut.bind(this);
624
+ this._createTreeCustomRender = this._createTreeCustomRender.bind(this);
625
+ this._selectAllCheckedChanged = this._selectAllCheckedChanged.bind(this);
626
+
627
+ this._advancedMatching = this._advancedMatching.bind(this);
628
+ this._onClearingTagPill = this._onClearingTagPill.bind(this);
629
+ ElementObserver.addLanguageListener(this);
630
+ }
631
+
632
+ /**
633
+ * @private
634
+ * @param {Object} changedProperties
635
+ */
636
+ update(changedProperties) {
637
+
638
+ if(changedProperties.has("lang")) {
639
+ this._lang = ElfUtil.toLangString(this.lang);
640
+ }
641
+
642
+ if(changedProperties.has("config")) {
643
+ if(!changedProperties.has("data")) {
644
+ if(Array.isArray(this.config)) {
645
+ this.data = this.config;
646
+ this.config = null;
647
+ } else if(this.config && this.config.data != null) {
648
+ this.data = this.config.data;
649
+ }
650
+ }
651
+ var config = this.config;
652
+ if(!changedProperties.has("visibleItems")) {
653
+ var visibleItems = config ? config.activeItems || config.visibleItems : null;
654
+ if(visibleItems) {
655
+ this.visibleItems = visibleItems;
656
+ }
657
+ }
658
+
659
+ if (config) {
660
+ // allow config.lang overides default lang
661
+ if(config.lang) {
662
+ this._lang = ElfUtil.toLangString(config.lang);
663
+ }
664
+
665
+ if (config.confirm) {
666
+ this.addEventListener('confirm', config.confirm);
667
+ }
668
+
669
+ if (config.cancel) {
670
+ this.addEventListener('cancel', config.cancel);
671
+ }
672
+
673
+ if (config.descriptionBox != null) {
674
+ this._descriptionBox = !!config.descriptionBox;
675
+ }
676
+
677
+ if (config.collapseAll != null) {
678
+ this._defaultExpanded = !config.collapseAll;
679
+ }
680
+
681
+ if (config.width != null) {
682
+ this._width = config.width;
683
+ } else {
684
+ this._width = 0;
685
+ }
686
+
687
+ if (config.height != null) {
688
+ this._height = config.height;
689
+ } else {
690
+ this._height = 0;
691
+ }
692
+ var userTags = config.tags;
693
+ if (userTags != null) {
694
+ this._activeTags = null; // All existing active tags must be removed
695
+ if(Array.isArray(userTags) && userTags.length) {
696
+ this._tagDefs = userTags.map(_toTagDefinition);
697
+ var tagCount = this._tagDefs.length;
698
+ for(var i = 0; i < tagCount; ++i) {
699
+ this._tagDefs[i].element.addEventListener("clear", this._onClearingTagPill);
700
+ }
701
+ } else {
702
+ this._tagDefs = null;
703
+ }
704
+ }
705
+ if(config.infoTooltip != null) {
706
+ this._infoTooltip = config.infoTooltip ? config.infoTooltip : "";
707
+ }
708
+ if(config.searchPlaceholder != null) {
709
+ this._searchPlaceholder = config.searchPlaceholder ? config.searchPlaceholder : "";
710
+ }
711
+
712
+ this._defaultItems = config.defaultItems;
713
+
714
+ this._dialogLabel = config.dialogLabel != null ? config.dialogLabel : "";
715
+ this._availableItemsLabel = config.availableItemsLabel != null ? config.availableItemsLabel : "";
716
+ this._visibleItemsLabel = config.visibleItemsLabel != null ? config.visibleItemsLabel : "";
717
+ }
718
+ }
719
+
720
+ if(changedProperties.has("config") ||
721
+ changedProperties.has("data") ||
722
+ changedProperties.has("visibleItems") ||
723
+ changedProperties.has("isShown")
724
+ ) {
725
+ this.isShown && this._initData();
726
+ }
727
+
728
+ super.update(changedProperties);
729
+ }
730
+
731
+ /** A `TemplateResult` that will be used to render the updated internal template
732
+ * @private
733
+ * @return {*}
734
+ */
735
+ render() {
736
+ var lang = this._translation[this._lang] ? this._lang : "en";
737
+ var t = this._translation[lang];
738
+ var hasNoVisibleItem = !this._visibleColumnList.length;
739
+
740
+ /* eslint-disable */
741
+ return html`
742
+ <ef-dialog header="${this._dialogLabel ? this._dialogLabel : t["Column Selection"]}" id="columnDialog" lang="${lang}">
743
+ <div class="container">
744
+ <div class="row">
745
+ <div class="side">
746
+ <label class="title">${this._availableItemsLabel ? this._availableItemsLabel : t["Add / Remove Columns"]}
747
+ ${this._infoTooltip ? html`<ef-icon icon="info" id="info_icon" title="${this._infoTooltip}"></ef-icon>` : ""}
748
+ </label>
749
+ </div>
750
+ <div class="side"></div>
751
+ </div>
752
+ <div class="row">
753
+ <div class="side">
754
+ <ef-search-field aria-label="search for columns" placeholder="${this._searchPlaceholder ? this._searchPlaceholder : t["Search"]}" id="searchInput"></ef-search-field>
755
+ </div>
756
+ <div class="side">
757
+ <label>${this._visibleItemsLabel ? this._visibleItemsLabel : t["Show in this order"]}</label>
758
+ </div>
759
+ </div>
760
+ <div class="row" id='listSection'>
761
+ <div class="side" id="allColumnsSide">
762
+ <div id="tags_div"></div>
763
+ <div id="allColumns">
764
+ <ef-item id="treeNoResult" class="no-results" label="${t["No results found"]}"></ef-item>
765
+ <ef-header level="1" id="selectAllHeader">
766
+ <ef-checkbox aria-label="select all columns" id="selectAllCheckbox">${t["Select All"]}</ef-checkbox>
767
+ </ef-header>
768
+ <ef-tree aria-label="column list" id="tree" multiple></ef-tree>
769
+ </div>
770
+ </div>
771
+ <div class="side" id="visibleSide">
772
+ <div id="visibleColumns" aria-label="visible column list">
773
+ ${this._visibleColumnList.map(item => html`
774
+ <ef-item
775
+ value="${item.value}"
776
+ ?selected="${item.selected}"
777
+ class="${item.disabled ? 'disabled' : ''}">
778
+ ${item.label}
779
+ </ef-item>`
780
+ )}
781
+ </div>
782
+ <div id="ordering_div">
783
+ <div id="ordering_buttons">
784
+ <ef-button aria-label="move selected visible columns up" icon="up" @click="${this._onUpItem}" id="upItem">${t["Up"]}</ef-button><!--
785
+ --><ef-button aria-label="move selected visible columns down" icon="down" @click="${this._onDownItem}" id="downItem">${t["Down"]}</ef-button>
786
+ </div>
787
+ <ef-button aria-label="remove selected visible columns" id="removeFromVisibleColumnsBtn" @click="${this._removeBtnClicked}">${t["Remove"]}</ef-button>
788
+ </div>
789
+ </div>
790
+ </div>
791
+ <div id="descriptionContainer"></div>
792
+ </div>
793
+ <div slot="footer">
794
+ <div part="custom-buttons">
795
+ ${this._defaultItems ? html`<ef-button aria-label="restore default visible columns" id="restore_btn" @click="${this._restoreDefault}" tabindex="0">${t["RESTORE DEFAULT"]}</ef-button>` : ""}
796
+ ${hasNoVisibleItem ? html`<ef-icon icon="warning-circle"></ef-icon>` : ""}
797
+ ${hasNoVisibleItem ? html`<div id="status_div">${t["WARNING_1"]}</div>` : ""}
798
+ </div>
799
+ <div part="default-buttons">
800
+ <ef-button @click="${this._onConfirm}" tabindex="0" cta ?disabled="${hasNoVisibleItem}">${t["OK"]}</ef-button>
801
+ <ef-button @click="${this._onCancel}" tabindex="0">${t["CANCEL"]}</ef-button>
802
+ </div>
803
+ </div>
804
+ </ef-dialog>
805
+ `;
806
+ /* eslint-enable */
807
+ }
808
+
809
+ /**
810
+ * @private
811
+ * @override
812
+ */
813
+ firstUpdated(changedProperties) {
814
+ var shadowRoot = this.shadowRoot;
815
+ this._tree = shadowRoot.getElementById('tree');
816
+ this._selectAllHeader = shadowRoot.getElementById('selectAllHeader');
817
+ this._selectAllCheckbox = shadowRoot.getElementById('selectAllCheckbox');
818
+ this._treeNoResult = shadowRoot.getElementById('treeNoResult');
819
+ this._searchInput = shadowRoot.getElementById('searchInput');
820
+ this._removeFromVisibleColumnsBtn = shadowRoot.getElementById('removeFromVisibleColumnsBtn');
821
+ this._columnDialog = shadowRoot.getElementById('columnDialog');
822
+ this._upItem = shadowRoot.getElementById('upItem');
823
+ this._downItem = shadowRoot.getElementById('downItem');
824
+ this._visibleColumnsContainer = shadowRoot.getElementById('visibleColumns');
825
+ this._treeContainer = shadowRoot.getElementById('treeContainer');
826
+ this._descriptionContainer = shadowRoot.getElementById('descriptionContainer');
827
+ this._tagsDiv = shadowRoot.getElementById('tags_div');
828
+
829
+ this._tree.addEventListener('value-changed', this._treeValueChanged);
830
+ this._tree.addEventListener('expanded-changed', this._treeExpandedChanged);
831
+ this._searchInput.addEventListener('keydown', this._onSearchInputKeyDown);
832
+ this._searchInput.addEventListener('keyup', this._onSearchInputKeyUp);
833
+ this._columnDialog.addEventListener('cancel', this._onCancel);
834
+ this._selectAllCheckbox.addEventListener('checked-changed', this._selectAllCheckedChanged);
835
+ this._selectAllHeader.addEventListener('click', this._handleSelectAllHeaderClick);
836
+
837
+ // Events for menu Items management
838
+ this._visibleColumnsContainer.addEventListener('keydown', this._handleKeydown);
839
+ this._visibleColumnsContainer.addEventListener('mouseover', this._handleMouseover);
840
+ this._visibleColumnsContainer.addEventListener('mouseout', this._handleMouseout);
841
+ this._visibleColumnsContainer.addEventListener('click', this._handleClick);
842
+ this._visibleColumnsContainer.addEventListener('dblclick', this._removeBtnClicked);
843
+ this._visibleColumnsContainer.addEventListener('focusin', this._handleFocusIn);
844
+ this._visibleColumnsContainer.addEventListener('focusout', this._handleFocusOut);
845
+
846
+ // icon custom renderer
847
+ if(this._descriptionBox) { // TODO: This should not work only for the first time
848
+ this._treeDefualtRenderer = new DefaultRenderer(this._tree);
849
+ this._tree.renderer = this._createTreeCustomRender;
850
+ }
851
+ }
852
+
853
+ /**
854
+ * @private
855
+ * @override
856
+ */
857
+ updated(changedProperties) {
858
+ if (changedProperties.has('lang')) {
859
+ if (this._translation[this._lang]) {
860
+ this._pendingResetSearchInput = true;
861
+ }
862
+ }
863
+
864
+ if (changedProperties.has('isShown')) {
865
+ this._columnDialog.opened = this.isShown;
866
+ if (!this.isShown) {
867
+ this.remove();
868
+ }
869
+ }
870
+
871
+ if (this._pendingResetSearchInput) {
872
+ this._pendingResetSearchInput = false;
873
+ this._searchInput.value = '';
874
+ this._updateSearchResult(this._searchInput.value); // TODO: Use empty string instead. This also trigger requestUpdate again
875
+ }
876
+
877
+ if(this._pendingScroll) {
878
+ var selectedIndexes = _getSelectedItemIndexes(this._visibleColumnList);
879
+ if (selectedIndexes.length) {
880
+ scrollToItem(this._visibleColumnsContainer, selectedIndexes[0]);
881
+ }
882
+ this._pendingScroll = false;
883
+ }
884
+
885
+ if (this._pendingTreeRefresh) {
886
+ this._pendingTreeRefresh = false;
887
+ this._updateTreeUI();
888
+ }
889
+
890
+ if (this._pendingButtonUpdate) {
891
+ this._pendingButtonUpdate = false;
892
+ this._updateControlButton();
893
+ }
894
+
895
+ this._columnDialog.style.height = this._height ? this._height + "px" : "";
896
+ this._columnDialog.style.width = this._width ? this._width + "px" : "";
897
+
898
+ this._descriptionContainer.toggleAttribute('hide', !this._descriptionBox);
899
+
900
+ var activeTags = this._activeTags;
901
+ if(activeTags) {
902
+ var tagDefs = this._tagDefs;
903
+ var tagCount = tagDefs.length;
904
+ var tagDef;
905
+ for(var i = 0; i < tagCount; ++i) {
906
+ tagDef = tagDefs[i];
907
+ if(!activeTags[tagDef.value]) {
908
+ var pn = tagDef.element.parentNode;
909
+ if(pn){
910
+ pn.removeChild(tagDef.element);
911
+ }
912
+ }
913
+ }
914
+ for(var tagKeyword in activeTags) {
915
+ tagDef = tagDefs[activeTags[tagKeyword]];
916
+ if(tagDef) {
917
+ this._tagsDiv.appendChild(tagDef.element);
918
+ }
919
+ }
920
+ } else {
921
+ while(this._tagsDiv.lastChild) {
922
+ this._tagsDiv.removeChild(this._tagsDiv.lastChild);
923
+ }
924
+ }
925
+ }
926
+
927
+ /**
928
+ * @public
929
+ * @param {ColumnSelectionDialog~Config=} options
930
+ */
931
+ init(options) {
932
+ this.config = options;
933
+ }
934
+
935
+ /** Transform and prepare user data for actual usage
936
+ * @private
937
+ * @param {boolean} toDefault=false set visible column to default list
938
+ */
939
+ _initData(toDefault) {
940
+ // Retrieve user options
941
+ var allItems, i, j, item, id, key, columnMappingParents;
942
+ var config = this.config || {};
943
+ var visibleItems = this.visibleItems;
944
+ var defaultItems = this._defaultItems;
945
+ this._activeTags = null; // Data has been changed, so all existing active tags must be removed
946
+
947
+ if (this.data) {
948
+ allItems = this.data;
949
+ } else {
950
+ // if no data provide
951
+ // then merge availableItems with visibleItems as allItems
952
+ var availableItems = config.availableItems || [];
953
+ allItems = Array.from(availableItems);
954
+ insertItems(allItems, allItems.length, visibleItems);
955
+ defaultItems && insertItems(allItems, allItems.length, defaultItems);
956
+ }
957
+
958
+ // Ensure that all user given items are valid
959
+ if(Array.isArray(allItems)) {
960
+ allItems = allItems.filter(_validateItem).filter(_notAutoGeneratedItem);
961
+ } else {
962
+ allItems = [];
963
+ }
964
+
965
+ if (toDefault && defaultItems) { // case reset to default
966
+ visibleItems = defaultItems;
967
+ }
968
+
969
+ if(Array.isArray(visibleItems)) {
970
+ visibleItems = visibleItems.filter(_validateItem);
971
+ } else {
972
+ visibleItems = [];
973
+ }
974
+
975
+ // find visible item from allItem and append to visibleItems
976
+ var visible2 = _getVisibleItems(allItems);
977
+ insertItems(visibleItems, visibleItems.length, visible2);
978
+
979
+ // Remove any duplicate entry by checking duplicate id
980
+ var idMap = {};
981
+ visibleItems = _screenDuplication(visibleItems, idMap);
982
+ var itemCount = visibleItems.length;
983
+
984
+ var autoGeneratedColumnCount = _countAutoGenerated(visibleItems);
985
+ var middleSeparator = config.middleSeparator;
986
+
987
+ var excludedLeftColumns = config.excludedLeftColumns;
988
+ if (excludedLeftColumns == null && config.excludedColumns != null) {
989
+ excludedLeftColumns = config.excludedColumns; // apply alias
990
+ }
991
+ this._excludedLeftColumns = _ensurePositiveNumber(excludedLeftColumns); // auto generated column should always be hidden from UI
992
+ this._excludedLeftColumns += autoGeneratedColumnCount; // WARNING: If auto-generated is not at most left index, this calculation will be incorrect.
993
+ this._excludedRightColumns = _ensurePositiveNumber(config.excludedRightColumns);
994
+ if (this._excludedRightColumns > itemCount - this._excludedLeftColumns) {
995
+ this._excludedRightColumns = _ensurePositiveNumber(itemCount - this._excludedLeftColumns);
996
+ }
997
+
998
+ this._initialColumnMap = _createMapping(allItems, 'id');
999
+ this._excludedLeftVisibleColumnList = visibleItems.slice(0, this._excludedLeftColumns);
1000
+ this._excludedRightVisibleColumnList = visibleItems.slice(itemCount - this._excludedRightColumns);
1001
+
1002
+ var stationaryLeftColumnIndex = -1;
1003
+ for(i = allItems.length - 1; i >= 0; i--) {
1004
+ item = allItems[i];
1005
+
1006
+ if(i < stationaryLeftColumnIndex) {
1007
+ item.disabled = true;
1008
+ } else {
1009
+ if(item.stationary || i < config.unmovableColumns) {
1010
+ stationaryLeftColumnIndex = i + 1; // unmoveable count by columns so we need to add 1 to index for backward compatibility
1011
+ item.disabled = true;
1012
+ this._unmovableColumns = _ensurePositiveNumber(stationaryLeftColumnIndex);
1013
+ this._unmovableColumns += autoGeneratedColumnCount - this._excludedLeftColumns;
1014
+ }
1015
+ }
1016
+
1017
+ if(middleSeparator && item.field === middleSeparator){
1018
+ item.disabled = true;
1019
+ this._middleSeparator = middleSeparator;
1020
+ }
1021
+
1022
+ }
1023
+
1024
+ this._allColumnList = [];
1025
+ for(i = 0; i < allItems.length; i++){
1026
+ item = allItems[i];
1027
+ this._allColumnList.push(_toCoralTreeItem(item, null, this._defaultExpanded));
1028
+ }
1029
+ this._allItemMapping = _createMapping(this._allColumnList, 'value');
1030
+
1031
+ this._visibleColumnList = [];
1032
+ for (i = 0; i < itemCount; i++) {
1033
+ id = visibleItems[i].id;
1034
+ item = this._allItemMapping[id];
1035
+ if (!item) continue; // auto generate column will not include in visible list
1036
+ columnMappingParents = item.mappingParents;
1037
+ if(columnMappingParents) {
1038
+ // Select all tree duplicate columns
1039
+ for (j = 0; j < columnMappingParents.length; j++) {
1040
+ key = columnMappingParents[j];
1041
+ this._allItemMapping[key].selected = true; // selected this column
1042
+ }
1043
+ } else {
1044
+ item.selected = true; // selected this column
1045
+ }
1046
+
1047
+ if (i < this._excludedLeftColumns || i >= itemCount - this._excludedRightColumns) {
1048
+ // _excludedLeftColumns and _excludedRightColumns no need to add in _visibleColumnList
1049
+ item.disabled = true;
1050
+ } else {
1051
+ // The value in the tree children is selected when the user passes the visible column in the dialog
1052
+ columnMappingParents = item.mappingParents;
1053
+ if(columnMappingParents) {
1054
+ for (j = 0; j < columnMappingParents.length; j++) {
1055
+ key = columnMappingParents[j];
1056
+ var rawValue = this._allItemMapping[key].rawValue;
1057
+ var coralItem = _toCoralItem(this._allItemMapping[key]);
1058
+
1059
+ if(this._allItemMapping[rawValue].isDuplicate && this._allItemMapping[key].strGroup) {
1060
+ coralItem.label = coralItem.label + ' (' + this._allItemMapping[key].strGroup + ')';
1061
+ }
1062
+ this._visibleColumnList.push(_toCoralItem(coralItem)); // show in coral item
1063
+ }
1064
+ } else {
1065
+ this._visibleColumnList.push(_toCoralItem(item)); // show in coral item
1066
+ }
1067
+ }
1068
+ }
1069
+
1070
+ // clear description text since visibleList changed
1071
+ if (this._descriptionContainer) {
1072
+ this._descriptionContainer.textContent = '';
1073
+ }
1074
+
1075
+ this._pendingTreeRefresh = true;
1076
+ this._pendingButtonUpdate = true;
1077
+ this._pendingResetSearchInput = true;
1078
+ }
1079
+
1080
+ /** Show the dialog
1081
+ * @public
1082
+ */
1083
+ show() {
1084
+ if (!this.parentNode) {
1085
+ document.body.appendChild(this);
1086
+ }
1087
+ this.isShown = true; // TODO: This is not a correct way of using isShown property
1088
+ }
1089
+
1090
+ /** Hide the dialog
1091
+ * @public
1092
+ */
1093
+ hide() {
1094
+ this.isShown = false; // TODO: This is not a correct way of using isShown property
1095
+ }
1096
+
1097
+ /** Validate item can move to index
1098
+ * @private
1099
+ * @param {number} itemIndex
1100
+ * @param {boolean} isUp
1101
+ * @return {boolean}
1102
+ */
1103
+ _canMove(itemIndex, isUp) {
1104
+ var nextIndex = itemIndex + (isUp ? -1 : 1);
1105
+ var nextElem = this._visibleColumnsContainer.children[nextIndex];
1106
+
1107
+ if (!nextElem) { // no nextIndex then ignore
1108
+ return false;
1109
+ } else if (isSelectedItem(this._visibleColumnsContainer.children[nextIndex])) { // next item is selected then ignore
1110
+ return false;
1111
+ } else if (!this._isMovable(nextIndex)) {
1112
+ return false;
1113
+ }
1114
+
1115
+ return true;
1116
+ }
1117
+ /** Validate item that is movable in visible columns
1118
+ * @private
1119
+ * @param {number} itemIndex
1120
+ * @return {boolean}
1121
+ */
1122
+ _isMovable(itemIndex) {
1123
+ var obj = this._visibleColumnList[itemIndex];
1124
+ if (!obj) {
1125
+ return false;
1126
+ }
1127
+
1128
+ var colItem = this._allItemMapping[obj.value];
1129
+ var movable = _ensurePositiveNumber(itemIndex) >= this._unmovableColumns;
1130
+ if(this._middleSeparator && colItem.rawValue == this._middleSeparator){
1131
+ movable = false;
1132
+ }
1133
+
1134
+ return movable;
1135
+ }
1136
+
1137
+ /** Get visible middle separator column index
1138
+ * @private
1139
+ * @return {number}
1140
+ */
1141
+ _getVisibleSeparatorIndex() {
1142
+ if(!this._middleSeparator){
1143
+ return -1;
1144
+ }
1145
+ var separatorCol = this._allItemMapping[this._middleSeparator];
1146
+ return getItemIndex(this._visibleColumnList, separatorCol.value, "value");
1147
+ }
1148
+
1149
+ /** @private
1150
+ * @param {number} step if positive highlight will move up, if negative highlight will move down
1151
+ */
1152
+ _moveFocusedItem(step) {
1153
+ if (!step) {
1154
+ return;
1155
+ }
1156
+
1157
+ var focusedEl = this._focusedElement;
1158
+ if (!focusedEl) {
1159
+ var selectedIndexes = _getSelectedItemIndexes(this._visibleColumnList);
1160
+ if (!selectedIndexes.length) {
1161
+ return;
1162
+ }
1163
+
1164
+ focusedEl = this._visibleColumnsContainer.children[selectedIndexes[0]];
1165
+ }
1166
+
1167
+ var pn = focusedEl.parentNode;
1168
+ if(!pn) {
1169
+ return;
1170
+ }
1171
+
1172
+ var chdr = pn.children;
1173
+ var childCount = chdr.length;
1174
+ var i; // focused element index
1175
+ for(i = 0; i < childCount; ++i) {
1176
+ if(chdr[i] === focusedEl) {
1177
+ break;
1178
+ }
1179
+ }
1180
+
1181
+ i += step;
1182
+ if (i >= 0 && i < childCount) {
1183
+ scrollToItem(pn, i);
1184
+ chdr[i].focus();
1185
+ }
1186
+ }
1187
+
1188
+ /**
1189
+ * @private
1190
+ * @param {Array} fromIndexes
1191
+ * @param {string} movementType
1192
+ */
1193
+ _moveVisibleColumnsElement(fromIndexes, movementType) {
1194
+ fromIndexes = fromIndexes.filter(this._isMovable);
1195
+ const moveCount = fromIndexes ? fromIndexes.length : 0;
1196
+ if(!moveCount) {
1197
+ return;
1198
+ }
1199
+ const list = this._visibleColumnList;
1200
+ const listCount = list.length;
1201
+ if(!listCount) {
1202
+ return;
1203
+ }
1204
+
1205
+ const sortedIndexes = fromIndexes.sort(numberComparer);
1206
+ const isGrouped = isContinuous(sortedIndexes);
1207
+ const isDown = movementType.indexOf('Down') >= 0;
1208
+ const minIndex = sortedIndexes[0];
1209
+ const maxIndex = sortedIndexes[moveCount - 1];
1210
+
1211
+ let targetIndex = isDown ? maxIndex : minIndex;
1212
+
1213
+ if(isGrouped) {
1214
+ if(isDown) {
1215
+ if(movementType === 'Down') {
1216
+ targetIndex = targetIndex < listCount ? targetIndex + 1 : listCount;
1217
+ } else {
1218
+ targetIndex = listCount;
1219
+ }
1220
+ } else {
1221
+ if(movementType === 'Up') {
1222
+ targetIndex = targetIndex > 0 ? targetIndex - 1 : 0;
1223
+ } else {
1224
+ targetIndex = 0;
1225
+ }
1226
+ }
1227
+ }
1228
+
1229
+ if (!this._isMovable(targetIndex)) {
1230
+ return;
1231
+ }
1232
+
1233
+ // Collect selected itmes
1234
+ const items = new Array(moveCount);
1235
+ for(var i = 0; i < moveCount; ++i) {
1236
+ let idx = sortedIndexes[i];
1237
+ let item = list[idx];
1238
+ items[i] = item;
1239
+ list[idx] = null;
1240
+ item.selected = true; // Ensure that selected item has correct state
1241
+ }
1242
+ // Insert items back
1243
+ if (isDown) {
1244
+ insertItems(list, targetIndex + 1, items);
1245
+ } else {
1246
+ insertItems(list, targetIndex, items);
1247
+ }
1248
+
1249
+ this._visibleColumnList = list.filter(Boolean);
1250
+ scrollToItem(this._visibleColumnsContainer, targetIndex);
1251
+ this._pendingButtonUpdate = true;
1252
+
1253
+ this.requestUpdate();
1254
+ }
1255
+
1256
+ _onUpItem() {
1257
+ this._moveVisibleColumnsElement(_getSelectedItemIndexes(this._visibleColumnList), 'Up');
1258
+ }
1259
+
1260
+ _onDownItem() {
1261
+ this._moveVisibleColumnsElement(_getSelectedItemIndexes(this._visibleColumnList), 'Down');
1262
+ }
1263
+
1264
+ /** @private
1265
+ * @param {Event} e
1266
+ */
1267
+ _onSearchInputKeyDown(e) {
1268
+ var keyCode = e.keyCode;
1269
+ if(keyCode !== 9) { // Tab key
1270
+ return;
1271
+ }
1272
+ if(!this._tagDefs) {
1273
+ return;
1274
+ }
1275
+ // Advanced search mode
1276
+ e.stopPropagation();
1277
+ e.preventDefault();
1278
+ var str = e.currentTarget.value;
1279
+ str = str.trim().toLowerCase();
1280
+ var tagCount = this._tagDefs.length;
1281
+ for(var i = 0; i < tagCount; ++i) {
1282
+ var tagDef = this._tagDefs[i];
1283
+ var tagKeyword = tagDef.value;
1284
+ if(tagKeyword.indexOf(str) >= 0) {
1285
+ if(this._addTagPill(tagKeyword, i)) {
1286
+ this._searchInput.value = "";
1287
+ this._updateSearchResult("");
1288
+ break;
1289
+ }
1290
+ }
1291
+ }
1292
+ }
1293
+ /** @private
1294
+ * @param {Event} e
1295
+ */
1296
+ _onSearchInputKeyUp(e) {
1297
+ var keyCode = e.keyCode;
1298
+ if(NON_CHAR_KEYS[keyCode]) {
1299
+ // No search should be changed by any of these key codes (e.g., enter, esc, tab, shift, ctrl, arrow keys)
1300
+ return;
1301
+ }
1302
+
1303
+ var firstItem = this._searchInput.data && this._searchInput.data[0];
1304
+ if (firstItem) {
1305
+ this._searchInput.scrollToItem(firstItem); // Scroll to top
1306
+ }
1307
+
1308
+ this._updateSearchResult(e.target.value);
1309
+ }
1310
+
1311
+ /** @private
1312
+ * @param {string} tagKeyword String for searching and filtering
1313
+ * @param {number|string} id For refering back to tag definitions
1314
+ * @return {boolean} Returns true if there is any change
1315
+ */
1316
+ _addTagPill(tagKeyword, id) {
1317
+ if(this._activeTags) {
1318
+ if(this._activeTags[tagKeyword]) {
1319
+ return false;
1320
+ }
1321
+ } else {
1322
+ this._activeTags = {};
1323
+ }
1324
+ this._activeTags[tagKeyword] = id != null ? id + "" : "-1";
1325
+ return true;
1326
+ }
1327
+ /** @private
1328
+ * @param {string} tagKeyword
1329
+ * @return {boolean} Returns true if there is any change
1330
+ */
1331
+ _removeTagPill(tagKeyword) {
1332
+ if(!this._activeTags) {
1333
+ return false;
1334
+ }
1335
+ if(!this._activeTags[tagKeyword]) {
1336
+ return false;
1337
+ }
1338
+
1339
+ delete this._activeTags[tagKeyword];
1340
+ if(isEmptyObject(this._activeTags)) {
1341
+ this._activeTags = null;
1342
+ }
1343
+ return true;
1344
+ }
1345
+ /** @private
1346
+ * @return {boolean} Returns true if there is any change
1347
+ */
1348
+ _removeAllTagPills() {
1349
+ if(!this._activeTags) {
1350
+ return false;
1351
+ }
1352
+ this._activeTags = null;
1353
+ return true;
1354
+ }
1355
+ /** @private
1356
+ * @param {Event} e
1357
+ */
1358
+ _onClearingTagPill(e) {
1359
+ var tagPill = e.currentTarget;
1360
+ if(this._removeTagPill(tagPill._keyword)) {
1361
+ this._updateSearchResult();
1362
+ }
1363
+ }
1364
+
1365
+ /** @private
1366
+ * @function
1367
+ * @param {Object} item
1368
+ * @param {string} keyword
1369
+ * @return {boolean}
1370
+ */
1371
+ _simpleMatching(item, keyword) {
1372
+ if(item.lowerCase) {
1373
+ return item.lowerCase.includes(keyword);
1374
+ } else {
1375
+ return false;
1376
+ }
1377
+ }
1378
+ /** @private
1379
+ * @function
1380
+ * @param {Object} item
1381
+ * @param {Array.<string>} keywords
1382
+ * @return {boolean}
1383
+ */
1384
+ _advancedMatching(item, keywords) {
1385
+ if(this._activeTags) {
1386
+ var tags = item.tags;
1387
+ var tagCount = tags ? tags.length : 0;
1388
+ var tagMatched = false;
1389
+ for(var i = 0; i < tagCount; ++i) {
1390
+ if(this._activeTags[tags[i]]) {
1391
+ tagMatched = true;
1392
+ break;
1393
+ }
1394
+ }
1395
+
1396
+ if(!tagMatched) {
1397
+ return false;
1398
+ }
1399
+ }
1400
+
1401
+ var lowerCase = item.lowerCase;
1402
+ if(!lowerCase) {
1403
+ return false;
1404
+ }
1405
+
1406
+ var wordCount = keywords.length;
1407
+ for(var j = 0; j < wordCount; ++j) {
1408
+ if(!lowerCase.includes(keywords[j])) {
1409
+ return false;
1410
+ }
1411
+ }
1412
+ return true;
1413
+ }
1414
+
1415
+ /** Search through tree structures of items
1416
+ * @private
1417
+ * @function
1418
+ * @param {Array} items
1419
+ * @param {string} keyword Keyword
1420
+ * @return {Array}
1421
+ */
1422
+ _filterSearch(items, keyword) {
1423
+ if(!keyword && !this._activeTags) {
1424
+ return items;
1425
+ }
1426
+ var itemCount = items.length;
1427
+ if(!itemCount) {
1428
+ return items;
1429
+ }
1430
+
1431
+ keyword = keyword.toLowerCase();
1432
+ if(this._tagDefs) {
1433
+ var keywords = keyword.split(/ +/);
1434
+ return _recursivelySearch(items, keywords, this._advancedMatching);
1435
+ }
1436
+
1437
+ return _recursivelySearch(items, keyword, this._simpleMatching);
1438
+ }
1439
+
1440
+ /**
1441
+ * @private
1442
+ * @param {string} value - search query
1443
+ */
1444
+ _updateSearchResult(value) {
1445
+ var keyword = value ? value.trim() : "";
1446
+ if(!keyword && !this._activeTags) {
1447
+ this._filteredColumnList = this._allColumnList;
1448
+ this._filterItemMapping = this._allItemMapping;
1449
+ } else {
1450
+ // TODO: Avoid filter for the same active keyword
1451
+ this._filteredColumnList = this._filterSearch(this._allColumnList, keyword);
1452
+ this._filterItemMapping = _createMapping(this._filteredColumnList, 'value');
1453
+ }
1454
+
1455
+ // TODO: Avoid unnecessary update
1456
+ this._pendingTreeRefresh = true;
1457
+ this.requestUpdate();
1458
+ }
1459
+
1460
+ /**
1461
+ * @private
1462
+ */
1463
+ _updateTreeUI() {
1464
+ var isNoResult = this._filteredColumnList.length === 0;
1465
+ this._tree.toggleAttribute('hide', isNoResult);
1466
+ this._selectAllHeader.toggleAttribute('hide', isNoResult);
1467
+ this._treeNoResult.toggleAttribute('hide', !isNoResult); // show no result when search not found
1468
+
1469
+ if (!isNoResult) {
1470
+ this._updateSelectAllStatus();
1471
+ this._tree.data = null;
1472
+ this._tree.data = this._filteredColumnList;
1473
+ }
1474
+ }
1475
+
1476
+ /**
1477
+ * @private
1478
+ */
1479
+ _updateSelectAllStatus() {
1480
+ var total = 0;
1481
+ var checked = 0;
1482
+ for (var key in this._filterItemMapping) {
1483
+ var item = this._filterItemMapping[key];
1484
+ if (item.disabled || item.isGroup || item.isUnique) continue;
1485
+
1486
+ total++;
1487
+ item.selected && checked++;
1488
+ }
1489
+
1490
+ if (total === checked) {
1491
+ this._selectAllStatus = "checked";
1492
+ } else if (checked === 0) {
1493
+ this._selectAllStatus = "";
1494
+ } else {
1495
+ this._selectAllStatus = "indeterminate";
1496
+ }
1497
+
1498
+ this._selectAllCheckbox.removeAttribute("indeterminate");
1499
+ this._selectAllCheckbox.removeAttribute("checked");
1500
+ this._selectAllStatus && this._selectAllCheckbox.setAttribute(this._selectAllStatus, "");
1501
+ }
1502
+
1503
+ /**
1504
+ * @private
1505
+ * @param {Object} e
1506
+ */
1507
+ _handleFocusIn(e) {
1508
+ this._focusedElement = e.target;
1509
+ }
1510
+
1511
+ /**
1512
+ * @private
1513
+ * @param {Object} e
1514
+ */
1515
+ _handleFocusOut(e) {
1516
+ this._focusedElement = null;
1517
+ }
1518
+
1519
+ /**
1520
+ * @private
1521
+ * @param {Object} e
1522
+ */
1523
+ _handleKeydown(e) {
1524
+ var handled = false;
1525
+ switch (e.keyCode) {
1526
+ case 40: // down
1527
+ this._moveFocusedItem(1);
1528
+ handled = true;
1529
+ break;
1530
+ case 38: // up
1531
+ this._moveFocusedItem(-1);
1532
+ handled = true;
1533
+ break;
1534
+ case 9: // tab
1535
+ var focusedEl = this._focusedElement;
1536
+ if (focusedEl) {
1537
+ if (e.shiftKey) {
1538
+ if(focusedEl.previousElementSibling) {
1539
+ this._moveFocusedItem(-1);
1540
+ handled = true;
1541
+ }
1542
+ } else {
1543
+ if (focusedEl.nextElementSibling) {
1544
+ this._moveFocusedItem(1);
1545
+ handled = true;
1546
+ }
1547
+ }
1548
+ }
1549
+ break;
1550
+ case 13: // enter
1551
+ if(this._focusedElement) {
1552
+ this._focusedElement.click();
1553
+ handled = true;
1554
+ }
1555
+ break;
1556
+ }
1557
+
1558
+ if(handled) {
1559
+ e.preventDefault();
1560
+ }
1561
+ }
1562
+
1563
+ /**
1564
+ * @private
1565
+ * @param {Object} e
1566
+ */
1567
+ _handleMouseover(e) {
1568
+ var targetElem = e.target;
1569
+ if (targetElem.highlightable) {
1570
+ targetElem.highlighted = true;
1571
+ }
1572
+ }
1573
+
1574
+ /**
1575
+ * @private
1576
+ * @param {Object} e
1577
+ */
1578
+ _handleMouseout(e) {
1579
+ e.target.highlighted = false;
1580
+ }
1581
+
1582
+ /**
1583
+ * @private
1584
+ * @param {object} e - event object
1585
+ */
1586
+ _handleSelectAllHeaderClick(e) {
1587
+ this._selectAllCheckbox.click();
1588
+ }
1589
+
1590
+ /**
1591
+ * @private
1592
+ * @param {object} e - event object
1593
+ */
1594
+ _handleClick(e) {
1595
+ var selectedElement = e.target; // Target should be ef-item
1596
+
1597
+ this._showDescription(selectedElement.value);
1598
+
1599
+ if (!selectedElement.highlightable) {
1600
+ return;
1601
+ }
1602
+
1603
+ var list = this._visibleColumnList;
1604
+ var selectedIndex = getDomElementIndex(selectedElement);
1605
+
1606
+ if(e.metaKey || e.ctrlKey) {
1607
+ var curSelectedIndexes = _getSelectedItemIndexes(list);
1608
+ var repeatClickAt = curSelectedIndexes.indexOf(selectedIndex);
1609
+ if(repeatClickAt >= 0) {
1610
+ deselectItem(list[selectedIndex]);
1611
+ } else {
1612
+ selectItem(list[selectedIndex]);
1613
+ }
1614
+ } else {
1615
+ list.forEach(deselectItem);
1616
+ selectItem(list[selectedIndex]);
1617
+ }
1618
+
1619
+ this._pendingButtonUpdate = true;
1620
+
1621
+ this.requestUpdate();
1622
+ }
1623
+
1624
+ /**
1625
+ * @private
1626
+ * @param {object} e - event object
1627
+ */
1628
+ _handleInfoIconClicked(e) {
1629
+ var targetElem = e.currentTarget;
1630
+ var divItem = targetElem.parentNode;
1631
+ var treeItem = divItem.parentNode;
1632
+ var value = treeItem.item.value;
1633
+ this._showDescription(value);
1634
+ e.stopPropagation();
1635
+ }
1636
+
1637
+ /**
1638
+ * @private
1639
+ * @param {object} e - event object
1640
+ */
1641
+ _handleInfoIconMouseover(e) {
1642
+ var targetElem = e.currentTarget;
1643
+ var divItem = targetElem.parentNode;
1644
+ var treeItem = divItem.parentNode;
1645
+ if(treeItem.highlighted) {
1646
+ treeItem.classList.add("bg-highligted");
1647
+ }
1648
+ }
1649
+
1650
+ /**
1651
+ * @private
1652
+ * @param {object} e - event object
1653
+ */
1654
+ _handleInfoIconMouseout(e) {
1655
+ var targetElem = e.currentTarget;
1656
+ var divItem = targetElem.parentNode;
1657
+ var treeItem = divItem.parentNode;
1658
+ if(treeItem.highlighted) {
1659
+ treeItem.classList.remove("bg-highligted");
1660
+ }
1661
+ }
1662
+
1663
+ /**
1664
+ * @private
1665
+ * @param {string} value of mapping item for show description
1666
+ */
1667
+ _showDescription(value) {
1668
+ if (this._descriptionBox && value) {
1669
+ var item = this._allItemMapping[value];
1670
+ if(item) {
1671
+ var initialColumn = this._initialColumnMap[item.rawValue];
1672
+ if(initialColumn) {
1673
+ this._descriptionContainer.textContent = initialColumn.description || "";
1674
+ }
1675
+ }
1676
+ }
1677
+ }
1678
+
1679
+ /**
1680
+ * @private
1681
+ * @param {object} item ef-tree-item element
1682
+ * @param {object} composer data collection composer for elf API wrapper
1683
+ * @param {object} element
1684
+ * @return {Object} custom renderer element
1685
+ */
1686
+ _createTreeCustomRender(item, composer, element) {
1687
+ // Use default renderer to create/recycle element
1688
+ element = this._treeDefualtRenderer(item, composer, element);
1689
+ var isParent = composer.isItemParent(item);
1690
+ var rawValue = item.rawValue;
1691
+ if (!isParent && this._initialColumnMap[rawValue].description) {
1692
+ var treeLabel = element._treeLabel;
1693
+ if (!treeLabel) {
1694
+ var div = document.createElement("div");
1695
+ treeLabel = document.createElement("div");
1696
+ element._treeLabel = treeLabel;
1697
+ var iconEl = document.createElement("ef-icon");
1698
+ var divIcon = document.createElement("div");
1699
+ div.classList.add("item");
1700
+ treeLabel.classList.add("tree-label");
1701
+ iconEl.classList.add("info-icon");
1702
+ iconEl.icon = "info";
1703
+ divIcon.classList.add("div-icon");
1704
+ divIcon.appendChild(iconEl);
1705
+ divIcon.addEventListener("tap", this._handleInfoIconClicked );
1706
+ divIcon.addEventListener("mouseover", this._handleInfoIconMouseover);
1707
+ divIcon.addEventListener("mouseout", this._handleInfoIconMouseout);
1708
+ div.appendChild(treeLabel);
1709
+ div.appendChild(divIcon);
1710
+ element.appendChild(div);
1711
+ } else {
1712
+ treeLabel = element.querySelector(".tree-label");
1713
+ }
1714
+ treeLabel.textContent = item.label;
1715
+ }
1716
+ return element;
1717
+ }
1718
+
1719
+ /**
1720
+ * update up and down button
1721
+ * @private
1722
+ */
1723
+ _updateControlButton() {
1724
+ this._upItem.disabled = true;
1725
+ this._downItem.disabled = true;
1726
+ this._removeFromVisibleColumnsBtn.disabled = true;
1727
+
1728
+ var selectedIndexes = _getSelectedItemIndexes(this._visibleColumnList);
1729
+
1730
+ // verify - remove button disabled
1731
+ c = selectedIndexes.length;
1732
+ for (i = 0; i < c; i++) {
1733
+ selectedIndex = selectedIndexes[i];
1734
+ if (!this._visibleColumnsContainer.children[selectedIndex].classList.contains('disabled')) {
1735
+ this._removeFromVisibleColumnsBtn.disabled = false;
1736
+ break;
1737
+ }
1738
+ }
1739
+
1740
+ var moveableList = selectedIndexes.filter(this._isMovable);
1741
+ if (moveableList.length === 0) return;
1742
+
1743
+ var i, selectedIndex, c = moveableList.length;
1744
+
1745
+ // verify - down button disabled
1746
+ for (i = c - 1; i >= 0; i--) {
1747
+ selectedIndex = moveableList[i];
1748
+ if (this._canMove(selectedIndex)) {
1749
+ this._downItem.disabled = false;
1750
+ break;
1751
+ }
1752
+ }
1753
+
1754
+ // verify - up button disabled
1755
+ for (i = 0; i < c; i++) {
1756
+ selectedIndex = moveableList[i];
1757
+ if (this._canMove(selectedIndex, true)) {
1758
+ this._upItem.disabled = false;
1759
+ break;
1760
+ }
1761
+ }
1762
+
1763
+ // disabled move button when selection are in different section between separator
1764
+ if(c > 1 && this._middleSeparator){
1765
+ var separatorIndex = this._getVisibleSeparatorIndex();
1766
+ var aboveSeparator = false;
1767
+ var belowSeparator = false;
1768
+
1769
+ for(i = 0; i < c; i++){
1770
+ selectedIndex = moveableList[i];
1771
+ if(selectedIndex < separatorIndex){
1772
+ aboveSeparator = true;
1773
+ } else if(selectedIndex > separatorIndex){
1774
+ belowSeparator = true;
1775
+ }
1776
+ if(aboveSeparator && belowSeparator){
1777
+ this._downItem.disabled = true;
1778
+ this._upItem.disabled = true;
1779
+ break;
1780
+ }
1781
+ }
1782
+ }
1783
+ }
1784
+
1785
+ /**
1786
+ * remove button click event
1787
+ * @private
1788
+ */
1789
+ _removeBtnClicked() {
1790
+ let selectedItems = this._visibleColumnList.filter(isSelectedItem);
1791
+ let movableItems = selectedItems.filter(isEnabledItem);
1792
+ var movableItemsLength = movableItems.length;
1793
+ if(!movableItemsLength) {
1794
+ return;
1795
+ }
1796
+
1797
+ // Deselect any item that is disabled
1798
+ if(movableItemsLength < selectedItems.length) {
1799
+ selectedItems.forEach(deselectItem);
1800
+ movableItems.forEach(selectItem);
1801
+ }
1802
+
1803
+ this._removeFromVisibleColumn(movableItems, true);
1804
+
1805
+ this._pendingTreeRefresh = true;
1806
+
1807
+ this.requestUpdate();
1808
+ }
1809
+
1810
+ /**
1811
+ * reset all state
1812
+ * @private
1813
+ * @param {Event} e
1814
+ */
1815
+ _restoreDefault(e) {
1816
+ this._initData(true);
1817
+ this.requestUpdate();
1818
+ }
1819
+
1820
+ /**
1821
+ * Dispatch Event when user confirm changes
1822
+ * @private
1823
+ * @param {Event} e
1824
+ */
1825
+ _onConfirm(e) {
1826
+ var visibleItems = this._visibleColumnList.map(item => {
1827
+ var rawValue = this._allItemMapping[item.value].rawValue;
1828
+ return this._initialColumnMap[rawValue];
1829
+ }); // Return only visible items
1830
+ visibleItems = this._excludedLeftVisibleColumnList.concat(visibleItems).concat(this._excludedRightVisibleColumnList);
1831
+
1832
+ var detail = {
1833
+ data: visibleItems, // deprecated
1834
+ value: visibleItems // Standard
1835
+ };
1836
+
1837
+ const beforeEvent = new CustomEvent('beforeConfirm', {
1838
+ detail: detail
1839
+ });
1840
+ this.dispatchEvent(beforeEvent);
1841
+
1842
+ if (beforeEvent.cancel) { return; }
1843
+
1844
+ const event = new CustomEvent('confirm', {
1845
+ cancelable: true,
1846
+ detail: detail
1847
+ });
1848
+ this.dispatchEvent(event);
1849
+ this.hide();
1850
+ }
1851
+
1852
+ /**
1853
+ * Dispatch Event when user cancel or close dialog
1854
+ * @private
1855
+ * @param {Event} e
1856
+ */
1857
+ _onCancel() {
1858
+ const event = new CustomEvent('cancel');
1859
+ this.dispatchEvent(event);
1860
+ this.hide();
1861
+ }
1862
+
1863
+ /**
1864
+ * @param {Object} e
1865
+ * @private
1866
+ */
1867
+ _selectAllCheckedChanged(e) {
1868
+ var selected = e.detail.value;
1869
+ var items = [];
1870
+
1871
+ var highligtedRows = _getSelectedItemIndexes(this._visibleColumnList);
1872
+
1873
+ for (var key in this._filterItemMapping) {
1874
+ var item = this._filterItemMapping[key];
1875
+ if (item.disabled || item.isGroup) continue; // ignore disabled item and groupItem
1876
+
1877
+ if (item.selected !== selected) {
1878
+ items.push(this._filterItemMapping[key]);
1879
+ }
1880
+ }
1881
+
1882
+ if (selected) {
1883
+ this._addToVisibleColumn(items, highligtedRows);
1884
+ } else {
1885
+ this._removeFromVisibleColumn(items);
1886
+ }
1887
+
1888
+ this._pendingTreeRefresh = true;
1889
+ this.requestUpdate();
1890
+ }
1891
+
1892
+ /**
1893
+ * ef-tree value changed event
1894
+ * @param {Object} e
1895
+ * @private
1896
+ */
1897
+ _treeValueChanged(e) {
1898
+ var selectedMapping = {};
1899
+
1900
+ var c = e.currentTarget.values.length;
1901
+ for (var i = 0; i < c; i++) {
1902
+ var value = e.currentTarget.values[i];
1903
+ selectedMapping[value] = true;
1904
+ }
1905
+
1906
+ var highligtedRows = _getSelectedItemIndexes(this._visibleColumnList);
1907
+
1908
+ // clear all selected item on visible column
1909
+ this._visibleColumnList.forEach(deselectItem);
1910
+
1911
+ // update selected state and update UI
1912
+ var addList = [], removeList = [];
1913
+ for (var key in this._filterItemMapping) {
1914
+ var item = this._filterItemMapping[key];
1915
+ if (!item || item.disabled || item.isGroup) continue; // ignore disabled item and groupItem
1916
+
1917
+ if (item.selected) {
1918
+ if (!selectedMapping[item.value]) {
1919
+ // case item is unselect, then remove item out of visible list
1920
+ removeList.push(item);
1921
+ }
1922
+ } else {
1923
+ if (selectedMapping[item.value]) {
1924
+ // case item is select, then add item to visible list
1925
+ addList.push(item);
1926
+ }
1927
+ }
1928
+ }
1929
+ this._removeFromVisibleColumn(removeList);
1930
+ this._addToVisibleColumn(addList, highligtedRows);
1931
+ this._updateSelectAllStatus();
1932
+ this.requestUpdate();
1933
+ }
1934
+
1935
+ /**
1936
+ * ef-tree expanded changed event handler
1937
+ * @param {Object} e
1938
+ * @private
1939
+ */
1940
+ _treeExpandedChanged(e) {
1941
+ var groupItem = e.detail.item;
1942
+ var isExpanded = e.detail.value;
1943
+ this._filterItemMapping[groupItem.value].expanded = isExpanded;
1944
+ this._allItemMapping[groupItem.value].expanded = isExpanded;
1945
+ }
1946
+
1947
+ /**
1948
+ * @param {Array} items
1949
+ * @param {Array<number>=} highligtedRows
1950
+ * @private
1951
+ */
1952
+ _addToVisibleColumn(items, highligtedRows) {
1953
+ var itemCount = items.length;
1954
+ var separatorIndex = this._middleSeparator ? getItemIndex(this._allColumnList, this._middleSeparator, 'rawValue') : -1;
1955
+ var i, j;
1956
+ if (itemCount === 0) return;
1957
+ for (i = 0; i < itemCount; i++) {
1958
+ var visibleSeparatorIndex = this._getVisibleSeparatorIndex();
1959
+ var item = items[i];
1960
+ if(item.isUnique) {
1961
+ continue;
1962
+ }
1963
+ this._allItemMapping[item.value].selected = true;
1964
+ var coralItem = _toCoralItem(item);
1965
+ var rawValue = this._allItemMapping[item.value].rawValue;
1966
+ if(this._allItemMapping[rawValue].isDuplicate && this._allItemMapping[item.value].strGroup) {
1967
+ coralItem.label = coralItem.label + ' (' + this._allItemMapping[item.value].strGroup + ')';
1968
+ }
1969
+ var index = getItemIndex(this._allColumnList, item.value, 'value');
1970
+ coralItem.selected = true;
1971
+ var stationaryCount = this._unmovableColumns;
1972
+ var highligtedRowCount = highligtedRows ? highligtedRows.length : 0;
1973
+ var highligtedIndex;
1974
+ var isInserted = false;
1975
+ if(separatorIndex !== -1 && index < separatorIndex){
1976
+ for(j = 0; j < highligtedRowCount; j++){
1977
+ highligtedIndex = highligtedRows[j];
1978
+ if(highligtedIndex < visibleSeparatorIndex){
1979
+ if(highligtedIndex < stationaryCount){
1980
+ this._visibleColumnList.splice(stationaryCount, 0, coralItem);
1981
+ } else {
1982
+ this._visibleColumnList.splice(highligtedIndex, 0, coralItem);
1983
+ }
1984
+ isInserted = true;
1985
+ break;
1986
+ }
1987
+ }
1988
+ if(!isInserted){
1989
+ this._visibleColumnList.splice(visibleSeparatorIndex, 0, coralItem);
1990
+ }
1991
+ } else {
1992
+ for(j = 0; j < highligtedRowCount; j++){
1993
+ highligtedIndex = highligtedRows[j];
1994
+ if(highligtedIndex > visibleSeparatorIndex){
1995
+ if(highligtedIndex < stationaryCount){
1996
+ this._visibleColumnList.splice(stationaryCount, 0, coralItem);
1997
+ } else {
1998
+ this._visibleColumnList.splice(highligtedIndex, 0, coralItem);
1999
+ }
2000
+ isInserted = true;
2001
+ break;
2002
+ }
2003
+ }
2004
+ if(!isInserted){
2005
+ this._visibleColumnList.push(coralItem);
2006
+ }
2007
+ }
2008
+ }
2009
+ this._pendingScroll = true;
2010
+ this._pendingButtonUpdate = true;
2011
+ }
2012
+
2013
+ /**
2014
+ * @param {Array} items
2015
+ * @private
2016
+ */
2017
+ _removeFromVisibleColumn(items) {
2018
+ var c = items.length;
2019
+ if (c === 0) return;
2020
+ for (var i = 0; i < c; i++) {
2021
+ var item = items[i];
2022
+ this._allItemMapping[item.value].selected = false;
2023
+ var index = getItemIndex(this._visibleColumnList, item.value, 'value');
2024
+ if (index >= 0) this._visibleColumnList[index] = null;
2025
+ }
2026
+ this._visibleColumnList = this._visibleColumnList.filter(Boolean); // clear null element
2027
+ this._pendingButtonUpdate = true;
2028
+ }
2029
+ }
2030
+
2031
+ customElement('column-selection-dialog')(ColumnSelectionDialog);
2032
+
2033
+ export { ColumnSelectionDialog };
2034
+ export default ColumnSelectionDialog;