@oat-sa/tao-core-ui 1.55.0 → 1.57.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.
- package/dist/actionbar.js +395 -386
- package/dist/adder.js +19 -21
- package/dist/animable/absorbable/absorbable.js +213 -204
- package/dist/animable/absorbable/css/absorb.css +0 -1
- package/dist/animable/absorbable/css/absorb.css.map +1 -0
- package/dist/animable/pulsable/css/pulse.css.map +1 -0
- package/dist/animable/pulsable/pulsable.js +177 -168
- package/dist/autocomplete/css/autocomplete.css +0 -1
- package/dist/autocomplete/css/autocomplete.css.map +1 -0
- package/dist/autocomplete.js +66 -68
- package/dist/badge/badge.js +197 -188
- package/dist/badge/css/badge.css +0 -1
- package/dist/badge/css/badge.css.map +1 -0
- package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -0
- package/dist/breadcrumbs.js +284 -275
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -0
- package/dist/bulkActionPopup.js +495 -490
- package/dist/button.js +291 -283
- package/dist/calculator/css/calculator.css.map +1 -0
- package/dist/cascadingComboBox.js +258 -249
- package/dist/ckeditor/ckConfigurator.js +27 -19
- package/dist/ckeditor/dtdHandler.js +9 -11
- package/dist/class/css/selector.css.map +1 -0
- package/dist/class/selector.js +450 -441
- package/dist/component/css/components.css.map +1 -0
- package/dist/component/css/windowComponent.css.map +1 -0
- package/dist/component/draggable.js +6 -0
- package/dist/component/resizable.js +7 -1
- package/dist/component/windowed.js +294 -285
- package/dist/component.js +428 -419
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -0
- package/dist/contextualPopup.js +426 -417
- package/dist/dashboard/css/dashboard.css.map +1 -0
- package/dist/dashboard.js +309 -300
- package/dist/datalist/css/datalist.css.map +1 -0
- package/dist/datalist.js +762 -753
- package/dist/datatable/css/datatable.css.map +1 -0
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1550 -1527
- package/dist/dateRange/css/dateRange.css.map +1 -0
- package/dist/dateRange/dateRange.js +402 -393
- package/dist/datetime/css/picker.css.map +1 -0
- package/dist/datetime/picker.js +672 -665
- package/dist/deleter.js +377 -368
- package/dist/destination/css/selector.css.map +1 -0
- package/dist/destination/selector.js +295 -286
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +225 -216
- package/dist/dialog.js +654 -650
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/css/documentViewer.css.map +1 -0
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +175 -166
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +527 -518
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +389 -380
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +548 -539
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +378 -369
- package/dist/documentViewer/providers/pdfViewer.js +193 -184
- package/dist/documentViewer.js +301 -292
- package/dist/dropdown/css/dropdown.css.map +1 -0
- package/dist/dropdown.js +392 -383
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -0
- package/dist/dynamicComponent.js +598 -597
- package/dist/feedback.js +362 -356
- package/dist/figure/FigureStateActive.js +661 -0
- package/dist/filesender.js +2 -2
- package/dist/filter.js +239 -230
- package/dist/form/css/dropdownForm.css.map +1 -0
- package/dist/form/css/form.css.map +1 -0
- package/dist/form/dropdownForm.js +357 -355
- package/dist/form/form.js +690 -919
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/css/validator.css.map +1 -0
- package/dist/form/validator/renderer.js +235 -233
- package/dist/form/validator/validator.js +189 -257
- package/dist/form/widget/css/widget.css.map +1 -0
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +259 -254
- package/dist/form/widget/providers/comboBox.js +192 -187
- package/dist/form/widget/providers/default.js +9 -8
- package/dist/form/widget/providers/hidden.js +179 -170
- package/dist/form/widget/providers/hiddenBox.js +267 -262
- package/dist/form/widget/providers/radioBox.js +225 -216
- package/dist/form/widget/providers/textArea.js +196 -187
- package/dist/form/widget/providers/textBox.js +3 -2
- package/dist/form/widget/widget.js +475 -473
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/css/form.css.map +1 -0
- package/dist/generis/form/form.js +323 -314
- package/dist/generis/validator/css/validator.css.map +1 -0
- package/dist/generis/validator/validator.js +218 -209
- package/dist/generis/widget/checkBox/checkBox.js +227 -218
- package/dist/generis/widget/comboBox/comboBox.js +188 -179
- package/dist/generis/widget/css/widget.css.map +1 -0
- package/dist/generis/widget/hiddenBox/hiddenBox.js +229 -220
- package/dist/generis/widget/textBox/textBox.js +178 -169
- package/dist/generis/widget/widget.js +255 -246
- package/dist/groupedComboBox.js +231 -222
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +958 -967
- package/dist/image/ImgStateActive/helper.js +41 -0
- package/dist/image/ImgStateActive/initHelper.js +81 -31
- package/dist/image/ImgStateActive/initMediaEditor.js +58 -13
- package/dist/image/ImgStateActive/mediaSizer.js +50 -7
- package/dist/image/ImgStateActive.js +108 -54
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +0 -1
- package/dist/itemButtonList/css/item-button-list.css.map +1 -0
- package/dist/itemButtonList.js +435 -439
- package/dist/keyNavigation/navigableDomElement.js +38 -51
- package/dist/keyNavigation/navigator.js +70 -85
- package/dist/listbox/css/listbox.css.map +1 -0
- package/dist/listbox.js +469 -460
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/css/button.css.map +1 -0
- package/dist/loadingButton/loadingButton.js +218 -209
- package/dist/lock.js +485 -476
- package/dist/login/login.js +484 -475
- package/dist/maths/calculator/basicCalculator.js +244 -235
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +781 -772
- package/dist/maths/calculator/core/expression.js +485 -476
- package/dist/maths/calculator/core/labels.js +237 -228
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +170 -163
- package/dist/maths/calculator/css/calculator.css.map +1 -0
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +253 -244
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +288 -279
- package/dist/maths/calculator/scientificCalculator.js +336 -327
- package/dist/mediaEditor/mediaEditorComponent.js +245 -238
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +14 -9
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +235 -222
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +589 -580
- package/dist/mediaplayer/css/player.css.map +1 -0
- package/dist/mediaplayer/players/html5.js +675 -666
- package/dist/mediaplayer/players/youtube.js +424 -419
- package/dist/mediaplayer/support.js +10 -11
- package/dist/mediaplayer/utils/reminder.js +13 -14
- package/dist/mediaplayer/utils/timeObserver.js +11 -10
- package/dist/mediaplayer/youtubeManager.js +145 -164
- package/dist/mediaplayer.js +1519 -1564
- package/dist/mediasizer.js +678 -669
- package/dist/modal.js +17 -10
- package/dist/pageSizeSelector.js +228 -219
- package/dist/pagination/css/pagination.css.map +1 -0
- package/dist/pagination/providers/pages.js +289 -280
- package/dist/pagination/providers/simple.js +201 -192
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +356 -347
- package/dist/resource/css/selector.css.map +1 -0
- package/dist/resource/filters.js +280 -271
- package/dist/resource/list.js +1273 -1264
- package/dist/resource/selector.js +874 -865
- package/dist/resource/tree.js +1491 -1482
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -0
- package/dist/resourcemgr/fileBrowser.js +569 -564
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +524 -515
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +315 -306
- package/dist/searchModal/advancedSearch.js +767 -796
- package/dist/searchModal/css/advancedSearch.css.map +1 -0
- package/dist/searchModal/css/searchModal.css.map +1 -0
- package/dist/searchModal.js +549 -597
- package/dist/switch/css/switch.css.map +1 -0
- package/dist/switch/switch.js +307 -298
- package/dist/tabs/css/tabs.css.map +1 -0
- package/dist/tabs.js +575 -598
- package/dist/taskQueue/css/taskQueue.css.map +1 -0
- package/dist/taskQueue/status.js +321 -312
- package/dist/taskQueue/table.js +384 -375
- package/dist/taskQueue/taskQueueModel.js +472 -488
- package/dist/taskQueueButton/css/taskable.css.map +1 -0
- package/dist/taskQueueButton/css/treeButton.css.map +1 -0
- package/dist/taskQueueButton/taskable.js +273 -264
- package/dist/taskQueueButton/treeButton.js +198 -189
- package/dist/themeLoader.js +23 -24
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +304 -295
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -0
- package/dist/tristateCheckboxGroup.js +320 -311
- package/dist/uploader.js +696 -687
- package/dist/validator/Report.js +1 -1
- package/dist/validator/Validator.js +3 -3
- package/dist/validator/validators.js +9 -9
- package/dist/validator.js +230 -240
- package/dist/waitForMedia.js +1 -1
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -0
- package/package.json +3 -3
- package/{src/scss → scss}/.DS_Store +0 -0
- package/src/.DS_Store +0 -0
- package/src/animable/absorbable/css/absorb.css +0 -1
- package/src/animable/absorbable/css/absorb.css.map +1 -0
- package/src/animable/pulsable/css/pulse.css.map +1 -0
- package/src/autocomplete/css/autocomplete.css +0 -1
- package/src/autocomplete/css/autocomplete.css.map +1 -0
- package/src/badge/css/badge.css +0 -1
- package/src/badge/css/badge.css.map +1 -0
- package/src/breadcrumbs/css/breadcrumbs.css.map +1 -0
- package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -0
- package/src/calculator/css/calculator.css.map +1 -0
- package/src/ckeditor/ckConfigurator.js +6 -0
- package/src/class/css/selector.css.map +1 -0
- package/src/component/css/components.css.map +1 -0
- package/src/component/css/windowComponent.css.map +1 -0
- package/src/component/draggable.js +5 -0
- package/src/component/resizable.js +5 -0
- package/src/contextualPopup/css/contextualPopup.css.map +1 -0
- package/src/dashboard/css/dashboard.css.map +1 -0
- package/src/datalist/css/datalist.css.map +1 -0
- package/src/datatable/css/datatable.css.map +1 -0
- package/src/dateRange/css/dateRange.css.map +1 -0
- package/src/datetime/css/picker.css.map +1 -0
- package/src/destination/css/selector.css.map +1 -0
- package/src/documentViewer/css/documentViewer.css.map +1 -0
- package/src/dropdown/css/dropdown.css.map +1 -0
- package/src/dynamicComponent/css/dynamicComponent.css.map +1 -0
- package/src/figure/FigureStateActive.js +174 -0
- package/src/figure/figcaption.tpl +1 -0
- package/src/form/css/dropdownForm.css.map +1 -0
- package/src/form/css/form.css.map +1 -0
- package/src/form/validator/css/validator.css.map +1 -0
- package/src/form/widget/css/widget.css.map +1 -0
- package/src/generis/form/css/form.css.map +1 -0
- package/src/generis/validator/css/validator.css.map +1 -0
- package/src/generis/widget/css/widget.css.map +1 -0
- package/src/image/ImgStateActive/helper.js +36 -0
- package/src/image/ImgStateActive/initHelper.js +9 -7
- package/src/image/ImgStateActive/initMediaEditor.js +3 -2
- package/src/image/ImgStateActive/mediaSizer.js +13 -3
- package/src/itemButtonList/css/item-button-list.css +0 -1
- package/src/itemButtonList/css/item-button-list.css.map +1 -0
- package/src/listbox/css/listbox.css.map +1 -0
- package/src/loadingButton/css/button.css.map +1 -0
- package/src/maths/calculator/css/calculator.css.map +1 -0
- package/src/mediaEditor/plugins/mediaAlignment/helper.js +12 -8
- package/src/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +75 -72
- package/src/mediaplayer/css/player.css.map +1 -0
- package/src/pagination/css/pagination.css.map +1 -0
- package/src/resource/css/selector.css.map +1 -0
- package/src/resourcemgr/css/resourcemgr.css.map +1 -0
- package/src/searchModal/css/advancedSearch.css.map +1 -0
- package/src/searchModal/css/searchModal.css.map +1 -0
- package/src/switch/css/switch.css.map +1 -0
- package/src/tabs/css/tabs.css.map +1 -0
- package/src/taskQueue/css/taskQueue.css.map +1 -0
- package/src/taskQueueButton/css/taskable.css.map +1 -0
- package/src/taskQueueButton/css/treeButton.css.map +1 -0
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -0
- package/src/waitingDialog/css/waitingDialog.css.map +1 -0
- package/src/css/basic.css +0 -7764
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/scss/basic.scss +0 -16
- package/src/scss/ckeditor/skins/tao/scss/dialog.scss +0 -763
- package/src/scss/ckeditor/skins/tao/scss/editor.scss +0 -111
- package/src/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_colorpanel.scss +0 -118
- package/src/scss/ckeditor/skins/tao/scss/inc/_elementspath.scss +0 -69
- package/src/scss/ckeditor/skins/tao/scss/inc/_mainui.scss +0 -194
- package/src/scss/ckeditor/skins/tao/scss/inc/_menu.scss +0 -181
- package/src/scss/ckeditor/skins/tao/scss/inc/_panel.scss +0 -200
- package/src/scss/ckeditor/skins/tao/scss/inc/_presets.scss +0 -32
- package/src/scss/ckeditor/skins/tao/scss/inc/_reset.scss +0 -101
- package/src/scss/ckeditor/skins/tao/scss/inc/_richcombo.scss +0 -213
- package/src/scss/ckeditor/skins/tao/scss/inc/_tao.scss +0 -59
- package/src/scss/ckeditor/skins/tao/scss/inc/_toolbar.scss +0 -301
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-regular.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold-italic.woff.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.eot.b64 +0 -1
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff +0 -0
- package/src/scss/font/source-sans-pro/source-sans-pro-semibold.woff.b64 +0 -1
- package/src/scss/font/tao/tao.eot +0 -0
- package/src/scss/font/tao/tao.svg +0 -235
- package/src/scss/font/tao/tao.ttf +0 -0
- package/src/scss/font/tao/tao.woff +0 -0
- package/src/scss/inc/_base.scss +0 -496
- package/src/scss/inc/_bootstrap.scss +0 -6
- package/src/scss/inc/_buttons.scss +0 -114
- package/src/scss/inc/_colors.scss +0 -88
- package/src/scss/inc/_feedback.scss +0 -150
- package/src/scss/inc/_flex-grid.scss +0 -15
- package/src/scss/inc/_fonts.scss +0 -4
- package/src/scss/inc/_forms.scss +0 -827
- package/src/scss/inc/_functions.scss +0 -283
- package/src/scss/inc/_grid.scss +0 -66
- package/src/scss/inc/_jquery.nouislider.scss +0 -254
- package/src/scss/inc/_normalize.scss +0 -528
- package/src/scss/inc/_report.scss +0 -68
- package/src/scss/inc/_secondary-properties.scss +0 -89
- package/src/scss/inc/_select2.scss +0 -634
- package/src/scss/inc/_toolbars.scss +0 -155
- package/src/scss/inc/_tooltip.scss +0 -312
- package/src/scss/inc/_variables.scss +0 -21
- package/src/scss/inc/base/_highlight.scss +0 -5
- package/src/scss/inc/base/_list-style.scss +0 -59
- package/src/scss/inc/base/_svg.scss +0 -3
- package/src/scss/inc/base/_table.scss +0 -63
- package/src/scss/inc/fonts/_source-sans-pro.scss +0 -29
- package/src/scss/inc/fonts/_tao-icon-classes.scss +0 -226
- package/src/scss/inc/fonts/_tao-icon-def.scss +0 -12
- package/src/scss/inc/fonts/_tao-icon-vars.scss +0 -240
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
49
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
73
|
+
if (keyValueGlue !== undefined) {
|
|
74
|
+
fragment += key + keyValueGlue;
|
|
75
|
+
}
|
|
50
76
|
|
|
51
|
-
|
|
52
|
-
|
|
77
|
+
fragment += wrapper + value + wrapper;
|
|
78
|
+
fragments.push(fragment);
|
|
79
|
+
});
|
|
53
80
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
|
-
|
|
65
|
-
|
|
91
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
92
|
+
ret += options.fn(_.extend({}, this, {
|
|
93
|
+
i: i
|
|
94
|
+
}));
|
|
66
95
|
}
|
|
67
96
|
|
|
68
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
113
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
114
|
+
if (_.contains(haystack, needle)) {
|
|
115
|
+
return options.fn(this);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
81
119
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
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
|
-
*
|
|
222
|
-
*
|
|
223
|
-
*
|
|
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
|
-
*
|
|
233
|
-
* @
|
|
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
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
-
|
|
251
|
-
|
|
252
|
-
}
|
|
263
|
+
return this;
|
|
264
|
+
},
|
|
253
265
|
|
|
254
|
-
|
|
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
|
-
|
|
259
|
-
|
|
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
|
-
|
|
266
|
-
|
|
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
|
-
|
|
270
|
-
|
|
295
|
+
$btn.toggleClass('hidden', condition);
|
|
296
|
+
}
|
|
271
297
|
|
|
272
|
-
|
|
273
|
-
|
|
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
|
-
|
|
282
|
-
|
|
283
|
-
|
|
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
|
-
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
return this;
|
|
290
|
-
},
|
|
310
|
+
return this;
|
|
311
|
+
},
|
|
291
312
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
314
|
-
|
|
339
|
+
return this;
|
|
340
|
+
},
|
|
315
341
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
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
|
|
328
|
-
}
|
|
351
|
+
return this;
|
|
352
|
+
},
|
|
329
353
|
|
|
330
|
-
|
|
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
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
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
|
-
|
|
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
|
-
*
|
|
359
|
-
* @param {
|
|
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
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
449
|
+
self.trigger('button', buttonId, button);
|
|
450
|
+
});
|
|
451
|
+
}).init(config);
|
|
452
|
+
}
|
|
444
453
|
|
|
445
|
-
|
|
454
|
+
return actionbarFactory;
|
|
446
455
|
|
|
447
456
|
});
|