@oat-sa/tao-core-ui 1.5.4 → 1.6.3
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/ckeditor/ckConfigurator.js +9 -1
- package/dist/mediaEditor/mediaEditorComponent.js +5 -3
- package/dist/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +46 -25
- package/dist/mediaplayer/css/player.css +104 -14
- package/dist/mediaplayer/css/player.css.map +1 -1
- package/dist/mediaplayer/players/html5.js +767 -0
- package/dist/mediaplayer/players/youtube.js +470 -0
- package/dist/mediaplayer/players.js +35 -0
- package/dist/mediaplayer/support.js +134 -0
- package/dist/mediaplayer/utils/reminder.js +198 -0
- package/dist/mediaplayer/utils/timeObserver.js +149 -0
- package/dist/mediaplayer/youtubeManager.js +177 -0
- package/dist/mediaplayer.js +1251 -1912
- package/dist/previewer.js +25 -19
- package/package.json +1 -1
- package/scss/basic.scss +1 -0
- package/scss/inc/_jquery.nouislider.scss +254 -0
- package/src/ckeditor/ckConfigurator.js +10 -1
- package/src/itemButtonList/css/item-button-list.css +225 -0
- package/src/itemButtonList/css/item-button-list.css.map +1 -0
- package/src/mediaEditor/mediaEditorComponent.js +25 -26
- package/src/mediaEditor/plugins/mediaDimension/mediaDimensionComponent.js +83 -63
- package/src/mediaplayer/css/player.css +104 -14
- package/src/mediaplayer/css/player.css.map +1 -1
- package/src/mediaplayer/players/html5.js +564 -0
- package/src/mediaplayer/players/youtube.js +323 -0
- package/src/mediaplayer/players.js +29 -0
- package/src/mediaplayer/scss/player.scss +125 -16
- package/src/mediaplayer/support.js +126 -0
- package/src/mediaplayer/tpl/audio.tpl +6 -0
- package/src/mediaplayer/tpl/player.tpl +11 -32
- package/src/mediaplayer/tpl/source.tpl +1 -0
- package/src/mediaplayer/tpl/video.tpl +6 -0
- package/src/mediaplayer/tpl/youtube.tpl +1 -0
- package/src/mediaplayer/utils/reminder.js +184 -0
- package/src/mediaplayer/utils/timeObserver.js +143 -0
- package/src/mediaplayer/youtubeManager.js +161 -0
- package/src/mediaplayer.js +1217 -1901
- package/src/previewer.js +40 -33
- package/src/searchModal/css/advancedSearch.css +190 -0
- package/src/searchModal/css/advancedSearch.css.map +1 -0
- package/src/searchModal/css/searchModal.css +506 -0
- package/src/searchModal/css/searchModal.css.map +1 -0
package/dist/previewer.js
CHANGED
|
@@ -14,7 +14,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
14
14
|
* @author Bertrand Chevrier <bertrand@taotesting.com>
|
|
15
15
|
*/
|
|
16
16
|
var ns = 'previewer';
|
|
17
|
-
var dataNs =
|
|
17
|
+
var dataNs = "ui.".concat(ns); //the plugin defaults
|
|
18
18
|
|
|
19
19
|
var defaults = {
|
|
20
20
|
containerClass: 'previewer'
|
|
@@ -59,7 +59,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
59
59
|
* @returns {String} the tags
|
|
60
60
|
*/
|
|
61
61
|
generate: function generate(type, data) {
|
|
62
|
-
var tmpl = this[type
|
|
62
|
+
var tmpl = this["".concat(type, "Template")];
|
|
63
63
|
data.jsonurl = JSON.stringify(data.url);
|
|
64
64
|
|
|
65
65
|
if (_.isFunction(tmpl)) {
|
|
@@ -83,10 +83,10 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
83
83
|
* @constructor
|
|
84
84
|
* @param {Object} [options] - the plugin options
|
|
85
85
|
* @returns {jQueryElement} for chaining
|
|
86
|
+
* @fires playerready when the mediaplayer (video) is sucessfully loaded and configured
|
|
86
87
|
*/
|
|
87
88
|
init: function init(options) {
|
|
88
|
-
|
|
89
|
-
|
|
89
|
+
//get options using default
|
|
90
90
|
options = _.defaults(options || {}, defaults);
|
|
91
91
|
return this.each(function () {
|
|
92
92
|
var $elt = $(this);
|
|
@@ -98,14 +98,14 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
98
98
|
|
|
99
99
|
$elt.data(dataNs, options);
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
previewer._update($elt);
|
|
102
102
|
/**
|
|
103
103
|
* The plugin has been created.
|
|
104
104
|
* @event previewer#create.previewer
|
|
105
105
|
*/
|
|
106
106
|
|
|
107
107
|
|
|
108
|
-
$elt.trigger(
|
|
108
|
+
$elt.trigger("create.".concat(ns));
|
|
109
109
|
} else {
|
|
110
110
|
$elt.previewer('update', options);
|
|
111
111
|
}
|
|
@@ -131,6 +131,8 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
131
131
|
|
|
132
132
|
/**
|
|
133
133
|
* Set the player
|
|
134
|
+
* @param {JQueryElement} $elt
|
|
135
|
+
* @param {Object} player
|
|
134
136
|
* @private
|
|
135
137
|
*/
|
|
136
138
|
_setPlayer: function _setPlayer($elt, player) {
|
|
@@ -139,6 +141,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
139
141
|
|
|
140
142
|
/**
|
|
141
143
|
* Uninstalls the player if any
|
|
144
|
+
* @param {JQueryElement} $elt
|
|
142
145
|
* @private
|
|
143
146
|
*/
|
|
144
147
|
_clearPlayer: function _clearPlayer($elt) {
|
|
@@ -154,13 +157,12 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
154
157
|
* @param {jQueryElement} $elt - the current element
|
|
155
158
|
*/
|
|
156
159
|
_update: function _update($elt) {
|
|
157
|
-
var self = previewer;
|
|
158
160
|
var player;
|
|
159
161
|
var $content, $controls;
|
|
160
162
|
var options = $elt.data(dataNs);
|
|
161
163
|
var content, type;
|
|
162
164
|
|
|
163
|
-
|
|
165
|
+
previewer._clearPlayer($elt);
|
|
164
166
|
|
|
165
167
|
if (options) {
|
|
166
168
|
type = options.type || mimeType.getFileType({
|
|
@@ -200,24 +202,28 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
200
202
|
|
|
201
203
|
if (options.url) {
|
|
202
204
|
if (type === 'audio' || type === 'video') {
|
|
205
|
+
var defSize = _defaultSize[type] || _defaultSize.video;
|
|
206
|
+
var width = options.width || defSize.width;
|
|
207
|
+
var height = options.height || defSize.height;
|
|
203
208
|
player = mediaplayer({
|
|
204
209
|
url: options.url,
|
|
205
210
|
type: options.mime,
|
|
206
|
-
renderTo: $content
|
|
211
|
+
renderTo: $content,
|
|
212
|
+
width: width,
|
|
213
|
+
height: height
|
|
207
214
|
}).on('ready', function () {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
this.resize(width, height);
|
|
215
|
+
/**
|
|
216
|
+
* @event playerready
|
|
217
|
+
*/
|
|
218
|
+
$elt.trigger('playerready');
|
|
213
219
|
});
|
|
214
220
|
|
|
215
|
-
|
|
221
|
+
previewer._setPlayer($elt, player); // stop video and free the socket on escape keypress(modal window hides)
|
|
216
222
|
|
|
217
223
|
|
|
218
224
|
$('body').off('keydown.mediaelement').on('keydown.mediaelement', function (event) {
|
|
219
225
|
if (event.keyCode === 27) {
|
|
220
|
-
|
|
226
|
+
previewer._clearPlayer($elt);
|
|
221
227
|
}
|
|
222
228
|
}); // stop the video and free the socket on file select from the action icons
|
|
223
229
|
// stop video, free the socket and remove player interface on video deletion
|
|
@@ -230,7 +236,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
230
236
|
if (!$(this).closest('.mediaplayer').length) {
|
|
231
237
|
$controls.off('mousedown.mediaelement');
|
|
232
238
|
|
|
233
|
-
|
|
239
|
+
previewer._clearPlayer($elt);
|
|
234
240
|
}
|
|
235
241
|
});
|
|
236
242
|
} else if (type === 'pdf') {
|
|
@@ -254,7 +260,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
254
260
|
*/
|
|
255
261
|
|
|
256
262
|
|
|
257
|
-
$elt.trigger(
|
|
263
|
+
$elt.trigger("update.".concat(ns));
|
|
258
264
|
}
|
|
259
265
|
},
|
|
260
266
|
|
|
@@ -276,7 +282,7 @@ define(['jquery', 'lodash', 'i18n', 'core/mimetype', 'core/pluginifier', 'ui/med
|
|
|
276
282
|
*/
|
|
277
283
|
|
|
278
284
|
|
|
279
|
-
$elt.trigger(
|
|
285
|
+
$elt.trigger("destroy.".concat(ns));
|
|
280
286
|
});
|
|
281
287
|
}
|
|
282
288
|
}; //Register the incrementer to behave as a jQuery plugin.
|
package/package.json
CHANGED
package/scss/basic.scss
CHANGED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
/* Functional styling;
|
|
2
|
+
* These styles are required for noUiSlider to function.
|
|
3
|
+
* You don't need to change these rules to apply your design.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
.noUi-target,
|
|
7
|
+
.noUi-target * {
|
|
8
|
+
-webkit-touch-callout: none;
|
|
9
|
+
-webkit-user-select: none;
|
|
10
|
+
-ms-touch-action: none;
|
|
11
|
+
-ms-user-select: none;
|
|
12
|
+
-moz-user-select: none;
|
|
13
|
+
-moz-box-sizing: border-box;
|
|
14
|
+
box-sizing: border-box;
|
|
15
|
+
}
|
|
16
|
+
.noUi-base {
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
.noUi-origin {
|
|
22
|
+
position: absolute;
|
|
23
|
+
right: 0;
|
|
24
|
+
top: 0;
|
|
25
|
+
left: 0;
|
|
26
|
+
bottom: 0;
|
|
27
|
+
}
|
|
28
|
+
.noUi-handle {
|
|
29
|
+
position: relative;
|
|
30
|
+
z-index: 1;
|
|
31
|
+
}
|
|
32
|
+
.noUi-stacking .noUi-handle {
|
|
33
|
+
/* This class is applied to the lower origin when
|
|
34
|
+
its values is > 50%. */
|
|
35
|
+
z-index: 10;
|
|
36
|
+
}
|
|
37
|
+
.noUi-stacking + .noUi-origin {
|
|
38
|
+
/* Fix stacking order in IE7, which incorrectly
|
|
39
|
+
creates a new context for the origins. */
|
|
40
|
+
*z-index: -1;
|
|
41
|
+
}
|
|
42
|
+
.noUi-state-tap .noUi-origin {
|
|
43
|
+
}
|
|
44
|
+
.noUi-state-drag * {
|
|
45
|
+
cursor: inherit !important;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* Slider size and handle placement;
|
|
49
|
+
*/
|
|
50
|
+
.noUi-horizontal {
|
|
51
|
+
height: 11px;
|
|
52
|
+
}
|
|
53
|
+
.noUi-horizontal .noUi-handle {
|
|
54
|
+
width: 10px;
|
|
55
|
+
height: 17px;
|
|
56
|
+
left: -5px;
|
|
57
|
+
top: -4px;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.noUi-horizontal .noUi-handle:after {
|
|
61
|
+
border-top: 3px solid $uiClickableActiveBg;
|
|
62
|
+
border-left: 5px solid transparent;
|
|
63
|
+
border-right: 5px solid transparent;
|
|
64
|
+
content: "";
|
|
65
|
+
left: 0;
|
|
66
|
+
position: absolute;
|
|
67
|
+
bottom: -3px;
|
|
68
|
+
width: 0;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.qti-slider-values{
|
|
72
|
+
margin-top: 6px !important;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
.noUi-horizontal .noUi-handle {
|
|
76
|
+
&:hover:after {
|
|
77
|
+
border-top: 3px solid $uiClickableHoverBg;
|
|
78
|
+
}
|
|
79
|
+
&.noUi-active {
|
|
80
|
+
&:after {
|
|
81
|
+
border-top-color: $uiClickableHoverBg;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.noUi-horizontal.noUi-extended {
|
|
87
|
+
padding: 0 15px;
|
|
88
|
+
}
|
|
89
|
+
.noUi-horizontal.noUi-extended .noUi-origin {
|
|
90
|
+
right: -15px;
|
|
91
|
+
}
|
|
92
|
+
.noUi-vertical {
|
|
93
|
+
width: 11px;
|
|
94
|
+
height: 200px;
|
|
95
|
+
display: inline-block;
|
|
96
|
+
}
|
|
97
|
+
.noUi-vertical .noUi-handle {
|
|
98
|
+
width: 17px;
|
|
99
|
+
height: 10px;
|
|
100
|
+
left: -4px;
|
|
101
|
+
top: -5px;
|
|
102
|
+
}
|
|
103
|
+
.noUi-vertical.noUi-extended {
|
|
104
|
+
padding: 15px 0;
|
|
105
|
+
}
|
|
106
|
+
.noUi-vertical.noUi-extended .noUi-origin {
|
|
107
|
+
bottom: -15px;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Styling;
|
|
111
|
+
*/
|
|
112
|
+
.noUi-background {
|
|
113
|
+
background: $uiGeneralContentBg;
|
|
114
|
+
}
|
|
115
|
+
.noUi-connect {
|
|
116
|
+
background: $uiClickableDefaultBg;
|
|
117
|
+
}
|
|
118
|
+
.noUi-origin {
|
|
119
|
+
}
|
|
120
|
+
.noUi-target {
|
|
121
|
+
@include simple-border()
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/* Handles and cursors;
|
|
125
|
+
*/
|
|
126
|
+
.noUi-dragable {
|
|
127
|
+
cursor: w-resize;
|
|
128
|
+
}
|
|
129
|
+
.noUi-vertical .noUi-dragable {
|
|
130
|
+
cursor: n-resize;
|
|
131
|
+
}
|
|
132
|
+
.noUi-handle {
|
|
133
|
+
background: $uiClickableActiveBg;
|
|
134
|
+
color: $uiClickableActiveBg;
|
|
135
|
+
cursor: default;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.noUi-active, .noUi-handle:hover{
|
|
139
|
+
background:$uiClickableHoverBg;
|
|
140
|
+
color: $uiClickableHoverBg;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.noUi-handle:after {
|
|
144
|
+
left: 17px;
|
|
145
|
+
}
|
|
146
|
+
.noUi-vertical .noUi-handle:before,
|
|
147
|
+
.noUi-vertical .noUi-handle:after {
|
|
148
|
+
width: 14px;
|
|
149
|
+
height: 1px;
|
|
150
|
+
left: 6px;
|
|
151
|
+
top: 14px;
|
|
152
|
+
}
|
|
153
|
+
.noUi-vertical .noUi-handle:after {
|
|
154
|
+
top: 17px;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/* Disabled state;
|
|
158
|
+
*/
|
|
159
|
+
[disabled].noUi-connect,
|
|
160
|
+
[disabled] .noUi-connect {
|
|
161
|
+
background: #B8B8B8;
|
|
162
|
+
}
|
|
163
|
+
[disabled] .noUi-handle {
|
|
164
|
+
cursor: not-allowed;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
.noUi-horizontal {
|
|
168
|
+
|
|
169
|
+
.step-marker {
|
|
170
|
+
position:relative;
|
|
171
|
+
//margin-bottom: 10px;
|
|
172
|
+
span {
|
|
173
|
+
font-size: 10px;
|
|
174
|
+
position: relative;
|
|
175
|
+
display:block;
|
|
176
|
+
float:left;
|
|
177
|
+
text-align:center;
|
|
178
|
+
min-height: 10px;
|
|
179
|
+
&:before {
|
|
180
|
+
width: 1px;
|
|
181
|
+
height: 5px;
|
|
182
|
+
position: absolute;
|
|
183
|
+
content: '';
|
|
184
|
+
background: whiten($textColor, .15);
|
|
185
|
+
left: 50%;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
&:before {
|
|
189
|
+
}
|
|
190
|
+
&.after {
|
|
191
|
+
top: 5px;
|
|
192
|
+
span {
|
|
193
|
+
&:before {
|
|
194
|
+
top: -4px;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
&.before {
|
|
199
|
+
top: -28px;
|
|
200
|
+
span {
|
|
201
|
+
&:before {
|
|
202
|
+
top: 13px;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
.item-editor-sidebar .noUi-target {
|
|
210
|
+
margin-left: 4px;
|
|
211
|
+
margin-right: 4px;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
.noUi-vertical-wrapper {
|
|
215
|
+
position: relative;
|
|
216
|
+
display: inline-block;
|
|
217
|
+
.step-marker {
|
|
218
|
+
position:absolute;
|
|
219
|
+
height: 100%;
|
|
220
|
+
top: 0;
|
|
221
|
+
span {
|
|
222
|
+
font-size: 10px;
|
|
223
|
+
position: relative;
|
|
224
|
+
display: block;
|
|
225
|
+
&:before {
|
|
226
|
+
width: 5px;
|
|
227
|
+
height: 1px;
|
|
228
|
+
position: absolute;
|
|
229
|
+
content: '';
|
|
230
|
+
background: whiten($textColor, .15);
|
|
231
|
+
top: 50%;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
&:before {
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
&.after {
|
|
238
|
+
left: 20px;
|
|
239
|
+
span {
|
|
240
|
+
&:before {
|
|
241
|
+
left: -9px;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
&.before {
|
|
246
|
+
span {
|
|
247
|
+
&:before {
|
|
248
|
+
left: -40%;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
@@ -25,6 +25,15 @@ import 'ckeditor';
|
|
|
25
25
|
*/
|
|
26
26
|
var originalConfig = _.cloneDeep(window.CKEDITOR.config);
|
|
27
27
|
|
|
28
|
+
function getUserLanguage() {
|
|
29
|
+
var documentLang = window.document.documentElement.getAttribute('lang');
|
|
30
|
+
var documentLocale = documentLang && documentLang.split('-')[0];
|
|
31
|
+
|
|
32
|
+
return documentLocale;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var lang = getUserLanguage();
|
|
36
|
+
|
|
28
37
|
var ckConfigurator = (function() {
|
|
29
38
|
/**
|
|
30
39
|
* Toolbar presets that you normally never would need to change, they can however be overridden with options.toolbar.
|
|
@@ -172,7 +181,7 @@ var ckConfigurator = (function() {
|
|
|
172
181
|
floatSpaceDockedOffsetY: 0,
|
|
173
182
|
forcePasteAsPlainText: true,
|
|
174
183
|
skin: 'tao',
|
|
175
|
-
language:
|
|
184
|
+
language: lang,
|
|
176
185
|
removePlugins: '',
|
|
177
186
|
linkShowAdvancedTab: false,
|
|
178
187
|
justifyClasses: ['txt-lft', 'txt-ctr', 'txt-rgt', 'txt-jty'],
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This program is free software; you can redistribute it and/or
|
|
3
|
+
* modify it under the terms of the GNU General Public License
|
|
4
|
+
* as published by the Free Software Foundation; under version 2
|
|
5
|
+
* of the License (non-upgradable).
|
|
6
|
+
*
|
|
7
|
+
* This program is distributed in the hope that it will be useful,
|
|
8
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
9
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
10
|
+
* GNU General Public License for more details.
|
|
11
|
+
*
|
|
12
|
+
* You should have received a copy of the GNU General Public License
|
|
13
|
+
* along with this program; if not, write to the Free Software
|
|
14
|
+
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
15
|
+
*
|
|
16
|
+
* Copyright (c) 2022 Open Assessment Technologies SA ;
|
|
17
|
+
*/
|
|
18
|
+
/*
|
|
19
|
+
Usage:
|
|
20
|
+
- linear-gradient((color1, color2, color3)) - returns linear-gradient with evenly distributed colors,
|
|
21
|
+
if 3 colors used then the position of each will be 33,33%
|
|
22
|
+
- linear-gradient((color1 0%, color2 30%, color3 80%)) - returns linear-gradient with manually distributed colors,
|
|
23
|
+
first param - color, second - position. Also you can use px or other valid units for set position.
|
|
24
|
+
*/
|
|
25
|
+
/* Do not edit */
|
|
26
|
+
.buttonlist-items {
|
|
27
|
+
display: flex;
|
|
28
|
+
flex-wrap: wrap;
|
|
29
|
+
justify-content: start;
|
|
30
|
+
padding: 0;
|
|
31
|
+
/****** base styles *******/
|
|
32
|
+
/****** step state styles *******/
|
|
33
|
+
/* disabling is applied at the buttonlist-items level */
|
|
34
|
+
/****** keyboard focus styles *******/
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.buttonlist-items .buttonlist-item {
|
|
38
|
+
height: 6.25rem;
|
|
39
|
+
width: 6.25rem;
|
|
40
|
+
display: flex;
|
|
41
|
+
justify-content: center;
|
|
42
|
+
/* aligning left - cut focusing board for keyboard interacting */
|
|
43
|
+
align-items: center;
|
|
44
|
+
/* reset parent styles */
|
|
45
|
+
padding: 0;
|
|
46
|
+
border: none;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.buttonlist-items .buttonlist-btn {
|
|
50
|
+
position: relative;
|
|
51
|
+
display: flex;
|
|
52
|
+
justify-content: center;
|
|
53
|
+
align-items: center;
|
|
54
|
+
height: 4rem;
|
|
55
|
+
width: 4rem;
|
|
56
|
+
border-style: solid;
|
|
57
|
+
border-radius: 50%;
|
|
58
|
+
border-width: 0.125rem;
|
|
59
|
+
border-color: #737373;
|
|
60
|
+
margin: 1.3rem 0.75rem 1rem 0.75rem;
|
|
61
|
+
padding: 0;
|
|
62
|
+
/*Fixes firefox button jumps*/
|
|
63
|
+
font-weight: bold;
|
|
64
|
+
font-size: 1.6rem;
|
|
65
|
+
background-color: white;
|
|
66
|
+
color: #737373;
|
|
67
|
+
text-shadow: none;
|
|
68
|
+
cursor: pointer;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.buttonlist-items .buttonlist-label {
|
|
72
|
+
font-family: 'Nunito Sans', 'Source Sans Pro', Arial, sans-serif;
|
|
73
|
+
max-width: 3.75rem;
|
|
74
|
+
overflow: hidden;
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
line-height: initial;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.buttonlist-items .buttonlist-icon {
|
|
80
|
+
padding: 0;
|
|
81
|
+
top: 0;
|
|
82
|
+
left: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.buttonlist-items .indicator {
|
|
86
|
+
display: none;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.buttonlist-items .buttonlist-score-badge {
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: -0.9rem;
|
|
92
|
+
right: -0.9rem;
|
|
93
|
+
width: 2rem;
|
|
94
|
+
height: 2rem;
|
|
95
|
+
border-radius: 100%;
|
|
96
|
+
color: white;
|
|
97
|
+
border: 0.1rem solid white;
|
|
98
|
+
display: flex;
|
|
99
|
+
justify-content: center;
|
|
100
|
+
align-items: center;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
.buttonlist-items .buttonlist-score-icon {
|
|
104
|
+
font-size: 1.2rem;
|
|
105
|
+
padding: 0;
|
|
106
|
+
top: 0;
|
|
107
|
+
left: 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.buttonlist-items .icon-info::before {
|
|
111
|
+
content: "\e923";
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
.buttonlist-items .icon-flagged::before {
|
|
115
|
+
content: "\e921";
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.buttonlist-items .icon-correct::before {
|
|
119
|
+
content: "\e69f";
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.buttonlist-items .icon-incorrect::before {
|
|
123
|
+
content: "\e69e";
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
.buttonlist-items .buttonlist-item {
|
|
127
|
+
-webkit-user-select: none;
|
|
128
|
+
-ms-user-select: none;
|
|
129
|
+
-o-user-select: none;
|
|
130
|
+
user-select: none;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
.buttonlist-items .buttonlist-item.viewed .buttonlist-btn {
|
|
134
|
+
border-width: 0.25rem;
|
|
135
|
+
color: #1f1f1f;
|
|
136
|
+
border-color: #1f1f1f;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
.buttonlist-items .buttonlist-item.answered .buttonlist-btn {
|
|
140
|
+
border-width: 0.25rem;
|
|
141
|
+
background-color: #1f1f1f;
|
|
142
|
+
color: white;
|
|
143
|
+
border-color: #1f1f1f;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.buttonlist-items .buttonlist-item.buttonlist-item-active .indicator {
|
|
147
|
+
position: absolute;
|
|
148
|
+
display: block;
|
|
149
|
+
z-index: 1;
|
|
150
|
+
color: #1f1f1f;
|
|
151
|
+
height: 1.4rem;
|
|
152
|
+
min-width: 1.6rem;
|
|
153
|
+
top: unset;
|
|
154
|
+
bottom: -1.7rem;
|
|
155
|
+
padding: 0;
|
|
156
|
+
/* centering horizontally */
|
|
157
|
+
left: 50%;
|
|
158
|
+
transform: translateX(-50%);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.buttonlist-items .buttonlist-item.correct .buttonlist-score-badge {
|
|
162
|
+
background-color: #0e914b;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.buttonlist-items .buttonlist-item.incorrect .buttonlist-score-badge {
|
|
166
|
+
background-color: #ba122b;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
.buttonlist-items:not(.disabled) .buttonlist-btn:hover {
|
|
170
|
+
background-color: #e6f3ff;
|
|
171
|
+
color: #0057a3;
|
|
172
|
+
border-color: #0057a3;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
.buttonlist-items.disabled {
|
|
176
|
+
/* reset global styles */
|
|
177
|
+
background-color: unset !important;
|
|
178
|
+
opacity: 1 !important;
|
|
179
|
+
text-shadow: none !important;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.buttonlist-items.disabled .buttonlist-btn {
|
|
183
|
+
cursor: not-allowed;
|
|
184
|
+
/* reset global styles */
|
|
185
|
+
opacity: 0.5;
|
|
186
|
+
text-shadow: none;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
.buttonlist-items .buttonlist-item.key-navigation-highlight .buttonlist-btn::before,
|
|
190
|
+
.buttonlist-items .buttonlist-item .buttonlist-btn.buttonlist-btn-focus:focus::before {
|
|
191
|
+
content: '';
|
|
192
|
+
display: block;
|
|
193
|
+
position: absolute;
|
|
194
|
+
width: 5.2rem;
|
|
195
|
+
height: 5.2rem;
|
|
196
|
+
left: 50%;
|
|
197
|
+
top: 50%;
|
|
198
|
+
transform: translate(-50%, -50%);
|
|
199
|
+
border-width: 0.25rem;
|
|
200
|
+
border-color: #0057a3;
|
|
201
|
+
border-style: dotted;
|
|
202
|
+
border-radius: 50%;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
.buttonlist-items .buttonlist-item.key-navigation-highlight.buttonlist-item-active .buttonlist-btn .indicator,
|
|
206
|
+
.buttonlist-items .buttonlist-item.buttonlist-item-active .buttonlist-btn.buttonlist-btn-focus:focus .indicator,
|
|
207
|
+
.buttonlist-items .buttonlist-item.buttonlist-item-active .buttonlist-btn:focus-visible .indicator {
|
|
208
|
+
color: #0057a3;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
.buttonlist-items .buttonlist-item.key-navigation-highlight.viewed .buttonlist-btn,
|
|
212
|
+
.buttonlist-items .buttonlist-item.viewed .buttonlist-btn.buttonlist-btn-focus:focus {
|
|
213
|
+
background-color: white;
|
|
214
|
+
color: #0057a3;
|
|
215
|
+
border-color: #0057a3;
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
.buttonlist-items .buttonlist-item.key-navigation-highlight.answered .buttonlist-btn,
|
|
219
|
+
.buttonlist-items .buttonlist-item.answered .buttonlist-btn.buttonlist-btn-focus:focus {
|
|
220
|
+
background-color: #0057a3;
|
|
221
|
+
color: white;
|
|
222
|
+
border-color: #0057a3;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
/*# sourceMappingURL=item-button-list.css.map */
|