@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/form/simpleForm.js
CHANGED
|
@@ -1,267 +1,265 @@
|
|
|
1
1
|
define(['lodash', 'ui/component', 'handlebars', 'i18n', 'lib/dompurify/purify', 'css!ui/form/validator/css/validator.css'], function (_, componentFactory, Handlebars, __, DOMPurify, validator_css) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
componentFactory = componentFactory && Object.prototype.hasOwnProperty.call(componentFactory, 'default') ? componentFactory['default'] : componentFactory;
|
|
5
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
6
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
7
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
8
|
+
|
|
9
|
+
function _typeof(obj) {
|
|
10
|
+
"@babel/helpers - typeof";
|
|
11
|
+
|
|
12
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
13
|
+
return typeof obj;
|
|
14
|
+
} : function (obj) {
|
|
15
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
16
|
+
}, _typeof(obj);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
function Helpers0 (hb) {
|
|
20
|
+
//register a i18n helper
|
|
21
|
+
hb.registerHelper('__', function (key) {
|
|
22
|
+
return __(key);
|
|
23
|
+
});
|
|
9
24
|
/**
|
|
10
|
-
*
|
|
11
|
-
* modify it under the terms of the GNU General Public License
|
|
12
|
-
* as published by the Free Software Foundation; under version 2
|
|
13
|
-
* of the License (non-upgradable).
|
|
14
|
-
*
|
|
15
|
-
* This program is distributed in the hope that it will be useful,
|
|
16
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
17
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
18
|
-
* GNU General Public License for more details.
|
|
19
|
-
*
|
|
20
|
-
* You should have received a copy of the GNU General Public License
|
|
21
|
-
* along with this program; if not, write to the Free Software
|
|
22
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
23
|
-
*
|
|
24
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
25
|
+
* Register dompurify helper
|
|
25
26
|
*
|
|
27
|
+
* https://github.com/cure53/DOMPurify
|
|
28
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
29
|
+
* to make output safe for template systems
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
hb.registerHelper('dompurify', function (context) {
|
|
33
|
+
return DOMPurify.sanitize(context);
|
|
34
|
+
});
|
|
35
|
+
/**
|
|
36
|
+
* Register join helper
|
|
26
37
|
*
|
|
38
|
+
* Example :
|
|
39
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
40
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
41
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
27
42
|
*/
|
|
28
|
-
function Helpers0 (hb) {
|
|
29
|
-
//register a i18n helper
|
|
30
|
-
hb.registerHelper('__', function (key) {
|
|
31
|
-
return __(key);
|
|
32
|
-
});
|
|
33
|
-
/**
|
|
34
|
-
* Register dompurify helper
|
|
35
|
-
*
|
|
36
|
-
* https://github.com/cure53/DOMPurify
|
|
37
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
38
|
-
* to make output safe for template systems
|
|
39
|
-
*/
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
*
|
|
47
|
-
* Example :
|
|
48
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
49
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
50
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
51
|
-
*/
|
|
44
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
45
|
+
var fragments = [];
|
|
46
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
47
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
48
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
52
49
|
|
|
53
|
-
|
|
54
|
-
var
|
|
55
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
56
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
57
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
58
|
-
|
|
59
|
-
_.forIn(arr, function (value, key) {
|
|
60
|
-
var fragment = '';
|
|
61
|
-
|
|
62
|
-
if (value !== null || value !== undefined) {
|
|
63
|
-
if (typeof value === 'boolean') {
|
|
64
|
-
value = value ? 'true' : 'false';
|
|
65
|
-
} else if (typeof value === 'object') {
|
|
66
|
-
value = _.values(value).join(' ');
|
|
67
|
-
}
|
|
68
|
-
} else {
|
|
69
|
-
value = '';
|
|
70
|
-
}
|
|
50
|
+
_.forIn(arr, function (value, key) {
|
|
51
|
+
var fragment = '';
|
|
71
52
|
|
|
72
|
-
|
|
73
|
-
|
|
53
|
+
if (value !== null || value !== undefined) {
|
|
54
|
+
if (typeof value === 'boolean') {
|
|
55
|
+
value = value ? 'true' : 'false';
|
|
56
|
+
} else if (_typeof(value) === 'object') {
|
|
57
|
+
value = _.values(value).join(' ');
|
|
74
58
|
}
|
|
75
|
-
|
|
76
|
-
fragment += wrapper + value + wrapper;
|
|
77
|
-
fragments.push(fragment);
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
return fragments.join(fragmentGlue);
|
|
81
|
-
}); //register a classic "for loop" helper
|
|
82
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
83
|
-
|
|
84
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
85
|
-
var ret = '';
|
|
86
|
-
startIndex = parseInt(startIndex);
|
|
87
|
-
stopIndex = parseInt(stopIndex);
|
|
88
|
-
increment = parseInt(increment);
|
|
89
|
-
|
|
90
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
91
|
-
ret += options.fn(_.extend({}, this, {
|
|
92
|
-
i: i
|
|
93
|
-
}));
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return ret;
|
|
97
|
-
});
|
|
98
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
99
|
-
if (var1 == var2) {
|
|
100
|
-
return options.fn(this);
|
|
101
59
|
} else {
|
|
102
|
-
|
|
60
|
+
value = '';
|
|
103
61
|
}
|
|
104
|
-
}); // register a "get property" helper
|
|
105
|
-
// it gets the named property from the provided context
|
|
106
|
-
|
|
107
|
-
hb.registerHelper('property', function (name, context) {
|
|
108
|
-
return context[name] || '';
|
|
109
|
-
}); // register an 'includes' helper
|
|
110
|
-
// it checks if value is in array
|
|
111
62
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
return options.fn(this);
|
|
63
|
+
if (keyValueGlue !== undefined) {
|
|
64
|
+
fragment += key + keyValueGlue;
|
|
115
65
|
}
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
if (!Helpers0.__initialized) {
|
|
120
|
-
Helpers0(Handlebars);
|
|
121
|
-
Helpers0.__initialized = true;
|
|
122
|
-
}
|
|
123
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
124
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
125
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
126
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
buffer += "<div class=\"validation-error\">";
|
|
130
|
-
if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
131
|
-
else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
132
|
-
buffer += escapeExpression(stack1)
|
|
133
|
-
+ "</div>\n";
|
|
134
|
-
return buffer;
|
|
135
|
-
});
|
|
136
|
-
function messageTpl(data, options, asString) {
|
|
137
|
-
var html = Template(data, options);
|
|
138
|
-
return (asString || true) ? html : $(html);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
if (!Helpers0.__initialized) {
|
|
142
|
-
Helpers0(Handlebars);
|
|
143
|
-
Helpers0.__initialized = true;
|
|
144
|
-
}
|
|
145
|
-
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
146
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
147
|
-
helpers = this.merge(helpers, Handlebars.helpers);
|
|
148
66
|
|
|
149
|
-
|
|
150
|
-
|
|
67
|
+
fragment += wrapper + value + wrapper;
|
|
68
|
+
fragments.push(fragment);
|
|
151
69
|
});
|
|
152
|
-
function validatorTpl(data, options, asString) {
|
|
153
|
-
var html = Template$1(data, options);
|
|
154
|
-
return (asString || true) ? html : $(html);
|
|
155
|
-
}
|
|
156
70
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
71
|
+
return fragments.join(fragmentGlue);
|
|
72
|
+
}); //register a classic "for loop" helper
|
|
73
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
74
|
+
|
|
75
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
76
|
+
var ret = '';
|
|
77
|
+
startIndex = parseInt(startIndex);
|
|
78
|
+
stopIndex = parseInt(stopIndex);
|
|
79
|
+
increment = parseInt(increment);
|
|
80
|
+
|
|
81
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
82
|
+
ret += options.fn(_.extend({}, this, {
|
|
83
|
+
i: i
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return ret;
|
|
88
|
+
});
|
|
89
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
90
|
+
if (var1 == var2) {
|
|
91
|
+
return options.fn(this);
|
|
92
|
+
} else {
|
|
93
|
+
return options.inverse(this);
|
|
94
|
+
}
|
|
95
|
+
}); // register a "get property" helper
|
|
96
|
+
// it gets the named property from the provided context
|
|
97
|
+
|
|
98
|
+
hb.registerHelper('property', function (name, context) {
|
|
99
|
+
return context[name] || '';
|
|
100
|
+
}); // register an 'includes' helper
|
|
101
|
+
// it checks if value is in array
|
|
102
|
+
|
|
103
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
104
|
+
if (_.contains(haystack, needle)) {
|
|
105
|
+
return options.fn(this);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
if (!Helpers0.__initialized) {
|
|
111
|
+
Helpers0(Handlebars);
|
|
112
|
+
Helpers0.__initialized = true;
|
|
113
|
+
}
|
|
114
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
115
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
116
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
117
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression;
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
buffer += "<div class=\"validation-error\">";
|
|
121
|
+
if (helper = helpers.message) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
122
|
+
else { helper = (depth0 && depth0.message); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
123
|
+
buffer += escapeExpression(stack1)
|
|
124
|
+
+ "</div>\n";
|
|
125
|
+
return buffer;
|
|
126
|
+
});
|
|
127
|
+
function messageTpl(data, options, asString) {
|
|
128
|
+
var html = Template(data, options);
|
|
129
|
+
return (asString || true) ? html : $(html);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (!Helpers0.__initialized) {
|
|
133
|
+
Helpers0(Handlebars);
|
|
134
|
+
Helpers0.__initialized = true;
|
|
135
|
+
}
|
|
136
|
+
var Template$1 = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
137
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
138
|
+
helpers = this.merge(helpers, Handlebars.helpers);
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
return "<div class=\"form-validator\"></div>\n";
|
|
142
|
+
});
|
|
143
|
+
function validatorTpl(data, options, asString) {
|
|
144
|
+
var html = Template$1(data, options);
|
|
145
|
+
return (asString || true) ? html : $(html);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* This program is free software; you can redistribute it and/or
|
|
150
|
+
* modify it under the terms of the GNU General Public License
|
|
151
|
+
* as published by the Free Software Foundation; under version 2
|
|
152
|
+
* of the License (non-upgradable).
|
|
153
|
+
*
|
|
154
|
+
* This program is distributed in the hope that it will be useful,
|
|
155
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
156
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
157
|
+
* GNU General Public License for more details.
|
|
158
|
+
*
|
|
159
|
+
* You should have received a copy of the GNU General Public License
|
|
160
|
+
* along with this program; if not, write to the Free Software
|
|
161
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
162
|
+
*
|
|
163
|
+
* Copyright (c) 2019 Open Assessment Technologies SA ;
|
|
164
|
+
*/
|
|
165
|
+
/**
|
|
166
|
+
* Some default config
|
|
167
|
+
* @type {Object}
|
|
168
|
+
*/
|
|
169
|
+
|
|
170
|
+
var defaults = {};
|
|
171
|
+
/**
|
|
172
|
+
* Builds a renderer component for the validation messages.
|
|
173
|
+
*
|
|
174
|
+
* @example
|
|
175
|
+
* const $container = $('.my-container');
|
|
176
|
+
* const validatorRenderer = validatorRendererFactory($container);
|
|
177
|
+
*
|
|
178
|
+
* const messages = [
|
|
179
|
+
* 'An error occurred!',
|
|
180
|
+
* 'Please check your input'
|
|
181
|
+
* ];
|
|
182
|
+
*
|
|
183
|
+
* if (isInvalid()) {
|
|
184
|
+
* validatorRenderer.display(messages);
|
|
185
|
+
* } else {
|
|
186
|
+
* validatorRenderer.clear();
|
|
187
|
+
* }
|
|
188
|
+
*
|
|
189
|
+
* @param {HTMLElement|String} container
|
|
190
|
+
* @param {Object} config
|
|
191
|
+
* @returns {validatorRenderer}
|
|
192
|
+
* @fires ready - When the component is ready to work
|
|
193
|
+
*/
|
|
194
|
+
|
|
195
|
+
function validatorRendererFactory(container, config) {
|
|
196
|
+
var api = {
|
|
197
|
+
/**
|
|
198
|
+
* Displays messages
|
|
199
|
+
* @param {String|String[]} messages
|
|
200
|
+
* @returns {component}
|
|
201
|
+
*/
|
|
202
|
+
display: function display(messages) {
|
|
203
|
+
var $element = this.getElement();
|
|
178
204
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
* Builds a renderer component for the validation messages.
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* const $container = $('.my-container');
|
|
185
|
-
* const validatorRenderer = validatorRendererFactory($container);
|
|
186
|
-
*
|
|
187
|
-
* const messages = [
|
|
188
|
-
* 'An error occurred!',
|
|
189
|
-
* 'Please check your input'
|
|
190
|
-
* ];
|
|
191
|
-
*
|
|
192
|
-
* if (isInvalid()) {
|
|
193
|
-
* validatorRenderer.display(messages);
|
|
194
|
-
* } else {
|
|
195
|
-
* validatorRenderer.clear();
|
|
196
|
-
* }
|
|
197
|
-
*
|
|
198
|
-
* @param {HTMLElement|String} container
|
|
199
|
-
* @param {Object} config
|
|
200
|
-
* @returns {validatorRenderer}
|
|
201
|
-
* @fires ready - When the component is ready to work
|
|
202
|
-
*/
|
|
205
|
+
if (this.is('rendered')) {
|
|
206
|
+
this.clear();
|
|
203
207
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
/**
|
|
207
|
-
* Displays messages
|
|
208
|
-
* @param {String|String[]} messages
|
|
209
|
-
* @returns {component}
|
|
210
|
-
*/
|
|
211
|
-
display(messages) {
|
|
212
|
-
const $element = this.getElement();
|
|
213
|
-
|
|
214
|
-
if (this.is('rendered')) {
|
|
215
|
-
this.clear();
|
|
216
|
-
|
|
217
|
-
if (messages && !_.isArray(messages)) {
|
|
218
|
-
messages = [messages];
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
_.forEach(messages, message => $element.append(messageTpl({
|
|
222
|
-
message
|
|
223
|
-
})));
|
|
208
|
+
if (messages && !_.isArray(messages)) {
|
|
209
|
+
messages = [messages];
|
|
224
210
|
}
|
|
225
211
|
|
|
226
|
-
|
|
227
|
-
|
|
212
|
+
_.forEach(messages, function (message) {
|
|
213
|
+
return $element.append(messageTpl({
|
|
214
|
+
message: message
|
|
215
|
+
}));
|
|
216
|
+
});
|
|
217
|
+
}
|
|
228
218
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
* @returns {component}
|
|
232
|
-
*/
|
|
233
|
-
clear() {
|
|
234
|
-
if (this.is('rendered')) {
|
|
235
|
-
this.getElement().empty();
|
|
236
|
-
}
|
|
219
|
+
return this;
|
|
220
|
+
},
|
|
237
221
|
|
|
238
|
-
|
|
222
|
+
/**
|
|
223
|
+
* Clears all messages
|
|
224
|
+
* @returns {component}
|
|
225
|
+
*/
|
|
226
|
+
clear: function clear() {
|
|
227
|
+
if (this.is('rendered')) {
|
|
228
|
+
this.getElement().empty();
|
|
239
229
|
}
|
|
240
230
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
231
|
+
return this;
|
|
232
|
+
}
|
|
233
|
+
};
|
|
234
|
+
var validatorRenderer = componentFactory(api, defaults).setTemplate(validatorTpl) // auto render on init
|
|
235
|
+
.on('init', function () {
|
|
236
|
+
var _this = this;
|
|
237
|
+
|
|
238
|
+
// auto render on init (defer the call to give a chance to the init event to be completed before)
|
|
239
|
+
_.defer(function () {
|
|
240
|
+
return _this.render(container);
|
|
241
|
+
});
|
|
242
|
+
}) // renders the component
|
|
243
|
+
.on('render', function () {
|
|
244
|
+
if (this.getConfig().messages) {
|
|
245
|
+
this.display(this.getConfig().messages);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* @event ready
|
|
249
|
+
*/
|
|
254
250
|
|
|
255
251
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
252
|
+
this.trigger('ready');
|
|
253
|
+
}); // initialize the component with the provided config
|
|
254
|
+
// defer the call to allow to listen to the init event
|
|
259
255
|
|
|
260
|
-
|
|
256
|
+
_.defer(function () {
|
|
257
|
+
return validatorRenderer.init(config);
|
|
258
|
+
});
|
|
261
259
|
|
|
262
|
-
|
|
263
|
-
|
|
260
|
+
return validatorRenderer;
|
|
261
|
+
}
|
|
264
262
|
|
|
265
|
-
|
|
263
|
+
return validatorRendererFactory;
|
|
266
264
|
|
|
267
265
|
});
|