@oat-sa/tao-core-ui 1.56.1 → 1.58.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 (237) hide show
  1. package/dist/actionbar.js +395 -386
  2. package/dist/adder.js +19 -21
  3. package/dist/animable/absorbable/absorbable.js +213 -204
  4. package/dist/animable/absorbable/css/absorb.css +0 -1
  5. package/dist/animable/absorbable/css/absorb.css.map +1 -1
  6. package/dist/animable/pulsable/pulsable.js +177 -168
  7. package/dist/autocomplete/css/autocomplete.css +0 -1
  8. package/dist/autocomplete/css/autocomplete.css.map +1 -1
  9. package/dist/autocomplete.js +66 -68
  10. package/dist/badge/badge.js +197 -188
  11. package/dist/badge/css/badge.css +0 -1
  12. package/dist/badge/css/badge.css.map +1 -1
  13. package/dist/breadcrumbs.js +284 -275
  14. package/dist/btngrouper.js +5 -5
  15. package/dist/bulkActionPopup.js +495 -490
  16. package/dist/button.js +291 -283
  17. package/dist/cascadingComboBox.js +258 -249
  18. package/dist/ckeditor/ckConfigurator.js +43 -20
  19. package/dist/ckeditor/dtdHandler.js +9 -11
  20. package/dist/class/selector.js +450 -441
  21. package/dist/component/resizable.js +1 -1
  22. package/dist/component/windowed.js +294 -285
  23. package/dist/component.js +428 -419
  24. package/dist/contextualPopup.js +426 -417
  25. package/dist/dashboard.js +309 -300
  26. package/dist/datalist.js +762 -753
  27. package/dist/datatable/filterStrategy/multiple.js +1 -1
  28. package/dist/datatable/filterStrategy/single.js +1 -1
  29. package/dist/datatable.js +1550 -1527
  30. package/dist/dateRange/dateRange.js +402 -393
  31. package/dist/datetime/picker.js +672 -665
  32. package/dist/deleter.js +377 -368
  33. package/dist/destination/selector.js +295 -286
  34. package/dist/dialog/alert.js +3 -3
  35. package/dist/dialog/confirm.js +1 -1
  36. package/dist/dialog/confirmDelete.js +225 -216
  37. package/dist/dialog.js +654 -650
  38. package/dist/disabler.js +8 -8
  39. package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +175 -166
  40. package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +527 -518
  41. package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +389 -380
  42. package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +548 -539
  43. package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +378 -369
  44. package/dist/documentViewer/providers/pdfViewer.js +193 -184
  45. package/dist/documentViewer.js +301 -292
  46. package/dist/dropdown.js +392 -383
  47. package/dist/durationer.js +5 -5
  48. package/dist/dynamicComponent.js +598 -597
  49. package/dist/feedback.js +362 -356
  50. package/dist/figure/FigureStateActive.js +108 -117
  51. package/dist/filesender.js +2 -2
  52. package/dist/filter.js +239 -230
  53. package/dist/form/dropdownForm.js +357 -355
  54. package/dist/form/form.js +690 -919
  55. package/dist/form/simpleForm.js +1 -1
  56. package/dist/form/validator/renderer.js +235 -233
  57. package/dist/form/validator/validator.js +189 -257
  58. package/dist/form/widget/definitions.js +1 -1
  59. package/dist/form/widget/providers/checkBox.js +259 -254
  60. package/dist/form/widget/providers/comboBox.js +192 -187
  61. package/dist/form/widget/providers/default.js +9 -8
  62. package/dist/form/widget/providers/hidden.js +179 -170
  63. package/dist/form/widget/providers/hiddenBox.js +267 -262
  64. package/dist/form/widget/providers/radioBox.js +225 -216
  65. package/dist/form/widget/providers/textArea.js +196 -187
  66. package/dist/form/widget/providers/textBox.js +3 -2
  67. package/dist/form/widget/widget.js +475 -473
  68. package/dist/formValidator/formValidator.js +1 -1
  69. package/dist/formValidator/highlighters/message.js +1 -1
  70. package/dist/generis/form/form.js +323 -314
  71. package/dist/generis/validator/validator.js +218 -209
  72. package/dist/generis/widget/checkBox/checkBox.js +227 -218
  73. package/dist/generis/widget/comboBox/comboBox.js +188 -179
  74. package/dist/generis/widget/hiddenBox/hiddenBox.js +229 -220
  75. package/dist/generis/widget/textBox/textBox.js +178 -169
  76. package/dist/generis/widget/widget.js +255 -246
  77. package/dist/groupedComboBox.js +231 -222
  78. package/dist/groupvalidator.js +2 -2
  79. package/dist/highlighter.js +958 -967
  80. package/dist/image/ImgStateActive/helper.js +5 -7
  81. package/dist/image/ImgStateActive/initHelper.js +43 -49
  82. package/dist/image/ImgStateActive/initMediaEditor.js +20 -24
  83. package/dist/image/ImgStateActive/mediaSizer.js +12 -14
  84. package/dist/image/ImgStateActive.js +70 -72
  85. package/dist/incrementer.js +6 -6
  86. package/dist/inplacer.js +6 -6
  87. package/dist/itemButtonList/css/item-button-list.css +0 -1
  88. package/dist/itemButtonList/css/item-button-list.css.map +1 -1
  89. package/dist/itemButtonList.js +435 -439
  90. package/dist/keyNavigation/navigableDomElement.js +38 -51
  91. package/dist/keyNavigation/navigator.js +70 -85
  92. package/dist/listbox.js +469 -460
  93. package/dist/liststyler.js +8 -8
  94. package/dist/loadingButton/loadingButton.js +218 -209
  95. package/dist/lock.js +485 -476
  96. package/dist/login/login.js +484 -475
  97. package/dist/maths/calculator/basicCalculator.js +244 -235
  98. package/dist/maths/calculator/calculatorComponent.js +3 -3
  99. package/dist/maths/calculator/core/board.js +781 -772
  100. package/dist/maths/calculator/core/expression.js +485 -476
  101. package/dist/maths/calculator/core/labels.js +237 -228
  102. package/dist/maths/calculator/core/tokenizer.js +1 -1
  103. package/dist/maths/calculator/core/tokens.js +170 -163
  104. package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +253 -244
  105. package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +288 -279
  106. package/dist/maths/calculator/scientificCalculator.js +336 -327
  107. package/dist/mediaEditor/mediaEditorComponent.js +245 -238
  108. package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
  109. package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +235 -229
  110. package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +589 -580
  111. package/dist/mediaplayer/players/html5.js +675 -666
  112. package/dist/mediaplayer/players/youtube.js +424 -419
  113. package/dist/mediaplayer/support.js +10 -11
  114. package/dist/mediaplayer/utils/reminder.js +13 -14
  115. package/dist/mediaplayer/utils/timeObserver.js +11 -10
  116. package/dist/mediaplayer/youtubeManager.js +145 -164
  117. package/dist/mediaplayer.js +1519 -1564
  118. package/dist/mediasizer.js +678 -669
  119. package/dist/modal.js +17 -10
  120. package/dist/pageSizeSelector.js +228 -219
  121. package/dist/pagination/providers/pages.js +289 -280
  122. package/dist/pagination/providers/simple.js +201 -192
  123. package/dist/previewer.js +30 -30
  124. package/dist/progressbar.js +4 -4
  125. package/dist/report.js +356 -347
  126. package/dist/resource/filters.js +280 -271
  127. package/dist/resource/list.js +1273 -1264
  128. package/dist/resource/selector.js +874 -865
  129. package/dist/resource/tree.js +1491 -1482
  130. package/dist/resourcemgr/fileBrowser.js +569 -564
  131. package/dist/resourcemgr/filePreview.js +16 -16
  132. package/dist/resourcemgr/fileSelector.js +524 -515
  133. package/dist/resourcemgr/util/updatePermissions.js +2 -2
  134. package/dist/resourcemgr.js +315 -306
  135. package/dist/searchModal/advancedSearch.js +767 -796
  136. package/dist/searchModal.js +91 -114
  137. package/dist/switch/switch.js +307 -298
  138. package/dist/tabs.js +575 -598
  139. package/dist/taskQueue/status.js +321 -312
  140. package/dist/taskQueue/table.js +384 -375
  141. package/dist/taskQueue/taskQueueModel.js +472 -488
  142. package/dist/taskQueueButton/taskable.js +273 -264
  143. package/dist/taskQueueButton/treeButton.js +198 -189
  144. package/dist/themeLoader.js +23 -24
  145. package/dist/themes.js +1 -1
  146. package/dist/toggler.js +3 -3
  147. package/dist/tooltip.js +304 -295
  148. package/dist/transformer.js +2 -2
  149. package/dist/tristateCheckboxGroup.js +320 -311
  150. package/dist/uploader.js +696 -687
  151. package/dist/validator/Report.js +1 -1
  152. package/dist/validator/Validator.js +3 -3
  153. package/dist/validator/validators.js +9 -9
  154. package/dist/validator.js +230 -240
  155. package/dist/waitForMedia.js +1 -1
  156. package/package.json +3 -3
  157. package/scss/ckeditor/skins/tao/scss/inc/_menu.scss +51 -27
  158. package/scss/ckeditor/skins/tao/scss/inc/_panel.scss +16 -5
  159. package/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -2
  160. package/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +15 -3
  161. package/src/.DS_Store +0 -0
  162. package/src/animable/absorbable/css/absorb.css +0 -1
  163. package/src/animable/absorbable/css/absorb.css.map +1 -1
  164. package/src/autocomplete/css/autocomplete.css +0 -1
  165. package/src/autocomplete/css/autocomplete.css.map +1 -1
  166. package/src/badge/css/badge.css +0 -1
  167. package/src/badge/css/badge.css.map +1 -1
  168. package/src/ckeditor/ckConfigurator.js +26 -1
  169. package/src/css/basic.css +7826 -0
  170. package/src/css/basic.css.map +1 -0
  171. package/src/css/ckeditor/skins/tao/css/dialog.css +950 -0
  172. package/src/css/ckeditor/skins/tao/css/dialog.css.map +1 -0
  173. package/src/css/ckeditor/skins/tao/css/editor.css +1850 -0
  174. package/src/css/ckeditor/skins/tao/css/editor.css.map +1 -0
  175. package/src/itemButtonList/css/item-button-list.css +0 -1
  176. package/src/itemButtonList/css/item-button-list.css.map +1 -1
  177. package/src/scss/.DS_Store +0 -0
  178. package/src/scss/basic.scss +16 -0
  179. package/src/scss/ckeditor/skins/tao/scss/dialog.scss +763 -0
  180. package/src/scss/ckeditor/skins/tao/scss/editor.scss +111 -0
  181. package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +59 -0
  182. package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +118 -0
  183. package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +69 -0
  184. package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +194 -0
  185. package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +181 -0
  186. package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +200 -0
  187. package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +32 -0
  188. package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +101 -0
  189. package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +213 -0
  190. package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +59 -0
  191. package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +301 -0
  192. package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
  193. package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +1 -0
  194. package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
  195. package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +1 -0
  196. package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
  197. package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +1 -0
  198. package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
  199. package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +1 -0
  200. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
  201. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +1 -0
  202. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
  203. package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +1 -0
  204. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
  205. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +1 -0
  206. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
  207. package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +1 -0
  208. package/src/scss/font/tao/tao.eot +0 -0
  209. package/src/scss/font/tao/tao.svg +235 -0
  210. package/src/scss/font/tao/tao.ttf +0 -0
  211. package/src/scss/font/tao/tao.woff +0 -0
  212. package/src/scss/inc/_base.scss +496 -0
  213. package/src/scss/inc/_bootstrap.scss +6 -0
  214. package/src/scss/inc/_buttons.scss +114 -0
  215. package/src/scss/inc/_colors.scss +88 -0
  216. package/src/scss/inc/_feedback.scss +150 -0
  217. package/src/scss/inc/_flex-grid.scss +15 -0
  218. package/src/scss/inc/_fonts.scss +4 -0
  219. package/src/scss/inc/_forms.scss +827 -0
  220. package/src/scss/inc/_functions.scss +283 -0
  221. package/src/scss/inc/_grid.scss +66 -0
  222. package/src/scss/inc/_jquery.nouislider.scss +254 -0
  223. package/src/scss/inc/_normalize.scss +528 -0
  224. package/src/scss/inc/_report.scss +68 -0
  225. package/src/scss/inc/_secondary-properties.scss +89 -0
  226. package/src/scss/inc/_select2.scss +634 -0
  227. package/src/scss/inc/_toolbars.scss +155 -0
  228. package/src/scss/inc/_tooltip.scss +312 -0
  229. package/src/scss/inc/_variables.scss +21 -0
  230. package/src/scss/inc/base/_highlight.scss +5 -0
  231. package/src/scss/inc/base/_list-style.scss +59 -0
  232. package/src/scss/inc/base/_svg.scss +3 -0
  233. package/src/scss/inc/base/_table.scss +63 -0
  234. package/src/scss/inc/fonts/_source-sans-pro.scss +29 -0
  235. package/src/scss/inc/fonts/_tao-icon-classes.scss +226 -0
  236. package/src/scss/inc/fonts/_tao-icon-def.scss +12 -0
  237. package/src/scss/inc/fonts/_tao-icon-vars.scss +240 -0
package/dist/actionbar.js CHANGED
@@ -1,447 +1,456 @@
1
1
  define(['jquery', 'lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify'], function ($$1, _, component, Handlebars, __, DOMPurify) { 'use strict';
2
2
 
3
- $$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
4
- _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
5
- component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
6
- Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
7
- __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
8
- DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
9
-
10
- function _typeof(obj) {
11
- "@babel/helpers - typeof";
12
-
13
- return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
14
- return typeof obj;
15
- } : function (obj) {
16
- return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
17
- }, _typeof(obj);
18
- }
19
-
20
- function Helpers0 (hb) {
21
- //register a i18n helper
22
- hb.registerHelper('__', function (key) {
23
- return __(key);
24
- });
25
- /**
26
- * Register dompurify helper
27
- *
28
- * https://github.com/cure53/DOMPurify
29
- * with config SAFE_FOR_TEMPLATES: true
30
- * to make output safe for template systems
31
- */
3
+ $$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
4
+ _ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
5
+ component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
6
+ Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
7
+ __ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
8
+ DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
32
9
 
33
- hb.registerHelper('dompurify', function (context) {
34
- return DOMPurify.sanitize(context);
35
- });
36
10
  /**
37
- * Register join helper
11
+ * This program is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU General Public License
13
+ * as published by the Free Software Foundation; under version 2
14
+ * of the License (non-upgradable).
15
+ *
16
+ * This program is distributed in the hope that it will be useful,
17
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
18
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19
+ * GNU General Public License for more details.
20
+ *
21
+ * You should have received a copy of the GNU General Public License
22
+ * along with this program; if not, write to the Free Software
23
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24
+ *
25
+ * Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
26
+ *
38
27
  *
39
- * Example :
40
- * var values = {a:v1, b:v2, c:v3};
41
- * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
42
- * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
43
28
  */
29
+ function Helpers0 (hb) {
30
+ //register a i18n helper
31
+ hb.registerHelper('__', function (key) {
32
+ return __(key);
33
+ });
34
+ /**
35
+ * Register dompurify helper
36
+ *
37
+ * https://github.com/cure53/DOMPurify
38
+ * with config SAFE_FOR_TEMPLATES: true
39
+ * to make output safe for template systems
40
+ */
41
+
42
+ hb.registerHelper('dompurify', function (context) {
43
+ return DOMPurify.sanitize(context);
44
+ });
45
+ /**
46
+ * Register join helper
47
+ *
48
+ * Example :
49
+ * var values = {a:v1, b:v2, c:v3};
50
+ * Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
51
+ * Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
52
+ */
53
+
54
+ hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
55
+ var fragments = [];
56
+ keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
57
+ fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
58
+ wrapper = typeof wrapper === 'string' ? wrapper : '"';
59
+
60
+ _.forIn(arr, function (value, key) {
61
+ var fragment = '';
62
+
63
+ if (value !== null || value !== undefined) {
64
+ if (typeof value === 'boolean') {
65
+ value = value ? 'true' : 'false';
66
+ } else if (typeof value === 'object') {
67
+ value = _.values(value).join(' ');
68
+ }
69
+ } else {
70
+ value = '';
71
+ }
44
72
 
45
- hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
46
- var fragments = [];
47
- keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
48
- fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
49
- wrapper = typeof wrapper === 'string' ? wrapper : '"';
73
+ if (keyValueGlue !== undefined) {
74
+ fragment += key + keyValueGlue;
75
+ }
50
76
 
51
- _.forIn(arr, function (value, key) {
52
- var fragment = '';
77
+ fragment += wrapper + value + wrapper;
78
+ fragments.push(fragment);
79
+ });
53
80
 
54
- if (value !== null || value !== undefined) {
55
- if (typeof value === 'boolean') {
56
- value = value ? 'true' : 'false';
57
- } else if (_typeof(value) === 'object') {
58
- value = _.values(value).join(' ');
59
- }
60
- } else {
61
- value = '';
62
- }
81
+ return fragments.join(fragmentGlue);
82
+ }); //register a classic "for loop" helper
83
+ //it also adds a local variable "i" as the index in each iteration loop
84
+
85
+ hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
86
+ var ret = '';
87
+ startIndex = parseInt(startIndex);
88
+ stopIndex = parseInt(stopIndex);
89
+ increment = parseInt(increment);
63
90
 
64
- if (keyValueGlue !== undefined) {
65
- fragment += key + keyValueGlue;
91
+ for (var i = startIndex; i < stopIndex; i += increment) {
92
+ ret += options.fn(_.extend({}, this, {
93
+ i: i
94
+ }));
66
95
  }
67
96
 
68
- fragment += wrapper + value + wrapper;
69
- fragments.push(fragment);
97
+ return ret;
70
98
  });
99
+ hb.registerHelper('equal', function (var1, var2, options) {
100
+ if (var1 == var2) {
101
+ return options.fn(this);
102
+ } else {
103
+ return options.inverse(this);
104
+ }
105
+ }); // register a "get property" helper
106
+ // it gets the named property from the provided context
71
107
 
72
- return fragments.join(fragmentGlue);
73
- }); //register a classic "for loop" helper
74
- //it also adds a local variable "i" as the index in each iteration loop
108
+ hb.registerHelper('property', function (name, context) {
109
+ return context[name] || '';
110
+ }); // register an 'includes' helper
111
+ // it checks if value is in array
75
112
 
76
- hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
77
- var ret = '';
78
- startIndex = parseInt(startIndex);
79
- stopIndex = parseInt(stopIndex);
80
- increment = parseInt(increment);
113
+ hb.registerHelper('includes', function (haystack, needle, options) {
114
+ if (_.contains(haystack, needle)) {
115
+ return options.fn(this);
116
+ }
117
+ });
118
+ }
81
119
 
82
- for (var i = startIndex; i < stopIndex; i += increment) {
83
- ret += options.fn(_.extend({}, this, {
84
- i: i
85
- }));
120
+ if (!Helpers0.__initialized) {
121
+ Helpers0(Handlebars);
122
+ Helpers0.__initialized = true;
123
+ }
124
+ var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
125
+ this.compilerInfo = [4,'>= 1.0.0'];
126
+ helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
127
+ var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
128
+
129
+ function program1(depth0,data) {
130
+
131
+
132
+ return "vertical-action-bar";
86
133
  }
87
134
 
88
- return ret;
89
- });
90
- hb.registerHelper('equal', function (var1, var2, options) {
91
- if (var1 == var2) {
92
- return options.fn(this);
93
- } else {
94
- return options.inverse(this);
135
+ function program3(depth0,data) {
136
+
137
+
138
+ return "horizontal-action-bar";
95
139
  }
96
- }); // register a "get property" helper
97
- // it gets the named property from the provided context
98
140
 
99
- hb.registerHelper('property', function (name, context) {
100
- return context[name] || '';
101
- }); // register an 'includes' helper
102
- // it checks if value is in array
103
-
104
- hb.registerHelper('includes', function (haystack, needle, options) {
105
- if (_.contains(haystack, needle)) {
106
- return options.fn(this);
141
+ function program5(depth0,data) {
142
+
143
+ var buffer = "", stack1, helper;
144
+ buffer += "\n <button class=\"btn-info small ";
145
+ stack1 = helpers['if'].call(depth0, (depth0 && depth0.conditional), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
146
+ if(stack1 || stack1 === 0) { buffer += stack1; }
147
+ buffer += "\" data-control=\"";
148
+ if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
149
+ else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
150
+ buffer += escapeExpression(stack1)
151
+ + "\" ";
152
+ stack1 = helpers['if'].call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
153
+ if(stack1 || stack1 === 0) { buffer += stack1; }
154
+ buffer += ">\n ";
155
+ stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});
156
+ if(stack1 || stack1 === 0) { buffer += stack1; }
157
+ buffer += "\n ";
158
+ if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
159
+ else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
160
+ buffer += escapeExpression(stack1)
161
+ + "\n </button>\n ";
162
+ return buffer;
163
+ }
164
+ function program6(depth0,data) {
165
+
166
+
167
+ return " conditional hidden";
107
168
  }
108
- });
109
- }
110
-
111
- if (!Helpers0.__initialized) {
112
- Helpers0(Handlebars);
113
- Helpers0.__initialized = true;
114
- }
115
- var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
116
- this.compilerInfo = [4,'>= 1.0.0'];
117
- helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
118
- var buffer = "", stack1, functionType="function", escapeExpression=this.escapeExpression, self=this;
119
-
120
- function program1(depth0,data) {
121
-
122
-
123
- return "vertical-action-bar";
124
- }
125
-
126
- function program3(depth0,data) {
127
-
128
-
129
- return "horizontal-action-bar";
130
- }
131
169
 
132
- function program5(depth0,data) {
133
-
134
- var buffer = "", stack1, helper;
135
- buffer += "\n <button class=\"btn-info small ";
136
- stack1 = helpers['if'].call(depth0, (depth0 && depth0.conditional), {hash:{},inverse:self.noop,fn:self.program(6, program6, data),data:data});
137
- if(stack1 || stack1 === 0) { buffer += stack1; }
138
- buffer += "\" data-control=\"";
139
- if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
140
- else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
141
- buffer += escapeExpression(stack1)
142
- + "\" ";
143
- stack1 = helpers['if'].call(depth0, (depth0 && depth0.title), {hash:{},inverse:self.noop,fn:self.program(8, program8, data),data:data});
144
- if(stack1 || stack1 === 0) { buffer += stack1; }
145
- buffer += ">\n ";
146
- stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(10, program10, data),data:data});
147
- if(stack1 || stack1 === 0) { buffer += stack1; }
148
- buffer += "\n ";
149
- if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
150
- else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
151
- buffer += escapeExpression(stack1)
152
- + "\n </button>\n ";
153
- return buffer;
154
- }
155
- function program6(depth0,data) {
156
-
157
-
158
- return " conditional hidden";
159
- }
170
+ function program8(depth0,data) {
171
+
172
+ var buffer = "", stack1, helper;
173
+ buffer += " title=\"";
174
+ if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
175
+ else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
176
+ buffer += escapeExpression(stack1)
177
+ + "\"";
178
+ return buffer;
179
+ }
160
180
 
161
- function program8(depth0,data) {
162
-
163
- var buffer = "", stack1, helper;
164
- buffer += " title=\"";
165
- if (helper = helpers.title) { stack1 = helper.call(depth0, {hash:{},data:data}); }
166
- else { helper = (depth0 && depth0.title); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
167
- buffer += escapeExpression(stack1)
168
- + "\"";
169
- return buffer;
170
- }
181
+ function program10(depth0,data) {
182
+
183
+ var buffer = "", stack1, helper;
184
+ buffer += "<span class=\"icon icon-";
185
+ if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
186
+ else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
187
+ buffer += escapeExpression(stack1)
188
+ + "\"></span>";
189
+ return buffer;
190
+ }
171
191
 
172
- function program10(depth0,data) {
173
-
174
- var buffer = "", stack1, helper;
175
- buffer += "<span class=\"icon icon-";
176
- if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
177
- else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
178
- buffer += escapeExpression(stack1)
179
- + "\"></span>";
180
- return buffer;
192
+ buffer += "<aside class=\"action-bar ";
193
+ stack1 = helpers['if'].call(depth0, (depth0 && depth0.vertical), {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
194
+ if(stack1 || stack1 === 0) { buffer += stack1; }
195
+ buffer += " clearfix\">\n ";
196
+ stack1 = helpers.each.call(depth0, (depth0 && depth0.buttons), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
197
+ if(stack1 || stack1 === 0) { buffer += stack1; }
198
+ buffer += "\n</aside>\n";
199
+ return buffer;
200
+ });
201
+ function mainTpl(data, options, asString) {
202
+ var html = Template(data, options);
203
+ return (asString || true) ? html : $(html);
181
204
  }
182
205
 
183
- buffer += "<aside class=\"action-bar ";
184
- stack1 = helpers['if'].call(depth0, (depth0 && depth0.vertical), {hash:{},inverse:self.program(3, program3, data),fn:self.program(1, program1, data),data:data});
185
- if(stack1 || stack1 === 0) { buffer += stack1; }
186
- buffer += " clearfix\">\n ";
187
- stack1 = helpers.each.call(depth0, (depth0 && depth0.buttons), {hash:{},inverse:self.noop,fn:self.program(5, program5, data),data:data});
188
- if(stack1 || stack1 === 0) { buffer += stack1; }
189
- buffer += "\n</aside>\n";
190
- return buffer;
191
- });
192
- function mainTpl(data, options, asString) {
193
- var html = Template(data, options);
194
- return (asString || true) ? html : $(html);
195
- }
196
-
197
- /**
198
- * This program is free software; you can redistribute it and/or
199
- * modify it under the terms of the GNU General Public License
200
- * as published by the Free Software Foundation; under version 2
201
- * of the License (non-upgradable).
202
- *
203
- * This program is distributed in the hope that it will be useful,
204
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
205
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
206
- * GNU General Public License for more details.
207
- *
208
- * You should have received a copy of the GNU General Public License
209
- * along with this program; if not, write to the Free Software
210
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
211
- *
212
- * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
213
- */
214
- /**
215
- * Defines an action bar
216
- * @type {Object}
217
- */
218
-
219
- var actionbar = {
220
206
  /**
221
- * Gets the definition of a button
222
- * @param {String} id - The identifier of the button
223
- * @returns {Object|undefined}
207
+ * This program is free software; you can redistribute it and/or
208
+ * modify it under the terms of the GNU General Public License
209
+ * as published by the Free Software Foundation; under version 2
210
+ * of the License (non-upgradable).
211
+ *
212
+ * This program is distributed in the hope that it will be useful,
213
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
214
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
215
+ * GNU General Public License for more details.
216
+ *
217
+ * You should have received a copy of the GNU General Public License
218
+ * along with this program; if not, write to the Free Software
219
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
220
+ *
221
+ * Copyright (c) 2016 (original work) Open Assessment Technologies SA ;
224
222
  */
225
- getButton: function getButton(id) {
226
- if (this.is('rendered')) {
227
- return this.buttons[id];
228
- }
229
- },
230
-
231
223
  /**
232
- * Gets the DOM element of a button
233
- * @param {String} id - The identifier of the button
234
- * @returns {jQuery|undefined}
224
+ * Defines an action bar
225
+ * @type {Object}
235
226
  */
236
- getButtonElement: function getButtonElement(id) {
237
- if (this.is('rendered')) {
238
- return this.controls.$buttons[id];
239
- }
240
- },
241
227
 
242
- /**
243
- * Shows a button
244
- * @param {String} id - The identifier of the button
245
- * @returns {actionbar}
246
- */
247
- showButton: function showButton(id) {
248
- var $btn = this.getButtonElement(id);
228
+ var actionbar = {
229
+ /**
230
+ * Gets the definition of a button
231
+ * @param {String} id - The identifier of the button
232
+ * @returns {Object|undefined}
233
+ */
234
+ getButton: function getButton(id) {
235
+ if (this.is('rendered')) {
236
+ return this.buttons[id];
237
+ }
238
+ },
239
+
240
+ /**
241
+ * Gets the DOM element of a button
242
+ * @param {String} id - The identifier of the button
243
+ * @returns {jQuery|undefined}
244
+ */
245
+ getButtonElement: function getButtonElement(id) {
246
+ if (this.is('rendered')) {
247
+ return this.controls.$buttons[id];
248
+ }
249
+ },
250
+
251
+ /**
252
+ * Shows a button
253
+ * @param {String} id - The identifier of the button
254
+ * @returns {actionbar}
255
+ */
256
+ showButton: function showButton(id) {
257
+ var $btn = this.getButtonElement(id);
258
+
259
+ if ($btn) {
260
+ $btn.removeClass('hidden');
261
+ }
249
262
 
250
- if ($btn) {
251
- $btn.removeClass('hidden');
252
- }
263
+ return this;
264
+ },
253
265
 
254
- return this;
255
- },
266
+ /**
267
+ * Hides a button
268
+ * @param {String} id - The identifier of the button
269
+ * @returns {actionbar}
270
+ */
271
+ hideButton: function hideButton(id) {
272
+ var $btn = this.getButtonElement(id);
256
273
 
257
- /**
258
- * Hides a button
259
- * @param {String} id - The identifier of the button
260
- * @returns {actionbar}
261
- */
262
- hideButton: function hideButton(id) {
263
- var $btn = this.getButtonElement(id);
274
+ if ($btn) {
275
+ $btn.addClass('hidden');
276
+ }
264
277
 
265
- if ($btn) {
266
- $btn.addClass('hidden');
267
- }
278
+ return this;
279
+ },
280
+
281
+ /**
282
+ * Toggles a button according to a condition
283
+ * @param {String} id - The identifier of the button
284
+ * @param {Boolean} condition - If the condition is `true` the button will be displayed
285
+ * @returns {actionbar}
286
+ */
287
+ toggleButton: function toggleButton(id, condition) {
288
+ var $btn = this.getButtonElement(id);
289
+
290
+ if ($btn) {
291
+ if (undefined !== condition) {
292
+ condition = !condition;
293
+ }
268
294
 
269
- return this;
270
- },
295
+ $btn.toggleClass('hidden', condition);
296
+ }
271
297
 
272
- /**
273
- * Toggles a button according to a condition
274
- * @param {String} id - The identifier of the button
275
- * @param {Boolean} condition - If the condition is `true` the button will be displayed
276
- * @returns {actionbar}
277
- */
278
- toggleButton: function toggleButton(id, condition) {
279
- var $btn = this.getButtonElement(id);
298
+ return this;
299
+ },
280
300
 
281
- if ($btn) {
282
- if (undefined !== condition) {
283
- condition = !condition;
301
+ /**
302
+ * Shows the conditional buttons
303
+ * @returns {actionbar}
304
+ */
305
+ showConditionals: function showConditionals() {
306
+ if (this.is('rendered')) {
307
+ this.controls.$conditional.removeClass('hidden');
284
308
  }
285
309
 
286
- $btn.toggleClass('hidden', condition);
287
- }
288
-
289
- return this;
290
- },
310
+ return this;
311
+ },
291
312
 
292
- /**
293
- * Shows the conditional buttons
294
- * @returns {actionbar}
295
- */
296
- showConditionals: function showConditionals() {
297
- if (this.is('rendered')) {
298
- this.controls.$conditional.removeClass('hidden');
299
- }
313
+ /**
314
+ * Hides the conditional buttons
315
+ * @returns {actionbar}
316
+ */
317
+ hideConditionals: function hideConditionals() {
318
+ if (this.is('rendered')) {
319
+ this.controls.$conditional.addClass('hidden');
320
+ }
300
321
 
301
- return this;
302
- },
322
+ return this;
323
+ },
324
+
325
+ /**
326
+ * Toggles the conditional buttons according to a condition
327
+ * @param {Boolean} condition - If the condition is `true` the conditional buttons will be displayed
328
+ * @returns {actionbar}
329
+ */
330
+ toggleConditionals: function toggleConditionals(condition) {
331
+ if (this.is('rendered')) {
332
+ if (undefined !== condition) {
333
+ condition = !condition;
334
+ }
303
335
 
304
- /**
305
- * Hides the conditional buttons
306
- * @returns {actionbar}
307
- */
308
- hideConditionals: function hideConditionals() {
309
- if (this.is('rendered')) {
310
- this.controls.$conditional.addClass('hidden');
311
- }
336
+ this.controls.$conditional.toggleClass('hidden', condition);
337
+ }
312
338
 
313
- return this;
314
- },
339
+ return this;
340
+ },
315
341
 
316
- /**
317
- * Toggles the conditional buttons according to a condition
318
- * @param {Boolean} condition - If the condition is `true` the conditional buttons will be displayed
319
- * @returns {actionbar}
320
- */
321
- toggleConditionals: function toggleConditionals(condition) {
322
- if (this.is('rendered')) {
323
- if (undefined !== condition) {
324
- condition = !condition;
342
+ /**
343
+ * Shows all the buttons
344
+ * @returns {actionbar}
345
+ */
346
+ showAll: function showAll() {
347
+ if (this.is('rendered')) {
348
+ this.controls.$all.removeClass('hidden');
325
349
  }
326
350
 
327
- this.controls.$conditional.toggleClass('hidden', condition);
328
- }
351
+ return this;
352
+ },
329
353
 
330
- return this;
331
- },
354
+ /**
355
+ * Hides all the buttons
356
+ * @returns {actionbar}
357
+ */
358
+ hideAll: function hideAll() {
359
+ if (this.is('rendered')) {
360
+ this.controls.$all.addClass('hidden');
361
+ }
332
362
 
333
- /**
334
- * Shows all the buttons
335
- * @returns {actionbar}
336
- */
337
- showAll: function showAll() {
338
- if (this.is('rendered')) {
339
- this.controls.$all.removeClass('hidden');
340
- }
363
+ return this;
364
+ },
365
+
366
+ /**
367
+ * Toggles all the buttons according to a condition
368
+ * @param {Boolean} condition - If the condition is `true` the buttons will be displayed
369
+ * @returns {actionbar}
370
+ */
371
+ toggleAll: function toggleAll(condition) {
372
+ if (this.is('rendered')) {
373
+ if (undefined !== condition) {
374
+ condition = !condition;
375
+ }
341
376
 
342
- return this;
343
- },
377
+ this.controls.$all.toggleClass('hidden', condition);
378
+ }
344
379
 
345
- /**
346
- * Hides all the buttons
347
- * @returns {actionbar}
348
- */
349
- hideAll: function hideAll() {
350
- if (this.is('rendered')) {
351
- this.controls.$all.addClass('hidden');
380
+ return this;
352
381
  }
353
-
354
- return this;
355
- },
356
-
382
+ };
357
383
  /**
358
- * Toggles all the buttons according to a condition
359
- * @param {Boolean} condition - If the condition is `true` the buttons will be displayed
384
+ * Builds an instance of the actionbar component
385
+ * @param {Object} config
386
+ * @param {Array} config.buttons - The list of buttons to display.
387
+ * @param {String} config.buttons.id - The id of the button
388
+ * @param {String} config.buttons.label - The text displayed in the button
389
+ * @param {String} config.buttons.icon - An optional icon displayed in the button
390
+ * @param {String} config.buttons.title - An optional tooltip displayed on the button
391
+ * @param {Boolean} config.buttons.conditional - The button is hidden by default and must be displayed later
392
+ * @param {Function} config.buttons.action - An action called when the button is clicked
393
+ * @param {Boolean} [config.vertical] - Displays the action bar vertically
360
394
  * @returns {actionbar}
395
+ *
396
+ * @event init - Emitted when the component is initialized
397
+ * @event destroy - Emitted when the component is destroying
398
+ * @event render - Emitted when the component is rendered
399
+ * @event button - Emitted when a button is clicked
400
+ * @event show - Emitted when the component is shown
401
+ * @event hide - Emitted when the component is hidden
402
+ * @event enable - Emitted when the component is enabled
403
+ * @event disable - Emitted when the component is disabled
404
+ * @event template - Emitted when the template is changed
361
405
  */
362
- toggleAll: function toggleAll(condition) {
363
- if (this.is('rendered')) {
364
- if (undefined !== condition) {
365
- condition = !condition;
366
- }
367
-
368
- this.controls.$all.toggleClass('hidden', condition);
369
- }
370
406
 
371
- return this;
372
- }
373
- };
374
- /**
375
- * Builds an instance of the actionbar component
376
- * @param {Object} config
377
- * @param {Array} config.buttons - The list of buttons to display.
378
- * @param {String} config.buttons.id - The id of the button
379
- * @param {String} config.buttons.label - The text displayed in the button
380
- * @param {String} config.buttons.icon - An optional icon displayed in the button
381
- * @param {String} config.buttons.title - An optional tooltip displayed on the button
382
- * @param {Boolean} config.buttons.conditional - The button is hidden by default and must be displayed later
383
- * @param {Function} config.buttons.action - An action called when the button is clicked
384
- * @param {Boolean} [config.vertical] - Displays the action bar vertically
385
- * @returns {actionbar}
386
- *
387
- * @event init - Emitted when the component is initialized
388
- * @event destroy - Emitted when the component is destroying
389
- * @event render - Emitted when the component is rendered
390
- * @event button - Emitted when a button is clicked
391
- * @event show - Emitted when the component is shown
392
- * @event hide - Emitted when the component is hidden
393
- * @event enable - Emitted when the component is enabled
394
- * @event disable - Emitted when the component is disabled
395
- * @event template - Emitted when the template is changed
396
- */
397
-
398
- function actionbarFactory(config) {
399
- return component(actionbar).setTemplate(mainTpl) // uninstalls the component
400
- .on('destroy', function () {
401
- this.buttons = null;
402
- this.controls = null;
403
- }) // renders the component
404
- .on('render', function () {
405
- var self = this;
406
- var $component = this.getElement(); // vertical or horizontal ?
407
-
408
- this.setState('horizontal', $component.hasClass('horizontal-action-bar'));
409
- this.setState('vertical', $component.hasClass('vertical-action-bar')); // get access to all needed placeholders
410
-
411
- this.buttons = {};
412
- this.controls = {
413
- $buttons: {},
414
- $conditional: $component.find('button.conditional'),
415
- $all: $component.find('button')
416
- };
417
-
418
- _.forEach(this.config.buttons, function (button) {
419
- self.buttons[button.id] = button;
420
- self.controls.$buttons[button.id] = $component.find('[data-control="' + button.id + '"]');
421
- }); // click on a button
422
-
423
-
424
- this.$component.on('click', 'button', function (e) {
425
- var $this = $$1(this);
426
- var buttonId = $this.closest('button').data('control');
427
- var button = self.getButton(buttonId);
428
- e.preventDefault();
429
-
430
- if (button && button.action) {
431
- button.action.call(self, buttonId, button);
432
- }
433
- /**
434
- * @event actionbar#button
435
- * @param {String} buttonId
436
- * @param {Object} button
437
- */
407
+ function actionbarFactory(config) {
408
+ return component(actionbar).setTemplate(mainTpl) // uninstalls the component
409
+ .on('destroy', function () {
410
+ this.buttons = null;
411
+ this.controls = null;
412
+ }) // renders the component
413
+ .on('render', function () {
414
+ var self = this;
415
+ var $component = this.getElement(); // vertical or horizontal ?
416
+
417
+ this.setState('horizontal', $component.hasClass('horizontal-action-bar'));
418
+ this.setState('vertical', $component.hasClass('vertical-action-bar')); // get access to all needed placeholders
419
+
420
+ this.buttons = {};
421
+ this.controls = {
422
+ $buttons: {},
423
+ $conditional: $component.find('button.conditional'),
424
+ $all: $component.find('button')
425
+ };
426
+
427
+ _.forEach(this.config.buttons, function (button) {
428
+ self.buttons[button.id] = button;
429
+ self.controls.$buttons[button.id] = $component.find('[data-control="' + button.id + '"]');
430
+ }); // click on a button
431
+
432
+
433
+ this.$component.on('click', 'button', function (e) {
434
+ var $this = $$1(this);
435
+ var buttonId = $this.closest('button').data('control');
436
+ var button = self.getButton(buttonId);
437
+ e.preventDefault();
438
+
439
+ if (button && button.action) {
440
+ button.action.call(self, buttonId, button);
441
+ }
442
+ /**
443
+ * @event actionbar#button
444
+ * @param {String} buttonId
445
+ * @param {Object} button
446
+ */
438
447
 
439
448
 
440
- self.trigger('button', buttonId, button);
441
- });
442
- }).init(config);
443
- }
449
+ self.trigger('button', buttonId, button);
450
+ });
451
+ }).init(config);
452
+ }
444
453
 
445
- return actionbarFactory;
454
+ return actionbarFactory;
446
455
 
447
456
  });