@oat-sa/tao-core-ui 1.60.2 → 1.61.0

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 (780) hide show
  1. package/LICENSE +339 -339
  2. package/README.md +23 -18
  3. package/dist/actionbar.js +105 -105
  4. package/dist/adder.js +109 -109
  5. package/dist/animable/absorbable/absorbable.js +42 -42
  6. package/dist/animable/absorbable/css/absorb.css +7 -7
  7. package/dist/animable/absorbable/css/absorb.css.map +1 -1
  8. package/dist/animable/pulsable/css/pulse.css +7 -7
  9. package/dist/animable/pulsable/css/pulse.css.map +1 -1
  10. package/dist/animable/pulsable/pulsable.js +36 -36
  11. package/dist/areaBroker.js +51 -51
  12. package/dist/autocomplete/css/autocomplete.css +7 -7
  13. package/dist/autocomplete/css/autocomplete.css.map +1 -1
  14. package/dist/autocomplete.js +400 -400
  15. package/dist/autoscroll.js +22 -22
  16. package/dist/badge/badge.js +48 -48
  17. package/dist/badge/css/badge.css +7 -7
  18. package/dist/badge/css/badge.css.map +1 -1
  19. package/dist/breadcrumbs/css/breadcrumbs.css +7 -7
  20. package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -1
  21. package/dist/breadcrumbs.js +70 -70
  22. package/dist/btngrouper.js +64 -64
  23. package/dist/bulkActionPopup/css/bulkActionPopup.css +7 -7
  24. package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
  25. package/dist/bulkActionPopup.js +104 -104
  26. package/dist/button.js +102 -102
  27. package/dist/calculator/css/calculator.css +10 -10
  28. package/dist/calculator/css/calculator.css.map +1 -1
  29. package/dist/calculator.js +51 -51
  30. package/dist/cascadingComboBox.js +47 -47
  31. package/dist/ckeditor/ckConfigurator.js +48 -48
  32. package/dist/ckeditor/dtdHandler.js +110 -110
  33. package/dist/class/css/selector.css +7 -7
  34. package/dist/class/css/selector.css.map +1 -1
  35. package/dist/class/selector.js +111 -111
  36. package/dist/component/alignable.js +81 -81
  37. package/dist/component/containable.js +37 -37
  38. package/dist/component/css/components.css +7 -7
  39. package/dist/component/css/components.css.map +1 -1
  40. package/dist/component/css/windowComponent.css +7 -7
  41. package/dist/component/css/windowComponent.css.map +1 -1
  42. package/dist/component/draggable.js +25 -25
  43. package/dist/component/placeable.js +70 -70
  44. package/dist/component/resizable.js +61 -61
  45. package/dist/component/stackable.js +20 -20
  46. package/dist/component/windowed.js +59 -59
  47. package/dist/component.js +153 -153
  48. package/dist/container.js +76 -76
  49. package/dist/contextualPopup/css/contextualPopup.css +7 -7
  50. package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
  51. package/dist/contextualPopup.js +113 -113
  52. package/dist/dashboard/css/dashboard.css +7 -7
  53. package/dist/dashboard/css/dashboard.css.map +1 -1
  54. package/dist/dashboard.js +75 -75
  55. package/dist/datalist/css/datalist.css +7 -7
  56. package/dist/datalist/css/datalist.css.map +1 -1
  57. package/dist/datalist.js +160 -160
  58. package/dist/datatable/css/datatable.css +11 -7
  59. package/dist/datatable/css/datatable.css.map +1 -1
  60. package/dist/datatable/filterStrategy/filterStrategy.js +27 -27
  61. package/dist/datatable/filterStrategy/multiple.js +25 -25
  62. package/dist/datatable/filterStrategy/single.js +25 -25
  63. package/dist/datatable.js +464 -431
  64. package/dist/dateRange/css/dateRange.css +7 -7
  65. package/dist/dateRange/css/dateRange.css.map +1 -1
  66. package/dist/dateRange/dateRange.js +110 -110
  67. package/dist/datetime/css/picker.css +7 -7
  68. package/dist/datetime/css/picker.css.map +1 -1
  69. package/dist/datetime/picker.js +174 -174
  70. package/dist/deleter.js +92 -92
  71. package/dist/destination/css/selector.css +7 -7
  72. package/dist/destination/css/selector.css.map +1 -1
  73. package/dist/destination/selector.js +65 -65
  74. package/dist/dialog/alert.js +26 -26
  75. package/dist/dialog/confirm.js +27 -27
  76. package/dist/dialog/confirmDelete.js +44 -44
  77. package/dist/dialog.js +156 -156
  78. package/dist/disabler.js +90 -90
  79. package/dist/documentViewer/css/documentViewer.css +7 -7
  80. package/dist/documentViewer/css/documentViewer.css.map +1 -1
  81. package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +43 -43
  82. package/dist/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +25 -25
  83. package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +133 -133
  84. package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +102 -102
  85. package/dist/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +52 -52
  86. package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +125 -125
  87. package/dist/documentViewer/providers/pdfViewer/pdfjs/textManager.js +67 -67
  88. package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +94 -94
  89. package/dist/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +111 -111
  90. package/dist/documentViewer/providers/pdfViewer.js +42 -42
  91. package/dist/documentViewer/viewerFactory.js +71 -71
  92. package/dist/documentViewer.js +99 -99
  93. package/dist/dropdown/css/dropdown.css +7 -7
  94. package/dist/dropdown/css/dropdown.css.map +1 -1
  95. package/dist/dropdown.js +97 -97
  96. package/dist/durationer.js +58 -58
  97. package/dist/dynamicComponent/css/dynamicComponent.css +7 -7
  98. package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
  99. package/dist/dynamicComponent.js +116 -116
  100. package/dist/feedback.js +97 -97
  101. package/dist/figure/FigureStateActive.js +117 -117
  102. package/dist/filesender.js +26 -26
  103. package/dist/filter.js +47 -47
  104. package/dist/form/css/dropdownForm.css +7 -7
  105. package/dist/form/css/dropdownForm.css.map +1 -1
  106. package/dist/form/css/form.css +7 -7
  107. package/dist/form/css/form.css.map +1 -1
  108. package/dist/form/dropdownForm.js +112 -112
  109. package/dist/form/form.js +245 -245
  110. package/dist/form/simpleForm.js +71 -71
  111. package/dist/form/validator/css/validator.css +7 -7
  112. package/dist/form/validator/css/validator.css.map +1 -1
  113. package/dist/form/validator/renderer.js +65 -65
  114. package/dist/form/validator/validator.js +87 -87
  115. package/dist/form/widget/css/widget.css +7 -7
  116. package/dist/form/widget/css/widget.css.map +1 -1
  117. package/dist/form/widget/definitions.js +24 -24
  118. package/dist/form/widget/loader.js +16 -16
  119. package/dist/form/widget/providers/checkBox.js +75 -75
  120. package/dist/form/widget/providers/comboBox.js +59 -59
  121. package/dist/form/widget/providers/default.js +35 -35
  122. package/dist/form/widget/providers/hidden.js +50 -50
  123. package/dist/form/widget/providers/hiddenBox.js +71 -71
  124. package/dist/form/widget/providers/radioBox.js +70 -70
  125. package/dist/form/widget/providers/textArea.js +48 -48
  126. package/dist/form/widget/providers/textBox.js +34 -34
  127. package/dist/form/widget/widget.js +154 -154
  128. package/dist/form.js +10 -10
  129. package/dist/formValidator/formValidator.js +61 -61
  130. package/dist/formValidator/highlighters/highlighter.js +41 -41
  131. package/dist/formValidator/highlighters/message.js +29 -29
  132. package/dist/formValidator/highlighters/tooltip.js +32 -32
  133. package/dist/generis/form/css/form.css +7 -7
  134. package/dist/generis/form/css/form.css.map +1 -1
  135. package/dist/generis/form/form.js +86 -86
  136. package/dist/generis/validator/css/validator.css +7 -7
  137. package/dist/generis/validator/css/validator.css.map +1 -1
  138. package/dist/generis/validator/validator.js +51 -51
  139. package/dist/generis/widget/checkBox/checkBox.js +52 -52
  140. package/dist/generis/widget/comboBox/comboBox.js +45 -45
  141. package/dist/generis/widget/css/widget.css +7 -7
  142. package/dist/generis/widget/css/widget.css.map +1 -1
  143. package/dist/generis/widget/hiddenBox/hiddenBox.js +53 -53
  144. package/dist/generis/widget/loader.js +20 -20
  145. package/dist/generis/widget/textBox/textBox.js +40 -40
  146. package/dist/generis/widget/widget.js +60 -60
  147. package/dist/groupedComboBox.js +49 -49
  148. package/dist/groupvalidator.js +19 -19
  149. package/dist/hider.js +41 -41
  150. package/dist/highlighter.js +262 -262
  151. package/dist/image/ImgStateActive/extractLabel.js +20 -20
  152. package/dist/image/ImgStateActive/helper.js +16 -16
  153. package/dist/image/ImgStateActive/initHelper.js +85 -85
  154. package/dist/image/ImgStateActive/initMediaEditor.js +48 -48
  155. package/dist/image/ImgStateActive/mediaSizer.js +32 -32
  156. package/dist/image/ImgStateActive.js +104 -104
  157. package/dist/incrementer.js +58 -58
  158. package/dist/inplacer.js +87 -87
  159. package/dist/interactUtils.js +42 -42
  160. package/dist/itemButtonList/css/item-button-list.css +23 -23
  161. package/dist/itemButtonList/css/item-button-list.css.map +1 -1
  162. package/dist/itemButtonList.js +115 -115
  163. package/dist/keyNavigation/navigableDomElement.js +76 -76
  164. package/dist/keyNavigation/navigator.js +158 -158
  165. package/dist/listbox/css/listbox.css +7 -7
  166. package/dist/listbox/css/listbox.css.map +1 -1
  167. package/dist/listbox.js +97 -97
  168. package/dist/liststyler.js +57 -57
  169. package/dist/loadingButton/css/button.css +7 -7
  170. package/dist/loadingButton/css/button.css.map +1 -1
  171. package/dist/loadingButton/loadingButton.js +48 -48
  172. package/dist/lock.js +125 -125
  173. package/dist/login/login.js +100 -100
  174. package/dist/maths/calculator/basicCalculator.js +63 -63
  175. package/dist/maths/calculator/calculatorComponent.js +29 -29
  176. package/dist/maths/calculator/core/areaBroker.js +25 -25
  177. package/dist/maths/calculator/core/board.js +313 -313
  178. package/dist/maths/calculator/core/expression.js +111 -111
  179. package/dist/maths/calculator/core/labels.js +29 -29
  180. package/dist/maths/calculator/core/plugin.js +19 -19
  181. package/dist/maths/calculator/core/terms.js +26 -26
  182. package/dist/maths/calculator/core/tokenizer.js +98 -98
  183. package/dist/maths/calculator/core/tokens.js +59 -59
  184. package/dist/maths/calculator/css/calculator.css +7 -7
  185. package/dist/maths/calculator/css/calculator.css.map +1 -1
  186. package/dist/maths/calculator/defaultCalculator.js +23 -23
  187. package/dist/maths/calculator/plugins/core/degrad.js +22 -22
  188. package/dist/maths/calculator/plugins/core/history.js +45 -45
  189. package/dist/maths/calculator/plugins/core/remind.js +22 -22
  190. package/dist/maths/calculator/plugins/core/stepNavigation.js +31 -31
  191. package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +61 -61
  192. package/dist/maths/calculator/plugins/modifiers/pow10.js +35 -35
  193. package/dist/maths/calculator/plugins/modifiers/sign.js +90 -90
  194. package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +60 -60
  195. package/dist/maths/calculator/pluginsLoader.js +21 -21
  196. package/dist/maths/calculator/scientificCalculator.js +91 -91
  197. package/dist/mediaEditor/mediaEditorComponent.js +64 -64
  198. package/dist/mediaEditor/plugins/mediaAlignment/helper.js +16 -16
  199. package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +60 -60
  200. package/dist/mediaEditor/plugins/mediaAlignment/style.css +7 -7
  201. package/dist/mediaEditor/plugins/mediaDimension/helper.js +70 -70
  202. package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +153 -153
  203. package/dist/mediaEditor/plugins/mediaDimension/style.css +141 -141
  204. package/dist/mediaplayer/css/player.css +7 -7
  205. package/dist/mediaplayer/css/player.css.map +1 -1
  206. package/dist/mediaplayer/players/html5.js +65 -65
  207. package/dist/mediaplayer/players/youtube.js +52 -52
  208. package/dist/mediaplayer/players.js +18 -18
  209. package/dist/mediaplayer/support.js +55 -55
  210. package/dist/mediaplayer/utils/reminder.js +100 -100
  211. package/dist/mediaplayer/utils/timeObserver.js +92 -92
  212. package/dist/mediaplayer/youtubeManager.js +35 -35
  213. package/dist/mediaplayer.js +460 -460
  214. package/dist/mediasizer.js +135 -135
  215. package/dist/modal.js +87 -87
  216. package/dist/movableComponent.js +35 -35
  217. package/dist/pageSizeSelector.js +44 -44
  218. package/dist/pageStatus.js +33 -33
  219. package/dist/pagination/css/pagination.css +7 -7
  220. package/dist/pagination/css/pagination.css.map +1 -1
  221. package/dist/pagination/paginationStrategy.js +23 -23
  222. package/dist/pagination/providers/pages.js +37 -37
  223. package/dist/pagination/providers/simple.js +35 -35
  224. package/dist/pagination.js +45 -45
  225. package/dist/previewer.js +67 -67
  226. package/dist/progressbar.js +58 -58
  227. package/dist/propertySelector/css/propertySelector.css +74 -0
  228. package/dist/propertySelector/css/propertySelector.css.map +1 -0
  229. package/dist/propertySelector/propertySelector.js +533 -0
  230. package/dist/report.js +86 -86
  231. package/dist/resource/css/selector.css +7 -7
  232. package/dist/resource/css/selector.css.map +1 -1
  233. package/dist/resource/filters.js +73 -73
  234. package/dist/resource/list.js +66 -66
  235. package/dist/resource/selectable.js +92 -92
  236. package/dist/resource/selector.js +195 -195
  237. package/dist/resource/tree.js +104 -104
  238. package/dist/resourcemgr/css/resourcemgr.css +7 -7
  239. package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
  240. package/dist/resourcemgr/fileBrowser.js +88 -88
  241. package/dist/resourcemgr/fileSelector.js +58 -58
  242. package/dist/resourcemgr/util/updatePermissions.js +4 -4
  243. package/dist/resourcemgr.js +62 -62
  244. package/dist/scroller.js +26 -26
  245. package/dist/searchModal/advancedSearch.js +355 -161
  246. package/dist/searchModal/css/advancedSearch.css +7 -14
  247. package/dist/searchModal/css/advancedSearch.css.map +1 -1
  248. package/dist/searchModal/css/searchModal.css +29 -8
  249. package/dist/searchModal/css/searchModal.css.map +1 -1
  250. package/dist/searchModal.js +574 -190
  251. package/dist/selecter.js +6 -6
  252. package/dist/stacker.js +43 -43
  253. package/dist/switch/css/switch.css +7 -7
  254. package/dist/switch/css/switch.css.map +1 -1
  255. package/dist/switch/switch.js +75 -75
  256. package/dist/tableModel.js +33 -33
  257. package/dist/tabs/css/tabs.css +12 -12
  258. package/dist/tabs/css/tabs.css.map +1 -1
  259. package/dist/tabs.js +217 -217
  260. package/dist/taskQueue/css/taskQueue.css +7 -7
  261. package/dist/taskQueue/css/taskQueue.css.map +1 -1
  262. package/dist/taskQueue/status.js +72 -72
  263. package/dist/taskQueue/table.js +67 -67
  264. package/dist/taskQueue/taskQueue.js +18 -18
  265. package/dist/taskQueue/taskQueueModel.js +86 -86
  266. package/dist/taskQueue.js +47 -47
  267. package/dist/taskQueueButton/css/taskable.css +7 -7
  268. package/dist/taskQueueButton/css/taskable.css.map +1 -1
  269. package/dist/taskQueueButton/css/treeButton.css +7 -7
  270. package/dist/taskQueueButton/css/treeButton.css.map +1 -1
  271. package/dist/taskQueueButton/standardButton.js +39 -39
  272. package/dist/taskQueueButton/taskable.js +54 -54
  273. package/dist/taskQueueButton/treeButton.js +56 -56
  274. package/dist/themeLoader.js +75 -75
  275. package/dist/themes.js +84 -84
  276. package/dist/toggler.js +57 -57
  277. package/dist/tooltip.js +54 -54
  278. package/dist/tooltipster.js +17 -17
  279. package/dist/transformer.js +117 -117
  280. package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
  281. package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
  282. package/dist/tristateCheckboxGroup.js +75 -75
  283. package/dist/uploader.js +158 -158
  284. package/dist/validator/validators.js +48 -48
  285. package/dist/validator.js +24 -24
  286. package/dist/waitForMedia.js +33 -33
  287. package/dist/waitingDialog/css/waitingDialog.css +7 -7
  288. package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
  289. package/dist/waitingDialog/waitingDialog.js +54 -54
  290. package/package.json +108 -107
  291. package/scss/basic.scss +16 -16
  292. package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +59 -59
  293. package/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -59
  294. package/scss/font/tao/tao.svg +234 -234
  295. package/scss/inc/_base.scss +495 -495
  296. package/scss/inc/_bootstrap.scss +6 -6
  297. package/scss/inc/_buttons.scss +114 -114
  298. package/scss/inc/_colors.scss +93 -88
  299. package/scss/inc/_feedback.scss +150 -150
  300. package/scss/inc/_flex-grid.scss +15 -15
  301. package/scss/inc/_fonts.scss +4 -4
  302. package/scss/inc/_forms.scss +832 -832
  303. package/scss/inc/_functions.scss +283 -283
  304. package/scss/inc/_jquery.nouislider.scss +254 -254
  305. package/scss/inc/_normalize.scss +528 -528
  306. package/scss/inc/_report.scss +67 -67
  307. package/scss/inc/_secondary-properties.scss +89 -89
  308. package/scss/inc/_select2.scss +634 -634
  309. package/scss/inc/_toolbars.scss +155 -155
  310. package/scss/inc/_tooltip.scss +312 -312
  311. package/scss/inc/_variables.scss +21 -21
  312. package/scss/inc/base/_highlight.scss +5 -5
  313. package/scss/inc/base/_list-style.scss +58 -58
  314. package/scss/inc/base/_svg.scss +3 -3
  315. package/scss/inc/base/_table.scss +62 -62
  316. package/scss/inc/fonts/_source-sans-pro.scss +29 -29
  317. package/scss/inc/fonts/_tao-icon-classes.scss +226 -226
  318. package/scss/inc/fonts/_tao-icon-def.scss +12 -12
  319. package/scss/inc/fonts/_tao-icon-vars.scss +240 -240
  320. package/src/actionbar/tpl/main.tpl +8 -8
  321. package/src/actionbar.js +251 -251
  322. package/src/adder.js +250 -250
  323. package/src/animable/absorbable/absorbable.js +134 -134
  324. package/src/animable/absorbable/css/absorb.css +7 -7
  325. package/src/animable/absorbable/css/absorb.css.map +1 -1
  326. package/src/animable/absorbable/scss/absorb.scss +37 -37
  327. package/src/animable/pulsable/css/pulse.css +7 -7
  328. package/src/animable/pulsable/css/pulse.css.map +1 -1
  329. package/src/animable/pulsable/pulsable.js +90 -90
  330. package/src/animable/pulsable/scss/pulse.scss +22 -22
  331. package/src/areaBroker.js +160 -160
  332. package/src/autocomplete/css/autocomplete.css +7 -7
  333. package/src/autocomplete/css/autocomplete.css.map +1 -1
  334. package/src/autocomplete/scss/autocomplete.scss +37 -37
  335. package/src/autocomplete.js +1029 -1029
  336. package/src/autoscroll.js +57 -57
  337. package/src/badge/badge.js +119 -119
  338. package/src/badge/css/badge.css +7 -7
  339. package/src/badge/css/badge.css.map +1 -1
  340. package/src/badge/scss/badge.scss +92 -92
  341. package/src/badge/tpl/badge.tpl +4 -4
  342. package/src/breadcrumbs/css/breadcrumbs.css +7 -7
  343. package/src/breadcrumbs/css/breadcrumbs.css.map +1 -1
  344. package/src/breadcrumbs/scss/breadcrumbs.scss +52 -52
  345. package/src/breadcrumbs/tpl/breadcrumbs.tpl +20 -20
  346. package/src/breadcrumbs.js +99 -99
  347. package/src/btngrouper.js +213 -213
  348. package/src/bulkActionPopup/css/bulkActionPopup.css +7 -7
  349. package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
  350. package/src/bulkActionPopup/scss/bulkActionPopup.scss +63 -63
  351. package/src/bulkActionPopup/tpl/layout.tpl +76 -76
  352. package/src/bulkActionPopup/tpl/select.tpl +8 -8
  353. package/src/bulkActionPopup.js +274 -274
  354. package/src/button/tpl/button.tpl +4 -4
  355. package/src/button.js +135 -135
  356. package/src/calculator/css/calculator.css +10 -10
  357. package/src/calculator/css/calculator.css.map +1 -1
  358. package/src/calculator/scss/calculator.scss +139 -139
  359. package/src/calculator.js +188 -188
  360. package/src/cascadingComboBox.js +126 -126
  361. package/src/ckeditor/ckConfigurator.js +736 -736
  362. package/src/ckeditor/dtdHandler.js +1030 -1030
  363. package/src/class/css/selector.css +7 -7
  364. package/src/class/css/selector.css.map +1 -1
  365. package/src/class/scss/selector.scss +101 -101
  366. package/src/class/selector.js +329 -329
  367. package/src/class/tpl/listItem.tpl +9 -9
  368. package/src/class/tpl/selector.tpl +10 -10
  369. package/src/component/alignable.js +274 -274
  370. package/src/component/containable.js +122 -122
  371. package/src/component/css/components.css +7 -7
  372. package/src/component/css/components.css.map +1 -1
  373. package/src/component/css/windowComponent.css +7 -7
  374. package/src/component/css/windowComponent.css.map +1 -1
  375. package/src/component/draggable.js +104 -104
  376. package/src/component/placeable.js +233 -233
  377. package/src/component/resizable.js +195 -195
  378. package/src/component/scss/components.scss +507 -507
  379. package/src/component/scss/windowComponent.scss +62 -62
  380. package/src/component/stackable.js +67 -67
  381. package/src/component/tpl/window.tpl +7 -7
  382. package/src/component/windowed.js +206 -206
  383. package/src/component.js +401 -401
  384. package/src/container.js +200 -200
  385. package/src/contextualPopup/css/contextualPopup.css +7 -7
  386. package/src/contextualPopup/css/contextualPopup.css.map +1 -1
  387. package/src/contextualPopup/scss/contextualPopup.scss +78 -78
  388. package/src/contextualPopup/tpl/popup.tpl +10 -10
  389. package/src/contextualPopup.js +297 -297
  390. package/src/css/basic.css +103 -103
  391. package/src/css/basic.css.map +1 -1
  392. package/src/dashboard/css/dashboard.css +7 -7
  393. package/src/dashboard/css/dashboard.css.map +1 -1
  394. package/src/dashboard/scss/dashboard.scss +93 -93
  395. package/src/dashboard/tpl/dashboard.tpl +16 -16
  396. package/src/dashboard/tpl/dashboardMetricsList.tpl +15 -15
  397. package/src/dashboard.js +184 -184
  398. package/src/datalist/css/datalist.css +7 -7
  399. package/src/datalist/css/datalist.css.map +1 -1
  400. package/src/datalist/scss/datalist.scss +116 -116
  401. package/src/datalist/tpl/list.tpl +24 -24
  402. package/src/datalist/tpl/main.tpl +44 -44
  403. package/src/datalist.js +500 -500
  404. package/src/datatable/css/datatable.css +11 -7
  405. package/src/datatable/css/datatable.css.map +1 -1
  406. package/src/datatable/filterStrategy/filterStrategy.js +70 -70
  407. package/src/datatable/filterStrategy/multiple.js +126 -126
  408. package/src/datatable/filterStrategy/single.js +108 -108
  409. package/src/datatable/scss/datatable.scss +149 -146
  410. package/src/datatable/tpl/button.tpl +6 -6
  411. package/src/datatable/tpl/layout.tpl +158 -158
  412. package/src/datatable.js +1056 -1056
  413. package/src/dateRange/css/dateRange.css +7 -7
  414. package/src/dateRange/css/dateRange.css.map +1 -1
  415. package/src/dateRange/dateRange.js +341 -341
  416. package/src/dateRange/scss/dateRange.scss +7 -7
  417. package/src/dateRange/tpl/select.tpl +18 -18
  418. package/src/datetime/css/picker.css +7 -7
  419. package/src/datetime/css/picker.css.map +1 -1
  420. package/src/datetime/picker.js +576 -576
  421. package/src/datetime/scss/picker.scss +192 -192
  422. package/src/datetime/tpl/picker.tpl +18 -18
  423. package/src/deleter/undo.tpl +6 -6
  424. package/src/deleter.js +296 -296
  425. package/src/destination/css/selector.css +7 -7
  426. package/src/destination/css/selector.css.map +1 -1
  427. package/src/destination/scss/selector.scss +36 -36
  428. package/src/destination/selector.js +195 -195
  429. package/src/destination/tpl/selector.tpl +13 -13
  430. package/src/dialog/alert.js +70 -70
  431. package/src/dialog/confirm.js +85 -85
  432. package/src/dialog/confirmDelete.js +95 -95
  433. package/src/dialog/tpl/body.tpl +24 -24
  434. package/src/dialog/tpl/buttons.tpl +6 -6
  435. package/src/dialog/tpl/checkbox.tpl +5 -5
  436. package/src/dialog.js +517 -517
  437. package/src/disabler.js +230 -230
  438. package/src/documentViewer/css/documentViewer.css +7 -7
  439. package/src/documentViewer/css/documentViewer.css.map +1 -1
  440. package/src/documentViewer/providers/pdfViewer/fallback/viewer.js +69 -69
  441. package/src/documentViewer/providers/pdfViewer/pdfjs/areaBroker.js +41 -41
  442. package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.js +475 -475
  443. package/src/documentViewer/providers/pdfViewer/pdfjs/findBar.tpl +20 -20
  444. package/src/documentViewer/providers/pdfViewer/pdfjs/match.tpl +1 -1
  445. package/src/documentViewer/providers/pdfViewer/pdfjs/page.tpl +4 -4
  446. package/src/documentViewer/providers/pdfViewer/pdfjs/pageView.js +318 -318
  447. package/src/documentViewer/providers/pdfViewer/pdfjs/pagesManager.js +167 -167
  448. package/src/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +451 -451
  449. package/src/documentViewer/providers/pdfViewer/pdfjs/textManager.js +252 -252
  450. package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.js +299 -299
  451. package/src/documentViewer/providers/pdfViewer/pdfjs/viewer.tpl +16 -16
  452. package/src/documentViewer/providers/pdfViewer/pdfjs/wrapper.js +351 -351
  453. package/src/documentViewer/providers/pdfViewer.js +93 -93
  454. package/src/documentViewer/scss/documentViewer.scss +184 -184
  455. package/src/documentViewer/viewerFactory.js +191 -191
  456. package/src/documentViewer.js +238 -238
  457. package/src/dropdown/css/dropdown.css +7 -7
  458. package/src/dropdown/css/dropdown.css.map +1 -1
  459. package/src/dropdown/scss/dropdown.scss +99 -99
  460. package/src/dropdown/tpl/dropdown.tpl +8 -8
  461. package/src/dropdown/tpl/list-item.tpl +4 -4
  462. package/src/dropdown.js +255 -255
  463. package/src/durationer.js +222 -222
  464. package/src/dynamicComponent/css/dynamicComponent.css +7 -7
  465. package/src/dynamicComponent/css/dynamicComponent.css.map +1 -1
  466. package/src/dynamicComponent/scss/dynamicComponent.scss +98 -98
  467. package/src/dynamicComponent/tpl/layout.tpl +17 -17
  468. package/src/dynamicComponent.js +554 -554
  469. package/src/feedback/feedback.tpl +7 -7
  470. package/src/feedback.js +295 -295
  471. package/src/figure/FigureStateActive.js +174 -174
  472. package/src/filesender.js +114 -114
  473. package/src/filter/template.tpl +5 -5
  474. package/src/filter.js +135 -135
  475. package/src/form/css/dropdownForm.css +7 -7
  476. package/src/form/css/dropdownForm.css.map +1 -1
  477. package/src/form/css/form.css +7 -7
  478. package/src/form/css/form.css.map +1 -1
  479. package/src/form/dropdownForm.js +281 -281
  480. package/src/form/form.js +688 -688
  481. package/src/form/scss/dropdownForm.scss +60 -60
  482. package/src/form/scss/form.scss +25 -25
  483. package/src/form/simpleForm.js +125 -125
  484. package/src/form/tpl/dropdownForm.tpl +4 -4
  485. package/src/form/tpl/form.tpl +7 -7
  486. package/src/form/validator/css/validator.css +7 -7
  487. package/src/form/validator/css/validator.css.map +1 -1
  488. package/src/form/validator/renderer.js +118 -118
  489. package/src/form/validator/scss/validator.scss +14 -14
  490. package/src/form/validator/tpl/message.tpl +1 -1
  491. package/src/form/validator/tpl/validator.tpl +1 -1
  492. package/src/form/validator/validator.js +220 -220
  493. package/src/form/widget/css/widget.css +7 -7
  494. package/src/form/widget/css/widget.css.map +1 -1
  495. package/src/form/widget/definitions.js +51 -51
  496. package/src/form/widget/loader.js +40 -40
  497. package/src/form/widget/providers/checkBox.js +138 -138
  498. package/src/form/widget/providers/comboBox.js +63 -63
  499. package/src/form/widget/providers/default.js +90 -90
  500. package/src/form/widget/providers/hidden.js +62 -62
  501. package/src/form/widget/providers/hiddenBox.js +152 -152
  502. package/src/form/widget/providers/radioBox.js +99 -99
  503. package/src/form/widget/providers/textArea.js +52 -52
  504. package/src/form/widget/providers/textBox.js +48 -48
  505. package/src/form/widget/scss/widget.scss +55 -55
  506. package/src/form/widget/tpl/checkBox.tpl +25 -25
  507. package/src/form/widget/tpl/comboBox.tpl +13 -13
  508. package/src/form/widget/tpl/hidden.tpl +1 -1
  509. package/src/form/widget/tpl/hiddenBox.tpl +17 -17
  510. package/src/form/widget/tpl/label.tpl +6 -6
  511. package/src/form/widget/tpl/radioBox.tpl +25 -25
  512. package/src/form/widget/tpl/textArea.tpl +8 -8
  513. package/src/form/widget/tpl/widget.tpl +8 -8
  514. package/src/form/widget/widget.js +372 -372
  515. package/src/form.js +53 -53
  516. package/src/formValidator/formValidator.js +253 -253
  517. package/src/formValidator/highlighters/highlighter.js +102 -102
  518. package/src/formValidator/highlighters/message.js +70 -70
  519. package/src/formValidator/highlighters/tooltip.js +78 -78
  520. package/src/generis/form/css/form.css +7 -7
  521. package/src/generis/form/css/form.css.map +1 -1
  522. package/src/generis/form/form.js +239 -239
  523. package/src/generis/form/readme.md +70 -70
  524. package/src/generis/form/scss/form.scss +23 -23
  525. package/src/generis/form/tpl/form.tpl +16 -16
  526. package/src/generis/validator/css/validator.css +7 -7
  527. package/src/generis/validator/css/validator.css.map +1 -1
  528. package/src/generis/validator/readme.md +46 -46
  529. package/src/generis/validator/scss/validator.scss +13 -13
  530. package/src/generis/validator/validator.js +128 -128
  531. package/src/generis/widget/checkBox/checkBox.js +112 -112
  532. package/src/generis/widget/checkBox/checkBox.tpl +18 -18
  533. package/src/generis/widget/comboBox/comboBox.js +67 -67
  534. package/src/generis/widget/comboBox/comboBox.tpl +12 -12
  535. package/src/generis/widget/css/widget.css +7 -7
  536. package/src/generis/widget/css/widget.css.map +1 -1
  537. package/src/generis/widget/hiddenBox/hiddenBox.js +132 -132
  538. package/src/generis/widget/hiddenBox/hiddenBox.tpl +16 -16
  539. package/src/generis/widget/loader.js +49 -49
  540. package/src/generis/widget/readme.md +59 -59
  541. package/src/generis/widget/scss/widget.scss +61 -61
  542. package/src/generis/widget/textBox/textBox.js +65 -65
  543. package/src/generis/widget/textBox/textBox.tpl +7 -7
  544. package/src/generis/widget/widget.js +164 -164
  545. package/src/generis/widget/widget.tpl +5 -5
  546. package/src/groupedComboBox.js +99 -99
  547. package/src/groupvalidator.js +84 -84
  548. package/src/hider.js +88 -88
  549. package/src/highlighter.js +1166 -1166
  550. package/src/image/ImgStateActive/extractLabel.js +29 -29
  551. package/src/image/ImgStateActive/helper.js +36 -36
  552. package/src/image/ImgStateActive/initHelper.js +137 -137
  553. package/src/image/ImgStateActive/initMediaEditor.js +92 -92
  554. package/src/image/ImgStateActive/mediaSizer.js +63 -63
  555. package/src/image/ImgStateActive.js +115 -115
  556. package/src/incrementer.js +319 -319
  557. package/src/inplacer.js +316 -316
  558. package/src/interactUtils.js +140 -140
  559. package/src/itemButtonList/css/item-button-list.css +23 -23
  560. package/src/itemButtonList/css/item-button-list.css.map +1 -1
  561. package/src/itemButtonList/scss/item-button-list.scss +236 -236
  562. package/src/itemButtonList/tpl/itemButtonList.tpl +21 -21
  563. package/src/itemButtonList.js +274 -274
  564. package/src/keyNavigation/navigableDomElement.js +282 -282
  565. package/src/keyNavigation/navigator.js +543 -543
  566. package/src/listbox/css/listbox.css +7 -7
  567. package/src/listbox/css/listbox.css.map +1 -1
  568. package/src/listbox/scss/listbox.scss +116 -116
  569. package/src/listbox/tpl/list.tpl +14 -14
  570. package/src/listbox/tpl/main.tpl +9 -9
  571. package/src/listbox.js +251 -251
  572. package/src/liststyler.js +155 -155
  573. package/src/loadingButton/css/button.css +7 -7
  574. package/src/loadingButton/css/button.css.map +1 -1
  575. package/src/loadingButton/loadingButton.js +110 -110
  576. package/src/loadingButton/scss/button.scss +41 -41
  577. package/src/loadingButton/tpl/button.tpl +5 -5
  578. package/src/lock/lock.tpl +16 -16
  579. package/src/lock.js +395 -395
  580. package/src/login/login.js +322 -322
  581. package/src/login/tpl/login.tpl +29 -29
  582. package/src/login/tpl/passwordReveal.tpl +7 -7
  583. package/src/maths/calculator/basicCalculator.js +55 -55
  584. package/src/maths/calculator/calculatorComponent.js +128 -128
  585. package/src/maths/calculator/core/areaBroker.js +38 -38
  586. package/src/maths/calculator/core/board.js +841 -841
  587. package/src/maths/calculator/core/expression.js +430 -430
  588. package/src/maths/calculator/core/labels.js +116 -116
  589. package/src/maths/calculator/core/plugin.js +40 -40
  590. package/src/maths/calculator/core/terms.js +459 -459
  591. package/src/maths/calculator/core/tokenizer.js +245 -245
  592. package/src/maths/calculator/core/tokens.js +178 -178
  593. package/src/maths/calculator/core/tpl/board.tpl +4 -4
  594. package/src/maths/calculator/css/calculator.css +7 -7
  595. package/src/maths/calculator/css/calculator.css.map +1 -1
  596. package/src/maths/calculator/defaultCalculator.js +66 -66
  597. package/src/maths/calculator/plugins/core/degrad.js +90 -90
  598. package/src/maths/calculator/plugins/core/history.js +166 -166
  599. package/src/maths/calculator/plugins/core/remind.js +96 -96
  600. package/src/maths/calculator/plugins/core/stepNavigation.js +175 -175
  601. package/src/maths/calculator/plugins/keyboard/templateKeyboard/defaultTemplate.tpl +36 -36
  602. package/src/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +91 -91
  603. package/src/maths/calculator/plugins/modifiers/pow10.js +143 -143
  604. package/src/maths/calculator/plugins/modifiers/sign.js +339 -339
  605. package/src/maths/calculator/plugins/screen/simpleScreen/defaultTemplate.tpl +3 -3
  606. package/src/maths/calculator/plugins/screen/simpleScreen/history.tpl +3 -3
  607. package/src/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +191 -191
  608. package/src/maths/calculator/pluginsLoader.js +46 -46
  609. package/src/maths/calculator/scientificCalculator.js +74 -74
  610. package/src/maths/calculator/scss/calculator.scss +396 -396
  611. package/src/maths/calculator/tpl/basicKeyboard.tpl +37 -37
  612. package/src/maths/calculator/tpl/basicScreen.tpl +2 -2
  613. package/src/maths/calculator/tpl/scientificKeyboard.tpl +61 -61
  614. package/src/maths/calculator/tpl/scientificScreen.tpl +3 -3
  615. package/src/mediaEditor/mediaEditorComponent.js +141 -141
  616. package/src/mediaEditor/plugins/mediaAlignment/helper.js +62 -62
  617. package/src/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +99 -99
  618. package/src/mediaEditor/plugins/mediaAlignment/style.css +7 -7
  619. package/src/mediaEditor/plugins/mediaAlignment/tpl/mediaAlignment.tpl +25 -25
  620. package/src/mediaEditor/plugins/mediaDimension/helper.js +189 -189
  621. package/src/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +561 -561
  622. package/src/mediaEditor/plugins/mediaDimension/style.css +141 -141
  623. package/src/mediaEditor/plugins/mediaDimension/tpl/mediaDimension.tpl +55 -55
  624. package/src/mediaEditor/tpl/editor.tpl +4 -4
  625. package/src/mediaplayer/css/player.css +7 -7
  626. package/src/mediaplayer/css/player.css.map +1 -1
  627. package/src/mediaplayer/players/html5.js +564 -564
  628. package/src/mediaplayer/players/youtube.js +323 -323
  629. package/src/mediaplayer/players.js +29 -29
  630. package/src/mediaplayer/readme.md +305 -305
  631. package/src/mediaplayer/scss/player.scss +569 -569
  632. package/src/mediaplayer/support.js +126 -126
  633. package/src/mediaplayer/tpl/audio.tpl +6 -6
  634. package/src/mediaplayer/tpl/player.tpl +37 -37
  635. package/src/mediaplayer/tpl/source.tpl +1 -1
  636. package/src/mediaplayer/tpl/video.tpl +6 -6
  637. package/src/mediaplayer/tpl/youtube.tpl +1 -1
  638. package/src/mediaplayer/utils/reminder.js +184 -184
  639. package/src/mediaplayer/utils/timeObserver.js +143 -143
  640. package/src/mediaplayer/youtubeManager.js +161 -161
  641. package/src/mediaplayer.js +1606 -1606
  642. package/src/mediasizer/mediasizer.tpl +55 -55
  643. package/src/mediasizer.js +635 -635
  644. package/src/modal.js +365 -365
  645. package/src/movableComponent.js +78 -78
  646. package/src/pageSizeSelector/tpl/pageSizeSelector.tpl +9 -9
  647. package/src/pageSizeSelector.js +107 -107
  648. package/src/pageStatus.js +147 -147
  649. package/src/pagination/css/pagination.css +7 -7
  650. package/src/pagination/css/pagination.css.map +1 -1
  651. package/src/pagination/paginationStrategy.js +53 -53
  652. package/src/pagination/providers/pages.js +161 -161
  653. package/src/pagination/providers/simple.js +74 -74
  654. package/src/pagination/providers/tpl/pages/page.tpl +1 -1
  655. package/src/pagination/providers/tpl/pages.tpl +8 -8
  656. package/src/pagination/providers/tpl/simple.tpl +7 -7
  657. package/src/pagination/scss/pagination.scss +111 -111
  658. package/src/pagination.js +237 -237
  659. package/src/previewer.js +300 -300
  660. package/src/progressbar.js +165 -165
  661. package/src/propertySelector/css/propertySelector.css +74 -0
  662. package/src/propertySelector/css/propertySelector.css.map +1 -0
  663. package/src/propertySelector/propertySelector.js +286 -0
  664. package/src/propertySelector/scss/propertySelector.scss +66 -0
  665. package/src/propertySelector/tpl/highlighted-text.tpl +1 -0
  666. package/src/propertySelector/tpl/property-description.tpl +13 -0
  667. package/src/propertySelector/tpl/property-selector.tpl +7 -0
  668. package/src/report/feedback.tpl +11 -11
  669. package/src/report/layout.tpl +10 -10
  670. package/src/report.js +184 -184
  671. package/src/resource/css/selector.css +7 -7
  672. package/src/resource/css/selector.css.map +1 -1
  673. package/src/resource/filters.js +208 -208
  674. package/src/resource/list.js +200 -200
  675. package/src/resource/scss/_filters.scss +26 -26
  676. package/src/resource/scss/_resource-list.scss +107 -107
  677. package/src/resource/scss/_resource-tree.scss +205 -205
  678. package/src/resource/scss/selector.scss +187 -187
  679. package/src/resource/selectable.js +322 -322
  680. package/src/resource/selector.js +871 -871
  681. package/src/resource/tpl/filters.tpl +2 -2
  682. package/src/resource/tpl/list.tpl +7 -7
  683. package/src/resource/tpl/listNode.tpl +4 -4
  684. package/src/resource/tpl/selector.tpl +46 -46
  685. package/src/resource/tpl/tree.tpl +4 -4
  686. package/src/resource/tpl/treeNode.tpl +30 -30
  687. package/src/resource/tree.js +400 -400
  688. package/src/resourcemgr/css/resourcemgr.css +7 -7
  689. package/src/resourcemgr/css/resourcemgr.css.map +1 -1
  690. package/src/resourcemgr/fileBrowser.js +381 -381
  691. package/src/resourcemgr/filePreview.js +73 -73
  692. package/src/resourcemgr/fileSelector.js +348 -348
  693. package/src/resourcemgr/scss/resourcemgr.scss +254 -254
  694. package/src/resourcemgr/tpl/fileSelect.tpl +39 -39
  695. package/src/resourcemgr/tpl/folder.tpl +11 -11
  696. package/src/resourcemgr/tpl/layout.tpl +84 -84
  697. package/src/resourcemgr/tpl/rootFolder.tpl +13 -13
  698. package/src/resourcemgr/util/updatePermissions.js +53 -53
  699. package/src/resourcemgr.js +216 -216
  700. package/src/scroller.js +94 -94
  701. package/src/scss/basic.scss +16 -16
  702. package/src/searchModal/advancedSearch.js +638 -601
  703. package/src/searchModal/css/advancedSearch.css +7 -14
  704. package/src/searchModal/css/advancedSearch.css.map +1 -1
  705. package/src/searchModal/css/searchModal.css +29 -8
  706. package/src/searchModal/css/searchModal.css.map +1 -1
  707. package/src/searchModal/scss/advancedSearch.scss +171 -177
  708. package/src/searchModal/scss/searchModal.scss +393 -375
  709. package/src/searchModal/tpl/advanced-search.tpl +9 -9
  710. package/src/searchModal/tpl/criteria-alias.tpl +1 -0
  711. package/src/searchModal/tpl/criteria-class-label.tpl +1 -0
  712. package/src/searchModal/tpl/criteria-label.tpl +1 -0
  713. package/src/searchModal/tpl/highlighted-text.tpl +1 -0
  714. package/src/searchModal/tpl/info-message.tpl +3 -3
  715. package/src/searchModal/tpl/invalid-criteria-warning.tpl +10 -10
  716. package/src/searchModal/tpl/layout.tpl +27 -25
  717. package/src/searchModal/tpl/list-checkbox-criterion.tpl +17 -12
  718. package/src/searchModal/tpl/list-select-criterion.tpl +12 -6
  719. package/src/searchModal/tpl/property-select-button.tpl +1 -0
  720. package/src/searchModal/tpl/results-container.tpl +1 -0
  721. package/src/searchModal/tpl/text-criterion.tpl +11 -6
  722. package/src/searchModal.js +761 -496
  723. package/src/selecter.js +43 -43
  724. package/src/stacker.js +133 -133
  725. package/src/switch/css/switch.css +7 -7
  726. package/src/switch/css/switch.css.map +1 -1
  727. package/src/switch/scss/switch.scss +83 -83
  728. package/src/switch/switch.js +195 -195
  729. package/src/switch/tpl/switch.tpl +7 -7
  730. package/src/tableModel.js +112 -112
  731. package/src/tabs/css/tabs.css +12 -12
  732. package/src/tabs/css/tabs.css.map +1 -1
  733. package/src/tabs/scss/tabs.scss +50 -50
  734. package/src/tabs/tpl/panel.tpl +3 -3
  735. package/src/tabs/tpl/tabs.tpl +10 -10
  736. package/src/tabs.js +528 -528
  737. package/src/taskQueue/css/taskQueue.css +7 -7
  738. package/src/taskQueue/css/taskQueue.css.map +1 -1
  739. package/src/taskQueue/scss/taskQueue.scss +47 -47
  740. package/src/taskQueue/status.js +228 -228
  741. package/src/taskQueue/table.js +350 -350
  742. package/src/taskQueue/taskQueue.js +33 -33
  743. package/src/taskQueue/taskQueueModel.js +548 -548
  744. package/src/taskQueue/tpl/statusMessage.tpl +7 -7
  745. package/src/taskQueue.js +218 -218
  746. package/src/taskQueueButton/css/taskable.css +7 -7
  747. package/src/taskQueueButton/css/taskable.css.map +1 -1
  748. package/src/taskQueueButton/css/treeButton.css +7 -7
  749. package/src/taskQueueButton/css/treeButton.css.map +1 -1
  750. package/src/taskQueueButton/scss/taskable.scss +4 -4
  751. package/src/taskQueueButton/scss/treeButton.scss +34 -34
  752. package/src/taskQueueButton/standardButton.js +108 -108
  753. package/src/taskQueueButton/taskable.js +202 -202
  754. package/src/taskQueueButton/tpl/report.tpl +5 -5
  755. package/src/taskQueueButton/tpl/treeButton.tpl +6 -6
  756. package/src/taskQueueButton/treeButton.js +109 -109
  757. package/src/themeLoader.js +252 -252
  758. package/src/themes.js +162 -162
  759. package/src/toggler.js +200 -200
  760. package/src/tooltip/default.tpl +3 -3
  761. package/src/tooltip.js +160 -160
  762. package/src/tooltipster.js +25 -25
  763. package/src/transformer.js +327 -327
  764. package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css +7 -7
  765. package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
  766. package/src/tristateCheckboxGroup/scss/tristateCheckboxGroup.scss +15 -15
  767. package/src/tristateCheckboxGroup/tpl/li.tpl +6 -6
  768. package/src/tristateCheckboxGroup.js +207 -207
  769. package/src/uploader/fileEntry.tpl +6 -6
  770. package/src/uploader/uploader.tpl +32 -32
  771. package/src/uploader.js +594 -594
  772. package/src/validator/Report.js +10 -10
  773. package/src/validator/Validator.js +108 -108
  774. package/src/validator/validators.js +220 -220
  775. package/src/validator.js +264 -264
  776. package/src/waitForMedia.js +82 -82
  777. package/src/waitingDialog/css/waitingDialog.css +7 -7
  778. package/src/waitingDialog/css/waitingDialog.css.map +1 -1
  779. package/src/waitingDialog/scss/waitingDialog.scss +34 -34
  780. package/src/waitingDialog/waitingDialog.js +240 -240
@@ -1,4 +1,4 @@
1
- define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/purify', 'css!ui/searchModal/css/searchModal.css', 'ui/component', 'ui/modal', 'ui/datatable', 'core/store', 'ui/resource/selector', 'ui/searchModal/advancedSearch', 'core/dataProvider/request', 'util/url', 'select2', 'util/shortcut/registry'], function ($$1, _, __, context, Handlebars, DOMPurify, searchModal_css, component, modal, datatable, store, resourceSelectorFactory, advancedSearchFactory, request, urlUtil, select2, shortcutRegistry) { 'use strict';
1
+ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/purify', 'css!ui/searchModal/css/searchModal.css', 'ui/component', 'ui/modal', 'ui/datatable', 'core/store', 'ui/resource/selector', 'ui/propertySelector/propertySelector', 'ui/searchModal/advancedSearch', 'core/dataProvider/request', 'util/url', 'select2', 'util/shortcut/registry'], function ($$1, _, __, context, Handlebars, DOMPurify, searchModal_css, component, modal, datatable, store, resourceSelectorFactory, propertySelectorFactory, advancedSearchFactory, request, urlUtil, select2, shortcutRegistry) { 'use strict';
2
2
 
3
3
  $$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
4
4
  _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
@@ -9,6 +9,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
9
9
  component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
10
10
  store = store && Object.prototype.hasOwnProperty.call(store, 'default') ? store['default'] : store;
11
11
  resourceSelectorFactory = resourceSelectorFactory && Object.prototype.hasOwnProperty.call(resourceSelectorFactory, 'default') ? resourceSelectorFactory['default'] : resourceSelectorFactory;
12
+ propertySelectorFactory = propertySelectorFactory && Object.prototype.hasOwnProperty.call(propertySelectorFactory, 'default') ? propertySelectorFactory['default'] : propertySelectorFactory;
12
13
  advancedSearchFactory = advancedSearchFactory && Object.prototype.hasOwnProperty.call(advancedSearchFactory, 'default') ? advancedSearchFactory['default'] : advancedSearchFactory;
13
14
  request = request && Object.prototype.hasOwnProperty.call(request, 'default') ? request['default'] : request;
14
15
  urlUtil = urlUtil && Object.prototype.hasOwnProperty.call(urlUtil, 'default') ? urlUtil['default'] : urlUtil;
@@ -70,24 +71,24 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
70
71
  hb.registerHelper('__', function (key) {
71
72
  return __(key);
72
73
  });
73
- /**
74
- * Register dompurify helper
75
- *
76
- * https://github.com/cure53/DOMPurify
77
- * with config SAFE_FOR_TEMPLATES: true
78
- * to make output safe for template systems
74
+ /**
75
+ * Register dompurify helper
76
+ *
77
+ * https://github.com/cure53/DOMPurify
78
+ * with config SAFE_FOR_TEMPLATES: true
79
+ * to make output safe for template systems
79
80
  */
80
81
 
81
82
  hb.registerHelper('dompurify', function (context) {
82
83
  return DOMPurify.sanitize(context);
83
84
  });
84
- /**
85
- * Register join helper
86
- *
87
- * Example :
88
- * var values = {a:v1, b:v2, c:v3};
89
- * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
90
- * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
85
+ /**
86
+ * Register join helper
87
+ *
88
+ * Example :
89
+ * var values = {a:v1, b:v2, c:v3};
90
+ * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
91
+ * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
91
92
  */
92
93
 
93
94
  hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
@@ -166,15 +167,15 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
166
167
  var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, helperMissing=helpers.helperMissing;
167
168
 
168
169
 
169
- buffer += "<div class=\"search-modal section-container\">\r\n <div class=\"clear content-wrapper content-panel\">\r\n <div class=\"ui-container\">\r\n <div class=\"filters-container\">\r\n <div class=\"basic-search-container\">\r\n <div class=\"filter-container\">\r\n <span class=\"icon-find\"></span>\r\n <input class=\"generic-search-input\" type=\"text\" placeholder=\"";
170
+ buffer += "<div class=\"search-modal section-container\">\n <div class=\"clear content-wrapper content-panel\">\n <div class=\"ui-container\">\n <div class=\"filters-container\">\n <div class=\"basic-search-container\">\n <div class=\"filter-container\">\n <span class=\"icon-find\"></span>\n <input class=\"generic-search-input\" type=\"text\" placeholder=\"";
170
171
  if (helper = helpers.placeholder) { stack1 = helper.call(depth0, {hash:{},data:data}); }
171
172
  else { helper = (depth0 && depth0.placeholder); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
172
173
  buffer += escapeExpression(stack1)
173
- + "\">\r\n </div>\r\n <div class=\"filter-container class-filter-container\">\r\n <span class=\"icon-folder\"></span>\r\n <span class=\"icon-down\"></span>\r\n <textarea class=\"class-filter\" cols=\"40\" rows=\"1\" readonly></textarea>\r\n <div class=\"class-tree\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"buttons-container\">\r\n <button class=\"btn-clear btn-transparent small\">"
174
+ + "\">\n </div>\n <div class=\"filter-container class-filter-container\">\n <span class=\"icon-folder\"></span>\n <span class=\"icon-down\"></span>\n <textarea class=\"class-filter\" cols=\"40\" rows=\"1\" readonly></textarea>\n <div class=\"class-tree\"></div>\n </div>\n </div>\n </div>\n <div class=\"buttons-container\">\n <button class=\"btn-clear btn-transparent small\">"
174
175
  + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Clear", options) : helperMissing.call(depth0, "__", "Clear", options)))
175
- + "</button>\r\n <button class=\"btn-search btn-info small\">"
176
+ + "</button>\n <button class=\"btn-search btn-info small\">"
176
177
  + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Search", options) : helperMissing.call(depth0, "__", "Search", options)))
177
- + "</button>\r\n </div>\r\n </div>\r\n <div class=\"content-container\" style=\"padding:40px 20px\">\r\n </div>\r\n </div>\r\n</div>";
178
+ + "</button>\n </div>\n </div>\n <div class=\"content-container\">\n <div class=\"content-toolbar\"></div>\n <div class=\"content-area\"></div>\n </div>\n </div>\n</div>";
178
179
  return buffer;
179
180
  });
180
181
  function layoutTpl(data, options, asString) {
@@ -188,65 +189,114 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
188
189
  }
189
190
  var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
190
191
  this.compilerInfo = [4,'>= 1.0.0'];
192
+ helpers = this.merge(helpers, Handlebars.helpers);
193
+
194
+
195
+ return "<div class=\"results-container flex-container-full\"></div>";
196
+ });
197
+ function resultsContainerTpl(data, options, asString) {
198
+ var html = Template$1(data, options);
199
+ return (asString || true) ? html : $(html);
200
+ }
201
+
202
+ if (!Helpers0.__initialized) {
203
+ Helpers0(Handlebars);
204
+ Helpers0.__initialized = true;
205
+ }
206
+ var Template$2 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
207
+ this.compilerInfo = [4,'>= 1.0.0'];
191
208
  helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
192
209
  var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
193
210
 
194
211
 
195
- buffer += "<div class='no-datatable-container'>\r\n <span class=\"no-datatable-icon ";
212
+ buffer += "<div class='no-datatable-container'>\n <span class=\"no-datatable-icon ";
196
213
  if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
197
214
  else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
198
215
  buffer += escapeExpression(stack1)
199
- + "\"></span>\r\n <p class=\"no-datatable-message\">";
216
+ + "\"></span>\n <p class=\"no-datatable-message\">";
200
217
  if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }
201
218
  else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
202
219
  buffer += escapeExpression(stack1)
203
- + "</p>\r\n</div>";
220
+ + "</p>\n</div>";
204
221
  return buffer;
205
222
  });
206
223
  function infoMessageTpl(data, options, asString) {
207
- var html = Template$1(data, options);
224
+ var html = Template$2(data, options);
208
225
  return (asString || true) ? html : $(html);
209
226
  }
210
227
 
211
- /**
212
- * Creates a searchModal instance
213
- *
214
- * @param {object} config
215
- * @param {object} config.renderTo - DOM element where component will be rendered to
216
- * @param {string} config.criterias - Search criteria to be set on component creation
217
- * @param {boolean} config.searchOnInit - if init search must be triggered or not (stored results are used instead)
218
- * @param {string} config.url - search endpoint to be set on datatable
219
- * @param {string} config.rootClassUri - Uri for the root class of current context, required to init the class filter
220
- * @param {bool} config.hideResourceSelector - if resourceSelector must be hidden
221
- * @param {string} config.placeholder - placeholder for input in template
222
- * @returns {searchModal}
228
+ if (!Helpers0.__initialized) {
229
+ Helpers0(Handlebars);
230
+ Helpers0.__initialized = true;
231
+ }
232
+ var Template$3 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
233
+ this.compilerInfo = [4,'>= 1.0.0'];
234
+ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
235
+ var buffer = "", helper, options, helperMissing=helpers.helperMissing, escapeExpression=this.escapeExpression;
236
+
237
+
238
+ buffer += "<a class=\"toggle-modal-button\"><span class=\"icon-add\"></span>"
239
+ + escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "manage columns", options) : helperMissing.call(depth0, "__", "manage columns", options)))
240
+ + "</a>";
241
+ return buffer;
242
+ });
243
+ function propertySelectButtonTpl(data, options, asString) {
244
+ var html = Template$3(data, options);
245
+ return (asString || true) ? html : $(html);
246
+ }
247
+
248
+ /**
249
+ * Creates a searchModal instance
250
+ *
251
+ * @param {object} config
252
+ * @param {object} config.renderTo - DOM element where component will be rendered to
253
+ * @param {string} config.criterias - Search criteria to be set on component creation
254
+ * @param {boolean} config.searchOnInit - if init search must be triggered or not (stored results are used instead)
255
+ * @param {string} config.url - search endpoint to be set on datatable
256
+ * @param {string} config.rootClassUri - Uri for the root class of current context, required to init the class filter
257
+ * @param {bool} config.hideResourceSelector - if resourceSelector must be hidden
258
+ * @param {bool} config.hideCriteria - if the criteria must be hidden
259
+ * @param {string} config.placeholder - placeholder for input in template
260
+ * @param {string} config.classesUrl - the URL to the classes API (usually '/tao/RestResource/getAll')
261
+ * @param {string} config.classMappingUrl - the URL to the class mapping API (usually '/tao/ClassMetadata/getWithMapping')
262
+ * @param {string} config.statusUrl - the URL to the status API (usually '/tao/AdvancedSearch/status')
263
+ * @param {string} config.sortby - the default sorted column (usually 'label')
264
+ * @param {string} config.sortorder - the default sort order (usually 'asc')
265
+ * @returns {searchModal}
223
266
  */
224
267
 
225
268
  function searchModalFactory(config) {
269
+ // @TODO: The consumer must be responsible for supplying the routes. The component must not hardcode endpoints.
226
270
  var defaults = {
271
+ classesUrl: urlUtil.route('getAll', 'RestResource', 'tao'),
272
+ classMappingUrl: urlUtil.route('getWithMapping', 'ClassMetadata', 'tao'),
273
+ statusUrl: urlUtil.route('status', 'AdvancedSearch', 'tao'),
227
274
  renderTo: 'body',
228
275
  criterias: {},
229
276
  searchOnInit: true,
230
- maxListSize: 5
277
+ maxListSize: 5,
278
+ sortby: 'label',
279
+ sortorder: 'asc'
231
280
  }; // Private properties to be easily accessible by instance methods
232
281
 
233
282
  var $container = null;
234
- var $searchInput = null;
235
- var $searchButton = null;
236
- var $clearButton = null;
283
+ var controls = {};
237
284
  var running = false;
238
285
  var searchStore = null;
286
+ var selectedColumnsStore = null;
239
287
  var resourceSelector = null;
240
- var $classFilterContainer = null;
241
- var $classFilterInput = null;
242
- var $classTreeContainer = null;
243
- var advancedSearch = null; // resorce selector
288
+ var advancedSearch = null;
289
+ var propertySelectorInstance;
290
+ var availableColumns = [];
291
+ var availableIdentifiers = {};
292
+ var selectedColumns = [];
293
+ var dataCache; // resorce selector
244
294
 
245
295
  var isResourceSelector = !config.hideResourceSelector;
246
296
  var rootClassUri = config.rootClassUri;
247
- /**
248
- * Creates search modal, inits template selectors, inits search store, and once is created triggers initial search
249
- * rootClassUri is sent to advancedSearch factory for disabling in whitelisted sections
297
+ /**
298
+ * Creates search modal, inits template selectors, inits search store, and once is created triggers initial search
299
+ * rootClassUri is sent to advancedSearch factory for disabling in whitelisted sections
250
300
  */
251
301
 
252
302
  function renderModal() {
@@ -254,33 +304,49 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
254
304
  initModal();
255
305
  initUiSelectors();
256
306
  advancedSearch = advancedSearchFactory({
257
- renderTo: $$1('.filters-container', $container),
307
+ renderTo: controls.$filtersContainer,
258
308
  advancedCriteria: instance.config.criterias.advancedCriteria,
309
+ hideCriteria: instance.config.hideCriteria,
310
+ statusUrl: instance.config.statusUrl,
259
311
  rootClassUri: rootClassUri
260
312
  });
261
313
  promises.push(initClassFilter());
262
- promises.push(initSearchStore());
314
+ promises.push(initStores());
263
315
  Promise.all(promises).then(function () {
264
316
  instance.trigger('ready');
265
- $searchButton.trigger('click');
317
+ controls.$searchButton.trigger('click');
266
318
  }).catch(function (e) {
267
319
  return instance.trigger('error', e);
268
320
  });
269
321
  }
270
- /**
271
- * Removes search modal
322
+ /**
323
+ * Removes search modal
272
324
  */
273
325
 
274
326
 
275
327
  function destroyModal() {
276
328
  $container.removeClass('modal').modal('destroy');
329
+
330
+ if (propertySelectorInstance) {
331
+ propertySelectorInstance.destroy();
332
+ }
333
+
277
334
  $$1('.modal-bg').remove();
335
+ controls = {};
278
336
  } // Creates new component
279
337
 
280
338
 
281
- var instance = component({}, defaults).setTemplate(layoutTpl).on('render', renderModal).on('destroy', destroyModal);
282
- /**
283
- * Creates search modal
339
+ var instance = component({
340
+ /**
341
+ * Tells if the advanced search is enabled.
342
+ * @returns {boolean}
343
+ */
344
+ isAdvancedSearchEnabled: function isAdvancedSearchEnabled() {
345
+ return advancedSearch && advancedSearch.isEnabled();
346
+ }
347
+ }, defaults).setTemplate(layoutTpl).on('selected-store-updated', recreateDatatable).on('render', renderModal).on('destroy', destroyModal);
348
+ /**
349
+ * Creates search modal
284
350
  */
285
351
 
286
352
  function initModal() {
@@ -293,20 +359,20 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
293
359
  modalCloseClass: 'modal-close-left'
294
360
  }).focus();
295
361
  }
296
- /**
297
- * Inits class filter selector
362
+ /**
363
+ * Inits class filter selector
298
364
  */
299
365
 
300
366
 
301
367
  function initClassFilter() {
302
368
  return new Promise(function (resolve) {
303
369
  if (!isResourceSelector) {
304
- $classFilterContainer.hide();
370
+ controls.$classFilterContainer.hide();
305
371
  return resolve();
306
372
  }
307
373
 
308
374
  var initialClassUri = instance.config.criterias && instance.config.criterias.class ? instance.config.criterias.class : rootClassUri;
309
- resourceSelector = resourceSelectorFactory($$1('.class-tree', $container), {
375
+ resourceSelector = resourceSelectorFactory(controls.$classTreeContainer, {
310
376
  //set up the inner resource selector
311
377
  selectionMode: 'single',
312
378
  selectClass: true,
@@ -320,7 +386,7 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
320
386
  classOnly: true
321
387
  });
322
388
 
323
- var route = urlUtil.route('getAll', 'RestResource', 'tao');
389
+ var route = instance.config.classesUrl;
324
390
  request(route, classOnlyParams).then(function (response) {
325
391
  if (response.permissions && response.permissions.data && response.permissions.supportedRights && response.permissions.supportedRights.length > 0) {
326
392
  manageClassTreePermissions(response);
@@ -331,9 +397,9 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
331
397
  return instance.trigger('error', e);
332
398
  });
333
399
  });
334
- /*
335
- * the first time selector opions are updated the root class is selected. Promise is
336
- * resolved so init process continues only when class input value has been set
400
+ /*
401
+ * the first time selector opions are updated the root class is selected. Promise is
402
+ * resolved so init process continues only when class input value has been set
337
403
  */
338
404
 
339
405
  resourceSelector.on('update', function () {
@@ -343,10 +409,10 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
343
409
  }); // then new class is selected, set its label into class filter input and hide filter container, then request class properties
344
410
 
345
411
  resourceSelector.on('change', function (selectedValue) {
346
- /*
347
- * on searchModal init we set manually the selector to the provided config.rootClassUri. When a selector
348
- * is set manually Selector component execs @clearSelection which triggers a change event
349
- * with an empty object as param. We catch this undesired behaviour here
412
+ /*
413
+ * on searchModal init we set manually the selector to the provided config.rootClassUri. When a selector
414
+ * is set manually Selector component execs @clearSelection which triggers a change event
415
+ * with an empty object as param. We catch this undesired behaviour here
350
416
  */
351
417
  if (_.isEmpty(selectedValue)) {
352
418
  return;
@@ -358,13 +424,13 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
358
424
 
359
425
  var uri = _.map(selectedValue, 'uri')[0];
360
426
 
361
- var route = urlUtil.route('getWithMapping', 'ClassMetadata', 'tao', {
427
+ var route = urlUtil.build(instance.config.classMappingUrl, {
362
428
  classUri: classUri,
363
429
  maxListSize: instance.config.maxListSize
364
430
  });
365
- $classFilterInput.html(label);
366
- $classFilterInput.data('uri', uri);
367
- $classTreeContainer.hide();
431
+ controls.$classFilterInput.html(label);
432
+ controls.$classFilterInput.data('uri', uri);
433
+ controls.$classTreeContainer.hide();
368
434
  advancedSearch.updateCriteria(route).then(function () {
369
435
  return instance.trigger('criteriaListUpdated');
370
436
  }).catch(function (e) {
@@ -374,10 +440,10 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
374
440
  setResourceSelectorUIBehaviour();
375
441
  });
376
442
  }
377
- /**
378
- * Loops through each class in received class tree and sets access mode to 'denied' on private classes
379
- * so are disabled on class tree
380
- * @param {object} classTree - class tree received by server, containing resources (classes) and permissions
443
+ /**
444
+ * Loops through each class in received class tree and sets access mode to 'denied' on private classes
445
+ * so are disabled on class tree
446
+ * @param {object} classTree - class tree received by server, containing resources (classes) and permissions
381
447
  */
382
448
 
383
449
 
@@ -398,138 +464,171 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
398
464
 
399
465
  disableBlockedClasses(classTree.resources);
400
466
  }
401
- /**
402
- * Inits template selectors, buttons behaviour, scroll animation,
403
- * and sets initial search query on search input
467
+ /**
468
+ * Inits template selectors, buttons behaviour, scroll animation,
469
+ * and sets initial search query on search input
404
470
  */
405
471
 
406
472
 
407
473
  function initUiSelectors() {
408
- $searchButton = $$1('.btn-search', $container);
409
- $clearButton = $$1('.btn-clear', $container);
410
- $searchInput = $$1('.generic-search-input', $container);
411
- $classFilterInput = $$1('.class-filter', $container);
412
- $classTreeContainer = $$1('.class-tree', $container);
413
- $classFilterContainer = $$1('.class-filter-container', $container);
414
- $searchButton.on('click', search);
415
- $clearButton.on('click', clear);
416
- var shortcuts = shortcutRegistry($searchInput);
474
+ controls = {
475
+ $searchButton: $$1('.btn-search', $container),
476
+ $clearButton: $$1('.btn-clear', $container),
477
+ $searchInput: $$1('.generic-search-input', $container),
478
+ $classFilterInput: $$1('.class-filter', $container),
479
+ $classTreeContainer: $$1('.class-tree', $container),
480
+ $classFilterContainer: $$1('.class-filter-container', $container),
481
+ $filtersContainer: $$1('.filters-container', $container),
482
+ $contentArea: $$1('.content-area', $container),
483
+ $contentToolbar: $$1('.content-toolbar', $container)
484
+ };
485
+ controls.$searchButton.on('click', search);
486
+ controls.$clearButton.on('click', clear);
487
+ var shortcuts = shortcutRegistry(controls.$searchInput);
417
488
  shortcuts.clear().add('enter', search);
418
- $searchInput.val(instance.config.criterias && instance.config.criterias.search ? instance.config.criterias.search : '');
489
+ controls.$searchInput.val(instance.config.criterias && instance.config.criterias.search ? instance.config.criterias.search : '');
419
490
  }
420
- /**
421
- * Sets required listeners to properly manage resourceSelector visualization
491
+ /**
492
+ * Sets required listeners to properly manage resourceSelector visualization
422
493
  */
423
494
 
424
495
 
425
496
  function setResourceSelectorUIBehaviour() {
426
497
  $container.on('mousedown', function () {
427
- $classTreeContainer.hide();
498
+ controls.$classTreeContainer.hide();
428
499
  });
429
- /**
430
- * Pressing space, enter, esc, backspace
431
- * on class filter input will toggle resource selector
500
+ /**
501
+ * Pressing space, enter, esc, backspace
502
+ * on class filter input will toggle resource selector
432
503
  */
433
504
 
434
- var shortcuts = shortcutRegistry($classFilterInput);
505
+ var shortcuts = shortcutRegistry(controls.$classFilterInput);
435
506
  shortcuts.add('enter', function () {
436
- return $classTreeContainer.show();
507
+ return controls.$classTreeContainer.show();
437
508
  });
438
509
  shortcuts.add('space', function () {
439
- return $classTreeContainer.show();
510
+ return controls.$classTreeContainer.show();
440
511
  });
441
512
  shortcuts.add('backspace', function () {
442
- return $classTreeContainer.hide();
513
+ return controls.$classTreeContainer.hide();
443
514
  });
444
515
  shortcuts.add('escape', function () {
445
- return $classTreeContainer.hide();
516
+ return controls.$classTreeContainer.hide();
446
517
  }, {
447
518
  propagate: false
448
519
  });
449
- /**
450
- * clicking on class filter container will toggle resource selector
520
+ /**
521
+ * clicking on class filter container will toggle resource selector
451
522
  */
452
523
 
453
- $classFilterContainer.on('click', function (e) {
454
- $classTreeContainer.toggle();
524
+ controls.$classFilterContainer.on('click', function (e) {
525
+ controls.$classTreeContainer.toggle();
455
526
  });
456
- /**
457
- * clicking on class filter container will
458
- * stopPropagation to prevent be closed
459
- * by searchModal.mouseDown listener
527
+ /**
528
+ * clicking on class filter container will
529
+ * stopPropagation to prevent be closed
530
+ * by searchModal.mouseDown listener
460
531
  */
461
532
 
462
- $classFilterContainer.on('mousedown', function (e) {
533
+ controls.$classFilterContainer.on('mousedown', function (e) {
463
534
  e.stopPropagation();
464
535
  }); // clicking on resource selector will stopPropagation to prevent be closed by searchModal.mouseDown listener
465
536
 
466
- $classTreeContainer.on('mousedown', function (e) {
537
+ controls.$classTreeContainer.on('mousedown', function (e) {
467
538
  e.stopPropagation();
468
539
  });
469
540
  }
470
- /**
471
- * Loads search store so it is accessible in the component
472
- * @returns {Promise}
541
+ /**
542
+ * Loads search store so it is accessible in the component
543
+ * @returns {Promise}
473
544
  */
474
545
 
475
546
 
476
- function initSearchStore() {
477
- return store('search').then(function (store) {
478
- searchStore = store;
479
- }).catch(function (e) {
547
+ function initStores() {
548
+ return Promise.all([store('search').then(function (store) {
549
+ return searchStore = store;
550
+ }), store('selectedColumns').then(function (store) {
551
+ return selectedColumnsStore = store;
552
+ })]).catch(function (e) {
480
553
  return instance.trigger('error', e);
481
554
  });
482
555
  }
483
- /**
484
- * Request search results and manages its results
556
+ /**
557
+ * Performs a search query
558
+ * @param query - The searched terms
559
+ * @param classFilterUri - The URI of the node class
560
+ * @param [params] - Additional parameters
561
+ * @returns {Promise}
562
+ */
563
+
564
+
565
+ var searchQuery = function searchQuery(query, classFilterUri) {
566
+ var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
567
+ return new Promise(function (resolve, reject) {
568
+ $$1.ajax({
569
+ url: instance.config.url,
570
+ type: 'POST',
571
+ data: _objectSpread2(_objectSpread2({}, params), {}, {
572
+ query: query,
573
+ parentNode: classFilterUri,
574
+ structure: context.shownStructure
575
+ }),
576
+ dataType: 'json'
577
+ }).done(resolve).fail(reject);
578
+ });
579
+ };
580
+ /**
581
+ * Performs the search query, preventing to send too many requests
582
+ * @param query - The searched terms
583
+ * @param classFilterUri - The URI of the node class
584
+ * @param [params] - Additional parameters
585
+ */
586
+
587
+
588
+ var searchHandler = function searchHandler(query, classFilterUri) {
589
+ var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
590
+
591
+ if (running === false) {
592
+ running = true;
593
+ searchQuery(query, classFilterUri, params).then(function (data) {
594
+ return data.data;
595
+ }).then(buildDataModel).then(filterSelectedColumns).then(appendDefaultDatasetToDatatable).then(buildSearchResultsDatatable).catch(function (e) {
596
+ return instance.trigger('error', e);
597
+ }).then(function () {
598
+ return running = false;
599
+ });
600
+ }
601
+ };
602
+ /**
603
+ * Request search results and manages its results
485
604
  */
486
605
 
487
606
 
488
607
  function search() {
489
- var query = buildComplexQuery();
490
- var classFilterUri = isResourceSelector ? $classFilterInput.data('uri').trim() : rootClassUri; //throttle and control to prevent sending too many requests
491
-
492
- var searchHandler = _.throttle(function (query) {
493
- if (running === false) {
494
- running = true;
495
- $$1.ajax({
496
- url: instance.config.url,
497
- type: 'POST',
498
- data: {
499
- query: query,
500
- parentNode: classFilterUri,
501
- structure: context.shownStructure
502
- },
503
- dataType: 'json'
504
- }).done(function (data) {
505
- appendDefaultDatasetToDatatable(data.data).then(function () {
506
- return buildSearchResultsDatatable(data.data);
507
- }).catch(function (e) {
508
- return instance.trigger('error', e);
509
- });
510
- }).always(function () {
511
- return running = false;
512
- });
513
- }
514
- }, 100);
608
+ searchHandler(buildComplexQuery(), getClassFilterUri());
609
+ }
610
+ /**
611
+ * Returns selected class filter of rootClassUri
612
+ */
613
+
515
614
 
516
- searchHandler(query);
615
+ function getClassFilterUri() {
616
+ return isResourceSelector ? controls.$classFilterInput.data('uri').trim() : rootClassUri;
517
617
  }
518
- /**
519
- * build final complex query appending every filter
618
+ /**
619
+ * build final complex query appending every filter
520
620
  */
521
621
 
522
622
 
523
623
  function buildComplexQuery() {
524
- var $searchInputValue = $searchInput.val().trim();
525
- var query = $searchInputValue;
624
+ var query = controls.$searchInput.val().trim();
526
625
  query += advancedSearch.getAdvancedCriteriaQuery(query !== '');
527
626
  return query;
528
627
  }
529
- /*
530
- * If search on init is not required, extends data with stored dataset
531
- * @param {object} data - search configuration including model and endpoint for datatable
532
- * @returns {Promise}
628
+ /*
629
+ * If search on init is not required, extends data with stored dataset
630
+ * @param {object} data - search configuration including model and endpoint for datatable
631
+ * @returns {Promise}
533
632
  */
534
633
 
535
634
 
@@ -537,36 +636,195 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
537
636
  return new Promise(function (resolve, reject) {
538
637
  // If no search on init, get dataset from searchStore
539
638
  if (instance.config.searchOnInit === false) {
540
- searchStore.getItem('results').then(function (storedSearchResults) {
639
+ Promise.all([searchStore.getItem('results'), searchStore.getItem('options')]).then(function (fromStore) {
541
640
  instance.config.searchOnInit = true;
542
- data.storedSearchResults = storedSearchResults;
543
- resolve();
641
+ data.storedSearchResults = fromStore[0];
642
+ data.storedSearchOptions = fromStore[1];
643
+ resolve(data);
544
644
  }).catch(function (e) {
545
- instance.trigger('error', e);
546
- reject(new Error('Error appending default dataset from searchStore to datatable'));
645
+ reject(new Error('Error appending default dataset from searchStore to datatable', {
646
+ cause: e
647
+ }));
547
648
  });
548
649
  } else {
549
- resolve();
650
+ resolve(data);
550
651
  }
551
652
  });
552
653
  }
553
- /**
554
- * Creates a datatable with search results
555
- * @param {object} data - search configuration including model and endpoint for datatable
654
+ /**
655
+ * Replaces empty value by a placeholder.
656
+ * @param value
657
+ * @returns {string|*}
658
+ */
659
+
660
+
661
+ var emptyValueTransform = function emptyValueTransform(value) {
662
+ var testedValue = value;
663
+
664
+ if (Array.isArray(testedValue)) {
665
+ testedValue = testedValue[0];
666
+ }
667
+
668
+ if ('string' === typeof testedValue) {
669
+ testedValue = testedValue.trim();
670
+ }
671
+
672
+ return testedValue === '' || testedValue === null || typeof testedValue === 'undefined' ? '-' : value;
673
+ };
674
+ /**
675
+ * Refines the columns to be compatible with the datatable model
676
+ * @param {object[]} columns
677
+ * @returns {object[]}
678
+ */
679
+
680
+
681
+ function columnsToModel(columns) {
682
+ if (!Array.isArray(columns)) {
683
+ return [];
684
+ }
685
+
686
+ return columns.map(function (column) {
687
+ var id = column.id,
688
+ sortId = column.sortId,
689
+ label = column.label,
690
+ sortable = column.sortable,
691
+ isDuplicated = column.isDuplicated;
692
+ var alias, comment, classLabel;
693
+
694
+ if (isDuplicated) {
695
+ alias = column.alias;
696
+ classLabel = column.classLabel; // needed by the property selector
697
+
698
+ comment = column.classLabel; // needed by the datatable
699
+ }
700
+
701
+ return {
702
+ id: id,
703
+ sortId: sortId,
704
+ label: label,
705
+ alias: alias,
706
+ classLabel: classLabel,
707
+ comment: comment,
708
+ sortable: sortable,
709
+ transform: emptyValueTransform
710
+ };
711
+ });
712
+ }
713
+ /**
714
+ * Refines the data model for the datatable
715
+ * @param {object} data - search configuration including model and endpoint for datatable
716
+ * @returns {object} The data configuration refined with the data model for the datatrable
717
+ */
718
+
719
+
720
+ function buildDataModel(data) {
721
+ //save availableColumns to memory
722
+ availableIdentifiers = {};
723
+ availableColumns = data.settings.availableColumns; // The support for the old data.model coming from the server has been removed from the commit
724
+ // https://github.com/oat-sa/tao-core-ui-fe/commit/ae6c16a9199f9fc808bc8a37d2ddfce437a62e9c
725
+ // The data model is now coming from the settings carried on by the searchParams request.
726
+
727
+ data.model = columnsToModel(availableColumns);
728
+ data.model.forEach(function (column) {
729
+ return availableIdentifiers[column.id] = true;
730
+ }); // adjust the default sorting and pagination
731
+
732
+ var _instance$config = instance.config,
733
+ sortby = _instance$config.sortby,
734
+ sortorder = _instance$config.sortorder,
735
+ page = _instance$config.page;
736
+
737
+ if (!sortorder || !['asc', 'desc'].includes(sortorder)) {
738
+ sortorder = 'asc';
739
+ }
740
+
741
+ var sortIdentifiers = [];
742
+ data.model.forEach(function (column) {
743
+ sortIdentifiers.push(column.sortId || column.id);
744
+
745
+ if (column.sortId && column.id === sortby) {
746
+ sortby = column.sortId;
747
+ }
748
+ });
749
+
750
+ if (!sortIdentifiers.includes(sortby)) {
751
+ // unknown sort identifier is rejected for safety
752
+ sortby = void 0;
753
+ sortorder = void 0;
754
+ }
755
+
756
+ data.pageConfig = {
757
+ sortby: sortby,
758
+ sortorder: sortorder,
759
+ page: page
760
+ };
761
+ dataCache = _.cloneDeep(data);
762
+ return data;
763
+ }
764
+ /**
765
+ * Filters datatble model based on stored selected columns
766
+ * @param {Object} data data containing available columns and model for datatable
767
+ * @returns {Promise} promise which resolves with filtered data.model
768
+ */
769
+
770
+
771
+ function filterSelectedColumns(data) {
772
+ return selectedColumnsStore.getItem(rootClassUri).then(function (storedSelectedColumnIds) {
773
+ selectedColumns = [];
774
+
775
+ if (storedSelectedColumnIds && storedSelectedColumnIds.length) {
776
+ storedSelectedColumnIds.forEach(function (id) {
777
+ if (availableIdentifiers[id]) {
778
+ selectedColumns.push(id);
779
+ }
780
+ });
781
+ }
782
+
783
+ if (!selectedColumns.length) {
784
+ selectedColumns = data.settings.availableColumns.reduce(function (acc, column) {
785
+ if (column.default) {
786
+ acc.push(column.id);
787
+ }
788
+
789
+ return acc;
790
+ }, []);
791
+ }
792
+
793
+ data.model = data.model.filter(function (column) {
794
+ return selectedColumns.includes(column.id);
795
+ });
796
+ return data;
797
+ }).catch(function (e) {
798
+ instance.trigger('error', e);
799
+ });
800
+ }
801
+ /**
802
+ * Creates a datatable with search results
803
+ * @param {object} data - search configuration including model and endpoint for datatable
556
804
  */
557
805
 
558
806
 
559
807
  function buildSearchResultsDatatable(data) {
560
- //update the section container
561
- var $tableContainer = $$1('<div class="flex-container-full"></div>');
562
- var section = $$1('.content-container', $container);
563
- section.empty();
564
- section.append($tableContainer);
565
- $tableContainer.on('load.datatable', searchResultsLoaded); //create datatable
808
+ // Note: the table container needs to be recreated because datatable is storing data in it.
809
+ // Keeping the table container introduces a DOM pollution.
810
+ // It is faster and cleaner to recreate the container than cleaning it explicitly.
811
+ var $tableContainer = $$1(resultsContainerTpl());
812
+ var $contentContainer = controls.$contentArea.empty();
813
+ $contentContainer.append($tableContainer);
814
+ $tableContainer.on('load.datatable', searchResultsLoaded);
815
+
816
+ var _ref = data.storedSearchOptions || data.pageConfig,
817
+ sortby = _ref.sortby,
818
+ sortorder = _ref.sortorder,
819
+ page = _ref.page; //create datatable
820
+
566
821
 
567
822
  $tableContainer.datatable({
568
823
  url: data.url,
569
- model: _.values(data.model),
824
+ model: data.model,
825
+ sortby: sortby,
826
+ sortorder: sortorder,
827
+ page: page,
570
828
  labels: {
571
829
  actions: ''
572
830
  },
@@ -585,35 +843,126 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
585
843
  }
586
844
  }, data.storedSearchResults);
587
845
  }
588
- /**
589
- * Triggered on load.datatable event, it updates searchStore and manages possible exceptions
590
- * @param {object} e - load.datatable event
591
- * @param {object} dataset - datatable dataset
846
+
847
+ function getTableOptions() {
848
+ var $tableContainer = $$1('.results-container', $container);
849
+ return _.cloneDeep($tableContainer.data('ui.datatable') || {});
850
+ }
851
+ /**
852
+ * Filters data from cache by selected and recreates datatable
853
+ * @params {object} options - Additional options to be given to the datatable
854
+ */
855
+
856
+
857
+ function recreateDatatable() {
858
+ var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
859
+ var data = Object.assign(_.cloneDeep(dataCache), options);
860
+ filterSelectedColumns(data).then(buildSearchResultsDatatable);
861
+ }
862
+ /**
863
+ * Triggered on load.datatable event, it updates searchStore and manages possible exceptions
864
+ * @param {object} e - load.datatable event
865
+ * @param {object} dataset - datatable dataset
592
866
  */
593
867
 
594
868
 
595
869
  function searchResultsLoaded(e, dataset) {
870
+ var $contentToolbar = controls.$contentToolbar.empty();
871
+
872
+ if (instance.isAdvancedSearchEnabled()) {
873
+ var $manageColumnsBtn = $$1(propertySelectButtonTpl());
874
+ $contentToolbar.append($manageColumnsBtn);
875
+ $manageColumnsBtn.on('click', handleManageColumnsBtnClick);
876
+ }
877
+
878
+ var _getTableOptions = getTableOptions(),
879
+ sortby = _getTableOptions.sortby,
880
+ sortorder = _getTableOptions.sortorder;
881
+
596
882
  if (dataset.records === 0) {
597
883
  replaceSearchResultsDatatableWithMessage('no-matches');
598
884
  }
599
885
 
600
- instance.trigger("datatable-loaded");
886
+ instance.trigger('datatable-loaded');
601
887
  updateSearchStore({
602
888
  action: 'update',
603
889
  dataset: dataset,
890
+ options: {
891
+ sortby: sortby,
892
+ sortorder: sortorder
893
+ },
604
894
  context: context.shownStructure,
605
895
  criterias: {
606
- search: $searchInput.val(),
896
+ search: controls.$searchInput && controls.$searchInput.val(),
607
897
  class: isResourceSelector ? _.map(resourceSelector.getSelection(), 'uri')[0] : rootClassUri,
608
898
  advancedCriteria: advancedSearch.getState()
609
899
  }
610
900
  });
611
901
  }
612
- /**
613
- * Updates searchStore. If action is 'clear', searchStore is claread. If not, received
614
- * data is assigned to searchStore. Once all actions have been done,
615
- * store-updated event is triggered
616
- * @param {object} data - data to store
902
+ /**
903
+ * Handler for manage columns button click
904
+ * @param {Event} e
905
+ */
906
+
907
+
908
+ function handleManageColumnsBtnClick(e) {
909
+ var selected = selectedColumns;
910
+ var available = columnsToModel(availableColumns);
911
+
912
+ if (!propertySelectorInstance) {
913
+ var _this$getBoundingClie = this.getBoundingClientRect(),
914
+ btnBottom = _this$getBoundingClie.bottom,
915
+ btnRight = _this$getBoundingClie.right;
916
+
917
+ var _$container$get$getBo = $container.get(0).getBoundingClientRect(),
918
+ containerTop = _$container$get$getBo.top,
919
+ containerRight = _$container$get$getBo.right;
920
+
921
+ var position = {
922
+ top: btnBottom - containerTop,
923
+ right: containerRight - btnRight
924
+ };
925
+ propertySelectorInstance = propertySelectorFactory({
926
+ renderTo: $container,
927
+ data: {
928
+ position: position,
929
+ available: available,
930
+ selected: selected
931
+ }
932
+ });
933
+ propertySelectorInstance.on('select', function (selection) {
934
+ if (selection.length !== selectedColumns.length || selection.some(function (columnId) {
935
+ return !selectedColumns.includes(columnId);
936
+ })) {
937
+ //update table
938
+ selectedColumns = selection;
939
+
940
+ var _getTableOptions2 = getTableOptions(),
941
+ sortby = _getTableOptions2.sortby,
942
+ sortorder = _getTableOptions2.sortorder,
943
+ page = _getTableOptions2.page;
944
+
945
+ updateSelectedStore({
946
+ selection: selection,
947
+ sortby: sortby,
948
+ sortorder: sortorder,
949
+ page: page
950
+ });
951
+ }
952
+ });
953
+ } else {
954
+ propertySelectorInstance.setData({
955
+ available: available,
956
+ selected: selected
957
+ });
958
+ propertySelectorInstance.toggle();
959
+ }
960
+ }
961
+ /**
962
+ * Updates searchStore. If action is 'clear', searchStore is claread. If not, received
963
+ * data is assigned to searchStore. Once all actions have been done,
964
+ * store-updated event is triggered
965
+ * @param {object} data - data to store
617
966
  */
618
967
 
619
968
 
@@ -625,24 +974,60 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
625
974
  } else if (data.action === 'update') {
626
975
  promises.push(searchStore.setItem('criterias', data.criterias));
627
976
  promises.push(searchStore.setItem('context', data.context));
977
+ promises.push(searchStore.setItem('options', data.options));
628
978
  promises.push(data.dataset.records === 0 ? searchStore.removeItem('results') : searchStore.setItem('results', data.dataset));
629
979
  }
630
980
 
631
981
  Promise.all(promises).then(function () {
632
- return instance.trigger("store-updated");
982
+ return instance.trigger('store-updated');
983
+ }).catch(function (e) {
984
+ return instance.trigger('error', e);
985
+ });
986
+ }
987
+ /**
988
+ *
989
+ * @param {object} update - The changed configuration
990
+ * @param {Array<string>} update.selection - array of column ids to display
991
+ * @param {string} update.sortby - The sorted column
992
+ * @param {string} update.sortorder - The sort order
993
+ * @param {number} update.page - The current page
994
+ * @returns
995
+ */
996
+
997
+
998
+ function updateSelectedStore() {
999
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1000
+ _ref2$selection = _ref2.selection,
1001
+ selection = _ref2$selection === void 0 ? [] : _ref2$selection,
1002
+ _ref2$sortby = _ref2.sortby,
1003
+ sortby = _ref2$sortby === void 0 ? 'id' : _ref2$sortby,
1004
+ _ref2$sortorder = _ref2.sortorder,
1005
+ sortorder = _ref2$sortorder === void 0 ? 'asc' : _ref2$sortorder,
1006
+ _ref2$page = _ref2.page,
1007
+ page = _ref2$page === void 0 ? 1 : _ref2$page;
1008
+
1009
+ var storedSearchOptions = {
1010
+ sortby: sortby,
1011
+ sortorder: sortorder,
1012
+ page: page
1013
+ };
1014
+ return selectedColumnsStore.setItem(rootClassUri, selection).then(function () {
1015
+ return instance.trigger('selected-store-updated', {
1016
+ storedSearchOptions: storedSearchOptions
1017
+ });
633
1018
  }).catch(function (e) {
634
1019
  return instance.trigger('error', e);
635
1020
  });
636
1021
  }
637
- /**
638
- * Clear search input, criteria and results from both, view and store.
639
- * Also sets every criterion on criteriaState to unredered and
640
- * undefined value
1022
+ /**
1023
+ * Clear search input, criteria and results from both, view and store.
1024
+ * Also sets every criterion on criteriaState to unredered and
1025
+ * undefined value
641
1026
  */
642
1027
 
643
1028
 
644
1029
  function clear() {
645
- $searchInput.val('');
1030
+ controls.$searchInput.val('');
646
1031
  advancedSearch.clear();
647
1032
  isResourceSelector && resourceSelector.select(rootClassUri);
648
1033
  replaceSearchResultsDatatableWithMessage('no-query');
@@ -650,15 +1035,13 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
650
1035
  action: 'clear'
651
1036
  });
652
1037
  }
653
- /**
654
- * Removes datatable container and displays a message instead
655
- * @param {string} reason - reason why datatable is not rendered, to display appropiate message
1038
+ /**
1039
+ * Removes datatable container and displays a message instead
1040
+ * @param {string} reason - reason why datatable is not rendered, to display appropiate message
656
1041
  */
657
1042
 
658
1043
 
659
1044
  function replaceSearchResultsDatatableWithMessage(reason) {
660
- var section = $$1('.content-container', $container);
661
- section.empty();
662
1045
  var message = '';
663
1046
  var icon = '';
664
1047
 
@@ -674,7 +1057,8 @@ define(['jquery', 'lodash', 'i18n', 'context', 'handlebars', 'lib/dompurify/puri
674
1057
  message: message,
675
1058
  icon: icon
676
1059
  });
677
- section.append(infoMessage);
1060
+ controls.$contentToolbar.empty();
1061
+ controls.$contentArea.empty().append(infoMessage);
678
1062
  } // return initialized instance of searchModal
679
1063
 
680
1064