@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
|
@@ -1,300 +1,295 @@
|
|
|
1
1
|
define(['lodash', 'i18n', 'handlebars', 'lib/dompurify/purify'], function (_, __, Handlebars, DOMPurify) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
4
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
5
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
6
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
7
|
+
|
|
8
|
+
function _typeof(obj) {
|
|
9
|
+
"@babel/helpers - typeof";
|
|
10
|
+
|
|
11
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
12
|
+
return typeof obj;
|
|
13
|
+
} : function (obj) {
|
|
14
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
15
|
+
}, _typeof(obj);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function Helpers0 (hb) {
|
|
19
|
+
//register a i18n helper
|
|
20
|
+
hb.registerHelper('__', function (key) {
|
|
21
|
+
return __(key);
|
|
22
|
+
});
|
|
8
23
|
/**
|
|
9
|
-
*
|
|
10
|
-
* modify it under the terms of the GNU General Public License
|
|
11
|
-
* as published by the Free Software Foundation; under version 2
|
|
12
|
-
* of the License (non-upgradable).
|
|
13
|
-
*
|
|
14
|
-
* This program is distributed in the hope that it will be useful,
|
|
15
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
-
* GNU General Public License for more details.
|
|
18
|
-
*
|
|
19
|
-
* You should have received a copy of the GNU General Public License
|
|
20
|
-
* along with this program; if not, write to the Free Software
|
|
21
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
22
|
-
*
|
|
23
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
24
|
-
*
|
|
24
|
+
* Register dompurify helper
|
|
25
25
|
*
|
|
26
|
+
* https://github.com/cure53/DOMPurify
|
|
27
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
28
|
+
* to make output safe for template systems
|
|
26
29
|
*/
|
|
27
|
-
function Helpers0 (hb) {
|
|
28
|
-
//register a i18n helper
|
|
29
|
-
hb.registerHelper('__', function (key) {
|
|
30
|
-
return __(key);
|
|
31
|
-
});
|
|
32
|
-
/**
|
|
33
|
-
* Register dompurify helper
|
|
34
|
-
*
|
|
35
|
-
* https://github.com/cure53/DOMPurify
|
|
36
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
37
|
-
* to make output safe for template systems
|
|
38
|
-
*/
|
|
39
|
-
|
|
40
|
-
hb.registerHelper('dompurify', function (context) {
|
|
41
|
-
return DOMPurify.sanitize(context);
|
|
42
|
-
});
|
|
43
|
-
/**
|
|
44
|
-
* Register join helper
|
|
45
|
-
*
|
|
46
|
-
* Example :
|
|
47
|
-
* var values = {a:v1, b:v2, c:v3};
|
|
48
|
-
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
49
|
-
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
50
|
-
*/
|
|
51
|
-
|
|
52
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
53
|
-
var fragments = [];
|
|
54
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
55
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
56
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
57
|
-
|
|
58
|
-
_.forIn(arr, function (value, key) {
|
|
59
|
-
var fragment = '';
|
|
60
|
-
|
|
61
|
-
if (value !== null || value !== undefined) {
|
|
62
|
-
if (typeof value === 'boolean') {
|
|
63
|
-
value = value ? 'true' : 'false';
|
|
64
|
-
} else if (typeof value === 'object') {
|
|
65
|
-
value = _.values(value).join(' ');
|
|
66
|
-
}
|
|
67
|
-
} else {
|
|
68
|
-
value = '';
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
if (keyValueGlue !== undefined) {
|
|
72
|
-
fragment += key + keyValueGlue;
|
|
73
|
-
}
|
|
74
30
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
31
|
+
hb.registerHelper('dompurify', function (context) {
|
|
32
|
+
return DOMPurify.sanitize(context);
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Register join helper
|
|
36
|
+
*
|
|
37
|
+
* Example :
|
|
38
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
39
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
40
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
41
|
+
*/
|
|
82
42
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
43
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
44
|
+
var fragments = [];
|
|
45
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
46
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
47
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
88
48
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
i: i
|
|
92
|
-
}));
|
|
93
|
-
}
|
|
49
|
+
_.forIn(arr, function (value, key) {
|
|
50
|
+
var fragment = '';
|
|
94
51
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
52
|
+
if (value !== null || value !== undefined) {
|
|
53
|
+
if (typeof value === 'boolean') {
|
|
54
|
+
value = value ? 'true' : 'false';
|
|
55
|
+
} else if (_typeof(value) === 'object') {
|
|
56
|
+
value = _.values(value).join(' ');
|
|
57
|
+
}
|
|
100
58
|
} else {
|
|
101
|
-
|
|
59
|
+
value = '';
|
|
102
60
|
}
|
|
103
|
-
}); // register a "get property" helper
|
|
104
|
-
// it gets the named property from the provided context
|
|
105
|
-
|
|
106
|
-
hb.registerHelper('property', function (name, context) {
|
|
107
|
-
return context[name] || '';
|
|
108
|
-
}); // register an 'includes' helper
|
|
109
|
-
// it checks if value is in array
|
|
110
61
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
return options.fn(this);
|
|
62
|
+
if (keyValueGlue !== undefined) {
|
|
63
|
+
fragment += key + keyValueGlue;
|
|
114
64
|
}
|
|
65
|
+
|
|
66
|
+
fragment += wrapper + value + wrapper;
|
|
67
|
+
fragments.push(fragment);
|
|
115
68
|
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
if (!Helpers0.__initialized) {
|
|
119
|
-
Helpers0(Handlebars);
|
|
120
|
-
Helpers0.__initialized = true;
|
|
121
|
-
}
|
|
122
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
123
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
124
|
-
helpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};
|
|
125
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
buffer += "<div class=\"form-widget ";
|
|
129
|
-
if (helper = helpers.widgetType) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
130
|
-
else { helper = (depth0 && depth0.widgetType); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
131
|
-
buffer += escapeExpression(stack1)
|
|
132
|
-
+ "\">\n <div class=\"widget-label\">\n ";
|
|
133
|
-
stack1 = self.invokePartial(partials['ui-form-widget-label'], 'ui-form-widget-label', depth0, helpers, partials, data);
|
|
134
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
135
|
-
buffer += "\n </div>\n <div class=\"widget-field\">\n <input class=\"widget-input-inline\" type=\"password\" name=\"";
|
|
136
|
-
if (helper = helpers.uri) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
137
|
-
else { helper = (depth0 && depth0.uri); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
138
|
-
buffer += escapeExpression(stack1)
|
|
139
|
-
+ "\" />\n </div>\n</div>\n\n<div class=\"form-widget ";
|
|
140
|
-
if (helper = helpers.widgetType) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
141
|
-
else { helper = (depth0 && depth0.widgetType); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
142
|
-
buffer += escapeExpression(stack1)
|
|
143
|
-
+ " confirmation\">\n <div class=\"widget-label\">\n ";
|
|
144
|
-
stack1 = self.invokePartial(partials['ui-form-widget-label'], 'ui-form-widget-label', (depth0 && depth0.confirmation), helpers, partials, data);
|
|
145
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
146
|
-
buffer += "\n </div>\n <div class=\"widget-field\">\n <input class=\"widget-input-inline\" type=\"password\" name=\""
|
|
147
|
-
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.confirmation)),stack1 == null || stack1 === false ? stack1 : stack1.uri)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
148
|
-
+ "\" />\n </div>\n</div>\n";
|
|
149
|
-
return buffer;
|
|
150
|
-
});
|
|
151
|
-
function hiddenBoxTpl(data, options, asString) {
|
|
152
|
-
var html = Template(data, options);
|
|
153
|
-
return (asString || true) ? html : $(html);
|
|
154
|
-
}
|
|
155
69
|
|
|
70
|
+
return fragments.join(fragmentGlue);
|
|
71
|
+
}); //register a classic "for loop" helper
|
|
72
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
73
|
+
|
|
74
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
75
|
+
var ret = '';
|
|
76
|
+
startIndex = parseInt(startIndex);
|
|
77
|
+
stopIndex = parseInt(stopIndex);
|
|
78
|
+
increment = parseInt(increment);
|
|
79
|
+
|
|
80
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
81
|
+
ret += options.fn(_.extend({}, this, {
|
|
82
|
+
i: i
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
return ret;
|
|
87
|
+
});
|
|
88
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
89
|
+
if (var1 == var2) {
|
|
90
|
+
return options.fn(this);
|
|
91
|
+
} else {
|
|
92
|
+
return options.inverse(this);
|
|
93
|
+
}
|
|
94
|
+
}); // register a "get property" helper
|
|
95
|
+
// it gets the named property from the provided context
|
|
96
|
+
|
|
97
|
+
hb.registerHelper('property', function (name, context) {
|
|
98
|
+
return context[name] || '';
|
|
99
|
+
}); // register an 'includes' helper
|
|
100
|
+
// it checks if value is in array
|
|
101
|
+
|
|
102
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
103
|
+
if (_.contains(haystack, needle)) {
|
|
104
|
+
return options.fn(this);
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if (!Helpers0.__initialized) {
|
|
110
|
+
Helpers0(Handlebars);
|
|
111
|
+
Helpers0.__initialized = true;
|
|
112
|
+
}
|
|
113
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
114
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
115
|
+
helpers = this.merge(helpers, Handlebars.helpers); partials = this.merge(partials, Handlebars.partials); data = data || {};
|
|
116
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
buffer += "<div class=\"form-widget ";
|
|
120
|
+
if (helper = helpers.widgetType) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
121
|
+
else { helper = (depth0 && depth0.widgetType); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
122
|
+
buffer += escapeExpression(stack1)
|
|
123
|
+
+ "\">\n <div class=\"widget-label\">\n ";
|
|
124
|
+
stack1 = self.invokePartial(partials['ui-form-widget-label'], 'ui-form-widget-label', depth0, helpers, partials, data);
|
|
125
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
126
|
+
buffer += "\n </div>\n <div class=\"widget-field\">\n <input class=\"widget-input-inline\" type=\"password\" name=\"";
|
|
127
|
+
if (helper = helpers.uri) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
128
|
+
else { helper = (depth0 && depth0.uri); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
129
|
+
buffer += escapeExpression(stack1)
|
|
130
|
+
+ "\" />\n </div>\n</div>\n\n<div class=\"form-widget ";
|
|
131
|
+
if (helper = helpers.widgetType) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
132
|
+
else { helper = (depth0 && depth0.widgetType); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
133
|
+
buffer += escapeExpression(stack1)
|
|
134
|
+
+ " confirmation\">\n <div class=\"widget-label\">\n ";
|
|
135
|
+
stack1 = self.invokePartial(partials['ui-form-widget-label'], 'ui-form-widget-label', (depth0 && depth0.confirmation), helpers, partials, data);
|
|
136
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
137
|
+
buffer += "\n </div>\n <div class=\"widget-field\">\n <input class=\"widget-input-inline\" type=\"password\" name=\""
|
|
138
|
+
+ escapeExpression(((stack1 = ((stack1 = (depth0 && depth0.confirmation)),stack1 == null || stack1 === false ? stack1 : stack1.uri)),typeof stack1 === functionType ? stack1.apply(depth0) : stack1))
|
|
139
|
+
+ "\" />\n </div>\n</div>\n";
|
|
140
|
+
return buffer;
|
|
141
|
+
});
|
|
142
|
+
function hiddenBoxTpl(data, options, asString) {
|
|
143
|
+
var html = Template(data, options);
|
|
144
|
+
return (asString || true) ? html : $(html);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* This program is free software; you can redistribute it and/or
|
|
149
|
+
* modify it under the terms of the GNU General Public License
|
|
150
|
+
* as published by the Free Software Foundation; under version 2
|
|
151
|
+
* of the License (non-upgradable).
|
|
152
|
+
*
|
|
153
|
+
* This program is distributed in the hope that it will be useful,
|
|
154
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
155
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
156
|
+
* GNU General Public License for more details.
|
|
157
|
+
*
|
|
158
|
+
* You should have received a copy of the GNU General Public License
|
|
159
|
+
* along with this program; if not, write to the Free Software
|
|
160
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
161
|
+
*
|
|
162
|
+
* Copyright (c) 2019 Open Assessment Technologies SA ;
|
|
163
|
+
*/
|
|
164
|
+
/**
|
|
165
|
+
* @typedef {widgetConfig} hiddenBoxConfig Defines the config entries available to setup a hiddenBox form widget
|
|
166
|
+
* @property {Object} [confirmation] - confirmation label, uri and value
|
|
167
|
+
*/
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Defines the provider for a hiddenBox widget.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* import widgetHiddenBoxProvider from 'ui/form/widget/providers/hiddenBox';
|
|
174
|
+
* widgetFactory.registerProvider('hiddenBox', widgetHiddenBoxProvider);
|
|
175
|
+
* const widget = widgetFactory(container, {
|
|
176
|
+
* widget: 'hiddenBox'
|
|
177
|
+
* uri: 'hb',
|
|
178
|
+
* label: 'Password',
|
|
179
|
+
* confirmation: {
|
|
180
|
+
* label: 'Please confirm'
|
|
181
|
+
* }
|
|
182
|
+
* });
|
|
183
|
+
*/
|
|
184
|
+
|
|
185
|
+
var widgetHiddenBoxProvider = {
|
|
156
186
|
/**
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
* as published by the Free Software Foundation; under version 2
|
|
160
|
-
* of the License (non-upgradable).
|
|
161
|
-
*
|
|
162
|
-
* This program is distributed in the hope that it will be useful,
|
|
163
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
164
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
165
|
-
* GNU General Public License for more details.
|
|
166
|
-
*
|
|
167
|
-
* You should have received a copy of the GNU General Public License
|
|
168
|
-
* along with this program; if not, write to the Free Software
|
|
169
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
170
|
-
*
|
|
171
|
-
* Copyright (c) 2019 Open Assessment Technologies SA ;
|
|
187
|
+
* Initialize the widget.
|
|
188
|
+
* @param {hiddenBoxConfig} config
|
|
172
189
|
*/
|
|
190
|
+
init: function init(config) {
|
|
191
|
+
// the type will be reflected to the HTML markup
|
|
192
|
+
config.widgetType = 'hidden-box'; // config for the confirmation field
|
|
193
|
+
|
|
194
|
+
config.confirmation = _.defaults(config.confirmation || {}, {
|
|
195
|
+
label: __('%s Confirmation', config.label),
|
|
196
|
+
uri: config.uri + '_confirmation',
|
|
197
|
+
value: config.value || ''
|
|
198
|
+
});
|
|
199
|
+
},
|
|
200
|
+
|
|
173
201
|
/**
|
|
174
|
-
*
|
|
175
|
-
* @property {Object} [confirmation] - confirmation label, uri and value
|
|
202
|
+
* Resets the widget to the default validators
|
|
176
203
|
*/
|
|
204
|
+
setDefaultValidators: function setDefaultValidators() {
|
|
205
|
+
// set default validator if the field is required
|
|
206
|
+
if (this.getConfig().required) {
|
|
207
|
+
this.getValidator().addValidation({
|
|
208
|
+
id: 'required',
|
|
209
|
+
message: __('This field is required'),
|
|
210
|
+
predicate: function predicate(value) {
|
|
211
|
+
return /\S+/.test(value.value);
|
|
212
|
+
},
|
|
213
|
+
precedence: 1
|
|
214
|
+
});
|
|
215
|
+
} // add validation for the confirmation field
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
this.getValidator().addValidation({
|
|
219
|
+
id: 'confirmation',
|
|
220
|
+
message: __('Fields must match'),
|
|
221
|
+
predicate: function predicate(value) {
|
|
222
|
+
return value.value === value.confirmation;
|
|
223
|
+
},
|
|
224
|
+
precedence: 2
|
|
225
|
+
});
|
|
226
|
+
},
|
|
177
227
|
|
|
178
228
|
/**
|
|
179
|
-
*
|
|
180
|
-
*
|
|
181
|
-
* @example
|
|
182
|
-
* import widgetHiddenBoxProvider from 'ui/form/widget/providers/hiddenBox';
|
|
183
|
-
* widgetFactory.registerProvider('hiddenBox', widgetHiddenBoxProvider);
|
|
184
|
-
* const widget = widgetFactory(container, {
|
|
185
|
-
* widget: 'hiddenBox'
|
|
186
|
-
* uri: 'hb',
|
|
187
|
-
* label: 'Password',
|
|
188
|
-
* confirmation: {
|
|
189
|
-
* label: 'Please confirm'
|
|
190
|
-
* }
|
|
191
|
-
* });
|
|
229
|
+
* Gets the value of the widget
|
|
230
|
+
* @returns {String}
|
|
192
231
|
*/
|
|
232
|
+
getValue: function getValue() {
|
|
233
|
+
var value = this.getConfig().value;
|
|
193
234
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
* @param {hiddenBoxConfig} config
|
|
198
|
-
*/
|
|
199
|
-
init(config) {
|
|
200
|
-
// the type will be reflected to the HTML markup
|
|
201
|
-
config.widgetType = 'hidden-box'; // config for the confirmation field
|
|
202
|
-
|
|
203
|
-
config.confirmation = _.defaults(config.confirmation || {}, {
|
|
204
|
-
label: __('%s Confirmation', config.label),
|
|
205
|
-
uri: config.uri + '_confirmation',
|
|
206
|
-
value: config.value || ''
|
|
207
|
-
});
|
|
208
|
-
},
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Resets the widget to the default validators
|
|
212
|
-
*/
|
|
213
|
-
setDefaultValidators() {
|
|
214
|
-
// set default validator if the field is required
|
|
215
|
-
if (this.getConfig().required) {
|
|
216
|
-
this.getValidator().addValidation({
|
|
217
|
-
id: 'required',
|
|
218
|
-
message: __('This field is required'),
|
|
219
|
-
predicate: value => /\S+/.test(value.value),
|
|
220
|
-
precedence: 1
|
|
221
|
-
});
|
|
222
|
-
} // add validation for the confirmation field
|
|
235
|
+
if (this.is('rendered')) {
|
|
236
|
+
value = this.getElement().find("[name=\"".concat(this.getUri(), "\"]")).val();
|
|
237
|
+
}
|
|
223
238
|
|
|
239
|
+
return value;
|
|
240
|
+
},
|
|
224
241
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
* Gets the value of the widget
|
|
235
|
-
* @returns {String}
|
|
236
|
-
*/
|
|
237
|
-
getValue() {
|
|
238
|
-
let value = this.getConfig().value;
|
|
242
|
+
/**
|
|
243
|
+
* Gets the raw value of the widget
|
|
244
|
+
* @returns {*}
|
|
245
|
+
*/
|
|
246
|
+
getRawValue: function getRawValue() {
|
|
247
|
+
var value = {
|
|
248
|
+
value: this.getValue(),
|
|
249
|
+
confirmation: this.getConfig().confirmation.value
|
|
250
|
+
};
|
|
239
251
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
252
|
+
if (this.is('rendered')) {
|
|
253
|
+
value.confirmation = this.getElement().find("[name=\"".concat(this.getConfig().confirmation.uri, "\"]")).val();
|
|
254
|
+
}
|
|
243
255
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Gets the raw value of the widget
|
|
249
|
-
* @returns {*}
|
|
250
|
-
*/
|
|
251
|
-
getRawValue() {
|
|
252
|
-
const value = {
|
|
253
|
-
value: this.getValue(),
|
|
254
|
-
confirmation: this.getConfig().confirmation.value
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
if (this.is('rendered')) {
|
|
258
|
-
value.confirmation = this.getElement().find(`[name="${this.getConfig().confirmation.uri}"]`).val();
|
|
259
|
-
}
|
|
256
|
+
return value;
|
|
257
|
+
},
|
|
260
258
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
if (this.is('rendered')) {
|
|
270
|
-
const $input = this.getElement().find(`[name="${this.getUri()}"]`);
|
|
271
|
-
const $confirmation = this.getElement().find(`[name="${this.getConfig().confirmation.uri}"]`);
|
|
272
|
-
|
|
273
|
-
if ($input.val() === $confirmation.val()) {
|
|
274
|
-
this.getConfig().confirmation.value = value;
|
|
275
|
-
$confirmation.val(value);
|
|
276
|
-
}
|
|
259
|
+
/**
|
|
260
|
+
* Sets the value of the widget
|
|
261
|
+
* @param {String} value
|
|
262
|
+
*/
|
|
263
|
+
setValue: function setValue(value) {
|
|
264
|
+
if (this.is('rendered')) {
|
|
265
|
+
var $input = this.getElement().find("[name=\"".concat(this.getUri(), "\"]"));
|
|
266
|
+
var $confirmation = this.getElement().find("[name=\"".concat(this.getConfig().confirmation.uri, "\"]"));
|
|
277
267
|
|
|
278
|
-
|
|
279
|
-
} else {
|
|
268
|
+
if ($input.val() === $confirmation.val()) {
|
|
280
269
|
this.getConfig().confirmation.value = value;
|
|
270
|
+
$confirmation.val(value);
|
|
281
271
|
}
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
272
|
+
|
|
273
|
+
$input.val(value);
|
|
274
|
+
} else {
|
|
275
|
+
this.getConfig().confirmation.value = value;
|
|
276
|
+
}
|
|
277
|
+
},
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Gets access to the actual form element
|
|
281
|
+
* @returns {jQuery|null}
|
|
282
|
+
*/
|
|
283
|
+
getWidgetElement: function getWidgetElement() {
|
|
284
|
+
return this.getElement().find('input');
|
|
285
|
+
},
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Expose the template to the factory and it will apply it
|
|
289
|
+
*/
|
|
290
|
+
template: hiddenBoxTpl
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
return widgetHiddenBoxProvider;
|
|
299
294
|
|
|
300
295
|
});
|