@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/groupedComboBox.js
CHANGED
|
@@ -1,261 +1,252 @@
|
|
|
1
1
|
define(['jquery', 'lodash', 'i18n', 'ui/component', 'handlebars', 'lib/dompurify/purify', 'select2'], function ($$1, _, __, component, Handlebars, DOMPurify, select2) { 'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
$$1 = $$1 && Object.prototype.hasOwnProperty.call($$1, 'default') ? $$1['default'] : $$1;
|
|
4
|
+
_ = _ && Object.prototype.hasOwnProperty.call(_, 'default') ? _['default'] : _;
|
|
5
|
+
__ = __ && Object.prototype.hasOwnProperty.call(__, 'default') ? __['default'] : __;
|
|
6
|
+
component = component && Object.prototype.hasOwnProperty.call(component, 'default') ? component['default'] : component;
|
|
7
|
+
Handlebars = Handlebars && Object.prototype.hasOwnProperty.call(Handlebars, 'default') ? Handlebars['default'] : Handlebars;
|
|
8
|
+
DOMPurify = DOMPurify && Object.prototype.hasOwnProperty.call(DOMPurify, 'default') ? DOMPurify['default'] : DOMPurify;
|
|
9
|
+
|
|
10
|
+
function _typeof(obj) {
|
|
11
|
+
"@babel/helpers - typeof";
|
|
12
|
+
|
|
13
|
+
return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
|
|
14
|
+
return typeof obj;
|
|
15
|
+
} : function (obj) {
|
|
16
|
+
return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
|
|
17
|
+
}, _typeof(obj);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function Helpers0 (hb) {
|
|
21
|
+
//register a i18n helper
|
|
22
|
+
hb.registerHelper('__', function (key) {
|
|
23
|
+
return __(key);
|
|
24
|
+
});
|
|
10
25
|
/**
|
|
11
|
-
*
|
|
12
|
-
* modify it under the terms of the GNU General Public License
|
|
13
|
-
* as published by the Free Software Foundation; under version 2
|
|
14
|
-
* of the License (non-upgradable).
|
|
15
|
-
*
|
|
16
|
-
* This program is distributed in the hope that it will be useful,
|
|
17
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
18
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
19
|
-
* GNU General Public License for more details.
|
|
20
|
-
*
|
|
21
|
-
* You should have received a copy of the GNU General Public License
|
|
22
|
-
* along with this program; if not, write to the Free Software
|
|
23
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
24
|
-
*
|
|
25
|
-
* Copyright (c) 2013-2019 (original work) Open Assessment Technologies SA (under the project TAO-PRODUCT);
|
|
26
|
-
*
|
|
26
|
+
* Register dompurify helper
|
|
27
27
|
*
|
|
28
|
+
* https://github.com/cure53/DOMPurify
|
|
29
|
+
* with config SAFE_FOR_TEMPLATES: true
|
|
30
|
+
* to make output safe for template systems
|
|
28
31
|
*/
|
|
29
|
-
function Helpers0 (hb) {
|
|
30
|
-
//register a i18n helper
|
|
31
|
-
hb.registerHelper('__', function (key) {
|
|
32
|
-
return __(key);
|
|
33
|
-
});
|
|
34
|
-
/**
|
|
35
|
-
* Register dompurify helper
|
|
36
|
-
*
|
|
37
|
-
* https://github.com/cure53/DOMPurify
|
|
38
|
-
* with config SAFE_FOR_TEMPLATES: true
|
|
39
|
-
* to make output safe for template systems
|
|
40
|
-
*/
|
|
41
32
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
55
|
-
var fragments = [];
|
|
56
|
-
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
57
|
-
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
58
|
-
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
33
|
+
hb.registerHelper('dompurify', function (context) {
|
|
34
|
+
return DOMPurify.sanitize(context);
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* Register join helper
|
|
38
|
+
*
|
|
39
|
+
* Example :
|
|
40
|
+
* var values = {a:v1, b:v2, c:v3};
|
|
41
|
+
* Using {{{join attributes '=' ' ' '"'}}} will return : a="v1" b="v2" c="v3"
|
|
42
|
+
* Using {{{join values null ' or ' '*'}}} will return : *v1* or *v2* or *v3*
|
|
43
|
+
*/
|
|
59
44
|
|
|
60
|
-
|
|
61
|
-
|
|
45
|
+
hb.registerHelper('join', function (arr, keyValueGlue, fragmentGlue, wrapper) {
|
|
46
|
+
var fragments = [];
|
|
47
|
+
keyValueGlue = typeof keyValueGlue === 'string' ? keyValueGlue : undefined;
|
|
48
|
+
fragmentGlue = typeof fragmentGlue === 'string' ? fragmentGlue : ' ';
|
|
49
|
+
wrapper = typeof wrapper === 'string' ? wrapper : '"';
|
|
62
50
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
value = value ? 'true' : 'false';
|
|
66
|
-
} else if (typeof value === 'object') {
|
|
67
|
-
value = _.values(value).join(' ');
|
|
68
|
-
}
|
|
69
|
-
} else {
|
|
70
|
-
value = '';
|
|
71
|
-
}
|
|
51
|
+
_.forIn(arr, function (value, key) {
|
|
52
|
+
var fragment = '';
|
|
72
53
|
|
|
73
|
-
|
|
74
|
-
|
|
54
|
+
if (value !== null || value !== undefined) {
|
|
55
|
+
if (typeof value === 'boolean') {
|
|
56
|
+
value = value ? 'true' : 'false';
|
|
57
|
+
} else if (_typeof(value) === 'object') {
|
|
58
|
+
value = _.values(value).join(' ');
|
|
75
59
|
}
|
|
76
|
-
|
|
77
|
-
fragment += wrapper + value + wrapper;
|
|
78
|
-
fragments.push(fragment);
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
return fragments.join(fragmentGlue);
|
|
82
|
-
}); //register a classic "for loop" helper
|
|
83
|
-
//it also adds a local variable "i" as the index in each iteration loop
|
|
84
|
-
|
|
85
|
-
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
86
|
-
var ret = '';
|
|
87
|
-
startIndex = parseInt(startIndex);
|
|
88
|
-
stopIndex = parseInt(stopIndex);
|
|
89
|
-
increment = parseInt(increment);
|
|
90
|
-
|
|
91
|
-
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
92
|
-
ret += options.fn(_.extend({}, this, {
|
|
93
|
-
i: i
|
|
94
|
-
}));
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return ret;
|
|
98
|
-
});
|
|
99
|
-
hb.registerHelper('equal', function (var1, var2, options) {
|
|
100
|
-
if (var1 == var2) {
|
|
101
|
-
return options.fn(this);
|
|
102
60
|
} else {
|
|
103
|
-
|
|
61
|
+
value = '';
|
|
104
62
|
}
|
|
105
|
-
}); // register a "get property" helper
|
|
106
|
-
// it gets the named property from the provided context
|
|
107
63
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}); // register an 'includes' helper
|
|
111
|
-
// it checks if value is in array
|
|
112
|
-
|
|
113
|
-
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
114
|
-
if (_.contains(haystack, needle)) {
|
|
115
|
-
return options.fn(this);
|
|
64
|
+
if (keyValueGlue !== undefined) {
|
|
65
|
+
fragment += key + keyValueGlue;
|
|
116
66
|
}
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
67
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
Helpers0.__initialized = true;
|
|
123
|
-
}
|
|
124
|
-
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
125
|
-
this.compilerInfo = [4,'>= 1.0.0'];
|
|
126
|
-
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
127
|
-
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
128
|
-
|
|
129
|
-
function program1(depth0,data) {
|
|
130
|
-
|
|
131
|
-
var buffer = "", stack1, helper;
|
|
132
|
-
buffer += "<label>";
|
|
133
|
-
if (helper = helpers.comboboxLabel) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
134
|
-
else { helper = (depth0 && depth0.comboboxLabel); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
135
|
-
buffer += escapeExpression(stack1)
|
|
136
|
-
+ "</label>";
|
|
137
|
-
return buffer;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
function program3(depth0,data) {
|
|
141
|
-
|
|
142
|
-
var buffer = "", stack1, helper;
|
|
143
|
-
buffer += "\n <option value=\"";
|
|
144
|
-
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
145
|
-
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
146
|
-
buffer += escapeExpression(stack1)
|
|
147
|
-
+ "\" data-categories=\"";
|
|
148
|
-
if (helper = helpers.categories) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
149
|
-
else { helper = (depth0 && depth0.categories); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
150
|
-
buffer += escapeExpression(stack1)
|
|
151
|
-
+ "\">";
|
|
152
|
-
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
153
|
-
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
154
|
-
buffer += escapeExpression(stack1)
|
|
155
|
-
+ "</option>\n ";
|
|
156
|
-
return buffer;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
buffer += "<span class=\"cascading-combo-box\">\n ";
|
|
160
|
-
stack1 = helpers['if'].call(depth0, (depth0 && depth0.comboboxLabel), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
161
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
162
|
-
buffer += "\n <select class=\"\" data-id=\"";
|
|
163
|
-
if (helper = helpers.comboboxId) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
164
|
-
else { helper = (depth0 && depth0.comboboxId); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
165
|
-
buffer += escapeExpression(stack1)
|
|
166
|
-
+ "\" data-has-search=\"false\">\n <option></option>\n ";
|
|
167
|
-
stack1 = helpers.each.call(depth0, (depth0 && depth0.options), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
168
|
-
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
169
|
-
buffer += "\n </select>\n</span>";
|
|
170
|
-
return buffer;
|
|
68
|
+
fragment += wrapper + value + wrapper;
|
|
69
|
+
fragments.push(fragment);
|
|
171
70
|
});
|
|
172
|
-
function selectTpl(data, options, asString) {
|
|
173
|
-
var html = Template(data, options);
|
|
174
|
-
return (asString || true) ? html : $(html);
|
|
175
|
-
}
|
|
176
71
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
* as published by the Free Software Foundation; under version 2
|
|
181
|
-
* of the License (non-upgradable).
|
|
182
|
-
*
|
|
183
|
-
* This program is distributed in the hope that it will be useful,
|
|
184
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
185
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
186
|
-
* GNU General Public License for more details.
|
|
187
|
-
*
|
|
188
|
-
* You should have received a copy of the GNU General Public License
|
|
189
|
-
* along with this program; if not, write to the Free Software
|
|
190
|
-
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
191
|
-
*
|
|
192
|
-
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
193
|
-
*/
|
|
194
|
-
var selectedValues = {};
|
|
195
|
-
/**
|
|
196
|
-
* Create a combobox and initialize it with select2
|
|
197
|
-
*
|
|
198
|
-
* @param {Number} level
|
|
199
|
-
* @param {array} categoriesDefinitions - the array that defines the number and config for each level of combobox cascade
|
|
200
|
-
* @param {array} categories - the array that contains nested array of categories
|
|
201
|
-
* @param {array} selected - the array that contains options selected
|
|
202
|
-
* @returns {jQuery}
|
|
203
|
-
*/
|
|
72
|
+
return fragments.join(fragmentGlue);
|
|
73
|
+
}); //register a classic "for loop" helper
|
|
74
|
+
//it also adds a local variable "i" as the index in each iteration loop
|
|
204
75
|
|
|
205
|
-
function
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
76
|
+
hb.registerHelper('for', function (startIndex, stopIndex, increment, options) {
|
|
77
|
+
var ret = '';
|
|
78
|
+
startIndex = parseInt(startIndex);
|
|
79
|
+
stopIndex = parseInt(stopIndex);
|
|
80
|
+
increment = parseInt(increment);
|
|
210
81
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
options: categories[level]
|
|
217
|
-
}));
|
|
218
|
-
$comboBox.find('select').val(selected[level] || ''); //add event handler
|
|
82
|
+
for (var i = startIndex; i < stopIndex; i += increment) {
|
|
83
|
+
ret += options.fn(_.extend({}, this, {
|
|
84
|
+
i: i
|
|
85
|
+
}));
|
|
86
|
+
}
|
|
219
87
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
88
|
+
return ret;
|
|
89
|
+
});
|
|
90
|
+
hb.registerHelper('equal', function (var1, var2, options) {
|
|
91
|
+
if (var1 == var2) {
|
|
92
|
+
return options.fn(this);
|
|
93
|
+
} else {
|
|
94
|
+
return options.inverse(this);
|
|
95
|
+
}
|
|
96
|
+
}); // register a "get property" helper
|
|
97
|
+
// it gets the named property from the provided context
|
|
223
98
|
|
|
224
|
-
|
|
225
|
-
|
|
99
|
+
hb.registerHelper('property', function (name, context) {
|
|
100
|
+
return context[name] || '';
|
|
101
|
+
}); // register an 'includes' helper
|
|
102
|
+
// it checks if value is in array
|
|
226
103
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
placeholder: categoryDef.placeholder || __('select...'),
|
|
231
|
-
minimumResultsForSearch: -1
|
|
232
|
-
});
|
|
233
|
-
return $comboBox;
|
|
234
|
-
}
|
|
235
|
-
} else {
|
|
236
|
-
throw 'missing category definition on level : ' + level;
|
|
104
|
+
hb.registerHelper('includes', function (haystack, needle, options) {
|
|
105
|
+
if (_.contains(haystack, needle)) {
|
|
106
|
+
return options.fn(this);
|
|
237
107
|
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (!Helpers0.__initialized) {
|
|
112
|
+
Helpers0(Handlebars);
|
|
113
|
+
Helpers0.__initialized = true;
|
|
114
|
+
}
|
|
115
|
+
var Template = Handlebars.template(function (Handlebars,depth0,helpers,partials,data) {
|
|
116
|
+
this.compilerInfo = [4,'>= 1.0.0'];
|
|
117
|
+
helpers = this.merge(helpers, Handlebars.helpers); data = data || {};
|
|
118
|
+
var buffer = "", stack1, helper, functionType="function", escapeExpression=this.escapeExpression, self=this;
|
|
119
|
+
|
|
120
|
+
function program1(depth0,data) {
|
|
121
|
+
|
|
122
|
+
var buffer = "", stack1, helper;
|
|
123
|
+
buffer += "<label>";
|
|
124
|
+
if (helper = helpers.comboboxLabel) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
125
|
+
else { helper = (depth0 && depth0.comboboxLabel); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
126
|
+
buffer += escapeExpression(stack1)
|
|
127
|
+
+ "</label>";
|
|
128
|
+
return buffer;
|
|
238
129
|
}
|
|
239
|
-
/**
|
|
240
|
-
* @param {object} options
|
|
241
|
-
* @param {Array} [options.categoriesDefinitions] - the array that defines the number and config for each level of combobox
|
|
242
|
-
* @param {Array} [options.categories] - the array that contains array of categories
|
|
243
|
-
* @param {Array} [options.selected] - the array that contains array of selected options
|
|
244
|
-
* @returns {function}
|
|
245
|
-
*/
|
|
246
130
|
|
|
131
|
+
function program3(depth0,data) {
|
|
132
|
+
|
|
133
|
+
var buffer = "", stack1, helper;
|
|
134
|
+
buffer += "\n <option value=\"";
|
|
135
|
+
if (helper = helpers.id) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
136
|
+
else { helper = (depth0 && depth0.id); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
137
|
+
buffer += escapeExpression(stack1)
|
|
138
|
+
+ "\" data-categories=\"";
|
|
139
|
+
if (helper = helpers.categories) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
140
|
+
else { helper = (depth0 && depth0.categories); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
141
|
+
buffer += escapeExpression(stack1)
|
|
142
|
+
+ "\">";
|
|
143
|
+
if (helper = helpers.label) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
144
|
+
else { helper = (depth0 && depth0.label); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
145
|
+
buffer += escapeExpression(stack1)
|
|
146
|
+
+ "</option>\n ";
|
|
147
|
+
return buffer;
|
|
148
|
+
}
|
|
247
149
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
150
|
+
buffer += "<span class=\"cascading-combo-box\">\n ";
|
|
151
|
+
stack1 = helpers['if'].call(depth0, (depth0 && depth0.comboboxLabel), {hash:{},inverse:self.noop,fn:self.program(1, program1, data),data:data});
|
|
152
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
153
|
+
buffer += "\n <select class=\"\" data-id=\"";
|
|
154
|
+
if (helper = helpers.comboboxId) { stack1 = helper.call(depth0, {hash:{},data:data}); }
|
|
155
|
+
else { helper = (depth0 && depth0.comboboxId); stack1 = typeof helper === functionType ? helper.call(depth0, {hash:{},data:data}) : helper; }
|
|
156
|
+
buffer += escapeExpression(stack1)
|
|
157
|
+
+ "\" data-has-search=\"false\">\n <option></option>\n ";
|
|
158
|
+
stack1 = helpers.each.call(depth0, (depth0 && depth0.options), {hash:{},inverse:self.noop,fn:self.program(3, program3, data),data:data});
|
|
159
|
+
if(stack1 || stack1 === 0) { buffer += stack1; }
|
|
160
|
+
buffer += "\n </select>\n</span>";
|
|
161
|
+
return buffer;
|
|
162
|
+
});
|
|
163
|
+
function selectTpl(data, options, asString) {
|
|
164
|
+
var html = Template(data, options);
|
|
165
|
+
return (asString || true) ? html : $(html);
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* This program is free software; you can redistribute it and/or
|
|
170
|
+
* modify it under the terms of the GNU General Public License
|
|
171
|
+
* as published by the Free Software Foundation; under version 2
|
|
172
|
+
* of the License (non-upgradable).
|
|
173
|
+
*
|
|
174
|
+
* This program is distributed in the hope that it will be useful,
|
|
175
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
176
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
177
|
+
* GNU General Public License for more details.
|
|
178
|
+
*
|
|
179
|
+
* You should have received a copy of the GNU General Public License
|
|
180
|
+
* along with this program; if not, write to the Free Software
|
|
181
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
182
|
+
*
|
|
183
|
+
* Copyright (c) 2015 (original work) Open Assessment Technologies SA ;
|
|
184
|
+
*/
|
|
185
|
+
var selectedValues = {};
|
|
186
|
+
/**
|
|
187
|
+
* Create a combobox and initialize it with select2
|
|
188
|
+
*
|
|
189
|
+
* @param {Number} level
|
|
190
|
+
* @param {array} categoriesDefinitions - the array that defines the number and config for each level of combobox cascade
|
|
191
|
+
* @param {array} categories - the array that contains nested array of categories
|
|
192
|
+
* @param {array} selected - the array that contains options selected
|
|
193
|
+
* @returns {jQuery}
|
|
194
|
+
*/
|
|
195
|
+
|
|
196
|
+
function createCombobox(level, categoriesDefinitions, categories, selected) {
|
|
197
|
+
if (categoriesDefinitions[level] && categories[level]) {
|
|
198
|
+
selected = selected || [];
|
|
199
|
+
var categoryDef = categoriesDefinitions[level];
|
|
200
|
+
var $comboBox;
|
|
201
|
+
|
|
202
|
+
if (categoryDef.id) {
|
|
203
|
+
//init <select> DOM element
|
|
204
|
+
$comboBox = $$1(selectTpl({
|
|
205
|
+
comboboxId: categoryDef.id,
|
|
206
|
+
comboboxLabel: categoryDef.label || '',
|
|
207
|
+
options: categories[level]
|
|
208
|
+
}));
|
|
209
|
+
$comboBox.find('select').val(selected[level] || ''); //add event handler
|
|
210
|
+
|
|
211
|
+
$comboBox.on('change', function () {
|
|
212
|
+
var $selected = $comboBox.find(':selected');
|
|
213
|
+
selectedValues[categoryDef.id] = $selected.val(); //trigger event
|
|
214
|
+
|
|
215
|
+
$comboBox.trigger('selected.cascading-combobox', [selectedValues]);
|
|
216
|
+
}); //init select 2 on $comboBox
|
|
217
|
+
|
|
218
|
+
$comboBox.find('select').select2({
|
|
219
|
+
allowClear: true,
|
|
220
|
+
dropdownAutoWidth: true,
|
|
221
|
+
placeholder: categoryDef.placeholder || __('select...'),
|
|
222
|
+
minimumResultsForSearch: -1
|
|
223
|
+
});
|
|
224
|
+
return $comboBox;
|
|
225
|
+
}
|
|
226
|
+
} else {
|
|
227
|
+
throw 'missing category definition on level : ' + level;
|
|
257
228
|
}
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* @param {object} options
|
|
232
|
+
* @param {Array} [options.categoriesDefinitions] - the array that defines the number and config for each level of combobox
|
|
233
|
+
* @param {Array} [options.categories] - the array that contains array of categories
|
|
234
|
+
* @param {Array} [options.selected] - the array that contains array of selected options
|
|
235
|
+
* @returns {function}
|
|
236
|
+
*/
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
function groupedComboBoxFactory(options) {
|
|
240
|
+
return component().on('render', function render($container) {
|
|
241
|
+
if (_.isArray(options.categoriesDefinitions) && _.isArray(options.categories)) {
|
|
242
|
+
options.categoriesDefinitions.forEach(function (k, i) {
|
|
243
|
+
var $comboBox = createCombobox(i, options.categoriesDefinitions, options.categories, options.selected);
|
|
244
|
+
$container.append($comboBox);
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
}).init(options);
|
|
248
|
+
}
|
|
258
249
|
|
|
259
|
-
|
|
250
|
+
return groupedComboBoxFactory;
|
|
260
251
|
|
|
261
252
|
});
|
package/dist/groupvalidator.js
CHANGED
|
@@ -25,7 +25,7 @@ define(['jquery', 'lodash', 'ui/validator'], function ($, _, validator) { 'use s
|
|
|
25
25
|
var $container = options.$container = $(this);
|
|
26
26
|
var states = [];
|
|
27
27
|
|
|
28
|
-
var callback = function (valid, results) {
|
|
28
|
+
var callback = function callback(valid, results) {
|
|
29
29
|
var $elt = $(this); //update global state
|
|
30
30
|
|
|
31
31
|
states[$elt.attr('name')] = valid; //call custom callback
|
|
@@ -59,7 +59,7 @@ define(['jquery', 'lodash', 'ui/validator'], function ($, _, validator) { 'use s
|
|
|
59
59
|
errorClass: 'error',
|
|
60
60
|
errorMessageClass: 'validate-error',
|
|
61
61
|
events: ['change', 'blur'],
|
|
62
|
-
callback: function (valid, results, options) {
|
|
62
|
+
callback: function callback(valid, results, options) {
|
|
63
63
|
var $elt = $(this),
|
|
64
64
|
rule; //removes previous error messages
|
|
65
65
|
|