@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/feedback.js
CHANGED
|
@@ -1,412 +1,406 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'core/format', 'ui/component', 'util/wrapLongWords', 'util/encode', 'handlebars', 'i18n', 'lib/dompurify/purify'], function ($$1, _, format, component, wrapLongWords, encode, Handlebars, __, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
format = format && Object.prototype.hasOwnProperty.call(format, 'default') ? format['default'] : format;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
wrapLongWords = wrapLongWords && Object.prototype.hasOwnProperty.call(wrapLongWords, 'default') ? wrapLongWords['default'] : wrapLongWords;
|
|
8
|
+
encode = encode && Object.prototype.hasOwnProperty.call(encode, 'default') ? encode['default'] : encode;
|
|
9
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
10
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
11
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
12
|
+
|
|
13
|
+
function _typeof(obj) {
|
|
14
|
+
"@babel/helpers - typeof";
|
|
15
|
+
|
|
16
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
17
|
+
return typeof obj;
|
|
18
|
+
} : function (obj) {
|
|
19
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
20
|
+
}, _typeof(obj);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function Helpers0 (hb) {
|
|
24
|
+
//register a i18n helper
|
|
25
|
+
hb.registerHelper('__', function (key) {
|
|
26
|
+
return __(key);
|
|
27
|
+
});
|
|
13
28
|
/**
|
|
14
|
-
*
|
|
15
|
-
* modify it under the terms of the GNU General Public License
|
|
16
|
-
* as published by the Free Software Foundation; under version 2
|
|
17
|
-
* of the License (non-upgradable).
|
|
18
|
-
*
|
|
19
|
-
* This program is distributed in the hope that it will be useful,
|
|
20
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
21
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
22
|
-
* GNU General Public License for more details.
|
|
23
|
-
*
|
|
24
|
-
* You should have received a copy of the GNU General Public License
|
|
25
|
-
* along with this program; if not, write to the Free Software
|
|
26
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
27
|
-
*
|
|
28
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
29
|
+
* Register dompurify helper
|
|
29
30
|
*
|
|
31
|
+
* https://github.com/cure53/DOMPurify
|
|
32
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
33
|
+
* to make output safe for template systems
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
hb.registerHelper('dompurify', function (context) {
|
|
37
|
+
return DOMPurify.sanitize(context);
|
|
38
|
+
});
|
|
39
|
+
/**
|
|
40
|
+
* Register join helper
|
|
30
41
|
*
|
|
42
|
+
* Example :
|
|
43
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
44
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
45
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
31
46
|
*/
|
|
32
|
-
function Helpers0 (hb) {
|
|
33
|
-
//register a i18n helper
|
|
34
|
-
hb.registerHelper('__', function (key) {
|
|
35
|
-
return __(key);
|
|
36
|
-
});
|
|
37
|
-
/**
|
|
38
|
-
* Register dompurify helper
|
|
39
|
-
*
|
|
40
|
-
* https://github.com/cure53/DOMPurify
|
|
41
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
42
|
-
* to make output safe for template systems
|
|
43
|
-
*/
|
|
44
47
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
*
|
|
51
|
-
* Example :
|
|
52
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
53
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
54
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
55
|
-
*/
|
|
48
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
49
|
+
var fragments = [];
|
|
50
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
51
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
52
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
56
53
|
|
|
57
|
-
|
|
58
|
-
var
|
|
59
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
60
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
61
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
62
|
-
|
|
63
|
-
_.forIn(arr, function (value, key) {
|
|
64
|
-
var fragment = '';
|
|
65
|
-
|
|
66
|
-
if (value !== null || value !== undefined) {
|
|
67
|
-
if (typeof value === 'boolean') {
|
|
68
|
-
value = value ? 'true' : 'false';
|
|
69
|
-
} else if (typeof value === 'object') {
|
|
70
|
-
value = _.values(value).join(' ');
|
|
71
|
-
}
|
|
72
|
-
} else {
|
|
73
|
-
value = '';
|
|
74
|
-
}
|
|
54
|
+
_.forIn(arr, function (value, key) {
|
|
55
|
+
var fragment = '';
|
|
75
56
|
|
|
76
|
-
|
|
77
|
-
|
|
57
|
+
if (value !== null || value !== undefined) {
|
|
58
|
+
if (typeof value === 'boolean') {
|
|
59
|
+
value = value ? 'true' : 'false';
|
|
60
|
+
} else if (_typeof(value) === 'object') {
|
|
61
|
+
value = _.values(value).join(' ');
|
|
78
62
|
}
|
|
63
|
+
} else {
|
|
64
|
+
value = '';
|
|
65
|
+
}
|
|
79
66
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
return fragments.join(fragmentGlue);
|
|
85
|
-
}); //register a classic "for loop" helper
|
|
86
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
87
|
-
|
|
88
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
89
|
-
var ret = '';
|
|
90
|
-
startIndex = parseInt(startIndex);
|
|
91
|
-
stopIndex = parseInt(stopIndex);
|
|
92
|
-
increment = parseInt(increment);
|
|
93
|
-
|
|
94
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
95
|
-
ret += options.fn(_.extend({}, this, {
|
|
96
|
-
i: i
|
|
97
|
-
}));
|
|
67
|
+
if (keyValueGlue !== undefined) {
|
|
68
|
+
fragment += key + keyValueGlue;
|
|
98
69
|
}
|
|
99
70
|
|
|
100
|
-
|
|
71
|
+
fragment += wrapper + value + wrapper;
|
|
72
|
+
fragments.push(fragment);
|
|
101
73
|
});
|
|
102
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
103
|
-
if (var1 == var2) {
|
|
104
|
-
return options.fn(this);
|
|
105
|
-
} else {
|
|
106
|
-
return options.inverse(this);
|
|
107
|
-
}
|
|
108
|
-
}); // register a "get property" helper
|
|
109
|
-
// it gets the named property from the provided context
|
|
110
74
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
// it checks if value is in array
|
|
75
|
+
return fragments.join(fragmentGlue);
|
|
76
|
+
}); //register a classic "for loop" helper
|
|
77
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
115
78
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
79
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
80
|
+
var ret = '';
|
|
81
|
+
startIndex = parseInt(startIndex);
|
|
82
|
+
stopIndex = parseInt(stopIndex);
|
|
83
|
+
increment = parseInt(increment);
|
|
122
84
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
128
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
129
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
130
|
-
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
131
|
-
|
|
132
|
-
function program1(depth0,data) {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
return "popup";
|
|
85
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
86
|
+
ret += options.fn(_.extend({}, this, {
|
|
87
|
+
i: i
|
|
88
|
+
}));
|
|
136
89
|
}
|
|
137
90
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
149
|
-
buffer += "\" role=\"alert\" >\n <span class=\"icon-";
|
|
150
|
-
if (helper = helpers.level) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
151
|
-
else { helper = (depth0 && depth0.level); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
152
|
-
buffer += escapeExpression(stack1)
|
|
153
|
-
+ "\"></span>\n <div>\n ";
|
|
154
|
-
stack1 = (helper = helpers.dompurify || (depth0 && depth0.dompurify),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.msg), options) : helperMissing.call(depth0, "dompurify", (depth0 && depth0.msg), options));
|
|
155
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
156
|
-
buffer += "\n </div>\n <span title=\""
|
|
157
|
-
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Close message", options) : helperMissing.call(depth0, "__", "Close message", options)))
|
|
158
|
-
+ "\" class=\"icon-close\" data-close=\":parent .feedback\" role=\"button\" tabindex=\"0\"></span>\n</div>\n";
|
|
159
|
-
return buffer;
|
|
160
|
-
});
|
|
161
|
-
function tpl(data, options, asString) {
|
|
162
|
-
var html = Template(data, options);
|
|
163
|
-
return (asString || true) ? html : $(html);
|
|
164
|
-
}
|
|
91
|
+
return ret;
|
|
92
|
+
});
|
|
93
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
94
|
+
if (var1 == var2) {
|
|
95
|
+
return options.fn(this);
|
|
96
|
+
} else {
|
|
97
|
+
return options.inverse(this);
|
|
98
|
+
}
|
|
99
|
+
}); // register a "get property" helper
|
|
100
|
+
// it gets the named property from the provided context
|
|
165
101
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
* of the License (non-upgradable).
|
|
171
|
-
*
|
|
172
|
-
* This program is distributed in the hope that it will be useful,
|
|
173
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
174
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
175
|
-
* GNU General Public License for more details.
|
|
176
|
-
*
|
|
177
|
-
* You should have received a copy of the GNU General Public License
|
|
178
|
-
* along with this program; if not, write to the Free Software
|
|
179
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
180
|
-
*
|
|
181
|
-
* Copyright (c) 2015-2020 (original work) Open Assessment Technologies SA ;
|
|
182
|
-
*
|
|
183
|
-
*/
|
|
102
|
+
hb.registerHelper('property', function (name, context) {
|
|
103
|
+
return context[name] || '';
|
|
104
|
+
}); // register an 'includes' helper
|
|
105
|
+
// it checks if value is in array
|
|
184
106
|
|
|
185
|
-
|
|
107
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
108
|
+
if (_.contains(haystack, needle)) {
|
|
109
|
+
return options.fn(this);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
if (!Helpers0.__initialized) {
|
|
115
|
+
Helpers0(Handlebars);
|
|
116
|
+
Helpers0.__initialized = true;
|
|
117
|
+
}
|
|
118
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
119
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
120
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
121
|
+
var buffer = "", stack1, helper, options, functionType="function", escapeExpression=this.escapeExpression, self=this, helperMissing=helpers.helperMissing;
|
|
122
|
+
|
|
123
|
+
function program1(depth0,data) {
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
return "popup";
|
|
127
|
+
}
|
|
186
128
|
|
|
187
|
-
|
|
129
|
+
buffer += "<div id=\"";
|
|
130
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
131
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
132
|
+
buffer += escapeExpression(stack1)
|
|
133
|
+
+ "\" class=\"feedback feedback-";
|
|
134
|
+
if (helper = helpers.level) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
135
|
+
else { helper = (depth0 && depth0.level); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
136
|
+
buffer += escapeExpression(stack1)
|
|
137
|
+
+ " ";
|
|
138
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.popup), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
139
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
140
|
+
buffer += "\" role=\"alert\" >\n <span class=\"icon-";
|
|
141
|
+
if (helper = helpers.level) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
142
|
+
else { helper = (depth0 && depth0.level); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
143
|
+
buffer += escapeExpression(stack1)
|
|
144
|
+
+ "\"></span>\n <div>\n ";
|
|
145
|
+
stack1 = (helper = helpers.dompurify || (depth0 && depth0.dompurify),options={hash:{},data:data},helper ? helper.call(depth0, (depth0 && depth0.msg), options) : helperMissing.call(depth0, "dompurify", (depth0 && depth0.msg), options));
|
|
146
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
147
|
+
buffer += "\n </div>\n <span title=\""
|
|
148
|
+
+ escapeExpression((helper = helpers.__ || (depth0 && depth0.__),options={hash:{},data:data},helper ? helper.call(depth0, "Close message", options) : helperMissing.call(depth0, "__", "Close message", options)))
|
|
149
|
+
+ "\" class=\"icon-close\" data-close=\":parent .feedback\" role=\"button\" tabindex=\"0\"></span>\n</div>\n";
|
|
150
|
+
return buffer;
|
|
151
|
+
});
|
|
152
|
+
function tpl(data, options, asString) {
|
|
153
|
+
var html = Template(data, options);
|
|
154
|
+
return (asString || true) ? html : $(html);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/*
|
|
158
|
+
* This program is free software; you can redistribute it and/or
|
|
159
|
+
* modify it under the terms of the GNU General Public License
|
|
160
|
+
* as published by the Free Software Foundation; under version 2
|
|
161
|
+
* of the License (non-upgradable).
|
|
162
|
+
*
|
|
163
|
+
* This program is distributed in the hope that it will be useful,
|
|
164
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
165
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
166
|
+
* GNU General Public License for more details.
|
|
167
|
+
*
|
|
168
|
+
* You should have received a copy of the GNU General Public License
|
|
169
|
+
* along with this program; if not, write to the Free Software
|
|
170
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
171
|
+
*
|
|
172
|
+
* Copyright (c) 2015-2020 (original work) Open Assessment Technologies SA ;
|
|
173
|
+
*
|
|
174
|
+
*/
|
|
175
|
+
|
|
176
|
+
var defaultContainerSelector = '#feedback-box'; //keep a reference to ALL alive feedback
|
|
177
|
+
|
|
178
|
+
var currents = []; //available levels
|
|
179
|
+
|
|
180
|
+
var levels = ['info', 'success', 'warning', 'danger', 'error'];
|
|
181
|
+
var defaultOptions = {
|
|
182
|
+
timeout: {
|
|
183
|
+
info: 2000,
|
|
184
|
+
success: 2000,
|
|
185
|
+
warning: 4000,
|
|
186
|
+
danger: 4000,
|
|
187
|
+
error: 8000
|
|
188
|
+
},
|
|
189
|
+
// Note: value depends on font, font-weight and such.
|
|
190
|
+
// 40 is pretty good in the current setup but will
|
|
191
|
+
// never be exact with a non-proportional font.
|
|
192
|
+
wrapLongWordsAfter: 40,
|
|
193
|
+
//by default HTML content is encoded
|
|
194
|
+
encodeHtml: true,
|
|
195
|
+
//change the display (absolute or in the flow)
|
|
196
|
+
popup: true
|
|
197
|
+
};
|
|
198
|
+
/**
|
|
199
|
+
* Creates a feedback object.
|
|
200
|
+
*
|
|
201
|
+
* @exports ui/feedback
|
|
202
|
+
* @param {jQUeryElement} [$container] - only to specify another container
|
|
203
|
+
* @param {Object} [config] - change the config
|
|
204
|
+
* @param {Object|Number} [config.timeout] - either one for every level or per level timeout in ms
|
|
205
|
+
* @param {Number} [config.wrapLongWordsAfter] - add a space in the middle of very long word to enable wrap lines
|
|
206
|
+
* @param {Boolean} [config.encodeHtml] - weither the message is html encoded
|
|
207
|
+
* @param {Boolean} [config.popup] - displays the message as a popup or in the flow
|
|
208
|
+
* @returns {feedback} the feedback object
|
|
209
|
+
* @throws {TypeError} without a container
|
|
210
|
+
*/
|
|
211
|
+
|
|
212
|
+
var feedbackFactory = function feedbackFactory($container, config) {
|
|
213
|
+
var feedback;
|
|
214
|
+
var codeEnter = 13;
|
|
215
|
+
var codeSpace = 32;
|
|
216
|
+
|
|
217
|
+
if (!$container || !$container.length) {
|
|
218
|
+
$container = $$1(defaultContainerSelector);
|
|
219
|
+
}
|
|
188
220
|
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
info: 2000,
|
|
193
|
-
success: 2000,
|
|
194
|
-
warning: 4000,
|
|
195
|
-
danger: 4000,
|
|
196
|
-
error: 8000
|
|
197
|
-
},
|
|
198
|
-
// Note: value depends on font, font-weight and such.
|
|
199
|
-
// 40 is pretty good in the current setup but will
|
|
200
|
-
// never be exact with a non-proportional font.
|
|
201
|
-
wrapLongWordsAfter: 40,
|
|
202
|
-
//by default HTML content is encoded
|
|
203
|
-
encodeHtml: true,
|
|
204
|
-
//change the display (absolute or in the flow)
|
|
205
|
-
popup: true
|
|
206
|
-
};
|
|
221
|
+
if (!$container.length) {
|
|
222
|
+
throw new TypeError('The feedback needs to belong to an existing container');
|
|
223
|
+
}
|
|
207
224
|
/**
|
|
208
|
-
*
|
|
209
|
-
*
|
|
210
|
-
* @exports ui/feedback
|
|
211
|
-
* @param {jQUeryElement} [$container] - only to specify another container
|
|
212
|
-
* @param {Object} [config] - change the config
|
|
213
|
-
* @param {Object|Number} [config.timeout] - either one for every level or per level timeout in ms
|
|
214
|
-
* @param {Number} [config.wrapLongWordsAfter] - add a space in the middle of very long word to enable wrap lines
|
|
215
|
-
* @param {Boolean} [config.encodeHtml] - weither the message is html encoded
|
|
216
|
-
* @param {Boolean} [config.popup] - displays the message as a popup or in the flow
|
|
217
|
-
* @returns {feedback} the feedback object
|
|
218
|
-
* @throws {TypeError} without a container
|
|
225
|
+
* @typedef {Object} feedback - the feedback component
|
|
219
226
|
*/
|
|
220
227
|
|
|
221
|
-
var feedbackFactory = function feedbackFactory($container, config) {
|
|
222
|
-
var feedback;
|
|
223
|
-
const codeEnter = 13;
|
|
224
|
-
const codeSpace = 32;
|
|
225
228
|
|
|
226
|
-
|
|
227
|
-
$container = $$1(defaultContainerSelector);
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if (!$container.length) {
|
|
231
|
-
throw new TypeError('The feedback needs to belong to an existing container');
|
|
232
|
-
}
|
|
229
|
+
feedback = component({
|
|
233
230
|
/**
|
|
234
|
-
*
|
|
231
|
+
* Creates a message, not displayed.
|
|
232
|
+
* @param {String} [level = 'info'] - the message level
|
|
233
|
+
* @param {String} msg - the message to display
|
|
234
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
235
|
+
* @param {Object} [options] - specify the config
|
|
236
|
+
* @returns {feedback} chains
|
|
235
237
|
*/
|
|
238
|
+
message: function message(level, msg, params, options) {
|
|
239
|
+
var displayedMessage = msg;
|
|
236
240
|
|
|
241
|
+
if (!level || !_.contains(levels, level)) {
|
|
242
|
+
level = 'info';
|
|
243
|
+
} //parameterized messages
|
|
237
244
|
|
|
238
|
-
feedback = component({
|
|
239
|
-
/**
|
|
240
|
-
* Creates a message, not displayed.
|
|
241
|
-
* @param {String} [level = 'info'] - the message level
|
|
242
|
-
* @param {String} msg - the message to display
|
|
243
|
-
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
244
|
-
* @param {Object} [options] - specify the config
|
|
245
|
-
* @returns {feedback} chains
|
|
246
|
-
*/
|
|
247
|
-
message: function message(level, msg, params, options) {
|
|
248
|
-
var displayedMessage = msg;
|
|
249
245
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
246
|
+
if (_.isPlainObject(params)) {
|
|
247
|
+
options = params;
|
|
248
|
+
params = [];
|
|
249
|
+
}
|
|
253
250
|
|
|
251
|
+
this.config = _.defaults(options || {}, this.config);
|
|
252
|
+
this.config.level = level; // encode plain text string to html
|
|
254
253
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
}
|
|
254
|
+
if (this.config.encodeHtml) {
|
|
255
|
+
displayedMessage = encode.html(displayedMessage);
|
|
256
|
+
} // wrap long words
|
|
259
257
|
|
|
260
|
-
this.config = _.defaults(options || {}, this.config);
|
|
261
|
-
this.config.level = level; // encode plain text string to html
|
|
262
258
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
259
|
+
if (this.config.wrapLongWordsAfter) {
|
|
260
|
+
displayedMessage = wrapLongWords(displayedMessage, this.config.wrapLongWordsAfter);
|
|
261
|
+
} //apply strf like format parameters
|
|
266
262
|
|
|
267
263
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
264
|
+
if (_.isArray(params) && params.length) {
|
|
265
|
+
displayedMessage = format.apply(format, [displayedMessage].concat(params));
|
|
266
|
+
}
|
|
271
267
|
|
|
268
|
+
this.config.msg = displayedMessage;
|
|
269
|
+
return this;
|
|
270
|
+
},
|
|
272
271
|
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
272
|
+
/**
|
|
273
|
+
* Opens an info message
|
|
274
|
+
* @param {String} msg - the message to display
|
|
275
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
276
|
+
* @param {Object} [options] - specify the config
|
|
277
|
+
* @returns {feedback} chains
|
|
278
|
+
*/
|
|
279
|
+
info: function info(msg, params, options) {
|
|
280
|
+
return this.message('info', msg, params, options).open();
|
|
281
|
+
},
|
|
276
282
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
*/
|
|
288
|
-
info: function info(msg, params, options) {
|
|
289
|
-
return this.message('info', msg, params, options).open();
|
|
290
|
-
},
|
|
291
|
-
|
|
292
|
-
/**
|
|
293
|
-
* Opens an success message
|
|
294
|
-
* @param {String} msg - the message to display
|
|
295
|
-
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
296
|
-
* @param {Object} [options] - specify the config
|
|
297
|
-
* @returns {feedback} chains
|
|
298
|
-
*/
|
|
299
|
-
success: function success(msg, params, options) {
|
|
300
|
-
return this.message('success', msg, params, options).open();
|
|
301
|
-
},
|
|
302
|
-
|
|
303
|
-
/**
|
|
304
|
-
* Opens an warning message
|
|
305
|
-
* @param {String} msg - the message to display
|
|
306
|
-
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
307
|
-
* @param {Object} [options] - specify the config
|
|
308
|
-
* @returns {feedback} chains
|
|
309
|
-
*/
|
|
310
|
-
warning: function warning(msg, params, options) {
|
|
311
|
-
return this.message('warning', msg, params, options).open();
|
|
312
|
-
},
|
|
313
|
-
|
|
314
|
-
/**
|
|
315
|
-
* Opens an danger message
|
|
316
|
-
* @param {String} msg - the message to display
|
|
317
|
-
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
318
|
-
* @param {Object} [options] - specify the config
|
|
319
|
-
* @returns {feedback} chains
|
|
320
|
-
*/
|
|
321
|
-
danger: function danger(msg, params, options) {
|
|
322
|
-
return this.message('danger', msg, params, options).open();
|
|
323
|
-
},
|
|
324
|
-
|
|
325
|
-
/**
|
|
326
|
-
* Opens an error message
|
|
327
|
-
* @param {String} msg - the message to display
|
|
328
|
-
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
329
|
-
* @param {Object} [options] - specify the config
|
|
330
|
-
* @returns {feedback} chains
|
|
331
|
-
*/
|
|
332
|
-
error: function error(msg, params, options) {
|
|
333
|
-
return this.message('error', msg, params, options).open();
|
|
334
|
-
},
|
|
335
|
-
|
|
336
|
-
/**
|
|
337
|
-
* Opens the message (and close previous one)
|
|
338
|
-
* ! Method kept for backward compat with previous version !
|
|
339
|
-
* @returns {feedback} chains
|
|
340
|
-
*/
|
|
341
|
-
open: function open() {
|
|
342
|
-
//close others
|
|
343
|
-
_(currents).reject(this).invoke('close'); //and display
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
return this.display();
|
|
347
|
-
},
|
|
348
|
-
|
|
349
|
-
/**
|
|
350
|
-
* Closes the message
|
|
351
|
-
* ! Method kept for backward compat with previous version !
|
|
352
|
-
* @returns {feedback} chains
|
|
353
|
-
*/
|
|
354
|
-
close: function close() {
|
|
355
|
-
if (this.is('rendered')) {
|
|
356
|
-
this.destroy();
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
|
|
360
|
-
/**
|
|
361
|
-
* Displays the message (does the render)
|
|
362
|
-
* ! Method kept for backward compat with previous version !
|
|
363
|
-
* @returns {feedback} chains
|
|
364
|
-
*/
|
|
365
|
-
display: function display() {
|
|
366
|
-
if (this.is('rendered')) {
|
|
367
|
-
this.show();
|
|
368
|
-
} else {
|
|
369
|
-
this.render($container);
|
|
370
|
-
}
|
|
283
|
+
/**
|
|
284
|
+
* Opens an success message
|
|
285
|
+
* @param {String} msg - the message to display
|
|
286
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
287
|
+
* @param {Object} [options] - specify the config
|
|
288
|
+
* @returns {feedback} chains
|
|
289
|
+
*/
|
|
290
|
+
success: function success(msg, params, options) {
|
|
291
|
+
return this.message('success', msg, params, options).open();
|
|
292
|
+
},
|
|
371
293
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
294
|
+
/**
|
|
295
|
+
* Opens an warning message
|
|
296
|
+
* @param {String} msg - the message to display
|
|
297
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
298
|
+
* @param {Object} [options] - specify the config
|
|
299
|
+
* @returns {feedback} chains
|
|
300
|
+
*/
|
|
301
|
+
warning: function warning(msg, params, options) {
|
|
302
|
+
return this.message('warning', msg, params, options).open();
|
|
303
|
+
},
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Opens an danger message
|
|
307
|
+
* @param {String} msg - the message to display
|
|
308
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
309
|
+
* @param {Object} [options] - specify the config
|
|
310
|
+
* @returns {feedback} chains
|
|
311
|
+
*/
|
|
312
|
+
danger: function danger(msg, params, options) {
|
|
313
|
+
return this.message('danger', msg, params, options).open();
|
|
314
|
+
},
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* Opens an error message
|
|
318
|
+
* @param {String} msg - the message to display
|
|
319
|
+
* @param {Array} [params] - parameters for the message format (%s,%d,%j)
|
|
320
|
+
* @param {Object} [options] - specify the config
|
|
321
|
+
* @returns {feedback} chains
|
|
322
|
+
*/
|
|
323
|
+
error: function error(msg, params, options) {
|
|
324
|
+
return this.message('error', msg, params, options).open();
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Opens the message (and close previous one)
|
|
329
|
+
* ! Method kept for backward compat with previous version !
|
|
330
|
+
* @returns {feedback} chains
|
|
331
|
+
*/
|
|
332
|
+
open: function open() {
|
|
333
|
+
//close others
|
|
334
|
+
_(currents).reject(this).invoke('close'); //and display
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
return this.display();
|
|
338
|
+
},
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Closes the message
|
|
342
|
+
* ! Method kept for backward compat with previous version !
|
|
343
|
+
* @returns {feedback} chains
|
|
344
|
+
*/
|
|
345
|
+
close: function close() {
|
|
346
|
+
if (this.is('rendered')) {
|
|
387
347
|
this.destroy();
|
|
388
|
-
}
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
348
|
+
}
|
|
349
|
+
},
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Displays the message (does the render)
|
|
353
|
+
* ! Method kept for backward compat with previous version !
|
|
354
|
+
* @returns {feedback} chains
|
|
355
|
+
*/
|
|
356
|
+
display: function display() {
|
|
357
|
+
if (this.is('rendered')) {
|
|
358
|
+
this.show();
|
|
359
|
+
} else {
|
|
360
|
+
this.render($container);
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
return this;
|
|
364
|
+
}
|
|
365
|
+
}, defaultOptions);
|
|
366
|
+
return feedback.setTemplate(tpl).on('init', function () {
|
|
367
|
+
this.config.id = 'feedback-' + (currents.length + 1);
|
|
368
|
+
currents.push(this); //for backward compat
|
|
369
|
+
|
|
370
|
+
$container.trigger('create.feedback');
|
|
371
|
+
}).on('render', function () {
|
|
372
|
+
var _this = this;
|
|
373
|
+
|
|
374
|
+
var self = this;
|
|
375
|
+
var $component = this.getElement();
|
|
376
|
+
var $closer = $$1('.icon-close', $component);
|
|
377
|
+
var timeout = _.isPlainObject(this.config.timeout) ? this.config.timeout[this.config.level] : this.config.timeout;
|
|
378
|
+
$closer.off('click').on('click', function (e) {
|
|
379
|
+
e.preventDefault();
|
|
380
|
+
|
|
381
|
+
_this.destroy();
|
|
382
|
+
}).off('keyup').on('keyup', function (e) {
|
|
383
|
+
if ([codeEnter, codeSpace].indexOf(e.which) !== -1) {
|
|
384
|
+
_this.destroy();
|
|
385
|
+
}
|
|
386
|
+
});
|
|
393
387
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
388
|
+
if (_.isNumber(timeout) && timeout > 0) {
|
|
389
|
+
_.delay(function () {
|
|
390
|
+
self.close();
|
|
391
|
+
}, timeout);
|
|
392
|
+
} //for backward compat
|
|
399
393
|
|
|
400
394
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
395
|
+
$container.trigger('display.feedback');
|
|
396
|
+
}).on('destroy', function () {
|
|
397
|
+
//for backward compat
|
|
398
|
+
$container.trigger('close.feedback');
|
|
405
399
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
400
|
+
_.remove(currents, this);
|
|
401
|
+
}).init(config);
|
|
402
|
+
};
|
|
409
403
|
|
|
410
|
-
|
|
404
|
+
return feedbackFactory;
|
|
411
405
|
|
|
412
406
|
});
|