@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/component.js
CHANGED
|
@@ -1,521 +1,512 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'core/eventifier', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/component/css/components.css'], function ($$1, _, eventifier, Handlebars, __, DOMPurify, components_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
|
+
eventifier = eventifier && Object.prototype.hasOwnProperty.call(eventifier, 'default') ? eventifier['default'] : eventifier;
|
|
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
|
}
|
|
60
|
+
} else {
|
|
61
|
+
value = '';
|
|
62
|
+
}
|
|
76
63
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
66
|
+
}
|
|
80
67
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
70
|
+
});
|
|
84
71
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
stopIndex = parseInt(stopIndex);
|
|
89
|
-
increment = parseInt(increment);
|
|
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
|
|
90
75
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
96
81
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
} else {
|
|
103
|
-
return options.inverse(this);
|
|
104
|
-
}
|
|
105
|
-
}); // register a "get property" helper
|
|
106
|
-
// it gets the named property from the provided context
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
107
87
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
|
112
98
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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);
|
|
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);
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
return "<div class=\"component\"></div>";
|
|
121
|
+
});
|
|
122
|
+
function defaultTpl(data, options, asString) {
|
|
123
|
+
var html = Template(data, options);
|
|
124
|
+
return (asString || true) ? html : $(html);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* This program is free software; you can redistribute it and/or
|
|
129
|
+
* modify it under the terms of the GNU General Public License
|
|
130
|
+
* as published by the Free Software Foundation; under version 2
|
|
131
|
+
* of the License (non-upgradable).
|
|
132
|
+
*
|
|
133
|
+
* This program is distributed in the hope that it will be useful,
|
|
134
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
135
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
136
|
+
* GNU General Public License for more details.
|
|
137
|
+
*
|
|
138
|
+
* You should have received a copy of the GNU General Public License
|
|
139
|
+
* along with this program; if not, write to the Free Software
|
|
140
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
141
|
+
*
|
|
142
|
+
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
143
|
+
*/
|
|
144
|
+
var _slice = [].slice;
|
|
145
|
+
/**
|
|
146
|
+
* Handles the resize of the component regarding the config set
|
|
147
|
+
*/
|
|
148
|
+
|
|
149
|
+
function delegatedResize() {
|
|
150
|
+
var width = this.config.width;
|
|
151
|
+
var height = this.config.height;
|
|
152
|
+
var $container = this.getContainer();
|
|
153
|
+
var $element = this.getElement();
|
|
154
|
+
|
|
155
|
+
if ($container) {
|
|
156
|
+
if ('auto' === width) {
|
|
157
|
+
width = $container.width();
|
|
158
|
+
}
|
|
119
159
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
160
|
+
if ('auto' === height) {
|
|
161
|
+
height = $container.height();
|
|
162
|
+
}
|
|
123
163
|
}
|
|
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);
|
|
127
164
|
|
|
165
|
+
if ($element) {
|
|
166
|
+
if (_.isNumber(width)) {
|
|
167
|
+
$element.css({
|
|
168
|
+
width: "".concat(width, "px")
|
|
169
|
+
});
|
|
170
|
+
}
|
|
128
171
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
172
|
+
if (_.isNumber(height)) {
|
|
173
|
+
$element.css({
|
|
174
|
+
height: "".concat(height, "px")
|
|
175
|
+
});
|
|
176
|
+
}
|
|
134
177
|
}
|
|
135
178
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
* GNU General Public License for more details.
|
|
146
|
-
*
|
|
147
|
-
* You should have received a copy of the GNU General Public License
|
|
148
|
-
* along with this program; if not, write to the Free Software
|
|
149
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
150
|
-
*
|
|
151
|
-
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
152
|
-
*/
|
|
153
|
-
var _slice = [].slice;
|
|
154
|
-
/**
|
|
155
|
-
* Handles the resize of the component regarding the config set
|
|
156
|
-
*/
|
|
157
|
-
|
|
158
|
-
function delegatedResize() {
|
|
159
|
-
let width = this.config.width;
|
|
160
|
-
let height = this.config.height;
|
|
161
|
-
const $container = this.getContainer();
|
|
162
|
-
const $element = this.getElement();
|
|
179
|
+
this._width = width;
|
|
180
|
+
this._height = height;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Builds a component from a base skeleton
|
|
184
|
+
* @param {Object} [specs] - Some extra methods to assign to the component instance
|
|
185
|
+
* @param {Object} [defaults] - Some default config entries
|
|
186
|
+
* @returns {component}
|
|
187
|
+
*/
|
|
163
188
|
|
|
164
|
-
if ($container) {
|
|
165
|
-
if ('auto' === width) {
|
|
166
|
-
width = $container.width();
|
|
167
|
-
}
|
|
168
189
|
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
}
|
|
190
|
+
function component(specs, defaults) {
|
|
191
|
+
// the template is a private property
|
|
192
|
+
var componentTpl = defaultTpl; //contains the states of the components
|
|
173
193
|
|
|
174
|
-
|
|
175
|
-
if (_.isNumber(width)) {
|
|
176
|
-
$element.css({
|
|
177
|
-
width: `${width}px`
|
|
178
|
-
});
|
|
179
|
-
}
|
|
194
|
+
var componentState = {}; //where the component is added
|
|
180
195
|
|
|
181
|
-
|
|
182
|
-
$element.css({
|
|
183
|
-
height: `${height}px`
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
|
-
}
|
|
196
|
+
var $container; // base skeleton
|
|
187
197
|
|
|
188
|
-
this._width = width;
|
|
189
|
-
this._height = height;
|
|
190
|
-
}
|
|
191
198
|
/**
|
|
192
|
-
*
|
|
193
|
-
* @param {Object} [specs] - Some extra methods to assign to the component instance
|
|
194
|
-
* @param {Object} [defaults] - Some default config entries
|
|
195
|
-
* @returns {component}
|
|
199
|
+
* @typedef {Object} Component
|
|
196
200
|
*/
|
|
197
201
|
|
|
202
|
+
var componentApi = {
|
|
203
|
+
/**
|
|
204
|
+
* Initializes the component
|
|
205
|
+
* @param {Object} config
|
|
206
|
+
* @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
|
|
207
|
+
* @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
|
|
208
|
+
* @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
|
|
209
|
+
* @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
|
|
210
|
+
* @returns {component}
|
|
211
|
+
* @fires component#init
|
|
212
|
+
*/
|
|
213
|
+
init: function init(config) {
|
|
214
|
+
this.config = _(config || {}).omit(function (value) {
|
|
215
|
+
return value === null || typeof value === 'undefined';
|
|
216
|
+
}).defaults(defaults || {}).value();
|
|
217
|
+
componentState = {};
|
|
218
|
+
/**
|
|
219
|
+
* Executes extra init tasks
|
|
220
|
+
* @event component#init
|
|
221
|
+
*/
|
|
198
222
|
|
|
199
|
-
|
|
200
|
-
// the template is a private property
|
|
201
|
-
var componentTpl = defaultTpl; //contains the states of the components
|
|
223
|
+
this.trigger('init');
|
|
202
224
|
|
|
203
|
-
|
|
225
|
+
if (this.config.renderTo) {
|
|
226
|
+
$container = $$1(this.config.renderTo);
|
|
227
|
+
this.render();
|
|
228
|
+
}
|
|
204
229
|
|
|
205
|
-
|
|
230
|
+
return this;
|
|
231
|
+
},
|
|
206
232
|
|
|
207
233
|
/**
|
|
208
|
-
*
|
|
234
|
+
* Uninstalls the component
|
|
235
|
+
* @returns {component}
|
|
236
|
+
* @fires component#destroy
|
|
209
237
|
*/
|
|
210
|
-
|
|
211
|
-
var componentApi = {
|
|
238
|
+
destroy: function destroy() {
|
|
212
239
|
/**
|
|
213
|
-
*
|
|
214
|
-
* @
|
|
215
|
-
* @param {jQuery|HTMLElement|String} [config.renderTo] - An optional container in which renders the component
|
|
216
|
-
* @param {Boolean} [config.replace] - When the component is appended to its container, clears the place before
|
|
217
|
-
* @param {Number|String} [config.width] - The width in pixels, or 'auto' to use the container's width
|
|
218
|
-
* @param {Number|String} [config.height] - The height in pixels, or 'auto' to use the container's height
|
|
219
|
-
* @returns {component}
|
|
220
|
-
* @fires component#init
|
|
240
|
+
* Executes extra destroy tasks
|
|
241
|
+
* @event component#destroy
|
|
221
242
|
*/
|
|
222
|
-
|
|
223
|
-
this.config = _(config || {}).omit(function (value) {
|
|
224
|
-
return value === null || typeof value === 'undefined';
|
|
225
|
-
}).defaults(defaults || {}).value();
|
|
226
|
-
componentState = {};
|
|
227
|
-
/**
|
|
228
|
-
* Executes extra init tasks
|
|
229
|
-
* @event component#init
|
|
230
|
-
*/
|
|
231
|
-
|
|
232
|
-
this.trigger('init');
|
|
233
|
-
|
|
234
|
-
if (this.config.renderTo) {
|
|
235
|
-
$container = $$1(this.config.renderTo);
|
|
236
|
-
this.render();
|
|
237
|
-
}
|
|
243
|
+
this.trigger('destroy');
|
|
238
244
|
|
|
239
|
-
|
|
240
|
-
|
|
245
|
+
if (this.$component) {
|
|
246
|
+
this.$component.remove();
|
|
247
|
+
}
|
|
241
248
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
249
|
+
this.$component = null;
|
|
250
|
+
componentState = {};
|
|
251
|
+
return this;
|
|
252
|
+
},
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Renders the component
|
|
256
|
+
* @param {jQuery|HTMLElement|String} [container] - where the component is rendered
|
|
257
|
+
* @returns {component}
|
|
258
|
+
* @fires component#render
|
|
259
|
+
*/
|
|
260
|
+
render: function render(container) {
|
|
261
|
+
if (container) {
|
|
262
|
+
$container = $$1(container);
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
this.$component = $$1(componentTpl(this.config));
|
|
266
|
+
|
|
267
|
+
if ($container) {
|
|
268
|
+
if (this.config.replace) {
|
|
269
|
+
$container.empty();
|
|
256
270
|
}
|
|
257
271
|
|
|
258
|
-
this.$component
|
|
259
|
-
|
|
260
|
-
return this;
|
|
261
|
-
},
|
|
272
|
+
$container.append(this.$component);
|
|
273
|
+
}
|
|
262
274
|
|
|
275
|
+
this.setState('rendered', true);
|
|
276
|
+
delegatedResize.call(this);
|
|
263
277
|
/**
|
|
264
|
-
*
|
|
265
|
-
* @
|
|
266
|
-
* @
|
|
267
|
-
* @fires component#render
|
|
278
|
+
* Executes extra render tasks
|
|
279
|
+
* @event component#render
|
|
280
|
+
* @param {jQuery} $component
|
|
268
281
|
*/
|
|
269
|
-
render: function render(container) {
|
|
270
|
-
if (container) {
|
|
271
|
-
$container = $$1(container);
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
this.$component = $$1(componentTpl(this.config));
|
|
275
282
|
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
}
|
|
283
|
+
this.trigger('render', this.$component);
|
|
284
|
+
return this;
|
|
285
|
+
},
|
|
280
286
|
|
|
281
|
-
|
|
282
|
-
|
|
287
|
+
/**
|
|
288
|
+
* Sets the component's size
|
|
289
|
+
* @param {Number|String} width - The width in pixels, or 'auto' to use the container's width
|
|
290
|
+
* @param {Number|String} height - The height in pixels, or 'auto' to use the container's height
|
|
291
|
+
* @returns {component}
|
|
292
|
+
* @fires component#setsize
|
|
293
|
+
*/
|
|
294
|
+
setSize: function setSize(width, height) {
|
|
295
|
+
this.config.width = width;
|
|
296
|
+
this.config.height = height;
|
|
283
297
|
|
|
284
|
-
|
|
298
|
+
if (this.is('rendered')) {
|
|
285
299
|
delegatedResize.call(this);
|
|
286
|
-
|
|
287
|
-
* Executes extra render tasks
|
|
288
|
-
* @event component#render
|
|
289
|
-
* @param {jQuery} $component
|
|
290
|
-
*/
|
|
291
|
-
|
|
292
|
-
this.trigger('render', this.$component);
|
|
293
|
-
return this;
|
|
294
|
-
},
|
|
295
|
-
|
|
300
|
+
}
|
|
296
301
|
/**
|
|
297
|
-
*
|
|
298
|
-
* @
|
|
299
|
-
* @param {Number|String}
|
|
300
|
-
* @
|
|
301
|
-
* @fires component#setsize
|
|
302
|
+
* Executes extra resize tasks
|
|
303
|
+
* @event component#setsize
|
|
304
|
+
* @param {Number|String} width
|
|
305
|
+
* @param {Number|String} height
|
|
302
306
|
*/
|
|
303
|
-
setSize: function setSize(width, height) {
|
|
304
|
-
this.config.width = width;
|
|
305
|
-
this.config.height = height;
|
|
306
307
|
|
|
307
|
-
if (this.is('rendered')) {
|
|
308
|
-
delegatedResize.call(this);
|
|
309
|
-
}
|
|
310
|
-
/**
|
|
311
|
-
* Executes extra resize tasks
|
|
312
|
-
* @event component#setsize
|
|
313
|
-
* @param {Number|String} width
|
|
314
|
-
* @param {Number|String} height
|
|
315
|
-
*/
|
|
316
308
|
|
|
309
|
+
this.trigger('setsize', width, height);
|
|
310
|
+
return this;
|
|
311
|
+
},
|
|
317
312
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
313
|
+
/**
|
|
314
|
+
* Get the component's size
|
|
315
|
+
* @returns {Object}
|
|
316
|
+
* @fires component#setsize
|
|
317
|
+
*/
|
|
318
|
+
getSize: function getSize() {
|
|
319
|
+
if (this.is('rendered')) {
|
|
320
|
+
return {
|
|
321
|
+
width: this._width || 0,
|
|
322
|
+
height: this._height || 0
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
},
|
|
321
326
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
327
|
+
/**
|
|
328
|
+
* Get the component rendered size
|
|
329
|
+
* @param {Boolean} includeMargin - include the margins in the returned size
|
|
330
|
+
* @returns {{width: number, height: number}}
|
|
331
|
+
*/
|
|
332
|
+
getOuterSize: function getOuterSize(includeMargin) {
|
|
333
|
+
var $component;
|
|
334
|
+
|
|
335
|
+
if (this.is('rendered')) {
|
|
336
|
+
$component = this.getElement();
|
|
337
|
+
includeMargin = includeMargin || false;
|
|
338
|
+
return {
|
|
339
|
+
width: Math.round($component.outerWidth(includeMargin)),
|
|
340
|
+
height: Math.round($component.outerHeight(includeMargin))
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
},
|
|
335
344
|
|
|
345
|
+
/**
|
|
346
|
+
* Shows the component
|
|
347
|
+
* @returns {component}
|
|
348
|
+
* @fires component#show
|
|
349
|
+
*/
|
|
350
|
+
show: function show() {
|
|
336
351
|
/**
|
|
337
|
-
*
|
|
338
|
-
* @
|
|
339
|
-
* @
|
|
352
|
+
* Executes extra tasks on show
|
|
353
|
+
* @event component#show
|
|
354
|
+
* @param {component} component
|
|
340
355
|
*/
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
if (this.is('rendered')) {
|
|
345
|
-
$component = this.getElement();
|
|
346
|
-
includeMargin = includeMargin || false;
|
|
347
|
-
return {
|
|
348
|
-
width: Math.round($component.outerWidth(includeMargin)),
|
|
349
|
-
height: Math.round($component.outerHeight(includeMargin))
|
|
350
|
-
};
|
|
351
|
-
}
|
|
352
|
-
},
|
|
356
|
+
this.trigger('show', this);
|
|
357
|
+
return this.setState('hidden', false);
|
|
358
|
+
},
|
|
353
359
|
|
|
360
|
+
/**
|
|
361
|
+
* Hides the component
|
|
362
|
+
* @returns {component}
|
|
363
|
+
* @fires component#hide
|
|
364
|
+
*/
|
|
365
|
+
hide: function hide() {
|
|
354
366
|
/**
|
|
355
|
-
*
|
|
356
|
-
* @
|
|
357
|
-
* @
|
|
367
|
+
* Executes extra tasks on hide
|
|
368
|
+
* @event component#hide
|
|
369
|
+
* @param {component} component
|
|
358
370
|
*/
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
* @event component#show
|
|
363
|
-
* @param {component} component
|
|
364
|
-
*/
|
|
365
|
-
this.trigger('show', this);
|
|
366
|
-
return this.setState('hidden', false);
|
|
367
|
-
},
|
|
371
|
+
this.trigger('hide', this);
|
|
372
|
+
return this.setState('hidden', true);
|
|
373
|
+
},
|
|
368
374
|
|
|
375
|
+
/**
|
|
376
|
+
* Enables the component
|
|
377
|
+
* @returns {component}
|
|
378
|
+
* @fires component#enable
|
|
379
|
+
*/
|
|
380
|
+
enable: function enable() {
|
|
369
381
|
/**
|
|
370
|
-
*
|
|
371
|
-
* @
|
|
372
|
-
* @
|
|
382
|
+
* Executes extra tasks on enable
|
|
383
|
+
* @event component#enable
|
|
384
|
+
* @param {component} component
|
|
373
385
|
*/
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
* @event component#hide
|
|
378
|
-
* @param {component} component
|
|
379
|
-
*/
|
|
380
|
-
this.trigger('hide', this);
|
|
381
|
-
return this.setState('hidden', true);
|
|
382
|
-
},
|
|
386
|
+
this.trigger('enable', this);
|
|
387
|
+
return this.setState('disabled', false);
|
|
388
|
+
},
|
|
383
389
|
|
|
390
|
+
/**
|
|
391
|
+
* Disables the component
|
|
392
|
+
* @returns {component}
|
|
393
|
+
* @fires component#disable
|
|
394
|
+
*/
|
|
395
|
+
disable: function disable() {
|
|
384
396
|
/**
|
|
385
|
-
*
|
|
386
|
-
* @
|
|
387
|
-
* @
|
|
397
|
+
* Executes extra tasks on disable
|
|
398
|
+
* @event component#disable
|
|
399
|
+
* @param {component} component
|
|
388
400
|
*/
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
* @event component#enable
|
|
393
|
-
* @param {component} component
|
|
394
|
-
*/
|
|
395
|
-
this.trigger('enable', this);
|
|
396
|
-
return this.setState('disabled', false);
|
|
397
|
-
},
|
|
401
|
+
this.trigger('disable', this);
|
|
402
|
+
return this.setState('disabled', true);
|
|
403
|
+
},
|
|
398
404
|
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
* @event component#disable
|
|
408
|
-
* @param {component} component
|
|
409
|
-
*/
|
|
410
|
-
this.trigger('disable', this);
|
|
411
|
-
return this.setState('disabled', true);
|
|
412
|
-
},
|
|
405
|
+
/**
|
|
406
|
+
* Checks if the component has a particular state
|
|
407
|
+
* @param {String} state
|
|
408
|
+
* @returns {Boolean}
|
|
409
|
+
*/
|
|
410
|
+
is: function is(state) {
|
|
411
|
+
return !!componentState[state];
|
|
412
|
+
},
|
|
413
413
|
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
414
|
+
/**
|
|
415
|
+
* Sets the component to a particular state
|
|
416
|
+
* @param {String} state
|
|
417
|
+
* @param {Boolean} flag
|
|
418
|
+
* @returns {component}
|
|
419
|
+
* @fires component#state
|
|
420
|
+
*/
|
|
421
|
+
setState: function setState(state, flag) {
|
|
422
|
+
flag = !!flag;
|
|
423
|
+
componentState[state] = flag;
|
|
422
424
|
|
|
425
|
+
if (this.$component) {
|
|
426
|
+
this.$component.toggleClass(state, flag);
|
|
427
|
+
}
|
|
423
428
|
/**
|
|
424
|
-
*
|
|
429
|
+
* Executes extra tasks on state change
|
|
430
|
+
* @event component#state
|
|
425
431
|
* @param {String} state
|
|
426
432
|
* @param {Boolean} flag
|
|
427
|
-
* @
|
|
428
|
-
* @fires component#state
|
|
433
|
+
* @param {component} component
|
|
429
434
|
*/
|
|
430
|
-
setState: function setState(state, flag) {
|
|
431
|
-
flag = !!flag;
|
|
432
|
-
componentState[state] = flag;
|
|
433
435
|
|
|
434
|
-
if (this.$component) {
|
|
435
|
-
this.$component.toggleClass(state, flag);
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* Executes extra tasks on state change
|
|
439
|
-
* @event component#state
|
|
440
|
-
* @param {String} state
|
|
441
|
-
* @param {Boolean} flag
|
|
442
|
-
* @param {component} component
|
|
443
|
-
*/
|
|
444
436
|
|
|
437
|
+
this.trigger('state', state, flag, this);
|
|
438
|
+
return this;
|
|
439
|
+
},
|
|
445
440
|
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
441
|
+
/**
|
|
442
|
+
* Gets the underlying DOM element
|
|
443
|
+
* @returns {jQuery}
|
|
444
|
+
*/
|
|
445
|
+
getContainer: function getContainer() {
|
|
446
|
+
return $container;
|
|
447
|
+
},
|
|
449
448
|
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
449
|
+
/**
|
|
450
|
+
* Gets the underlying DOM element
|
|
451
|
+
* @returns {jQuery}
|
|
452
|
+
*/
|
|
453
|
+
getElement: function getElement() {
|
|
454
|
+
return this.$component;
|
|
455
|
+
},
|
|
457
456
|
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
457
|
+
/**
|
|
458
|
+
* Gets the template used to render this component
|
|
459
|
+
* @returns {Function}
|
|
460
|
+
*/
|
|
461
|
+
getTemplate: function getTemplate() {
|
|
462
|
+
return componentTpl;
|
|
463
|
+
},
|
|
465
464
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
465
|
+
/**
|
|
466
|
+
* Sets the template used to render this component
|
|
467
|
+
* @param {Function} template
|
|
468
|
+
* @returns {componentApi}
|
|
469
|
+
* @fires component#template
|
|
470
|
+
*/
|
|
471
|
+
setTemplate: function setTemplate(template) {
|
|
472
|
+
var tpl = template || defaultTpl;
|
|
473
|
+
componentTpl = tpl; // ensure the template is defined as a function
|
|
473
474
|
|
|
475
|
+
if (!_.isFunction(componentTpl)) {
|
|
476
|
+
componentTpl = function componentTpl() {
|
|
477
|
+
return tpl;
|
|
478
|
+
};
|
|
479
|
+
}
|
|
474
480
|
/**
|
|
475
|
-
*
|
|
476
|
-
* @
|
|
477
|
-
* @
|
|
478
|
-
* @fires component#template
|
|
481
|
+
* Executes extra tasks on template change
|
|
482
|
+
* @event component#template
|
|
483
|
+
* @param {function} componentTpl
|
|
479
484
|
*/
|
|
480
|
-
setTemplate: function setTemplate(template) {
|
|
481
|
-
var tpl = template || defaultTpl;
|
|
482
|
-
componentTpl = tpl; // ensure the template is defined as a function
|
|
483
|
-
|
|
484
|
-
if (!_.isFunction(componentTpl)) {
|
|
485
|
-
componentTpl = function () {
|
|
486
|
-
return tpl;
|
|
487
|
-
};
|
|
488
|
-
}
|
|
489
|
-
/**
|
|
490
|
-
* Executes extra tasks on template change
|
|
491
|
-
* @event component#template
|
|
492
|
-
* @param {function} componentTpl
|
|
493
|
-
*/
|
|
494
485
|
|
|
495
486
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
487
|
+
this.trigger('template', componentTpl);
|
|
488
|
+
return this;
|
|
489
|
+
},
|
|
499
490
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
}
|
|
506
|
-
}; // let's extend the instance with extra methods
|
|
507
|
-
|
|
508
|
-
if (specs) {
|
|
509
|
-
_(specs).functions().forEach(function (method) {
|
|
510
|
-
componentApi[method] = function delegate() {
|
|
511
|
-
return specs[method].apply(componentApi, _slice.call(arguments));
|
|
512
|
-
};
|
|
513
|
-
});
|
|
491
|
+
/**
|
|
492
|
+
* Get the component's configuration
|
|
493
|
+
*/
|
|
494
|
+
getConfig: function getConfig() {
|
|
495
|
+
return this.config || defaults || {};
|
|
514
496
|
}
|
|
497
|
+
}; // let's extend the instance with extra methods
|
|
515
498
|
|
|
516
|
-
|
|
499
|
+
if (specs) {
|
|
500
|
+
_(specs).functions().forEach(function (method) {
|
|
501
|
+
componentApi[method] = function delegate() {
|
|
502
|
+
return specs[method].apply(componentApi, _slice.call(arguments));
|
|
503
|
+
};
|
|
504
|
+
});
|
|
517
505
|
}
|
|
518
506
|
|
|
519
|
-
return
|
|
507
|
+
return eventifier(componentApi);
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
return component;
|
|
520
511
|
|
|
521
512
|
});
|