@oat-sa/tao-core-ui 1.62.0 → 1.63.0
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 +3 -3
- package/dist/animable/absorbable/css/absorb.css.map +1 -1
- package/dist/animable/pulsable/css/pulse.css.map +1 -1
- package/dist/autocomplete/css/autocomplete.css.map +1 -1
- package/dist/autocomplete.js +8 -10
- package/dist/badge/css/badge.css.map +1 -1
- package/dist/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/dist/breadcrumbs.js +17 -17
- package/dist/btngrouper.js +3 -3
- package/dist/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/dist/calculator/css/calculator.css.map +1 -1
- package/dist/calculator.js +1 -1
- package/dist/cascadingComboBox.js +5 -5
- package/dist/ckeditor/ckConfigurator.js +9 -1
- package/dist/ckeditor/dtdHandler.js +4 -4
- package/dist/class/css/selector.css.map +1 -1
- package/dist/component/css/components.css.map +1 -1
- package/dist/component/css/windowComponent.css.map +1 -1
- package/dist/contextualPopup/css/contextualPopup.css.map +1 -1
- package/dist/contextualPopup.js +7 -7
- package/dist/dashboard/css/dashboard.css.map +1 -1
- package/dist/dashboard.js +3 -2
- package/dist/datalist/css/datalist.css.map +1 -1
- package/dist/datatable/css/datatable.css.map +1 -1
- package/dist/datatable/filterStrategy/single.js +2 -2
- package/dist/datatable.js +4 -4
- package/dist/dateRange/css/dateRange.css.map +1 -1
- package/dist/datetime/css/picker.css.map +1 -1
- package/dist/deleter.js +9 -9
- package/dist/destination/css/selector.css.map +1 -1
- package/dist/dialog.js +3 -5
- package/dist/documentViewer/css/documentViewer.css.map +1 -1
- package/dist/dropdown/css/dropdown.css.map +1 -1
- package/dist/durationer.js +6 -8
- package/dist/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/dist/dynamicComponent.js +2 -3
- package/dist/filesender.js +6 -8
- package/dist/filter.js +6 -10
- package/dist/form/css/dropdownForm.css.map +1 -1
- package/dist/form/css/form.css.map +1 -1
- package/dist/form/validator/css/validator.css.map +1 -1
- package/dist/form/widget/css/widget.css.map +1 -1
- package/dist/form.js +3 -3
- package/dist/formValidator/highlighters/highlighter.js +5 -4
- package/dist/formValidator/highlighters/message.js +1 -3
- package/dist/generis/form/css/form.css.map +1 -1
- package/dist/generis/validator/css/validator.css.map +1 -1
- package/dist/generis/widget/comboBox/comboBox.js +2 -2
- package/dist/generis/widget/css/widget.css.map +1 -1
- package/dist/generis/widget/hiddenBox/hiddenBox.js +2 -2
- package/dist/generis/widget/textBox/textBox.js +2 -2
- package/dist/groupedComboBox.js +3 -3
- package/dist/highlighter.js +49 -47
- package/dist/incrementer.js +17 -16
- package/dist/inplacer.js +4 -4
- package/dist/itemButtonList/css/item-button-list.css.map +1 -1
- package/dist/listbox/css/listbox.css.map +1 -1
- package/dist/listbox.js +1 -0
- package/dist/liststyler.js +1 -1
- package/dist/loadingButton/css/button.css.map +1 -1
- package/dist/lock.js +4 -4
- package/dist/login/login.js +4 -4
- package/dist/maths/calculator/css/calculator.css.map +1 -1
- package/dist/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +2 -2
- package/dist/mediaEditor/plugins/mediaDimension/helper.js +4 -4
- package/dist/mediaplayer/css/player.css.map +1 -1
- package/dist/mediaplayer/players/youtube.js +1 -1
- package/dist/mediaplayer/youtubeManager.js +1 -1
- package/dist/mediaplayer.js +3 -3
- package/dist/modal.js +1 -1
- package/dist/pageSizeSelector.js +3 -3
- package/dist/pagination/css/pagination.css.map +1 -1
- package/dist/pagination.js +5 -5
- package/dist/propertySelector/css/propertySelector.css.map +1 -1
- package/dist/propertySelector/propertySelector.js +3 -3
- package/dist/resource/css/selector.css.map +1 -1
- package/dist/resourcemgr/css/resourcemgr.css.map +1 -1
- package/dist/resourcemgr/fileSelector.js +6 -4
- package/dist/searchModal/css/advancedSearch.css.map +1 -1
- package/dist/searchModal/css/searchModal.css.map +1 -1
- package/dist/searchModal.js +16 -17
- package/dist/switch/css/switch.css.map +1 -1
- package/dist/tabs/css/tabs.css.map +1 -1
- package/dist/taskQueue/css/taskQueue.css.map +1 -1
- package/dist/taskQueue/status.js +4 -4
- package/dist/taskQueue/table.js +1 -1
- package/dist/taskQueue.js +7 -7
- package/dist/taskQueueButton/css/taskable.css.map +1 -1
- package/dist/taskQueueButton/css/treeButton.css.map +1 -1
- package/dist/taskQueueButton/treeButton.js +2 -2
- package/dist/toggler.js +4 -4
- package/dist/transformer.js +2 -2
- package/dist/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/dist/validator/Validator.js +4 -4
- package/dist/validator/validators.js +3 -5
- package/dist/validator.js +54 -54
- package/dist/waitingDialog/css/waitingDialog.css.map +1 -1
- package/package.json +3 -2
- package/scss/.DS_Store +0 -0
- package/scss/ckeditor/.DS_Store +0 -0
- package/scss/ckeditor/skins/.DS_Store +0 -0
- package/scss/ckeditor/skins/tao/.DS_Store +0 -0
- package/scss/ckeditor/skins/tao/scss/.DS_Store +0 -0
- package/scss/ckeditor/skins/tao/scss/inc/_ck-icons.scss +1 -0
- package/scss/font/.DS_Store +0 -0
- package/scss/font/tao/tao.svg +1 -0
- package/scss/font/tao/tao.ttf +0 -0
- package/scss/font/tao/tao.woff +0 -0
- package/scss/inc/.DS_Store +0 -0
- package/scss/inc/fonts/_tao-icon-classes.scss +2 -1
- package/scss/inc/fonts/_tao-icon-def.scss +3 -3
- package/scss/inc/fonts/_tao-icon-vars.scss +2 -1
- package/src/actionbar.js +7 -7
- package/src/animable/absorbable/css/absorb.css.map +1 -1
- package/src/animable/pulsable/css/pulse.css.map +1 -1
- package/src/autocomplete/css/autocomplete.css.map +1 -1
- package/src/autocomplete.js +74 -76
- package/src/badge/css/badge.css.map +1 -1
- package/src/breadcrumbs/css/breadcrumbs.css.map +1 -1
- package/src/breadcrumbs.js +17 -17
- package/src/btngrouper.js +14 -14
- package/src/bulkActionPopup/css/bulkActionPopup.css.map +1 -1
- package/src/calculator/css/calculator.css.map +1 -1
- package/src/calculator.js +11 -11
- package/src/cascadingComboBox.js +9 -9
- package/src/ckeditor/ckConfigurator.js +6 -0
- package/src/ckeditor/dtdHandler.js +15 -15
- package/src/class/css/selector.css.map +1 -1
- package/src/component/css/components.css.map +1 -1
- package/src/component/css/windowComponent.css.map +1 -1
- package/src/contextualPopup/css/contextualPopup.css.map +1 -1
- package/src/contextualPopup.js +11 -14
- package/src/css/basic.css +19 -5
- package/src/css/basic.css.map +1 -1
- package/src/dashboard/css/dashboard.css.map +1 -1
- package/src/dashboard.js +9 -14
- package/src/datalist/css/datalist.css.map +1 -1
- package/src/datatable/css/datatable.css.map +1 -1
- package/src/datatable/filterStrategy/single.js +7 -7
- package/src/datatable.js +6 -6
- package/src/dateRange/css/dateRange.css.map +1 -1
- package/src/datetime/css/picker.css.map +1 -1
- package/src/deleter.js +21 -21
- package/src/destination/css/selector.css.map +1 -1
- package/src/dialog.js +25 -25
- package/src/documentViewer/css/documentViewer.css.map +1 -1
- package/src/dropdown/css/dropdown.css.map +1 -1
- package/src/durationer.js +18 -20
- package/src/dynamicComponent/css/dynamicComponent.css.map +1 -1
- package/src/dynamicComponent.js +22 -23
- package/src/filesender.js +9 -11
- package/src/filter.js +8 -14
- package/src/form/css/dropdownForm.css.map +1 -1
- package/src/form/css/form.css.map +1 -1
- package/src/form/validator/css/validator.css.map +1 -1
- package/src/form/widget/css/widget.css.map +1 -1
- package/src/form.js +5 -11
- package/src/formValidator/highlighters/highlighter.js +6 -5
- package/src/formValidator/highlighters/message.js +1 -3
- package/src/generis/form/css/form.css.map +1 -1
- package/src/generis/validator/css/validator.css.map +1 -1
- package/src/generis/widget/comboBox/comboBox.js +0 -1
- package/src/generis/widget/css/widget.css.map +1 -1
- package/src/generis/widget/hiddenBox/hiddenBox.js +2 -3
- package/src/generis/widget/textBox/textBox.js +0 -1
- package/src/groupedComboBox.js +5 -5
- package/src/highlighter.js +99 -73
- package/src/incrementer.js +41 -52
- package/src/inplacer.js +21 -22
- package/src/itemButtonList/css/item-button-list.css.map +1 -1
- package/src/keyNavigation/navigableDomElement.js +22 -19
- package/src/keyNavigation/navigator.js +18 -26
- package/src/listbox/css/listbox.css.map +1 -1
- package/src/listbox.js +3 -2
- package/src/liststyler.js +7 -7
- package/src/loadingButton/css/button.css.map +1 -1
- package/src/lock.js +17 -19
- package/src/login/login.js +14 -19
- package/src/maths/calculator/css/calculator.css.map +1 -1
- package/src/maths/calculator/plugins/screen/simpleScreen/simpleScreen.js +7 -8
- package/src/mediaEditor/plugins/mediaDimension/helper.js +5 -4
- package/src/mediaplayer/css/player.css.map +1 -1
- package/src/mediaplayer/players/youtube.js +1 -1
- package/src/mediaplayer/youtubeManager.js +1 -1
- package/src/mediaplayer.js +3 -3
- package/src/modal.js +18 -18
- package/src/pageSizeSelector.js +7 -8
- package/src/pagination/css/pagination.css.map +1 -1
- package/src/pagination.js +14 -14
- package/src/propertySelector/css/propertySelector.css.map +1 -1
- package/src/propertySelector/propertySelector.js +3 -3
- package/src/resource/css/selector.css.map +1 -1
- package/src/resource/list.js +11 -11
- package/src/resource/tree.js +15 -17
- package/src/resourcemgr/css/resourcemgr.css.map +1 -1
- package/src/resourcemgr/fileSelector.js +46 -72
- package/src/searchModal/css/advancedSearch.css.map +1 -1
- package/src/searchModal/css/searchModal.css.map +1 -1
- package/src/searchModal.js +24 -25
- package/src/switch/css/switch.css.map +1 -1
- package/src/tabs/css/tabs.css.map +1 -1
- package/src/taskQueue/css/taskQueue.css.map +1 -1
- package/src/taskQueue/status.js +12 -12
- package/src/taskQueue/table.js +15 -15
- package/src/taskQueue.js +13 -15
- package/src/taskQueueButton/css/taskable.css.map +1 -1
- package/src/taskQueueButton/css/treeButton.css.map +1 -1
- package/src/taskQueueButton/treeButton.js +2 -3
- package/src/toggler.js +13 -13
- package/src/transformer.js +6 -6
- package/src/tristateCheckboxGroup/css/tristateCheckboxGroup.css.map +1 -1
- package/src/validator/Validator.js +15 -15
- package/src/validator/validators.js +10 -13
- package/src/validator.js +70 -72
- package/src/waitingDialog/css/waitingDialog.css.map +1 -1
package/dist/highlighter.js
CHANGED
|
@@ -61,10 +61,10 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
61
61
|
* an optional passed-in blacklist is merged with local defaults
|
|
62
62
|
* @type {Array}
|
|
63
63
|
*/
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
const containersBlackList = _.union(defaultBlackList, options.containersBlackList);
|
|
65
|
+
const containersBlackListSelector = containersBlackList.join(', ');
|
|
66
|
+
let containersWhiteListSelector = null;
|
|
67
|
+
let containersBlackAndWhiteListSelector = containersBlackListSelector;
|
|
68
68
|
if (options.keepEmptyNodes && options.containersWhiteList) {
|
|
69
69
|
containersWhiteListSelector = options.containersWhiteList.join(', ');
|
|
70
70
|
containersBlackAndWhiteListSelector = _.union(containersBlackList, options.containersWhiteList).join(', ');
|
|
@@ -74,25 +74,25 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
74
74
|
* used in recursive loops to decide if we should wrap or not the current node
|
|
75
75
|
* @type {boolean}
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
let isWrapping = false;
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
80
|
* performance improvement to break out of a potentially big recursive loop once the wrapping has ended
|
|
81
81
|
* @type {boolean}
|
|
82
82
|
*/
|
|
83
|
-
|
|
83
|
+
let hasWrapped = false;
|
|
84
84
|
|
|
85
85
|
/**
|
|
86
86
|
* used in recursive loops to assign a group Id to the current wrapped node
|
|
87
87
|
* @type {number}
|
|
88
88
|
*/
|
|
89
|
-
|
|
89
|
+
let currentGroupId;
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
92
|
* used in recursive loops to build the index of text nodes
|
|
93
93
|
* @type {number}
|
|
94
94
|
*/
|
|
95
|
-
|
|
95
|
+
let textNodesIndex;
|
|
96
96
|
|
|
97
97
|
/**
|
|
98
98
|
* Returns the node in which highlighting is allowed
|
|
@@ -320,9 +320,9 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
320
320
|
* @param {Node} textNode
|
|
321
321
|
* @param {string} activeClass
|
|
322
322
|
* @param {Range} selectedRange
|
|
323
|
-
* @param {number}
|
|
323
|
+
* @param {number} groupId
|
|
324
324
|
*/
|
|
325
|
-
function highlightContainerNodes(textNode, activeClass, selectedRange,
|
|
325
|
+
function highlightContainerNodes(textNode, activeClass, selectedRange, groupId) {
|
|
326
326
|
const container = textNode.parentNode;
|
|
327
327
|
const range = new Range();
|
|
328
328
|
range.selectNodeContents(textNode);
|
|
@@ -374,13 +374,13 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
374
374
|
textNode.parentNode.className = activeClass;
|
|
375
375
|
} else if (isSelectionCoversNodeStart) {
|
|
376
376
|
textNode.splitText(selectedRange.endOffset);
|
|
377
|
-
wrapContainerChildNodes(container, 0, activeClass,
|
|
377
|
+
wrapContainerChildNodes(container, 0, activeClass, groupId);
|
|
378
378
|
} else if (isSelectionCoversNodeEnd) {
|
|
379
379
|
textNode.splitText(selectedRange.startOffset);
|
|
380
|
-
wrapContainerChildNodes(container, 1, activeClass,
|
|
380
|
+
wrapContainerChildNodes(container, 1, activeClass, groupId);
|
|
381
381
|
} else {
|
|
382
382
|
textNode.splitText(selectedRange.startOffset).splitText(selectedRange.endOffset);
|
|
383
|
-
wrapContainerChildNodes(container, 1, activeClass,
|
|
383
|
+
wrapContainerChildNodes(container, 1, activeClass, groupId);
|
|
384
384
|
}
|
|
385
385
|
}
|
|
386
386
|
|
|
@@ -390,18 +390,18 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
390
390
|
* @param {Element} container
|
|
391
391
|
* @param {number} indexToWrapNode
|
|
392
392
|
* @param {string} activeClass
|
|
393
|
-
* @param {number}
|
|
393
|
+
* @param {number} groupId
|
|
394
394
|
*/
|
|
395
|
-
function wrapContainerChildNodes(container, indexToWrapNode, activeClass,
|
|
395
|
+
function wrapContainerChildNodes(container, indexToWrapNode, activeClass, groupId) {
|
|
396
396
|
const containerClass = container.className;
|
|
397
397
|
const fragment = new DocumentFragment();
|
|
398
398
|
const childNodesLength = container.childNodes.length;
|
|
399
399
|
container.childNodes.forEach((node, index) => {
|
|
400
400
|
var wrapperNode;
|
|
401
401
|
if (index === indexToWrapNode) {
|
|
402
|
-
wrapperNode = wrapNode(node.cloneNode(), activeClass,
|
|
402
|
+
wrapperNode = wrapNode(node.cloneNode(), activeClass, groupId);
|
|
403
403
|
} else {
|
|
404
|
-
wrapperNode = wrapNode(node.cloneNode(), containerClass,
|
|
404
|
+
wrapperNode = wrapNode(node.cloneNode(), containerClass, groupId);
|
|
405
405
|
}
|
|
406
406
|
fragment.appendChild(wrapperNode);
|
|
407
407
|
if (keepEmptyNodes) {
|
|
@@ -435,8 +435,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
435
435
|
if (!rootNode) {
|
|
436
436
|
return;
|
|
437
437
|
}
|
|
438
|
-
|
|
439
|
-
|
|
438
|
+
const childNodes = rootNode.childNodes;
|
|
439
|
+
let i, currentNode, parent;
|
|
440
440
|
for (i = 0; i < childNodes.length; i++) {
|
|
441
441
|
currentNode = childNodes[i];
|
|
442
442
|
if (isWrappable(currentNode)) {
|
|
@@ -465,8 +465,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
465
465
|
if (!rootNode) {
|
|
466
466
|
return;
|
|
467
467
|
}
|
|
468
|
-
|
|
469
|
-
|
|
468
|
+
const childNodes = rootNode.childNodes;
|
|
469
|
+
let i, currentNode;
|
|
470
470
|
for (i = 0; i < childNodes.length; i++) {
|
|
471
471
|
currentNode = childNodes[i];
|
|
472
472
|
if (isWrappingNode(currentNode)) {
|
|
@@ -565,7 +565,7 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
565
565
|
function clearHighlights() {
|
|
566
566
|
getHighlightedNodes().each(function (i, elem) {
|
|
567
567
|
if (!keepEmptyNodes) {
|
|
568
|
-
|
|
568
|
+
const $wrapped = $(this);
|
|
569
569
|
$wrapped.replaceWith($wrapped.text());
|
|
570
570
|
} else {
|
|
571
571
|
clearSingleHighlight({
|
|
@@ -638,7 +638,7 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
638
638
|
function getHighlightIndex() {
|
|
639
639
|
var rootNode = getContainer();
|
|
640
640
|
if (!keepEmptyNodes) {
|
|
641
|
-
|
|
641
|
+
const highlightIndex = [];
|
|
642
642
|
if (rootNode) {
|
|
643
643
|
rootNode.normalize();
|
|
644
644
|
textNodesIndex = 0;
|
|
@@ -660,8 +660,8 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
660
660
|
* @param {Object[]} highlightIndex
|
|
661
661
|
*/
|
|
662
662
|
function buildHighlightIndex(rootNode, highlightIndex) {
|
|
663
|
-
|
|
664
|
-
|
|
663
|
+
const childNodes = rootNode.childNodes;
|
|
664
|
+
let i, currentNode;
|
|
665
665
|
var nodeInfos, inlineRange, inlineOffset, nodesToSkip;
|
|
666
666
|
for (i = 0; i < childNodes.length; i++) {
|
|
667
667
|
currentNode = childNodes[i];
|
|
@@ -754,21 +754,21 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
754
754
|
if (!wrapperNodes.length) {
|
|
755
755
|
return null;
|
|
756
756
|
}
|
|
757
|
-
|
|
757
|
+
const highlightModel = [];
|
|
758
758
|
const indexCache = new Map();
|
|
759
|
-
for (
|
|
760
|
-
|
|
759
|
+
for (let k = 0; k < wrapperNodes.length; k++) {
|
|
760
|
+
const wrapperNode = wrapperNodes[k];
|
|
761
761
|
|
|
762
762
|
//get info about highlight itself
|
|
763
|
-
|
|
764
|
-
|
|
763
|
+
let offsetBefore = 0;
|
|
764
|
+
const prevNode = wrapperNode.previousSibling;
|
|
765
765
|
if (prevNode && isText(prevNode)) {
|
|
766
766
|
const beforeWasSplit = wrapperNode.dataset.beforeWasSplit === 'true';
|
|
767
767
|
if (beforeWasSplit) {
|
|
768
768
|
offsetBefore = prevNode.textContent.length;
|
|
769
769
|
}
|
|
770
770
|
}
|
|
771
|
-
|
|
771
|
+
const highlightData = {
|
|
772
772
|
groupId: wrapperNode.getAttribute(GROUP_ATTR),
|
|
773
773
|
c: getColorByClassName(wrapperNode.className),
|
|
774
774
|
offsetBefore,
|
|
@@ -873,9 +873,9 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
873
873
|
if (!highlightModel) {
|
|
874
874
|
return;
|
|
875
875
|
}
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
for (
|
|
876
|
+
let currentModel;
|
|
877
|
+
let range;
|
|
878
|
+
for (let k = 0; k < highlightModel.length; k++) {
|
|
879
879
|
currentModel = highlightModel[k];
|
|
880
880
|
|
|
881
881
|
//find node to wrap - go through nodes until we reach level where node to wrap will be
|
|
@@ -887,7 +887,7 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
887
887
|
continue; //something went wrong
|
|
888
888
|
}
|
|
889
889
|
|
|
890
|
-
for (
|
|
890
|
+
for (let m = 0; m < currentModel.path.length; m++) {
|
|
891
891
|
//path was counted among non-empty nodes
|
|
892
892
|
childNodes = Array.from(currentParentNode.childNodes).filter(node => !(isText(node) && !node.textContent.length));
|
|
893
893
|
indexInModel = currentModel.path[m];
|
|
@@ -903,7 +903,7 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
903
903
|
}
|
|
904
904
|
|
|
905
905
|
//add single highlight
|
|
906
|
-
|
|
906
|
+
let nodeAtIndex = null;
|
|
907
907
|
if (!currentModel.offsetBefore) {
|
|
908
908
|
//wrap starts on this node
|
|
909
909
|
nodeAtIndex = childNodes[indexInModel];
|
|
@@ -912,7 +912,7 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
912
912
|
}
|
|
913
913
|
} else {
|
|
914
914
|
//split previousSibling to create a node for wrapping
|
|
915
|
-
|
|
915
|
+
const nodeBefore = childNodes[indexInModel - 1];
|
|
916
916
|
if (!nodeBefore || !isText(nodeBefore) || nodeBefore.textContent.length <= currentModel.offsetBefore || isBlacklisted(nodeBefore)) {
|
|
917
917
|
continue; //something went wrong
|
|
918
918
|
}
|
|
@@ -937,11 +937,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
937
937
|
* Set highlighter color
|
|
938
938
|
* @param {string} color Active highlighter color
|
|
939
939
|
*/
|
|
940
|
-
|
|
940
|
+
function setActiveColor(color) {
|
|
941
941
|
if (options.colors[color]) {
|
|
942
942
|
className = options.colors[color];
|
|
943
943
|
}
|
|
944
|
-
}
|
|
944
|
+
}
|
|
945
945
|
|
|
946
946
|
/**
|
|
947
947
|
* Helpers
|
|
@@ -953,31 +953,33 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
953
953
|
* @param {any} value
|
|
954
954
|
* @return {string|undefined}
|
|
955
955
|
*/
|
|
956
|
-
|
|
956
|
+
function getKeyByValue(object, value) {
|
|
957
|
+
return Object.keys(object).find(key => object[key] === value);
|
|
958
|
+
}
|
|
957
959
|
|
|
958
960
|
/**
|
|
959
961
|
* Returns color identifier for the given class name
|
|
960
962
|
* @param {string} highlighterClassName Class name of highlighter classes
|
|
961
963
|
* @returns {string|number} Color identifier
|
|
962
964
|
*/
|
|
963
|
-
|
|
965
|
+
function getColorByClassName(highlighterClassName) {
|
|
964
966
|
if (options.colors) {
|
|
965
967
|
return getKeyByValue(options.colors, highlighterClassName);
|
|
966
968
|
}
|
|
967
969
|
return className;
|
|
968
|
-
}
|
|
970
|
+
}
|
|
969
971
|
|
|
970
972
|
/**
|
|
971
973
|
* Returns class name for the given color identifier
|
|
972
974
|
* @param {string|number} color Color identifier
|
|
973
975
|
* @returns {string} Class name
|
|
974
976
|
*/
|
|
975
|
-
|
|
977
|
+
function getClassNameByColor(color) {
|
|
976
978
|
if (options.colors && options.colors[color]) {
|
|
977
979
|
return options.colors[color];
|
|
978
980
|
}
|
|
979
981
|
return className;
|
|
980
|
-
}
|
|
982
|
+
}
|
|
981
983
|
|
|
982
984
|
/**
|
|
983
985
|
* Check if the given node is a wrapper
|
|
@@ -1019,11 +1021,11 @@ define(['lodash', 'jquery'], function (_, $) { 'use strict';
|
|
|
1019
1021
|
/**
|
|
1020
1022
|
* Wraps text node to the highlighter wrapper element
|
|
1021
1023
|
* @param {Node} textNode Text node to wrap
|
|
1022
|
-
* @param {string}
|
|
1024
|
+
* @param {string} wrapperClassName Wrapper class name
|
|
1023
1025
|
* @param {number} groupId Group id
|
|
1024
1026
|
*/
|
|
1025
|
-
function wrapNode(textNode,
|
|
1026
|
-
const element = getWrapper(groupId,
|
|
1027
|
+
function wrapNode(textNode, wrapperClassName, groupId) {
|
|
1028
|
+
const element = getWrapper(groupId, wrapperClassName);
|
|
1027
1029
|
element.appendChild(textNode);
|
|
1028
1030
|
return element;
|
|
1029
1031
|
}
|
package/dist/incrementer.js
CHANGED
|
@@ -46,8 +46,6 @@ define(['jquery', 'lodash', 'core/pluginifier', 'lib/gamp/gamp'], function ($, _
|
|
|
46
46
|
* @returns {jQueryElement} for chaining
|
|
47
47
|
*/
|
|
48
48
|
init: function (options) {
|
|
49
|
-
var self = Incrementer;
|
|
50
|
-
|
|
51
49
|
//get options using default
|
|
52
50
|
options = _.defaults(options || {}, defaults);
|
|
53
51
|
return this.each(function () {
|
|
@@ -67,26 +65,29 @@ define(['jquery', 'lodash', 'core/pluginifier', 'lib/gamp/gamp'], function ($, _
|
|
|
67
65
|
.addClass(options.incrementerClass) //add the css class
|
|
68
66
|
.after(
|
|
69
67
|
//set up controls
|
|
70
|
-
|
|
68
|
+
`<span class="ctrl ${options.incrementerCtrlClass}">
|
|
69
|
+
<a href="#" class="inc" title="${options.step}" tabindex="-1"></a>
|
|
70
|
+
<a href="#" class="dec" title="-${options.step}" tabindex="-1"></a>
|
|
71
|
+
</span>`).on('keydown', function (e) {
|
|
71
72
|
if (e.which === 38) {
|
|
72
73
|
//up
|
|
73
|
-
|
|
74
|
+
Incrementer._inc($elt);
|
|
74
75
|
this.select();
|
|
75
76
|
} else if (e.which === 40) {
|
|
76
77
|
//down
|
|
77
|
-
|
|
78
|
+
Incrementer._dec($elt);
|
|
78
79
|
this.select();
|
|
79
80
|
}
|
|
80
81
|
})
|
|
81
82
|
//debounce the keyup callback to give the user a chance to complete an invalid state
|
|
82
83
|
//(for instance, while taping an negative value)
|
|
83
84
|
.on('keyup', _.debounce(function () {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
let value = $elt.val();
|
|
86
|
+
const negative = value.charAt(0) === '-';
|
|
87
|
+
const dataOptions = $elt.data(dataNs);
|
|
87
88
|
|
|
88
89
|
//sanitize the string by removing all invalid characters (only allow digit and dot)
|
|
89
|
-
value = parseFloat(value.replace(/[^\d
|
|
90
|
+
value = parseFloat(value.replace(/[^\d.]/g, ''));
|
|
90
91
|
if (isNaN(value)) {
|
|
91
92
|
//allow empty input
|
|
92
93
|
$elt.val('');
|
|
@@ -95,16 +96,16 @@ define(['jquery', 'lodash', 'core/pluginifier', 'lib/gamp/gamp'], function ($, _
|
|
|
95
96
|
value = negative ? -value : value;
|
|
96
97
|
|
|
97
98
|
//check if the min and max are respected:
|
|
98
|
-
if (
|
|
99
|
+
if (dataOptions.min === null || _.isNumber(dataOptions.min) && value >= dataOptions.min || dataOptions.zero === true && value === 0) {
|
|
99
100
|
$elt.val(value);
|
|
100
101
|
} else {
|
|
101
|
-
$elt.val(
|
|
102
|
-
value =
|
|
102
|
+
$elt.val(dataOptions.min);
|
|
103
|
+
value = dataOptions.min;
|
|
103
104
|
}
|
|
104
|
-
if (
|
|
105
|
+
if (dataOptions.max === null || _.isNumber(dataOptions.max) && value <= dataOptions.max) {
|
|
105
106
|
$elt.val(value);
|
|
106
107
|
} else {
|
|
107
|
-
$elt.val(
|
|
108
|
+
$elt.val(dataOptions.max);
|
|
108
109
|
}
|
|
109
110
|
}
|
|
110
111
|
|
|
@@ -128,13 +129,13 @@ define(['jquery', 'lodash', 'core/pluginifier', 'lib/gamp/gamp'], function ($, _
|
|
|
128
129
|
$ctrl.find('.inc').click(function (e) {
|
|
129
130
|
e.preventDefault();
|
|
130
131
|
if (!$(this).prop('disabled')) {
|
|
131
|
-
|
|
132
|
+
Incrementer._inc($elt);
|
|
132
133
|
}
|
|
133
134
|
});
|
|
134
135
|
$ctrl.find('.dec').click(function (e) {
|
|
135
136
|
e.preventDefault();
|
|
136
137
|
if (!$(this).prop('disabled')) {
|
|
137
|
-
|
|
138
|
+
Incrementer._dec($elt);
|
|
138
139
|
}
|
|
139
140
|
});
|
|
140
141
|
|
package/dist/inplacer.js
CHANGED
|
@@ -74,7 +74,7 @@ define(['jquery', 'lodash', 'core/pluginifier', 'core/dataattrhandler'], functio
|
|
|
74
74
|
* The InPlacer component,
|
|
75
75
|
* @exports ui/inplacer
|
|
76
76
|
*/
|
|
77
|
-
|
|
77
|
+
const InPlacer = {
|
|
78
78
|
/**
|
|
79
79
|
* Initialize the plugin.
|
|
80
80
|
*
|
|
@@ -95,9 +95,9 @@ define(['jquery', 'lodash', 'core/pluginifier', 'core/dataattrhandler'], functio
|
|
|
95
95
|
//get options using default
|
|
96
96
|
options = $.extend(true, {}, defaults, options);
|
|
97
97
|
return this.each(function () {
|
|
98
|
-
|
|
98
|
+
const $elt = $(this);
|
|
99
99
|
if (!$elt.data(dataNs)) {
|
|
100
|
-
|
|
100
|
+
const $target = options.target;
|
|
101
101
|
if (!/^#/.test($target.selector)) {
|
|
102
102
|
$.error('The target selector must referr to the of an element id or to the element to create.');
|
|
103
103
|
}
|
|
@@ -164,7 +164,7 @@ define(['jquery', 'lodash', 'core/pluginifier', 'core/dataattrhandler'], functio
|
|
|
164
164
|
var $editor;
|
|
165
165
|
emptyText($elt);
|
|
166
166
|
if (_.contains(options.mapping.textarea, $elt.prop('tagName').toLowerCase())) {
|
|
167
|
-
|
|
167
|
+
const height = options.height || $elt.height() + 'px';
|
|
168
168
|
$editor = $elt.append('<textarea>' + text + '</textarea>').children(':input').width(width).height(height);
|
|
169
169
|
} else {
|
|
170
170
|
//set focus before adding text allow focus in the end of the text
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../scss/item-button-list.scss","../../../scss/inc/_functions.scss","../../../scss/inc/fonts/_tao-icon-vars.scss","../../../scss/inc/_colors.scss"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;EAgBE;ACHF;;;;;;CDUC;AC0PD,oEAAA;ACjRA,gBAAA;AF6BA;IACI,aAAa;IACb,eAAe;IACf,sBAAsB;IACtB,UAAU;IAEV,2BAAA;IA0FA,iCAAA;IAiDA,sEAAA;IAuBA,qCAAA;AAlKJ;;AANA;IAQQ,eAZY;IAaZ,cAbY;IAcZ,aAAa;IACb,uBAAuB;IAAE,gEAAA;IACzB,mBAAmB;IACnB,wBAAA;IACA,UAAU;IACV,YAAY;AAGpB;;AAlBA;IAmBQ,kBAAkB;IAClB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,YA5BU;IA6BV,WA7BU;IA8BV,mBAAmB;IACnB,kBAhCY;IAiCZ,sBA9Ba;IA+Bb,qBGTmC;IHUnC,mCAAmC;IACnC,UAAU;IAAE,6BAAA;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,uBCiJiC;IDhJjC,cGfmC;IHgBnC,iBAAiB;IACjB,eAAe;AAIvB;;AAxCA;IAwCQ,gEAAgE;IAChE,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;AAI5B;;AAhDA;IA+CQ,UAAU;IACV,MAAM;IACN,OAAO;AAKf;;AAtDA;IAoDQ,aAAa;AAMrB;;AA1DA;IAuDQ,aAAa;AAOrB;;AA9DA;IA2DQ,aAAa;AAOrB;;AAlEA;IA+DQ,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,YC6GiC;ID5GjC,0BC4GiC;ID3GjC,aAAa;IACb,uBAAuB;IACvB,mBAAmB;AAO3B;;AAhFA;IA4EQ,iBAAiB;IACjB,UAAU;IACV,MAAM;IACN,OAAO;AAQf;;AAvFA;IEdwB,gBAAgB;AFyGxC;;AA3FA;IEZuB,gBAAgB;AF2GvC;;AA/FA;IEiLwB,gBAAgB;AF9ExC;;AAnGA;IEgLyB,gBAAgB;AFzEzC;;AAvGA;IC4BY,yBAAwB;IAAxB,oBAAwB;IAAxB,iBAAwB;ADmFpC;;AA/GA;IAsGgB,qBAxGM;IAyGN,cGnF0B;IHoF1B,qBGpF0B;AHiG1C;;AArHA;IA6GgB,qBA/GM;IAgHN,yBG1F0B;IH2F1B,YCmEyB;IDlEzB,qBG5F0B;AHwG1C;;AA5HA;IAqHgB,kBAAkB;IAClB,cAAc;IACd,UAAU;IACV,cGpG0B;IHqG1B,cAAc;IACd,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,UAAU;IACV,2BAAA;IACA,SAAS;IACT,2BAA2B;AAW3C;;AA3IA;IAsIgB,yBGlKU;AH2K1B;;AA/IA;IA4IgB,yBGpKQ;AH2KxB;;AAnJA;IAoJY,yBA5JsB;IA6JtB,cG/HuC;IHgIvC,qBGhIuC;AHmInD;;AAzJA;;IA2JS,wBAAA;IACA,kCAAkC;IAClC,qBAAqB;IACrB,4BAA4B;AAGrC;;AAjKA;;IAiKY,mBAAmB;IACnB,wBAAA;IACA,iBAAiB;AAK7B;;AAxKA;;IA4KY,WAAW;IACX,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,SAAS;IACT,QAAQ;IACR,gCAAgC;IAChC,qBAtLU;IAuLV,qBG/JuC;IHgKvC,oBAAoB;IACpB,kBA7LQ;AA8LpB;;AAxLA;;;IA6LY,cGvKuC;AHwKnD;;AA9LA;;IAkMY,uBChB6B;IDiB7B,cG7KuC;IH8KvC,qBG9KuC;AH+KnD;;AArMA;;IAyMY,yBGnLuC;IHoLvC,YCxB6B;IDyB7B,qBGrLuC;AHsLnD","file":"item-button-list.css","sourcesContent":["/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2022 Open Assessment Technologies SA ;\n */\n@import \"inc/bootstrap\";\n\n$correctColor: $success;\n$incorrectColor: $error;\n$hoverBgColor: hsl(208, 100%, 95%);\n\n$radiusCircular: 50%;\n$sizeDefault: 4rem;\n$hitboxSize: 6.25rem;\n$borderThin: 0.125rem;\n$borderMedium: 0.25rem;\n\n.buttonlist-items {\n display: flex;\n flex-wrap: wrap;\n justify-content: start;\n padding: 0;\n\n /****** base styles *******/\n .buttonlist-item {\n height: $hitboxSize;\n width: $hitboxSize;\n display: flex;\n justify-content: center; /* aligning left - cut focusing board for keyboard interacting */\n align-items: center;\n /* reset parent styles */\n padding: 0;\n border: none;\n }\n\n .buttonlist-btn {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n height: $sizeDefault;\n width: $sizeDefault;\n border-style: solid;\n border-radius: $radiusCircular;\n border-width: $borderThin;\n border-color: $uiReviewPanelTextDisabled;\n margin: 1.3rem 0.75rem 1rem 0.75rem;\n padding: 0; /*Fixes firefox button jumps*/\n font-weight: bold;\n font-size: 1.6rem;\n background-color: $uiReviewPanelBgDefault;\n color: $uiReviewPanelTextDisabled;\n text-shadow: none;\n cursor: pointer;\n }\n\n .buttonlist-label {\n font-family: 'Nunito Sans', 'Source Sans Pro', Arial, sans-serif;\n max-width: 3.75rem;\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n }\n .buttonlist-icon {\n padding: 0;\n top: 0;\n left: 0;\n }\n .buttonlist-icon:not([class*=\"icon-\"]) {\n display: none;\n }\n .buttonlist-icon[class*=\"icon-\"] ~ .buttonlist-label {\n display: none;\n }\n\n .indicator {\n display: none;\n }\n\n .buttonlist-score-badge {\n position: absolute;\n top: -0.9rem;\n right: -0.9rem;\n width: 2rem;\n height: 2rem;\n border-radius: 100%;\n color: $uiReviewPanelTextInverted;\n border: 0.1rem solid $uiReviewPanelTextInverted;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonlist-score-icon {\n font-size: 1.2rem;\n padding: 0;\n top: 0;\n left: 0;\n }\n\n .icon-info::before {\n @include icon-info-bare;\n }\n .icon-flagged::before {\n @include icon-bookmark;\n }\n .icon-correct::before {\n @include icon-result-ok;\n }\n .icon-incorrect::before {\n @include icon-result-nok;\n }\n\n\n /****** step state styles *******/\n .buttonlist-item {\n @include disableSelect();\n\n &.viewed {\n .buttonlist-btn {\n border-width: $borderMedium;\n color: $uiReviewPanelTextDefault;\n border-color: $uiReviewPanelTextDefault;\n }\n }\n &.answered {\n .buttonlist-btn {\n border-width: $borderMedium;\n background-color: $uiReviewPanelBgInverted;\n color: $uiReviewPanelTextInverted;\n border-color: $uiReviewPanelBgInverted;\n }\n }\n &.buttonlist-item-active {\n .indicator {\n position: absolute;\n display: block;\n z-index: 1;\n color: $uiReviewPanelTextDefault;\n height: 1.4rem;\n min-width: 1.6rem;\n top: unset;\n bottom: -1.7rem;\n padding: 0;\n /* centering horizontally */\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &.correct {\n .buttonlist-score-badge {\n background-color: $correctColor;\n }\n }\n\n &.incorrect {\n .buttonlist-score-badge {\n background-color: $incorrectColor;\n }\n }\n }\n\n /* disabling is applied at buttonlist-item or buttonlist-items level */\n &:not(.disabled) .buttonlist-item:not(.disabled) {\n .buttonlist-btn:hover {\n background-color: $hoverBgColor;\n color: $uiReviewPanelPrimaryHighlight;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n }\n &.disabled,\n .buttonlist-item.disabled {\n /* reset global styles */\n background-color: unset !important;\n opacity: 1 !important;\n text-shadow: none !important;\n\n .buttonlist-btn {\n cursor: not-allowed;\n /* reset global styles */\n text-shadow: none;\n }\n }\n\n\n /****** keyboard focus styles *******/\n .buttonlist-item {\n &.key-navigation-highlight .buttonlist-btn::before,\n .buttonlist-btn.buttonlist-btn-focus:focus::before {\n content: '';\n display: block;\n position: absolute;\n width: 5.2rem;\n height: 5.2rem;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-width: $borderMedium;\n border-color: $uiReviewPanelPrimaryHighlight;\n border-style: dotted;\n border-radius: $radiusCircular;\n }\n\n &.key-navigation-highlight.buttonlist-item-active .buttonlist-btn .indicator,\n &.buttonlist-item-active .buttonlist-btn.buttonlist-btn-focus:focus .indicator,\n &.buttonlist-item-active .buttonlist-btn:focus-visible .indicator {\n color: $uiReviewPanelPrimaryHighlight;\n }\n\n &.key-navigation-highlight.viewed .buttonlist-btn,\n &.viewed .buttonlist-btn.buttonlist-btn-focus:focus {\n background-color: $uiReviewPanelBgDefault;\n color: $uiReviewPanelPrimaryHighlight;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n\n &.key-navigation-highlight.answered .buttonlist-btn,\n &.answered .buttonlist-btn.buttonlist-btn-focus:focus {\n background-color: $uiReviewPanelPrimaryHighlight;\n color: $uiReviewPanelTextInverted;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n }\n}\n\n/*# sourceMappingURL=item-button-list.css.map */","@mixin iterate-sprite($iconList, $x, $y, $direction, $prefix:'') {\n @each $icon in $iconList {\n #{$prefix}#{$icon} {\n background-position: $x * 1px $y * 1px;\n }\n @if $direction == 'x' {\n $x: $x - 16;\n } @else {\n $y: $y - 16;\n }\n }\n}\n\n/*\nUsage:\n- linear-gradient((color1, color2, color3)) - returns linear-gradient with evenly distributed colors,\n if 3 colors used then the position of each will be 33,33%\n- linear-gradient((color1 0%, color2 30%, color3 80%)) - returns linear-gradient with manually distributed colors,\n first param - color, second - position. Also you can use px or other valid units for set position.\n*/\n@mixin linear-gradient($colorList, $direction: 'to right') {\n $percentage: 0;\n $units: '%';\n $count: length($colorList);\n $increment: 100 / ($count - 1);\n $css: #{$direction + ', '};\n $sep: ', ';\n @each $colorItem in $colorList {\n $color: $colorItem;\n @if (length($colorItem) > 1) {\n $color: nth($colorItem, 1);\n $percentage: nth($colorItem, 2);\n $units: '';\n }\n @if ($percentage >= 100 or index($colorList, $colorItem) == $count) {\n $sep: '';\n }\n $css: #{$css + $color + ' ' + $percentage + $units + $sep};\n $percentage: $percentage + $increment;\n }\n background: linear-gradient( #{$css} );\n}\n\n@mixin grid-unit($span, $numCols: 12, $gutter: 0) {\n $gridPx: 840;\n $rawSpanPx: (($gridPx - ($numCols * $gutter)) / $numCols);\n $spanPx: $rawSpanPx * $span + (($span - 1) * $gutter);\n $spanPercent: widthPerc($spanPx, $gridPx);\n $marginPercent: widthPerc($gutter, $gridPx);\n margin-left: $marginPercent;\n width: $spanPercent;\n}\n\n\n@mixin vendor-prefix($property, $value, $whatToPrefix: property, $prefixes: (-webkit-, -moz-, -ms-, -o-, '')) {\n @if $whatToPrefix == 'property' {\n @each $prefix in $prefixes {\n #{$prefix + $property}: #{$value};\n }\n }\n @else if $whatToPrefix == 'value' {\n @each $prefix in $prefixes {\n #{$property}: #{$prefix + $value};\n }\n }\n}\n@mixin flex-container($wrapBehavior: nowrap, $direction : row) {\n @include vendor-prefix(display, flex, value, (-ms-, -webkit-, ''));\n\n @include vendor-prefix(flex-direction, $direction, property, (-ms-, -webkit-, ''));\n @include vendor-prefix(flex-wrap, $wrapBehavior, property, (-ms-, -webkit-, ''));\n\n @include vendor-prefix(justify-content, flex-start, property, (-webkit-, ''));\n\n @include vendor-prefix(align-content, flex-start, property, (-webkit-, ''));\n\n @include vendor-prefix(align-items, stretch, property, (-webkit-, ''));\n}\n\n@mixin simple-flex-box($width: auto, $minWidth: 1) {\n\n @include vendor-prefix(order, 0, property, (-ms-, -webkit-, ''));\n flex-item-align: stretch;\n -ms-flex-item-align: stretch;\n @include vendor-prefix(align-self, stretch, property, (-webkit-, ''));\n\n // if both, min width and width are set, width will win this conflict\n @if ($width == auto) {\n @if ($minWidth != 1) {\n @include vendor-prefix(flex, 1 1 $minWidth, property, (-ms-, -webkit-, ''));\n }\n @else {\n @include vendor-prefix(flex, 1 1 auto, property, (-ms-, -webkit-, ''));\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis#Values\n // for a discussion auto vs. main-size\n @include vendor-prefix(flex, 1 1, property, (-ms-, -webkit-, ''));\n }\n }\n @else {\n @include vendor-prefix(flex, 0 0 $width, property, (-ms-, -webkit-, ''));\n }\n}\n\n\n@mixin box-shadow($horiz: 1px, $vert: 1px, $blur: 2px, $spread: 0, $color: rgba(0, 0, 0, .2)) {\n @include vendor-prefix(box-shadow, $horiz $vert $blur $spread $color, property);\n}\n\n@mixin simple-border($color: #ddd) {\n border: 1px solid $color;\n border-radius: 2px;\n -webkit-border-radius: 2px;\n}\n\n@mixin border-radius($radius: 2) {\n -moz-border-radius: $radius * 1px;\n -webkit-border-radius: $radius * 1px;\n border-radius: $radius * 1px;\n}\n\n@mixin border-radius-top($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -webkit-border-top-right-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom($radius: 2) {\n -webkit-border-bottom-right-radius: $radius * 1px;\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-left($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-right($radius: 2) {\n -webkit-border-top-right-radius: $radius * 1px;\n -webkit-border-bottom-right-radius: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-top-left($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-top-right($radius: 2) {\n -webkit-border-top-right-radius: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom-right($radius: 2) {\n -webkit-border-bottom-right-radius: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom-left($radius: 2) {\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-box() {\n -moz-box-sizing: border-box;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n@function whiten($color, $white: 0.3) {\n @return mix(#fff, $color, ($white * 100) * 1%);\n}\n\n@function blacken($color, $black: 0.3) {\n @return mix(#000, $color, ($black * 100) * 1%);\n}\n\n@function widthPerc($colWidth, $context) {\n @return ($colWidth * 100 / $context) * 1%\n}\n\n@function remDist($fontSizePx) {\n @return ($fontSizePx / 10) * 1rem\n}\n\n@function black($alpha: 1) {\n @return (rgba(0, 0, 0, $alpha))\n}\n\n@function white($alpha: 1) {\n @return (rgba(255, 255, 255, $alpha))\n}\n\n@mixin font-size($remPx, $important: false) {\n @if $important == true {\n font-size: ($remPx) * 1px !important;\n font-size: ($remPx / 10) * 1rem !important;\n }\n @else {\n font-size: ($remPx) * 1px;\n font-size: ($remPx / 10) * 1rem;\n }\n}\n\n\n@mixin keyframes($name) {\n @-o-keyframes #{$name} { @content };\n @-moz-keyframes #{$name} { @content };\n @-webkit-keyframes #{$name} { @content };\n @keyframes #{$name} { @content };\n}\n\n\n@mixin animation($value, $type:'') {\n $animation: animation;\n @if $type != '' {\n $animation: $animation + '-' + $type;\n }\n @include vendor-prefix($animation, $value, property);\n}\n\n/// CSS transition mixin to the current selection (apply also vendor prefixes).\n/// See <https://developer.mozilla.org/en-US/docs/Web/CSS/transition> for the values\n///\n/// @param {property} [$type = all] the CSS property to apply the transition to\n/// @param {time} [$duration = .5s] the transition property\n/// @param {timing-function} [$effect = ease-out] the transition property\n@mixin transition($type : all, $duration : 0.5s, $effect : ease-out, $delay : 0s){\n @include vendor-prefix(transition, $type + ', ' + $duration + ', ' + $effect + ', ' + $delay, property);\n}\n\n@mixin fade($duration: 1s){\n\n @include keyframes(fade) {\n 0% {opacity:0;}\n 50% {opacity:1;}\n 100% {opacity:0;}\n }\n\n @include vendor-prefix(animation, fade 1s forwards, property);\n}\n\n@mixin repeat(){\n @include animation(infinite, iteration-count);\n}\n\n@mixin largeHeading() {\n @include font-size(20);\n font-family: $headingFont;\n font-style: normal;\n}\n\n@mixin disableSelect() {\n @include vendor-prefix(user-select, none, property);\n}\n\n/* based on \"visually-hidden\" mixin in LDS for accessibility goals */\n@mixin visuallyHidden() {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n margin: 0;\n padding: 0;\n}\n","/* Do not edit */@mixin tao-icon-setup {\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'tao' !important;\n speak: never;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@mixin icon-info-bare { content: \"\\e923\"; }\n@mixin icon-bookmark-outline { content: \"\\e922\"; }\n@mixin icon-bookmark { content: \"\\e921\"; }\n@mixin icon-indicator { content: \"\\e920\"; }\n@mixin icon-add-subsection { content: \"\\e918\"; }\n@mixin icon-wrap-inline { content: \"\\e915\"; }\n@mixin icon-wrap-left { content: \"\\e916\"; }\n@mixin icon-wrap-right { content: \"\\e917\"; }\n@mixin icon-offline { content: \"\\e913\"; }\n@mixin icon-online { content: \"\\e914\"; }\n@mixin icon-tab { content: \"\\e90d\"; }\n@mixin icon-untab { content: \"\\e90e\"; }\n@mixin icon-multi-select { content: \"\\e90b\"; }\n@mixin icon-clipboard { content: \"\\e90a\"; }\n@mixin icon-filebox { content: \"\\e909\"; }\n@mixin icon-click-to-speak { content: \"\\e907\"; }\n@mixin icon-speech-bubble { content: \"\\f0e5\"; }\n@mixin icon-microphone { content: \"\\f130\"; }\n@mixin icon-microphone-off { content: \"\\f131\"; }\n@mixin icon-disconnect { content: \"\\e905\"; }\n@mixin icon-connect { content: \"\\e906\"; }\n@mixin icon-eliminate { content: \"\\e904\"; }\n@mixin icon-wheelchair { content: \"\\e903\"; }\n@mixin icon-text-marker { content: \"\\e902\"; }\n@mixin icon-unshield { content: \"\\e32a\"; }\n@mixin icon-shield { content: \"\\e8e8\"; }\n@mixin icon-tree { content: \"\\e6b4\"; }\n@mixin icon-home { content: \"\\e6b3\"; }\n@mixin icon-shared-file { content: \"\\e6b2\"; }\n@mixin icon-end-attempt { content: \"\\e603\"; }\n@mixin icon-icon { content: \"\\f1c5\"; }\n@mixin icon-radio-bg { content: \"\\e600\"; }\n@mixin icon-checkbox-bg { content: \"\\e601\"; }\n@mixin icon-tag { content: \"\\e602\"; }\n@mixin icon-style { content: \"\\e604\"; }\n@mixin icon-ownership-transfer { content: \"\\e605\"; }\n@mixin icon-property-advanced { content: \"\\e606\"; }\n@mixin icon-property-add { content: \"\\e607\"; }\n@mixin icon-repository-add { content: \"\\e608\"; }\n@mixin icon-repository-remove { content: \"\\e609\"; }\n@mixin icon-repository { content: \"\\e60a\"; }\n@mixin icon-result-server { content: \"\\e60b\"; }\n@mixin icon-folder { content: \"\\e60c\"; }\n@mixin icon-folder-open { content: \"\\e60d\"; }\n@mixin icon-left { content: \"\\e60e\"; }\n@mixin icon-right { content: \"\\e60f\"; }\n@mixin icon-up { content: \"\\e610\"; }\n@mixin icon-down { content: \"\\e611\"; }\n@mixin icon-undo { content: \"\\e612\"; }\n@mixin icon-redo { content: \"\\e613\"; }\n@mixin icon-screen { content: \"\\e614\"; }\n@mixin icon-laptop { content: \"\\e615\"; }\n@mixin icon-tablet { content: \"\\e616\"; }\n@mixin icon-phone { content: \"\\e617\"; }\n@mixin icon-move { content: \"\\e618\"; }\n@mixin icon-bin { content: \"\\e619\"; }\n@mixin icon-shuffle { content: \"\\e61a\"; }\n@mixin icon-print { content: \"\\e61b\"; }\n@mixin icon-tools { content: \"\\e61c\"; }\n@mixin icon-settings { content: \"\\e61d\"; }\n@mixin icon-video { content: \"\\e61e\"; }\n@mixin icon-find { content: \"\\e61f\"; }\n@mixin icon-image { content: \"\\e620\"; }\n@mixin icon-edit { content: \"\\e621\"; }\n@mixin icon-document { content: \"\\e622\"; }\n@mixin icon-resize-grid { content: \"\\e623\"; }\n@mixin icon-resize { content: \"\\e624\"; }\n@mixin icon-help { content: \"\\e625\"; }\n@mixin icon-mobile-menu { content: \"\\e626\"; }\n@mixin icon-fix { content: \"\\e627\"; }\n@mixin icon-unlock { content: \"\\e628\"; }\n@mixin icon-lock { content: \"\\e629\"; }\n@mixin icon-ul { content: \"\\e62a\"; }\n@mixin icon-ol { content: \"\\e62b\"; }\n@mixin icon-email { content: \"\\e62c\"; }\n@mixin icon-download { content: \"\\e62d\"; }\n@mixin icon-logout { content: \"\\e62e\"; }\n@mixin icon-login { content: \"\\e62f\"; }\n@mixin icon-spinner { content: \"\\e630\"; }\n@mixin icon-preview { content: \"\\e631\"; }\n@mixin icon-external { content: \"\\e632\"; }\n@mixin icon-time { content: \"\\e633\"; }\n@mixin icon-save { content: \"\\e634\"; }\n@mixin icon-warning { content: \"\\e635\"; }\n@mixin icon-add { content: \"\\e636\"; }\n@mixin icon-error { content: \"\\e900\"; }\n@mixin icon-close { content: \"\\e637\"; }\n@mixin icon-success { content: \"\\e638\"; }\n@mixin icon-remove { content: \"\\e639\"; }\n@mixin icon-info { content: \"\\e63a\"; }\n@mixin icon-danger { content: \"\\e63b\"; }\n@mixin icon-users { content: \"\\e63c\"; }\n@mixin icon-user { content: \"\\e63d\"; }\n@mixin icon-test-taker { content: \"\\e63e\"; }\n@mixin icon-test-takers { content: \"\\e63f\"; }\n@mixin icon-item { content: \"\\e640\"; }\n@mixin icon-test { content: \"\\e641\"; }\n@mixin icon-delivery { content: \"\\e642\"; }\n@mixin icon-eye-slash { content: \"\\e643\"; }\n@mixin icon-result { content: \"\\e644\"; }\n@mixin icon-delivery-small { content: \"\\e645\"; }\n@mixin icon-upload { content: \"\\e646\"; }\n@mixin icon-result-small { content: \"\\e647\"; }\n@mixin icon-mobile-preview { content: \"\\e648\"; }\n@mixin icon-extension { content: \"\\e649\"; }\n@mixin icon-desktop-preview { content: \"\\e64a\"; }\n@mixin icon-tablet-preview { content: \"\\e64b\"; }\n@mixin icon-insert-horizontal-line { content: \"\\e64c\"; }\n@mixin icon-table { content: \"\\e64d\"; }\n@mixin icon-anchor { content: \"\\e64e\"; }\n@mixin icon-unlink { content: \"\\e64f\"; }\n@mixin icon-link { content: \"\\e650\"; }\n@mixin icon-right-left { content: \"\\e651\"; }\n@mixin icon-left-right { content: \"\\e652\"; }\n@mixin icon-special-character { content: \"\\e653\"; }\n@mixin icon-source { content: \"\\e654\"; }\n@mixin icon-new-page { content: \"\\e655\"; }\n@mixin icon-templates { content: \"\\e656\"; }\n@mixin icon-cut { content: \"\\e657\"; }\n@mixin icon-replace { content: \"\\e658\"; }\n@mixin icon-copy { content: \"\\e659\"; }\n@mixin icon-paste { content: \"\\e65a\"; }\n@mixin icon-select-all { content: \"\\e65b\"; }\n@mixin icon-paste-text { content: \"\\e65c\"; }\n@mixin icon-paste-word { content: \"\\e65d\"; }\n@mixin icon-bold { content: \"\\e65e\"; }\n@mixin icon-italic { content: \"\\e65f\"; }\n@mixin icon-underline { content: \"\\e660\"; }\n@mixin icon-subscript { content: \"\\e661\"; }\n@mixin icon-superscript { content: \"\\e662\"; }\n@mixin icon-strike-through { content: \"\\e663\"; }\n@mixin icon-decrease-indent { content: \"\\e664\"; }\n@mixin icon-increase-indent { content: \"\\e665\"; }\n@mixin icon-block-quote { content: \"\\e666\"; }\n@mixin icon-div-container { content: \"\\e667\"; }\n@mixin icon-align-left { content: \"\\e668\"; }\n@mixin icon-center { content: \"\\e669\"; }\n@mixin icon-align-right { content: \"\\e66a\"; }\n@mixin icon-justify { content: \"\\e66b\"; }\n@mixin icon-choice { content: \"\\e66c\"; }\n@mixin icon-inline-choice { content: \"\\e66d\"; }\n@mixin icon-match { content: \"\\e66e\"; }\n@mixin icon-associate { content: \"\\e66f\"; }\n@mixin icon-media { content: \"\\e670\"; }\n@mixin icon-graphic-order { content: \"\\e671\"; }\n@mixin icon-hotspot { content: \"\\e672\"; }\n@mixin icon-graphic-gap { content: \"\\e673\"; }\n@mixin icon-graphic-associate { content: \"\\e674\"; }\n@mixin icon-select-point { content: \"\\e675\"; }\n@mixin icon-pin { content: \"\\e676\"; }\n@mixin icon-import { content: \"\\e677\"; }\n@mixin icon-export { content: \"\\e678\"; }\n@mixin icon-move-item { content: \"\\e679\"; }\n@mixin icon-meta-data { content: \"\\e67a\"; }\n@mixin icon-slider { content: \"\\e67b\"; }\n@mixin icon-summary-report { content: \"\\e67c\"; }\n@mixin icon-text-entry { content: \"\\e67d\"; }\n@mixin icon-extended-text { content: \"\\e67e\"; }\n@mixin icon-eraser { content: \"\\e67f\"; }\n@mixin icon-row { content: \"\\e680\"; }\n@mixin icon-column { content: \"\\e681\"; }\n@mixin icon-text-color { content: \"\\e682\"; }\n@mixin icon-background-color { content: \"\\e683\"; }\n@mixin icon-spell-check { content: \"\\e684\"; }\n@mixin icon-polygon { content: \"\\e685\"; }\n@mixin icon-rectangle { content: \"\\e686\"; }\n@mixin icon-gap-match { content: \"\\e687\"; }\n@mixin icon-order { content: \"\\e688\"; }\n@mixin icon-hottext { content: \"\\e689\"; }\n@mixin icon-free-form { content: \"\\e68a\"; }\n@mixin icon-step-backward { content: \"\\e68b\"; }\n@mixin icon-fast-backward { content: \"\\e68c\"; }\n@mixin icon-backward { content: \"\\e68d\"; }\n@mixin icon-play { content: \"\\e68e\"; }\n@mixin icon-pause { content: \"\\e68f\"; }\n@mixin icon-stop { content: \"\\e690\"; }\n@mixin icon-forward { content: \"\\e691\"; }\n@mixin icon-fast-forward { content: \"\\e692\"; }\n@mixin icon-step-forward { content: \"\\e693\"; }\n@mixin icon-ellipsis { content: \"\\e694\"; }\n@mixin icon-circle { content: \"\\e695\"; }\n@mixin icon-target { content: \"\\e696\"; }\n@mixin icon-guide-arrow { content: \"\\e697\"; }\n@mixin icon-range-slider-right { content: \"\\e698\"; }\n@mixin icon-range-slider-left { content: \"\\e699\"; }\n@mixin icon-radio-checked { content: \"\\e69a\"; }\n@mixin icon-checkbox-indeterminate { content: \"\\e901\"; }\n@mixin icon-checkbox { content: \"\\e69b\"; }\n@mixin icon-checkbox-crossed { content: \"\\e69c\"; }\n@mixin icon-checkbox-checked { content: \"\\e69d\"; }\n@mixin icon-result-nok { content: \"\\e69e\"; }\n@mixin icon-result-ok { content: \"\\e69f\"; }\n@mixin icon-not-evaluated { content: \"\\e6a0\"; }\n@mixin icon-filter { content: \"\\e6a1\"; }\n@mixin icon-translate { content: \"\\e6a2\"; }\n@mixin icon-eject { content: \"\\e6a3\"; }\n@mixin icon-continue { content: \"\\e6a4\"; }\n@mixin icon-radio { content: \"\\e6a5\"; }\n@mixin icon-sphere { content: \"\\e6a6\"; }\n@mixin icon-reset { content: \"\\e6a7\"; }\n@mixin icon-smaller { content: \"\\e6a8\"; }\n@mixin icon-larger { content: \"\\e6a9\"; }\n@mixin icon-clock { content: \"\\e6aa\"; }\n@mixin icon-font { content: \"\\e6ab\"; }\n@mixin icon-maths { content: \"\\e6ac\"; }\n@mixin icon-grip { content: \"\\e6ad\"; }\n@mixin icon-rubric { content: \"\\e6ae\"; }\n@mixin icon-audio { content: \"\\e6af\"; }\n@mixin icon-grip-h { content: \"\\e6b0\"; }\n@mixin icon-magicwand { content: \"\\e6b1\"; }\n@mixin icon-loop { content: \"\\ea2e\"; }\n@mixin icon-calendar { content: \"\\e953\"; }\n@mixin icon-reload { content: \"\\e984\"; }\n@mixin icon-speed { content: \"\\e9a6\"; }\n@mixin icon-volume { content: \"\\ea27\"; }\n@mixin icon-contrast { content: \"\\e9d5\"; }\n@mixin icon-headphones { content: \"\\e910\"; }\n@mixin icon-compress { content: \"\\f066\"; }\n@mixin icon-map-o { content: \"\\f278\"; }\n@mixin icon-variable { content: \"\\e908\"; }\n@mixin icon-tooltip { content: \"\\e90c\"; }\n@mixin icon-globe { content: \"\\e9c9\"; }\n@mixin icon-highlighter { content: \"\\e90f\"; }\n@mixin icon-eliminate-crossed { content: \"\\e911\"; }\n@mixin icon-play-from-here { content: \"\\e912\"; }\n","// buttons and alerts\n$success: rgb(14, 145, 75);\n$info: rgb(14, 93, 145);\n$warning: rgb(216, 174, 91);\n$danger: rgb(201, 96, 67);\n$error: rgb(186, 18, 43);\n$activeInteraction: rgb(195, 90, 19);\n\n// corporate identity\n$logoRed: rgb(186, 18, 43);\n$grey: rgb(173, 161, 148);\n$darkBlueGrey: rgb(164, 187, 197);\n$mediumBlueGrey: rgb(193, 212, 220);\n$lightBlueGrey: rgb(228, 236, 239);\n$brownRedGrey: rgb(154, 137, 123);\n$darkBrown: rgb(111, 99, 89);\n$websiteBorder: rgb(141, 148, 158);\n\n// ui elements, these should only variations of the above\n// naming convention: jQueryUi theme roller -> camelCase\n\n$textColor: #222;\n$textHighlight: white;\n$textSecondary: #737373;\n$shadowColor: rgba(0, 0, 0, 0.25);\n\n$modalBorderColor: #dddfe2;\n$searchInp: #dddfe2;\n\n$uiGeneralContentBg: white();\n$uiGeneralContentBorder: #ddd;\n\n$uiHeaderBg: #d4d5d7;\n\n$uiClickableDefaultBg: #f3f1ef;\n$uiClickableHoverBg: whiten($info, 0.2);\n//$uiClickableActiveBg: $uiHeaderBg;\n$uiClickableActiveBg: whiten($websiteBorder, 0.2);\n//$uiClickableActiveBg: #aaa;\n\n$uiSelectableSelectedBg: whiten($info, 0.2);\n$uiSelectableSelectedHoverBg: whiten($info, 0.1);\n$uiSelectableHoverBg: whiten($info, 0.9);\n\n$uiOverlay: $lightBlueGrey;\n\n// new layout. Implemented now only for review panel\n$uiReviewPanelBg: #f2f2f2;\n$uiReviewPanelTextDisabled: hsl(0, 0%, 45%);\n$uiReviewPanelTextDefault: hsl(0, 0%, 12%);\n$uiReviewPanelBgDefault: $uiGeneralContentBg;\n$uiReviewPanelPrimaryHighlight: hsl(208, 100%, 32%);\n$uiReviewPanelBgInverted: $uiReviewPanelTextDefault;\n$uiReviewPanelTextInverted: $uiGeneralContentBg;\n\n// sidebars etc.\n$canvas: mix(#fff, $grey, 85%);\n\n// colors taken from feedback.scss\n$successBgColor: whiten($success, 0.8);\n$successBorderColor: whiten($success, 0.1);\n\n$infoBgColor: whiten($info, 0.8);\n$infoBorderColor: whiten($info, 0.1);\n\n$warningBgColor: whiten($warning, 0.8);\n$warningBorderColor: whiten($warning, 0.1);\n\n$dangerBgColor: whiten($danger, 0.8);\n$dangerBorderColor: whiten($danger, 0.1);\n\n$errorBgColor: whiten($error, 0.8);\n$errorBorderColor: whiten($error, 0.1);\n\n$darkBar: rgb(51, 51, 51);\n$darkBarTxt: rgb(230, 230, 230);\n$darkBarIcon: rgb(220, 220, 220);\n\n$actionLinkColor: #276d9b;\n$actionLinkHoverColor: #4f83a7;\n\n$colorWheel-01: #c3ba13;\n$colorWheel-02: #84a610;\n$colorWheel-03: #2b8e0e;\n$colorWheel-04: #0f9787;\n$colorWheel-05: #0e5d91;\n$colorWheel-06: #0d2689;\n$colorWheel-07: #400d83;\n$colorWheel-08: #960e7d;\n$colorWheel-09: #ba122b;\n$colorWheel-10: #c34713;\n$colorWheel-11: #c36f13;\n$colorWheel-12: #c39413;\n"]}
|
|
1
|
+
{"version":3,"sources":["../scss/item-button-list.scss","../../../scss/inc/_functions.scss","../../../scss/inc/fonts/_tao-icon-vars.scss","../../../scss/inc/_colors.scss"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;EAgBE;ACHF;;;;;;CDUC;AC0PD,oEAAA;ACjRA,gBAAA;AF6BA;IACI,aAAa;IACb,eAAe;IACf,sBAAsB;IACtB,UAAU;IAEV,2BAAA;IA0FA,iCAAA;IAiDA,sEAAA;IAuBA,qCAAA;AAlKJ;;AANA;IAQQ,eAZY;IAaZ,cAbY;IAcZ,aAAa;IACb,uBAAuB;IAAE,gEAAA;IACzB,mBAAmB;IACnB,wBAAA;IACA,UAAU;IACV,YAAY;AAGpB;;AAlBA;IAmBQ,kBAAkB;IAClB,aAAa;IACb,uBAAuB;IACvB,mBAAmB;IACnB,YA5BU;IA6BV,WA7BU;IA8BV,mBAAmB;IACnB,kBAhCY;IAiCZ,sBA9Ba;IA+Bb,qBGTmC;IHUnC,mCAAmC;IACnC,UAAU;IAAE,6BAAA;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,uBCiJiC;IDhJjC,cGfmC;IHgBnC,iBAAiB;IACjB,eAAe;AAIvB;;AAxCA;IAwCQ,gEAAgE;IAChE,kBAAkB;IAClB,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;AAI5B;;AAhDA;IA+CQ,UAAU;IACV,MAAM;IACN,OAAO;AAKf;;AAtDA;IAoDQ,aAAa;AAMrB;;AA1DA;IAuDQ,aAAa;AAOrB;;AA9DA;IA2DQ,aAAa;AAOrB;;AAlEA;IA+DQ,kBAAkB;IAClB,YAAY;IACZ,cAAc;IACd,WAAW;IACX,YAAY;IACZ,mBAAmB;IACnB,YC6GiC;ID5GjC,0BC4GiC;ID3GjC,aAAa;IACb,uBAAuB;IACvB,mBAAmB;AAO3B;;AAhFA;IA4EQ,iBAAiB;IACjB,UAAU;IACV,MAAM;IACN,OAAO;AAQf;;AAvFA;IEZwB,gBAAgB;AFuGxC;;AA3FA;IEVuB,gBAAgB;AFyGvC;;AA/FA;IEkLwB,gBAAgB;AF/ExC;;AAnGA;IEiLyB,gBAAgB;AF1EzC;;AAvGA;IC4BY,yBAAwB;IAAxB,oBAAwB;IAAxB,iBAAwB;ADmFpC;;AA/GA;IAsGgB,qBAxGM;IAyGN,cGnF0B;IHoF1B,qBGpF0B;AHiG1C;;AArHA;IA6GgB,qBA/GM;IAgHN,yBG1F0B;IH2F1B,YCmEyB;IDlEzB,qBG5F0B;AHwG1C;;AA5HA;IAqHgB,kBAAkB;IAClB,cAAc;IACd,UAAU;IACV,cGpG0B;IHqG1B,cAAc;IACd,iBAAiB;IACjB,UAAU;IACV,eAAe;IACf,UAAU;IACV,2BAAA;IACA,SAAS;IACT,2BAA2B;AAW3C;;AA3IA;IAsIgB,yBGlKU;AH2K1B;;AA/IA;IA4IgB,yBGpKQ;AH2KxB;;AAnJA;IAoJY,yBA5JsB;IA6JtB,cG/HuC;IHgIvC,qBGhIuC;AHmInD;;AAzJA;;IA2JS,wBAAA;IACA,kCAAkC;IAClC,qBAAqB;IACrB,4BAA4B;AAGrC;;AAjKA;;IAiKY,mBAAmB;IACnB,wBAAA;IACA,iBAAiB;AAK7B;;AAxKA;;IA4KY,WAAW;IACX,cAAc;IACd,kBAAkB;IAClB,aAAa;IACb,cAAc;IACd,SAAS;IACT,QAAQ;IACR,gCAAgC;IAChC,qBAtLU;IAuLV,qBG/JuC;IHgKvC,oBAAoB;IACpB,kBA7LQ;AA8LpB;;AAxLA;;;IA6LY,cGvKuC;AHwKnD;;AA9LA;;IAkMY,uBChB6B;IDiB7B,cG7KuC;IH8KvC,qBG9KuC;AH+KnD;;AArMA;;IAyMY,yBGnLuC;IHoLvC,YCxB6B;IDyB7B,qBGrLuC;AHsLnD","file":"item-button-list.css","sourcesContent":["/**\n * This program is free software; you can redistribute it and/or\n * modify it under the terms of the GNU General Public License\n * as published by the Free Software Foundation; under version 2\n * of the License (non-upgradable).\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program; if not, write to the Free Software\n * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\n *\n * Copyright (c) 2022 Open Assessment Technologies SA ;\n */\n@import \"inc/bootstrap\";\n\n$correctColor: $success;\n$incorrectColor: $error;\n$hoverBgColor: hsl(208, 100%, 95%);\n\n$radiusCircular: 50%;\n$sizeDefault: 4rem;\n$hitboxSize: 6.25rem;\n$borderThin: 0.125rem;\n$borderMedium: 0.25rem;\n\n.buttonlist-items {\n display: flex;\n flex-wrap: wrap;\n justify-content: start;\n padding: 0;\n\n /****** base styles *******/\n .buttonlist-item {\n height: $hitboxSize;\n width: $hitboxSize;\n display: flex;\n justify-content: center; /* aligning left - cut focusing board for keyboard interacting */\n align-items: center;\n /* reset parent styles */\n padding: 0;\n border: none;\n }\n\n .buttonlist-btn {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n height: $sizeDefault;\n width: $sizeDefault;\n border-style: solid;\n border-radius: $radiusCircular;\n border-width: $borderThin;\n border-color: $uiReviewPanelTextDisabled;\n margin: 1.3rem 0.75rem 1rem 0.75rem;\n padding: 0; /*Fixes firefox button jumps*/\n font-weight: bold;\n font-size: 1.6rem;\n background-color: $uiReviewPanelBgDefault;\n color: $uiReviewPanelTextDisabled;\n text-shadow: none;\n cursor: pointer;\n }\n\n .buttonlist-label {\n font-family: 'Nunito Sans', 'Source Sans Pro', Arial, sans-serif;\n max-width: 3.75rem;\n overflow: hidden;\n white-space: nowrap;\n line-height: initial;\n }\n .buttonlist-icon {\n padding: 0;\n top: 0;\n left: 0;\n }\n .buttonlist-icon:not([class*=\"icon-\"]) {\n display: none;\n }\n .buttonlist-icon[class*=\"icon-\"] ~ .buttonlist-label {\n display: none;\n }\n\n .indicator {\n display: none;\n }\n\n .buttonlist-score-badge {\n position: absolute;\n top: -0.9rem;\n right: -0.9rem;\n width: 2rem;\n height: 2rem;\n border-radius: 100%;\n color: $uiReviewPanelTextInverted;\n border: 0.1rem solid $uiReviewPanelTextInverted;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n .buttonlist-score-icon {\n font-size: 1.2rem;\n padding: 0;\n top: 0;\n left: 0;\n }\n\n .icon-info::before {\n @include icon-info-bare;\n }\n .icon-flagged::before {\n @include icon-bookmark;\n }\n .icon-correct::before {\n @include icon-result-ok;\n }\n .icon-incorrect::before {\n @include icon-result-nok;\n }\n\n\n /****** step state styles *******/\n .buttonlist-item {\n @include disableSelect();\n\n &.viewed {\n .buttonlist-btn {\n border-width: $borderMedium;\n color: $uiReviewPanelTextDefault;\n border-color: $uiReviewPanelTextDefault;\n }\n }\n &.answered {\n .buttonlist-btn {\n border-width: $borderMedium;\n background-color: $uiReviewPanelBgInverted;\n color: $uiReviewPanelTextInverted;\n border-color: $uiReviewPanelBgInverted;\n }\n }\n &.buttonlist-item-active {\n .indicator {\n position: absolute;\n display: block;\n z-index: 1;\n color: $uiReviewPanelTextDefault;\n height: 1.4rem;\n min-width: 1.6rem;\n top: unset;\n bottom: -1.7rem;\n padding: 0;\n /* centering horizontally */\n left: 50%;\n transform: translateX(-50%);\n }\n }\n\n &.correct {\n .buttonlist-score-badge {\n background-color: $correctColor;\n }\n }\n\n &.incorrect {\n .buttonlist-score-badge {\n background-color: $incorrectColor;\n }\n }\n }\n\n /* disabling is applied at buttonlist-item or buttonlist-items level */\n &:not(.disabled) .buttonlist-item:not(.disabled) {\n .buttonlist-btn:hover {\n background-color: $hoverBgColor;\n color: $uiReviewPanelPrimaryHighlight;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n }\n &.disabled,\n .buttonlist-item.disabled {\n /* reset global styles */\n background-color: unset !important;\n opacity: 1 !important;\n text-shadow: none !important;\n\n .buttonlist-btn {\n cursor: not-allowed;\n /* reset global styles */\n text-shadow: none;\n }\n }\n\n\n /****** keyboard focus styles *******/\n .buttonlist-item {\n &.key-navigation-highlight .buttonlist-btn::before,\n .buttonlist-btn.buttonlist-btn-focus:focus::before {\n content: '';\n display: block;\n position: absolute;\n width: 5.2rem;\n height: 5.2rem;\n left: 50%;\n top: 50%;\n transform: translate(-50%, -50%);\n border-width: $borderMedium;\n border-color: $uiReviewPanelPrimaryHighlight;\n border-style: dotted;\n border-radius: $radiusCircular;\n }\n\n &.key-navigation-highlight.buttonlist-item-active .buttonlist-btn .indicator,\n &.buttonlist-item-active .buttonlist-btn.buttonlist-btn-focus:focus .indicator,\n &.buttonlist-item-active .buttonlist-btn:focus-visible .indicator {\n color: $uiReviewPanelPrimaryHighlight;\n }\n\n &.key-navigation-highlight.viewed .buttonlist-btn,\n &.viewed .buttonlist-btn.buttonlist-btn-focus:focus {\n background-color: $uiReviewPanelBgDefault;\n color: $uiReviewPanelPrimaryHighlight;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n\n &.key-navigation-highlight.answered .buttonlist-btn,\n &.answered .buttonlist-btn.buttonlist-btn-focus:focus {\n background-color: $uiReviewPanelPrimaryHighlight;\n color: $uiReviewPanelTextInverted;\n border-color: $uiReviewPanelPrimaryHighlight;\n }\n }\n}\n\n/*# sourceMappingURL=item-button-list.css.map */","@mixin iterate-sprite($iconList, $x, $y, $direction, $prefix:'') {\n @each $icon in $iconList {\n #{$prefix}#{$icon} {\n background-position: $x * 1px $y * 1px;\n }\n @if $direction == 'x' {\n $x: $x - 16;\n } @else {\n $y: $y - 16;\n }\n }\n}\n\n/*\nUsage:\n- linear-gradient((color1, color2, color3)) - returns linear-gradient with evenly distributed colors,\n if 3 colors used then the position of each will be 33,33%\n- linear-gradient((color1 0%, color2 30%, color3 80%)) - returns linear-gradient with manually distributed colors,\n first param - color, second - position. Also you can use px or other valid units for set position.\n*/\n@mixin linear-gradient($colorList, $direction: 'to right') {\n $percentage: 0;\n $units: '%';\n $count: length($colorList);\n $increment: 100 / ($count - 1);\n $css: #{$direction + ', '};\n $sep: ', ';\n @each $colorItem in $colorList {\n $color: $colorItem;\n @if (length($colorItem) > 1) {\n $color: nth($colorItem, 1);\n $percentage: nth($colorItem, 2);\n $units: '';\n }\n @if ($percentage >= 100 or index($colorList, $colorItem) == $count) {\n $sep: '';\n }\n $css: #{$css + $color + ' ' + $percentage + $units + $sep};\n $percentage: $percentage + $increment;\n }\n background: linear-gradient( #{$css} );\n}\n\n@mixin grid-unit($span, $numCols: 12, $gutter: 0) {\n $gridPx: 840;\n $rawSpanPx: (($gridPx - ($numCols * $gutter)) / $numCols);\n $spanPx: $rawSpanPx * $span + (($span - 1) * $gutter);\n $spanPercent: widthPerc($spanPx, $gridPx);\n $marginPercent: widthPerc($gutter, $gridPx);\n margin-left: $marginPercent;\n width: $spanPercent;\n}\n\n\n@mixin vendor-prefix($property, $value, $whatToPrefix: property, $prefixes: (-webkit-, -moz-, -ms-, -o-, '')) {\n @if $whatToPrefix == 'property' {\n @each $prefix in $prefixes {\n #{$prefix + $property}: #{$value};\n }\n }\n @else if $whatToPrefix == 'value' {\n @each $prefix in $prefixes {\n #{$property}: #{$prefix + $value};\n }\n }\n}\n@mixin flex-container($wrapBehavior: nowrap, $direction : row) {\n @include vendor-prefix(display, flex, value, (-ms-, -webkit-, ''));\n\n @include vendor-prefix(flex-direction, $direction, property, (-ms-, -webkit-, ''));\n @include vendor-prefix(flex-wrap, $wrapBehavior, property, (-ms-, -webkit-, ''));\n\n @include vendor-prefix(justify-content, flex-start, property, (-webkit-, ''));\n\n @include vendor-prefix(align-content, flex-start, property, (-webkit-, ''));\n\n @include vendor-prefix(align-items, stretch, property, (-webkit-, ''));\n}\n\n@mixin simple-flex-box($width: auto, $minWidth: 1) {\n\n @include vendor-prefix(order, 0, property, (-ms-, -webkit-, ''));\n flex-item-align: stretch;\n -ms-flex-item-align: stretch;\n @include vendor-prefix(align-self, stretch, property, (-webkit-, ''));\n\n // if both, min width and width are set, width will win this conflict\n @if ($width == auto) {\n @if ($minWidth != 1) {\n @include vendor-prefix(flex, 1 1 $minWidth, property, (-ms-, -webkit-, ''));\n }\n @else {\n @include vendor-prefix(flex, 1 1 auto, property, (-ms-, -webkit-, ''));\n // @see https://developer.mozilla.org/en-US/docs/Web/CSS/flex-basis#Values\n // for a discussion auto vs. main-size\n @include vendor-prefix(flex, 1 1, property, (-ms-, -webkit-, ''));\n }\n }\n @else {\n @include vendor-prefix(flex, 0 0 $width, property, (-ms-, -webkit-, ''));\n }\n}\n\n\n@mixin box-shadow($horiz: 1px, $vert: 1px, $blur: 2px, $spread: 0, $color: rgba(0, 0, 0, .2)) {\n @include vendor-prefix(box-shadow, $horiz $vert $blur $spread $color, property);\n}\n\n@mixin simple-border($color: #ddd) {\n border: 1px solid $color;\n border-radius: 2px;\n -webkit-border-radius: 2px;\n}\n\n@mixin border-radius($radius: 2) {\n -moz-border-radius: $radius * 1px;\n -webkit-border-radius: $radius * 1px;\n border-radius: $radius * 1px;\n}\n\n@mixin border-radius-top($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -webkit-border-top-right-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom($radius: 2) {\n -webkit-border-bottom-right-radius: $radius * 1px;\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-left($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-right($radius: 2) {\n -webkit-border-top-right-radius: $radius * 1px;\n -webkit-border-bottom-right-radius: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-top-left($radius: 2) {\n -webkit-border-top-left-radius: $radius * 1px;\n -moz-border-radius-topleft: $radius * 1px;\n border-top-left-radius: $radius * 1px;\n}\n\n@mixin border-radius-top-right($radius: 2) {\n -webkit-border-top-right-radius: $radius * 1px;\n -moz-border-radius-topright: $radius * 1px;\n border-top-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom-right($radius: 2) {\n -webkit-border-bottom-right-radius: $radius * 1px;\n -moz-border-radius-bottomright: $radius * 1px;\n border-bottom-right-radius: $radius * 1px;\n}\n\n@mixin border-radius-bottom-left($radius: 2) {\n -webkit-border-bottom-left-radius: $radius * 1px;\n -moz-border-radius-bottomleft: $radius * 1px;\n border-bottom-left-radius: $radius * 1px;\n}\n\n@mixin border-box() {\n -moz-box-sizing: border-box;\n -webkit-box-sizing: border-box;\n box-sizing: border-box;\n}\n\n@function whiten($color, $white: 0.3) {\n @return mix(#fff, $color, ($white * 100) * 1%);\n}\n\n@function blacken($color, $black: 0.3) {\n @return mix(#000, $color, ($black * 100) * 1%);\n}\n\n@function widthPerc($colWidth, $context) {\n @return ($colWidth * 100 / $context) * 1%\n}\n\n@function remDist($fontSizePx) {\n @return ($fontSizePx / 10) * 1rem\n}\n\n@function black($alpha: 1) {\n @return (rgba(0, 0, 0, $alpha))\n}\n\n@function white($alpha: 1) {\n @return (rgba(255, 255, 255, $alpha))\n}\n\n@mixin font-size($remPx, $important: false) {\n @if $important == true {\n font-size: ($remPx) * 1px !important;\n font-size: ($remPx / 10) * 1rem !important;\n }\n @else {\n font-size: ($remPx) * 1px;\n font-size: ($remPx / 10) * 1rem;\n }\n}\n\n\n@mixin keyframes($name) {\n @-o-keyframes #{$name} { @content };\n @-moz-keyframes #{$name} { @content };\n @-webkit-keyframes #{$name} { @content };\n @keyframes #{$name} { @content };\n}\n\n\n@mixin animation($value, $type:'') {\n $animation: animation;\n @if $type != '' {\n $animation: $animation + '-' + $type;\n }\n @include vendor-prefix($animation, $value, property);\n}\n\n/// CSS transition mixin to the current selection (apply also vendor prefixes).\n/// See <https://developer.mozilla.org/en-US/docs/Web/CSS/transition> for the values\n///\n/// @param {property} [$type = all] the CSS property to apply the transition to\n/// @param {time} [$duration = .5s] the transition property\n/// @param {timing-function} [$effect = ease-out] the transition property\n@mixin transition($type : all, $duration : 0.5s, $effect : ease-out, $delay : 0s){\n @include vendor-prefix(transition, $type + ', ' + $duration + ', ' + $effect + ', ' + $delay, property);\n}\n\n@mixin fade($duration: 1s){\n\n @include keyframes(fade) {\n 0% {opacity:0;}\n 50% {opacity:1;}\n 100% {opacity:0;}\n }\n\n @include vendor-prefix(animation, fade 1s forwards, property);\n}\n\n@mixin repeat(){\n @include animation(infinite, iteration-count);\n}\n\n@mixin largeHeading() {\n @include font-size(20);\n font-family: $headingFont;\n font-style: normal;\n}\n\n@mixin disableSelect() {\n @include vendor-prefix(user-select, none, property);\n}\n\n/* based on \"visually-hidden\" mixin in LDS for accessibility goals */\n@mixin visuallyHidden() {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(1px, 1px, 1px, 1px);\n margin: 0;\n padding: 0;\n}\n","/* Do not edit */@mixin tao-icon-setup {\n /* use !important to prevent issues with browser extensions that change fonts */\n font-family: 'tao' !important;\n speak: never;\n font-style: normal;\n font-weight: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n\n /* Better Font Rendering =========== */\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n@mixin icon-furigana { content: \"\\e919\"; }\n@mixin icon-add-subsection { content: \"\\e918\"; }\n@mixin icon-info-bare { content: \"\\e923\"; }\n@mixin icon-bookmark-outline { content: \"\\e922\"; }\n@mixin icon-bookmark { content: \"\\e921\"; }\n@mixin icon-indicator { content: \"\\e920\"; }\n@mixin icon-wrap-inline { content: \"\\e915\"; }\n@mixin icon-wrap-left { content: \"\\e916\"; }\n@mixin icon-wrap-right { content: \"\\e917\"; }\n@mixin icon-offline { content: \"\\e913\"; }\n@mixin icon-online { content: \"\\e914\"; }\n@mixin icon-tab { content: \"\\e90d\"; }\n@mixin icon-untab { content: \"\\e90e\"; }\n@mixin icon-multi-select { content: \"\\e90b\"; }\n@mixin icon-clipboard { content: \"\\e90a\"; }\n@mixin icon-filebox { content: \"\\e909\"; }\n@mixin icon-click-to-speak { content: \"\\e907\"; }\n@mixin icon-speech-bubble { content: \"\\f0e5\"; }\n@mixin icon-microphone { content: \"\\f130\"; }\n@mixin icon-microphone-off { content: \"\\f131\"; }\n@mixin icon-disconnect { content: \"\\e905\"; }\n@mixin icon-connect { content: \"\\e906\"; }\n@mixin icon-eliminate { content: \"\\e904\"; }\n@mixin icon-wheelchair { content: \"\\e903\"; }\n@mixin icon-text-marker { content: \"\\e902\"; }\n@mixin icon-unshield { content: \"\\e32a\"; }\n@mixin icon-shield { content: \"\\e8e8\"; }\n@mixin icon-tree { content: \"\\e6b4\"; }\n@mixin icon-home { content: \"\\e6b3\"; }\n@mixin icon-shared-file { content: \"\\e6b2\"; }\n@mixin icon-end-attempt { content: \"\\e603\"; }\n@mixin icon-icon { content: \"\\f1c5\"; }\n@mixin icon-radio-bg { content: \"\\e600\"; }\n@mixin icon-checkbox-bg { content: \"\\e601\"; }\n@mixin icon-tag { content: \"\\e602\"; }\n@mixin icon-style { content: \"\\e604\"; }\n@mixin icon-ownership-transfer { content: \"\\e605\"; }\n@mixin icon-property-advanced { content: \"\\e606\"; }\n@mixin icon-property-add { content: \"\\e607\"; }\n@mixin icon-repository-add { content: \"\\e608\"; }\n@mixin icon-repository-remove { content: \"\\e609\"; }\n@mixin icon-repository { content: \"\\e60a\"; }\n@mixin icon-result-server { content: \"\\e60b\"; }\n@mixin icon-folder { content: \"\\e60c\"; }\n@mixin icon-folder-open { content: \"\\e60d\"; }\n@mixin icon-left { content: \"\\e60e\"; }\n@mixin icon-right { content: \"\\e60f\"; }\n@mixin icon-up { content: \"\\e610\"; }\n@mixin icon-down { content: \"\\e611\"; }\n@mixin icon-undo { content: \"\\e612\"; }\n@mixin icon-redo { content: \"\\e613\"; }\n@mixin icon-screen { content: \"\\e614\"; }\n@mixin icon-laptop { content: \"\\e615\"; }\n@mixin icon-tablet { content: \"\\e616\"; }\n@mixin icon-phone { content: \"\\e617\"; }\n@mixin icon-move { content: \"\\e618\"; }\n@mixin icon-bin { content: \"\\e619\"; }\n@mixin icon-shuffle { content: \"\\e61a\"; }\n@mixin icon-print { content: \"\\e61b\"; }\n@mixin icon-tools { content: \"\\e61c\"; }\n@mixin icon-settings { content: \"\\e61d\"; }\n@mixin icon-video { content: \"\\e61e\"; }\n@mixin icon-find { content: \"\\e61f\"; }\n@mixin icon-image { content: \"\\e620\"; }\n@mixin icon-edit { content: \"\\e621\"; }\n@mixin icon-document { content: \"\\e622\"; }\n@mixin icon-resize-grid { content: \"\\e623\"; }\n@mixin icon-resize { content: \"\\e624\"; }\n@mixin icon-help { content: \"\\e625\"; }\n@mixin icon-mobile-menu { content: \"\\e626\"; }\n@mixin icon-fix { content: \"\\e627\"; }\n@mixin icon-unlock { content: \"\\e628\"; }\n@mixin icon-lock { content: \"\\e629\"; }\n@mixin icon-ul { content: \"\\e62a\"; }\n@mixin icon-ol { content: \"\\e62b\"; }\n@mixin icon-email { content: \"\\e62c\"; }\n@mixin icon-download { content: \"\\e62d\"; }\n@mixin icon-logout { content: \"\\e62e\"; }\n@mixin icon-login { content: \"\\e62f\"; }\n@mixin icon-spinner { content: \"\\e630\"; }\n@mixin icon-preview { content: \"\\e631\"; }\n@mixin icon-external { content: \"\\e632\"; }\n@mixin icon-time { content: \"\\e633\"; }\n@mixin icon-save { content: \"\\e634\"; }\n@mixin icon-warning { content: \"\\e635\"; }\n@mixin icon-add { content: \"\\e636\"; }\n@mixin icon-error { content: \"\\e900\"; }\n@mixin icon-close { content: \"\\e637\"; }\n@mixin icon-success { content: \"\\e638\"; }\n@mixin icon-remove { content: \"\\e639\"; }\n@mixin icon-info { content: \"\\e63a\"; }\n@mixin icon-danger { content: \"\\e63b\"; }\n@mixin icon-users { content: \"\\e63c\"; }\n@mixin icon-user { content: \"\\e63d\"; }\n@mixin icon-test-taker { content: \"\\e63e\"; }\n@mixin icon-test-takers { content: \"\\e63f\"; }\n@mixin icon-item { content: \"\\e640\"; }\n@mixin icon-test { content: \"\\e641\"; }\n@mixin icon-delivery { content: \"\\e642\"; }\n@mixin icon-eye-slash { content: \"\\e643\"; }\n@mixin icon-result { content: \"\\e644\"; }\n@mixin icon-delivery-small { content: \"\\e645\"; }\n@mixin icon-upload { content: \"\\e646\"; }\n@mixin icon-result-small { content: \"\\e647\"; }\n@mixin icon-mobile-preview { content: \"\\e648\"; }\n@mixin icon-extension { content: \"\\e649\"; }\n@mixin icon-desktop-preview { content: \"\\e64a\"; }\n@mixin icon-tablet-preview { content: \"\\e64b\"; }\n@mixin icon-insert-horizontal-line { content: \"\\e64c\"; }\n@mixin icon-table { content: \"\\e64d\"; }\n@mixin icon-anchor { content: \"\\e64e\"; }\n@mixin icon-unlink { content: \"\\e64f\"; }\n@mixin icon-link { content: \"\\e650\"; }\n@mixin icon-right-left { content: \"\\e651\"; }\n@mixin icon-left-right { content: \"\\e652\"; }\n@mixin icon-special-character { content: \"\\e653\"; }\n@mixin icon-source { content: \"\\e654\"; }\n@mixin icon-new-page { content: \"\\e655\"; }\n@mixin icon-templates { content: \"\\e656\"; }\n@mixin icon-cut { content: \"\\e657\"; }\n@mixin icon-replace { content: \"\\e658\"; }\n@mixin icon-copy { content: \"\\e659\"; }\n@mixin icon-paste { content: \"\\e65a\"; }\n@mixin icon-select-all { content: \"\\e65b\"; }\n@mixin icon-paste-text { content: \"\\e65c\"; }\n@mixin icon-paste-word { content: \"\\e65d\"; }\n@mixin icon-bold { content: \"\\e65e\"; }\n@mixin icon-italic { content: \"\\e65f\"; }\n@mixin icon-underline { content: \"\\e660\"; }\n@mixin icon-subscript { content: \"\\e661\"; }\n@mixin icon-superscript { content: \"\\e662\"; }\n@mixin icon-strike-through { content: \"\\e663\"; }\n@mixin icon-decrease-indent { content: \"\\e664\"; }\n@mixin icon-increase-indent { content: \"\\e665\"; }\n@mixin icon-block-quote { content: \"\\e666\"; }\n@mixin icon-div-container { content: \"\\e667\"; }\n@mixin icon-align-left { content: \"\\e668\"; }\n@mixin icon-center { content: \"\\e669\"; }\n@mixin icon-align-right { content: \"\\e66a\"; }\n@mixin icon-justify { content: \"\\e66b\"; }\n@mixin icon-choice { content: \"\\e66c\"; }\n@mixin icon-inline-choice { content: \"\\e66d\"; }\n@mixin icon-match { content: \"\\e66e\"; }\n@mixin icon-associate { content: \"\\e66f\"; }\n@mixin icon-media { content: \"\\e670\"; }\n@mixin icon-graphic-order { content: \"\\e671\"; }\n@mixin icon-hotspot { content: \"\\e672\"; }\n@mixin icon-graphic-gap { content: \"\\e673\"; }\n@mixin icon-graphic-associate { content: \"\\e674\"; }\n@mixin icon-select-point { content: \"\\e675\"; }\n@mixin icon-pin { content: \"\\e676\"; }\n@mixin icon-import { content: \"\\e677\"; }\n@mixin icon-export { content: \"\\e678\"; }\n@mixin icon-move-item { content: \"\\e679\"; }\n@mixin icon-meta-data { content: \"\\e67a\"; }\n@mixin icon-slider { content: \"\\e67b\"; }\n@mixin icon-summary-report { content: \"\\e67c\"; }\n@mixin icon-text-entry { content: \"\\e67d\"; }\n@mixin icon-extended-text { content: \"\\e67e\"; }\n@mixin icon-eraser { content: \"\\e67f\"; }\n@mixin icon-row { content: \"\\e680\"; }\n@mixin icon-column { content: \"\\e681\"; }\n@mixin icon-text-color { content: \"\\e682\"; }\n@mixin icon-background-color { content: \"\\e683\"; }\n@mixin icon-spell-check { content: \"\\e684\"; }\n@mixin icon-polygon { content: \"\\e685\"; }\n@mixin icon-rectangle { content: \"\\e686\"; }\n@mixin icon-gap-match { content: \"\\e687\"; }\n@mixin icon-order { content: \"\\e688\"; }\n@mixin icon-hottext { content: \"\\e689\"; }\n@mixin icon-free-form { content: \"\\e68a\"; }\n@mixin icon-step-backward { content: \"\\e68b\"; }\n@mixin icon-fast-backward { content: \"\\e68c\"; }\n@mixin icon-backward { content: \"\\e68d\"; }\n@mixin icon-play { content: \"\\e68e\"; }\n@mixin icon-pause { content: \"\\e68f\"; }\n@mixin icon-stop { content: \"\\e690\"; }\n@mixin icon-forward { content: \"\\e691\"; }\n@mixin icon-fast-forward { content: \"\\e692\"; }\n@mixin icon-step-forward { content: \"\\e693\"; }\n@mixin icon-ellipsis { content: \"\\e694\"; }\n@mixin icon-circle { content: \"\\e695\"; }\n@mixin icon-target { content: \"\\e696\"; }\n@mixin icon-guide-arrow { content: \"\\e697\"; }\n@mixin icon-range-slider-right { content: \"\\e698\"; }\n@mixin icon-range-slider-left { content: \"\\e699\"; }\n@mixin icon-radio-checked { content: \"\\e69a\"; }\n@mixin icon-checkbox-indeterminate { content: \"\\e901\"; }\n@mixin icon-checkbox { content: \"\\e69b\"; }\n@mixin icon-checkbox-crossed { content: \"\\e69c\"; }\n@mixin icon-checkbox-checked { content: \"\\e69d\"; }\n@mixin icon-result-nok { content: \"\\e69e\"; }\n@mixin icon-result-ok { content: \"\\e69f\"; }\n@mixin icon-not-evaluated { content: \"\\e6a0\"; }\n@mixin icon-filter { content: \"\\e6a1\"; }\n@mixin icon-translate { content: \"\\e6a2\"; }\n@mixin icon-eject { content: \"\\e6a3\"; }\n@mixin icon-continue { content: \"\\e6a4\"; }\n@mixin icon-radio { content: \"\\e6a5\"; }\n@mixin icon-sphere { content: \"\\e6a6\"; }\n@mixin icon-reset { content: \"\\e6a7\"; }\n@mixin icon-smaller { content: \"\\e6a8\"; }\n@mixin icon-larger { content: \"\\e6a9\"; }\n@mixin icon-clock { content: \"\\e6aa\"; }\n@mixin icon-font { content: \"\\e6ab\"; }\n@mixin icon-maths { content: \"\\e6ac\"; }\n@mixin icon-grip { content: \"\\e6ad\"; }\n@mixin icon-rubric { content: \"\\e6ae\"; }\n@mixin icon-audio { content: \"\\e6af\"; }\n@mixin icon-grip-h { content: \"\\e6b0\"; }\n@mixin icon-magicwand { content: \"\\e6b1\"; }\n@mixin icon-loop { content: \"\\ea2e\"; }\n@mixin icon-calendar { content: \"\\e953\"; }\n@mixin icon-reload { content: \"\\e984\"; }\n@mixin icon-speed { content: \"\\e9a6\"; }\n@mixin icon-volume { content: \"\\ea27\"; }\n@mixin icon-contrast { content: \"\\e9d5\"; }\n@mixin icon-headphones { content: \"\\e910\"; }\n@mixin icon-compress { content: \"\\f066\"; }\n@mixin icon-map-o { content: \"\\f278\"; }\n@mixin icon-variable { content: \"\\e908\"; }\n@mixin icon-tooltip { content: \"\\e90c\"; }\n@mixin icon-globe { content: \"\\e9c9\"; }\n@mixin icon-highlighter { content: \"\\e90f\"; }\n@mixin icon-eliminate-crossed { content: \"\\e911\"; }\n@mixin icon-play-from-here { content: \"\\e912\"; }\n","// buttons and alerts\n$success: rgb(14, 145, 75);\n$info: rgb(14, 93, 145);\n$warning: rgb(216, 174, 91);\n$danger: rgb(201, 96, 67);\n$error: rgb(186, 18, 43);\n$activeInteraction: rgb(195, 90, 19);\n\n// corporate identity\n$logoRed: rgb(186, 18, 43);\n$grey: rgb(173, 161, 148);\n$darkBlueGrey: rgb(164, 187, 197);\n$mediumBlueGrey: rgb(193, 212, 220);\n$lightBlueGrey: rgb(228, 236, 239);\n$brownRedGrey: rgb(154, 137, 123);\n$darkBrown: rgb(111, 99, 89);\n$websiteBorder: rgb(141, 148, 158);\n\n// ui elements, these should only variations of the above\n// naming convention: jQueryUi theme roller -> camelCase\n\n$textColor: #222;\n$textHighlight: white;\n$textSecondary: #737373;\n$shadowColor: rgba(0, 0, 0, 0.25);\n\n$modalBorderColor: #dddfe2;\n$searchInp: #dddfe2;\n\n$uiGeneralContentBg: white();\n$uiGeneralContentBorder: #ddd;\n\n$uiHeaderBg: #d4d5d7;\n\n$uiClickableDefaultBg: #f3f1ef;\n$uiClickableHoverBg: whiten($info, 0.2);\n//$uiClickableActiveBg: $uiHeaderBg;\n$uiClickableActiveBg: whiten($websiteBorder, 0.2);\n//$uiClickableActiveBg: #aaa;\n\n$uiSelectableSelectedBg: whiten($info, 0.2);\n$uiSelectableSelectedHoverBg: whiten($info, 0.1);\n$uiSelectableHoverBg: whiten($info, 0.9);\n\n$uiOverlay: $lightBlueGrey;\n\n// new layout. Implemented now only for review panel\n$uiReviewPanelBg: #f2f2f2;\n$uiReviewPanelTextDisabled: hsl(0, 0%, 45%);\n$uiReviewPanelTextDefault: hsl(0, 0%, 12%);\n$uiReviewPanelBgDefault: $uiGeneralContentBg;\n$uiReviewPanelPrimaryHighlight: hsl(208, 100%, 32%);\n$uiReviewPanelBgInverted: $uiReviewPanelTextDefault;\n$uiReviewPanelTextInverted: $uiGeneralContentBg;\n\n// sidebars etc.\n$canvas: mix(#fff, $grey, 85%);\n\n// colors taken from feedback.scss\n$successBgColor: whiten($success, 0.8);\n$successBorderColor: whiten($success, 0.1);\n\n$infoBgColor: whiten($info, 0.8);\n$infoBorderColor: whiten($info, 0.1);\n\n$warningBgColor: whiten($warning, 0.8);\n$warningBorderColor: whiten($warning, 0.1);\n\n$dangerBgColor: whiten($danger, 0.8);\n$dangerBorderColor: whiten($danger, 0.1);\n\n$errorBgColor: whiten($error, 0.8);\n$errorBorderColor: whiten($error, 0.1);\n\n$darkBar: rgb(51, 51, 51);\n$darkBarTxt: rgb(230, 230, 230);\n$darkBarIcon: rgb(220, 220, 220);\n\n$actionLinkColor: #276d9b;\n$actionLinkHoverColor: #4f83a7;\n\n$colorWheel-01: #c3ba13;\n$colorWheel-02: #84a610;\n$colorWheel-03: #2b8e0e;\n$colorWheel-04: #0f9787;\n$colorWheel-05: #0e5d91;\n$colorWheel-06: #0d2689;\n$colorWheel-07: #400d83;\n$colorWheel-08: #960e7d;\n$colorWheel-09: #ba122b;\n$colorWheel-10: #c34713;\n$colorWheel-11: #c36f13;\n$colorWheel-12: #c39413;\n"]}
|