@oat-sa/tao-core-ui 1.58.1 → 1.58.2
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 +386 -395
- package/dist/adder.js +21 -19
- package/dist/animable/absorbable/absorbable.js +204 -213
- package/dist/animable/absorbable/css/absorb.css +1 -0
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/pulsable.js +168 -177
- package/dist/autocomplete/css/autocomplete.css +1 -0
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +68 -66
- package/dist/badge/badge.js +188 -197
- package/dist/badge/css/badge.css +1 -0
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs.js +275 -284
- package/dist/btngrouper.js +5 -5
- package/dist/bulkActionPopup.js +490 -495
- package/dist/button.js +283 -291
- package/dist/cascadingComboBox.js +249 -258
- package/dist/ckeditor/ckConfigurator.js +26 -19
- package/dist/ckeditor/dtdHandler.js +11 -9
- package/dist/class/selector.js +441 -450
- package/dist/component/resizable.js +1 -1
- package/dist/component/windowed.js +285 -294
- package/dist/component.js +419 -428
- package/dist/contextualPopup.js +417 -426
- package/dist/dashboard.js +300 -309
- package/dist/datalist.js +753 -762
- package/dist/datatable/filterStrategy/multiple.js +1 -1
- package/dist/datatable/filterStrategy/single.js +1 -1
- package/dist/datatable.js +1527 -1550
- package/dist/dateRange/dateRange.js +393 -402
- package/dist/datetime/picker.js +665 -672
- package/dist/deleter.js +368 -377
- package/dist/destination/selector.js +286 -295
- package/dist/dialog/alert.js +3 -3
- package/dist/dialog/confirm.js +1 -1
- package/dist/dialog/confirmDelete.js +216 -225
- package/dist/dialog.js +650 -654
- package/dist/disabler.js +8 -8
- package/dist/documentViewer/providers/pdfViewer/fallback/viewer.js +166 -175
- package/dist/documentViewer/providers/pdfViewer/pdfjs/findBar.js +518 -527
- package/dist/documentViewer/providers/pdfViewer/pdfjs/pageView.js +380 -389
- package/dist/documentViewer/providers/pdfViewer/pdfjs/searchEngine.js +539 -548
- package/dist/documentViewer/providers/pdfViewer/pdfjs/viewer.js +369 -378
- package/dist/documentViewer/providers/pdfViewer.js +184 -193
- package/dist/documentViewer.js +292 -301
- package/dist/dropdown.js +383 -392
- package/dist/durationer.js +5 -5
- package/dist/dynamicComponent.js +597 -598
- package/dist/feedback.js +356 -362
- package/dist/figure/FigureStateActive.js +117 -108
- package/dist/filesender.js +2 -2
- package/dist/filter.js +230 -239
- package/dist/form/dropdownForm.js +355 -357
- package/dist/form/form.js +919 -690
- package/dist/form/simpleForm.js +1 -1
- package/dist/form/validator/renderer.js +233 -235
- package/dist/form/validator/validator.js +257 -189
- package/dist/form/widget/definitions.js +1 -1
- package/dist/form/widget/providers/checkBox.js +254 -259
- package/dist/form/widget/providers/comboBox.js +187 -192
- package/dist/form/widget/providers/default.js +8 -9
- package/dist/form/widget/providers/hidden.js +170 -179
- package/dist/form/widget/providers/hiddenBox.js +262 -267
- package/dist/form/widget/providers/radioBox.js +216 -225
- package/dist/form/widget/providers/textArea.js +187 -196
- package/dist/form/widget/providers/textBox.js +2 -3
- package/dist/form/widget/widget.js +473 -475
- package/dist/formValidator/formValidator.js +1 -1
- package/dist/formValidator/highlighters/message.js +1 -1
- package/dist/generis/form/form.js +314 -323
- package/dist/generis/validator/validator.js +209 -218
- package/dist/generis/widget/checkBox/checkBox.js +218 -227
- package/dist/generis/widget/comboBox/comboBox.js +179 -188
- package/dist/generis/widget/hiddenBox/hiddenBox.js +220 -229
- package/dist/generis/widget/textBox/textBox.js +169 -178
- package/dist/generis/widget/widget.js +246 -255
- package/dist/groupedComboBox.js +222 -231
- package/dist/groupvalidator.js +2 -2
- package/dist/highlighter.js +967 -958
- package/dist/image/ImgStateActive/helper.js +7 -5
- package/dist/image/ImgStateActive/initHelper.js +49 -43
- package/dist/image/ImgStateActive/initMediaEditor.js +24 -20
- package/dist/image/ImgStateActive/mediaSizer.js +14 -12
- package/dist/image/ImgStateActive.js +72 -70
- package/dist/incrementer.js +6 -6
- package/dist/inplacer.js +6 -6
- package/dist/itemButtonList/css/item-button-list.css +1 -0
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/itemButtonList.js +439 -435
- package/dist/keyNavigation/navigableDomElement.js +51 -38
- package/dist/keyNavigation/navigator.js +85 -70
- package/dist/listbox.js +460 -469
- package/dist/liststyler.js +8 -8
- package/dist/loadingButton/loadingButton.js +209 -218
- package/dist/lock.js +476 -485
- package/dist/login/login.js +475 -484
- package/dist/maths/calculator/basicCalculator.js +235 -244
- package/dist/maths/calculator/calculatorComponent.js +3 -3
- package/dist/maths/calculator/core/board.js +772 -781
- package/dist/maths/calculator/core/expression.js +476 -485
- package/dist/maths/calculator/core/labels.js +228 -237
- package/dist/maths/calculator/core/tokenizer.js +1 -1
- package/dist/maths/calculator/core/tokens.js +163 -170
- package/dist/maths/calculator/plugins/keyboard/templateKeyboard/templateKeyboard.js +244 -253
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +279 -288
- package/dist/maths/calculator/scientificCalculator.js +327 -336
- package/dist/mediaEditor/mediaEditorComponent.js +238 -245
- package/dist/mediaEditor/plugins/mediaAlignment/helper.js +7 -7
- package/dist/mediaEditor/plugins/mediaAlignment/mediaAlignmentComponent.js +229 -235
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +580 -589
- package/dist/mediaplayer/players/html5.js +666 -675
- package/dist/mediaplayer/players/youtube.js +419 -424
- package/dist/mediaplayer/support.js +11 -10
- package/dist/mediaplayer/utils/reminder.js +14 -13
- package/dist/mediaplayer/utils/timeObserver.js +10 -11
- package/dist/mediaplayer/youtubeManager.js +164 -145
- package/dist/mediaplayer.js +1565 -1520
- package/dist/mediasizer.js +669 -678
- package/dist/modal.js +10 -17
- package/dist/pageSizeSelector.js +219 -228
- package/dist/pagination/providers/pages.js +280 -289
- package/dist/pagination/providers/simple.js +192 -201
- package/dist/previewer.js +30 -30
- package/dist/progressbar.js +4 -4
- package/dist/report.js +347 -356
- package/dist/resource/filters.js +271 -280
- package/dist/resource/list.js +1264 -1273
- package/dist/resource/selector.js +865 -874
- package/dist/resource/tree.js +1483 -1492
- package/dist/resourcemgr/fileBrowser.js +564 -569
- package/dist/resourcemgr/filePreview.js +16 -16
- package/dist/resourcemgr/fileSelector.js +515 -524
- package/dist/resourcemgr/util/updatePermissions.js +2 -2
- package/dist/resourcemgr.js +306 -315
- package/dist/searchModal/advancedSearch.js +796 -767
- package/dist/searchModal.js +114 -91
- package/dist/switch/switch.js +298 -307
- package/dist/tabs.js +598 -575
- package/dist/taskQueue/status.js +312 -321
- package/dist/taskQueue/table.js +375 -384
- package/dist/taskQueue/taskQueueModel.js +488 -472
- package/dist/taskQueueButton/taskable.js +264 -273
- package/dist/taskQueueButton/treeButton.js +189 -198
- package/dist/themeLoader.js +24 -23
- package/dist/themes.js +1 -1
- package/dist/toggler.js +3 -3
- package/dist/tooltip.js +295 -304
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup.js +311 -320
- package/dist/uploader.js +687 -696
- 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 +240 -230
- package/dist/waitForMedia.js +1 -1
- package/package.json +3 -3
- package/src/animable/absorbable/css/absorb.css +1 -0
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css +1 -0
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/badge/css/badge.css +1 -0
- package/src/badge/css/badge.css.map +1 -1
- package/src/ckeditor/ckConfigurator.js +4 -0
- package/src/itemButtonList/css/item-button-list.css +1 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/.DS_Store +0 -0
- package/src/css/basic.css +0 -7826
- package/src/css/basic.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/dialog.css +0 -950
- package/src/css/ckeditor/skins/tao/css/dialog.css.map +0 -1
- package/src/css/ckeditor/skins/tao/css/editor.css +0 -1850
- package/src/css/ckeditor/skins/tao/css/editor.css.map +0 -1
- package/src/scss/.DS_Store +0 -0
- 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/dropdown.js
CHANGED
|
@@ -1,452 +1,443 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/dropdown/css/dropdown.css'], function ($$1, _, component, Handlebars, __, DOMPurify, dropdown_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
+
});
|
|
10
25
|
/**
|
|
11
|
-
*
|
|
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
|
+
* Register dompurify helper
|
|
26
27
|
*
|
|
28
|
+
* https://github.com/cure53/DOMPurify
|
|
29
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
30
|
+
* to make output safe for template systems
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
hb.registerHelper('dompurify', function (context) {
|
|
34
|
+
return DOMPurify.sanitize(context);
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Register join helper
|
|
27
38
|
*
|
|
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*
|
|
28
43
|
*/
|
|
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
44
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
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
|
-
*/
|
|
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 : '"';
|
|
53
50
|
|
|
54
|
-
|
|
55
|
-
var
|
|
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
|
-
}
|
|
51
|
+
_.forIn(arr, function (value, key) {
|
|
52
|
+
var fragment = '';
|
|
72
53
|
|
|
73
|
-
|
|
74
|
-
|
|
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(' ');
|
|
75
59
|
}
|
|
76
|
-
|
|
77
|
-
fragment += wrapper + value + wrapper;
|
|
78
|
-
fragments.push(fragment);
|
|
79
|
-
});
|
|
80
|
-
|
|
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);
|
|
90
|
-
|
|
91
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
92
|
-
ret += options.fn(_.extend({}, this, {
|
|
93
|
-
i: i
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return ret;
|
|
98
|
-
});
|
|
99
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
100
|
-
if (var1 == var2) {
|
|
101
|
-
return options.fn(this);
|
|
102
60
|
} else {
|
|
103
|
-
|
|
61
|
+
value = '';
|
|
104
62
|
}
|
|
105
|
-
}); // register a "get property" helper
|
|
106
|
-
// it gets the named property from the provided context
|
|
107
|
-
|
|
108
|
-
hb.registerHelper('property', function (name, context) {
|
|
109
|
-
return context[name] || '';
|
|
110
|
-
}); // register an 'includes' helper
|
|
111
|
-
// it checks if value is in array
|
|
112
63
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
return options.fn(this);
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
116
66
|
}
|
|
67
|
+
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
117
70
|
});
|
|
118
|
-
}
|
|
119
71
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
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, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
128
|
-
|
|
129
|
-
function program1(depth0,data) {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
return " open";
|
|
133
|
-
}
|
|
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
|
|
134
75
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
141
|
-
buffer += "\" id=\"";
|
|
142
|
-
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
143
|
-
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
144
|
-
buffer += escapeExpression(stack1)
|
|
145
|
-
+ "\" data-control=\"";
|
|
146
|
-
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
147
|
-
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
148
|
-
buffer += escapeExpression(stack1)
|
|
149
|
-
+ "\" role=\"navigation\">\n <div class=\"dropdown-header a toggler\" aria-haspopup=\"true\" tabindex=\"0\">\n </div>\n <ul class=\"dropdown-submenu plain\" aria-label=\"submenu\">\n </ul>\n </div>\n</div>\n";
|
|
150
|
-
return buffer;
|
|
151
|
-
});
|
|
152
|
-
function dropdownTpl(data, options, asString) {
|
|
153
|
-
var html = Template(data, options);
|
|
154
|
-
return (asString || true) ? html : $(html);
|
|
155
|
-
}
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
156
81
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
162
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
163
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
164
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
165
|
-
|
|
166
|
-
function program1(depth0,data) {
|
|
167
|
-
|
|
168
|
-
var buffer = "", stack1, helper;
|
|
169
|
-
buffer += "<span class=\"icon-";
|
|
170
|
-
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
171
|
-
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
172
|
-
buffer += escapeExpression(stack1)
|
|
173
|
-
+ "\"></span>";
|
|
174
|
-
return buffer;
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
175
86
|
}
|
|
176
87
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
188
|
-
buffer += escapeExpression(stack1)
|
|
189
|
-
+ "\">\n ";
|
|
190
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
191
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
192
|
-
buffer += "\n ";
|
|
193
|
-
if (helper = helpers.content) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
194
|
-
else { helper = (depth0 && depth0.content); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
195
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
196
|
-
buffer += "\n</li>\n";
|
|
197
|
-
return buffer;
|
|
198
|
-
});
|
|
199
|
-
function itemTpl(data, options, asString) {
|
|
200
|
-
var html = Template$1(data, options);
|
|
201
|
-
return (asString || true) ? html : $(html);
|
|
202
|
-
}
|
|
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);
|
|
95
|
+
}
|
|
96
|
+
}); // register a "get property" helper
|
|
97
|
+
// it gets the named property from the provided context
|
|
203
98
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
* of the License (non-upgradable).
|
|
209
|
-
*
|
|
210
|
-
* This program is distributed in the hope that it will be useful,
|
|
211
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
212
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
213
|
-
* GNU General Public License for more details.
|
|
214
|
-
*
|
|
215
|
-
* You should have received a copy of the GNU General Public License
|
|
216
|
-
* along with this program; if not, write to the Free Software
|
|
217
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
218
|
-
*
|
|
219
|
-
* Copyright (c) 2018 (original work) Open Assessment Technologies SA ;
|
|
220
|
-
*/
|
|
221
|
-
/**
|
|
222
|
-
* Some default config
|
|
223
|
-
* @type {Object}
|
|
224
|
-
*/
|
|
99
|
+
hb.registerHelper('property', function (name, context) {
|
|
100
|
+
return context[name] || '';
|
|
101
|
+
}); // register an 'includes' helper
|
|
102
|
+
// it checks if value is in array
|
|
225
103
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
104
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
105
|
+
if (_.contains(haystack, needle)) {
|
|
106
|
+
return options.fn(this);
|
|
107
|
+
}
|
|
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, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
119
|
+
|
|
120
|
+
function program1(depth0,data) {
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
return " open";
|
|
124
|
+
}
|
|
229
125
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
126
|
+
buffer += "<div class=\"dropdown-container\">\n <div class=\"dropdown ";
|
|
127
|
+
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
128
|
+
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
129
|
+
buffer += escapeExpression(stack1);
|
|
130
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.isOpen), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
131
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
132
|
+
buffer += "\" id=\"";
|
|
133
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
134
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
135
|
+
buffer += escapeExpression(stack1)
|
|
136
|
+
+ "\" data-control=\"";
|
|
137
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
138
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
139
|
+
buffer += escapeExpression(stack1)
|
|
140
|
+
+ "\" role=\"navigation\">\n <div class=\"dropdown-header a toggler\" aria-haspopup=\"true\" tabindex=\"0\">\n </div>\n <ul class=\"dropdown-submenu plain\" aria-label=\"submenu\">\n </ul>\n </div>\n</div>\n";
|
|
141
|
+
return buffer;
|
|
142
|
+
});
|
|
143
|
+
function dropdownTpl(data, options, asString) {
|
|
144
|
+
var html = Template(data, options);
|
|
145
|
+
return (asString || true) ? html : $(html);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
if (!Helpers0.__initialized) {
|
|
149
|
+
Helpers0(Handlebars);
|
|
150
|
+
Helpers0.__initialized = true;
|
|
151
|
+
}
|
|
152
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
153
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
154
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
155
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
156
|
+
|
|
157
|
+
function program1(depth0,data) {
|
|
158
|
+
|
|
159
|
+
var buffer = "", stack1, helper;
|
|
160
|
+
buffer += "<span class=\"icon-";
|
|
161
|
+
if (helper = helpers.icon) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
162
|
+
else { helper = (depth0 && depth0.icon); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
163
|
+
buffer += escapeExpression(stack1)
|
|
164
|
+
+ "\"></span>";
|
|
165
|
+
return buffer;
|
|
166
|
+
}
|
|
244
167
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
168
|
+
buffer += "<li class=\"dropdown-item ";
|
|
169
|
+
if (helper = helpers.cls) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
170
|
+
else { helper = (depth0 && depth0.cls); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
171
|
+
buffer += escapeExpression(stack1)
|
|
172
|
+
+ "\" id=\"";
|
|
173
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
174
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
175
|
+
buffer += escapeExpression(stack1)
|
|
176
|
+
+ "\" data-control=\"";
|
|
177
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
178
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
179
|
+
buffer += escapeExpression(stack1)
|
|
180
|
+
+ "\">\n ";
|
|
181
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.icon), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
182
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
183
|
+
buffer += "\n ";
|
|
184
|
+
if (helper = helpers.content) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
185
|
+
else { helper = (depth0 && depth0.content); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
186
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
187
|
+
buffer += "\n</li>\n";
|
|
188
|
+
return buffer;
|
|
189
|
+
});
|
|
190
|
+
function itemTpl(data, options, asString) {
|
|
191
|
+
var html = Template$1(data, options);
|
|
192
|
+
return (asString || true) ? html : $(html);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* This program is free software; you can redistribute it and/or
|
|
197
|
+
* modify it under the terms of the GNU General Public License
|
|
198
|
+
* as published by the Free Software Foundation; under version 2
|
|
199
|
+
* of the License (non-upgradable).
|
|
200
|
+
*
|
|
201
|
+
* This program is distributed in the hope that it will be useful,
|
|
202
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
203
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
204
|
+
* GNU General Public License for more details.
|
|
205
|
+
*
|
|
206
|
+
* You should have received a copy of the GNU General Public License
|
|
207
|
+
* along with this program; if not, write to the Free Software
|
|
208
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
209
|
+
*
|
|
210
|
+
* Copyright (c) 2018 (original work) Open Assessment Technologies SA ;
|
|
211
|
+
*/
|
|
212
|
+
/**
|
|
213
|
+
* Some default config
|
|
214
|
+
* @type {Object}
|
|
215
|
+
*/
|
|
216
|
+
|
|
217
|
+
var defaults = {
|
|
218
|
+
isOpen: false,
|
|
219
|
+
activatedBy: 'hover' // can be hover or click
|
|
220
|
+
|
|
221
|
+
};
|
|
222
|
+
/**
|
|
223
|
+
* Builds a simple dropdown component
|
|
224
|
+
*
|
|
225
|
+
* @param {Object} config
|
|
226
|
+
* @param {String} [config.id] - The id of the dropdown element
|
|
227
|
+
* @param {String} [config.cls] - An additional CSS class name
|
|
228
|
+
* @param {Boolean} [config.isOpen] - Does the dropdown start open?
|
|
229
|
+
* @param {String} [config.activatedBy] - hover or click
|
|
230
|
+
* @param {Object} [data] - the data to initialise the component with
|
|
231
|
+
* @param {String} [data.header]
|
|
232
|
+
* @param {Object} [data.items]
|
|
233
|
+
* @returns {dropdown}
|
|
234
|
+
*/
|
|
235
|
+
|
|
236
|
+
function dropdownFactory(config, data) {
|
|
237
|
+
var dropdownSpecs = {
|
|
238
|
+
/**
|
|
239
|
+
* Gets the identifier of the dropdown
|
|
240
|
+
* @returns {String}
|
|
241
|
+
*/
|
|
242
|
+
getId: function getId() {
|
|
243
|
+
return this.config.id;
|
|
244
|
+
},
|
|
254
245
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
246
|
+
/**
|
|
247
|
+
* Opens the dropdown
|
|
248
|
+
*
|
|
249
|
+
* @returns {dropdown} this
|
|
250
|
+
*/
|
|
251
|
+
open: function open() {
|
|
252
|
+
if (!this.is('open')) {
|
|
253
|
+
this.controls.$dropdown.addClass('open');
|
|
254
|
+
this.setState('open', true);
|
|
255
|
+
}
|
|
265
256
|
|
|
266
|
-
|
|
267
|
-
|
|
257
|
+
return this;
|
|
258
|
+
},
|
|
268
259
|
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
260
|
+
/**
|
|
261
|
+
* Closes the dropdown
|
|
262
|
+
*
|
|
263
|
+
* @returns {dropdown} this
|
|
264
|
+
*/
|
|
265
|
+
close: function close() {
|
|
266
|
+
if (this.is('open')) {
|
|
267
|
+
this.controls.$dropdown.removeClass('open');
|
|
268
|
+
this.setState('open', false);
|
|
269
|
+
}
|
|
279
270
|
|
|
280
|
-
|
|
281
|
-
|
|
271
|
+
return this;
|
|
272
|
+
},
|
|
282
273
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
274
|
+
/**
|
|
275
|
+
* Toggles the dropdown open/closed
|
|
276
|
+
*
|
|
277
|
+
* @returns {dropdown} this
|
|
278
|
+
*/
|
|
279
|
+
toggle: function toggle() {
|
|
280
|
+
if (this.is('open')) {
|
|
281
|
+
this.close();
|
|
282
|
+
} else {
|
|
283
|
+
this.open();
|
|
284
|
+
}
|
|
294
285
|
|
|
295
|
-
|
|
296
|
-
|
|
286
|
+
return this;
|
|
287
|
+
},
|
|
297
288
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
289
|
+
/**
|
|
290
|
+
* Sets the header item above the dropdown list
|
|
291
|
+
*
|
|
292
|
+
* @param {String} html
|
|
293
|
+
* @returns {dropdown} this
|
|
294
|
+
*/
|
|
295
|
+
setHeader: function setHeader(html) {
|
|
296
|
+
if (typeof html === 'string') {
|
|
297
|
+
data.header = html;
|
|
307
298
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
}
|
|
299
|
+
if (this.is('rendered')) {
|
|
300
|
+
this.controls.$headerItem.html(html);
|
|
311
301
|
}
|
|
302
|
+
}
|
|
312
303
|
|
|
313
|
-
|
|
314
|
-
|
|
304
|
+
return this;
|
|
305
|
+
},
|
|
315
306
|
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
307
|
+
/**
|
|
308
|
+
* Sets all the list items in one go
|
|
309
|
+
* Replaces any existing items
|
|
310
|
+
*
|
|
311
|
+
* @param {Array} items
|
|
312
|
+
* @returns {dropdown} this
|
|
313
|
+
*/
|
|
314
|
+
setItems: function setItems(items) {
|
|
315
|
+
var self = this;
|
|
325
316
|
|
|
326
|
-
|
|
327
|
-
|
|
317
|
+
if (Array.isArray(items)) {
|
|
318
|
+
data.items = items;
|
|
328
319
|
|
|
329
|
-
|
|
330
|
-
|
|
320
|
+
if (this.is('rendered')) {
|
|
321
|
+
this.controls.$listContainer.empty();
|
|
331
322
|
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
}
|
|
323
|
+
_.forEach(items, function (item) {
|
|
324
|
+
self.controls.$listContainer.append(itemTpl(item));
|
|
325
|
+
});
|
|
336
326
|
}
|
|
327
|
+
}
|
|
337
328
|
|
|
338
|
-
|
|
339
|
-
|
|
329
|
+
return this;
|
|
330
|
+
},
|
|
340
331
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
332
|
+
/**
|
|
333
|
+
* Adds a list item to the dropdown list
|
|
334
|
+
*
|
|
335
|
+
* @param {Object} item
|
|
336
|
+
* @param {String} item.content - the content to insert (should be HTML)
|
|
337
|
+
* @param {String} [item.id] - the id the list item will have
|
|
338
|
+
* @param {String} [item.cls] - any extra classes to put on the list item
|
|
339
|
+
* @param {String} [item.icon] - the name of an icon to precede the content, if desired
|
|
340
|
+
* @returns {dropdown} this
|
|
341
|
+
*/
|
|
342
|
+
addItem: function addItem(item) {
|
|
343
|
+
if (item.content && typeof item.content === 'string' && item.content.length) {
|
|
344
|
+
data.items.push(item);
|
|
354
345
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
346
|
+
if (this.is('rendered')) {
|
|
347
|
+
this.controls.$listContainer.append(itemTpl(item));
|
|
358
348
|
}
|
|
349
|
+
}
|
|
359
350
|
|
|
360
|
-
|
|
361
|
-
|
|
351
|
+
return this;
|
|
352
|
+
},
|
|
362
353
|
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
354
|
+
/**
|
|
355
|
+
* Removes a list item from the dropdown list
|
|
356
|
+
*
|
|
357
|
+
* @param {Number} index - list index to remove
|
|
358
|
+
* @returns {dropdown} this
|
|
359
|
+
*/
|
|
360
|
+
removeItem: function removeItem(index) {
|
|
361
|
+
if (index >= 0 && index < data.items.length) {
|
|
362
|
+
data.items.splice(index, 1);
|
|
372
363
|
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
}
|
|
364
|
+
if (this.is('rendered')) {
|
|
365
|
+
this.controls.$listContainer.children().get(index).remove();
|
|
376
366
|
}
|
|
367
|
+
}
|
|
377
368
|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
/**
|
|
382
|
-
* Empties the dropdown list (but not its header!)
|
|
383
|
-
*
|
|
384
|
-
* @returns {dropdown} this
|
|
385
|
-
*/
|
|
386
|
-
clearItems: function clearItems() {
|
|
387
|
-
data.items = [];
|
|
369
|
+
return this;
|
|
370
|
+
},
|
|
388
371
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
372
|
+
/**
|
|
373
|
+
* Empties the dropdown list (but not its header!)
|
|
374
|
+
*
|
|
375
|
+
* @returns {dropdown} this
|
|
376
|
+
*/
|
|
377
|
+
clearItems: function clearItems() {
|
|
378
|
+
data.items = [];
|
|
392
379
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
};
|
|
396
|
-
data = _.defaults({}, data, {
|
|
397
|
-
header: '',
|
|
398
|
-
items: []
|
|
399
|
-
});
|
|
400
|
-
return component(dropdownSpecs, defaults).setTemplate(dropdownTpl) // dropdown-specific init:
|
|
401
|
-
.on('init', function () {
|
|
402
|
-
this.setState('open', this.config.isOpen);
|
|
403
|
-
}) // renders the component
|
|
404
|
-
.on('render', function () {
|
|
405
|
-
var $component = this.getElement();
|
|
406
|
-
this.controls = {
|
|
407
|
-
$dropdown: $component.find('.dropdown'),
|
|
408
|
-
$toggler: $component.find('.dropdown-header:after'),
|
|
409
|
-
$headerItem: $component.find('.dropdown-header'),
|
|
410
|
-
$listContainer: $component.find('.dropdown-submenu')
|
|
411
|
-
}; // insert data into rendered template:
|
|
412
|
-
|
|
413
|
-
if (!_.isEmpty(data)) {
|
|
414
|
-
this.setHeader(data.header);
|
|
415
|
-
this.setItems(data.items);
|
|
380
|
+
if (this.is('rendered')) {
|
|
381
|
+
this.controls.$listContainer.empty();
|
|
416
382
|
}
|
|
417
383
|
|
|
418
|
-
this
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
|
|
384
|
+
return this;
|
|
385
|
+
}
|
|
386
|
+
};
|
|
387
|
+
data = _.defaults({}, data, {
|
|
388
|
+
header: '',
|
|
389
|
+
items: []
|
|
390
|
+
});
|
|
391
|
+
return component(dropdownSpecs, defaults).setTemplate(dropdownTpl) // dropdown-specific init:
|
|
392
|
+
.on('init', function () {
|
|
393
|
+
this.setState('open', this.config.isOpen);
|
|
394
|
+
}) // renders the component
|
|
395
|
+
.on('render', function () {
|
|
396
|
+
var $component = this.getElement();
|
|
397
|
+
this.controls = {
|
|
398
|
+
$dropdown: $component.find('.dropdown'),
|
|
399
|
+
$toggler: $component.find('.dropdown-header:after'),
|
|
400
|
+
$headerItem: $component.find('.dropdown-header'),
|
|
401
|
+
$listContainer: $component.find('.dropdown-submenu')
|
|
402
|
+
}; // insert data into rendered template:
|
|
403
|
+
|
|
404
|
+
if (!_.isEmpty(data)) {
|
|
405
|
+
this.setHeader(data.header);
|
|
406
|
+
this.setItems(data.items);
|
|
407
|
+
}
|
|
422
408
|
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
this.controls.$headerItem.on('click', self.toggle);
|
|
428
|
-
}
|
|
409
|
+
this.trigger('wireup');
|
|
410
|
+
}).on('wireup', function () {
|
|
411
|
+
var self = this;
|
|
412
|
+
var $component = this.getElement(); // wire up main behaviour:
|
|
429
413
|
|
|
430
|
-
|
|
414
|
+
if (this.config.activatedBy === 'hover') {
|
|
415
|
+
$component.on('mouseenter', self.open).on('mouseleave', self.close);
|
|
416
|
+
this.controls.$toggler.on('click', self.toggle).on('focus', self.open);
|
|
417
|
+
} else if (this.config.activatedBy === 'click') {
|
|
418
|
+
this.controls.$headerItem.on('click', self.toggle);
|
|
419
|
+
}
|
|
431
420
|
|
|
432
|
-
|
|
433
|
-
var id = $$1(this).closest('li').attr('id');
|
|
434
|
-
/**
|
|
435
|
-
* @event item-click
|
|
436
|
-
*/
|
|
421
|
+
$component.on('focus', self.open).on('blur', self.close); // list item events
|
|
437
422
|
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
423
|
+
this.controls.$listContainer.on('click', 'li', function () {
|
|
424
|
+
var id = $$1(this).closest('li').attr('id');
|
|
425
|
+
/**
|
|
426
|
+
* @event item-click
|
|
427
|
+
*/
|
|
442
428
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
429
|
+
self.trigger('item-click', id);
|
|
430
|
+
/**
|
|
431
|
+
* @event item-click-<id>
|
|
432
|
+
*/
|
|
433
|
+
|
|
434
|
+
self.trigger('item-click-' + id);
|
|
435
|
+
});
|
|
436
|
+
}).on('item-click', function () {
|
|
437
|
+
this.close();
|
|
438
|
+
}).init(config);
|
|
439
|
+
}
|
|
449
440
|
|
|
450
|
-
|
|
441
|
+
return dropdownFactory;
|
|
451
442
|
|
|
452
443
|
});
|