@qtoggle/qui 0.0.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.
Files changed (202) hide show
  1. package/.eslintignore +2 -0
  2. package/.eslintrc.json +492 -0
  3. package/.github/ISSUE_TEMPLATE/bug_report.md +33 -0
  4. package/.github/ISSUE_TEMPLATE/feature_request.md +23 -0
  5. package/.github/ISSUE_TEMPLATE/improvement_proposal.md +20 -0
  6. package/.github/workflows/main.yml +74 -0
  7. package/.pre-commit-config.yaml +8 -0
  8. package/LICENSE.txt +177 -0
  9. package/README.md +4 -0
  10. package/font/dejavusans-bold.woff +0 -0
  11. package/font/dejavusans-bolditalic.woff +0 -0
  12. package/font/dejavusans-italic.woff +0 -0
  13. package/font/dejavusans-regular.woff +0 -0
  14. package/img/qui-icons.svg +1937 -0
  15. package/js/base/base.js +47 -0
  16. package/js/base/condition-variable.js +92 -0
  17. package/js/base/errors.js +36 -0
  18. package/js/base/i18n.js +20 -0
  19. package/js/base/mixwith.js +135 -0
  20. package/js/base/require-js-compat.js +78 -0
  21. package/js/base/signal.js +91 -0
  22. package/js/base/singleton.js +66 -0
  23. package/js/base/timer.js +126 -0
  24. package/js/config.js +184 -0
  25. package/js/forms/common-fields/check-field.js +42 -0
  26. package/js/forms/common-fields/choice-buttons-field.js +30 -0
  27. package/js/forms/common-fields/color-combo-field.js +37 -0
  28. package/js/forms/common-fields/combo-field.js +108 -0
  29. package/js/forms/common-fields/common-fields.js +23 -0
  30. package/js/forms/common-fields/composite-field.js +132 -0
  31. package/js/forms/common-fields/custom-html-field.js +51 -0
  32. package/js/forms/common-fields/email-field.js +30 -0
  33. package/js/forms/common-fields/file-picker-field.js +46 -0
  34. package/js/forms/common-fields/jquery-ui-field.js +111 -0
  35. package/js/forms/common-fields/labels-field.js +69 -0
  36. package/js/forms/common-fields/numeric-field.js +39 -0
  37. package/js/forms/common-fields/password-field.js +28 -0
  38. package/js/forms/common-fields/phone-field.js +26 -0
  39. package/js/forms/common-fields/progress-disk-field.js +69 -0
  40. package/js/forms/common-fields/push-button-field.js +138 -0
  41. package/js/forms/common-fields/slider-field.js +51 -0
  42. package/js/forms/common-fields/text-area-field.js +34 -0
  43. package/js/forms/common-fields/text-field.js +89 -0
  44. package/js/forms/common-fields/up-down-field.js +85 -0
  45. package/js/forms/common-forms/common-forms.js +16 -0
  46. package/js/forms/common-forms/options-form.js +77 -0
  47. package/js/forms/common-forms/page-form.js +115 -0
  48. package/js/forms/form-button.js +202 -0
  49. package/js/forms/form-field.js +1183 -0
  50. package/js/forms/form.js +1181 -0
  51. package/js/forms/forms.js +68 -0
  52. package/js/global-glass.js +100 -0
  53. package/js/icons/default-stock.js +173 -0
  54. package/js/icons/icon.js +64 -0
  55. package/js/icons/icons.js +16 -0
  56. package/js/icons/multi-state-sprites-icon.js +362 -0
  57. package/js/icons/stock-icon.js +219 -0
  58. package/js/icons/stock.js +98 -0
  59. package/js/icons/stocks.js +57 -0
  60. package/js/index.js +232 -0
  61. package/js/lib/jquery.longpress.js +79 -0
  62. package/js/lib/jquery.module.js +4 -0
  63. package/js/lib/logger.module.js +4 -0
  64. package/js/lib/pep.module.js +4 -0
  65. package/js/lists/common-items/common-items.js +5 -0
  66. package/js/lists/common-items/icon-label-list-item.js +86 -0
  67. package/js/lists/common-lists/common-lists.js +5 -0
  68. package/js/lists/common-lists/page-list.js +53 -0
  69. package/js/lists/list-item.js +147 -0
  70. package/js/lists/list.js +636 -0
  71. package/js/lists/lists.js +26 -0
  72. package/js/main-ui/main-ui.js +64 -0
  73. package/js/main-ui/menu-bar.js +144 -0
  74. package/js/main-ui/options-bar.js +181 -0
  75. package/js/main-ui/status.js +185 -0
  76. package/js/main-ui/top-bar.js +59 -0
  77. package/js/messages/common-message-forms/common-message-forms.js +7 -0
  78. package/js/messages/common-message-forms/confirm-message-form.js +81 -0
  79. package/js/messages/common-message-forms/simple-message-form.js +67 -0
  80. package/js/messages/common-message-forms/sticky-simple-message-form.js +27 -0
  81. package/js/messages/message-form.js +107 -0
  82. package/js/messages/messages.js +21 -0
  83. package/js/messages/sticky-modal-page.js +98 -0
  84. package/js/messages/sticky-modal-progress-message.js +27 -0
  85. package/js/messages/toast.js +164 -0
  86. package/js/navigation.js +654 -0
  87. package/js/pages/breadcrumbs.js +124 -0
  88. package/js/pages/common-pages/common-pages.js +6 -0
  89. package/js/pages/common-pages/modal-progress-page.js +83 -0
  90. package/js/pages/common-pages/structured-page.js +46 -0
  91. package/js/pages/page.js +1018 -0
  92. package/js/pages/pages-context.js +154 -0
  93. package/js/pages/pages.js +252 -0
  94. package/js/pwa.js +337 -0
  95. package/js/sections/section.js +612 -0
  96. package/js/sections/sections.js +300 -0
  97. package/js/tables/common-cells/common-cells.js +7 -0
  98. package/js/tables/common-cells/icon-label-table-cell.js +68 -0
  99. package/js/tables/common-cells/push-button-table-cell.js +133 -0
  100. package/js/tables/common-cells/simple-table-cell.js +37 -0
  101. package/js/tables/common-tables/common-tables.js +5 -0
  102. package/js/tables/common-tables/page-table.js +55 -0
  103. package/js/tables/table-cell.js +198 -0
  104. package/js/tables/table-row.js +126 -0
  105. package/js/tables/table.js +492 -0
  106. package/js/tables/tables.js +36 -0
  107. package/js/theme.js +304 -0
  108. package/js/utils/ajax.js +126 -0
  109. package/js/utils/array.js +194 -0
  110. package/js/utils/colors.js +445 -0
  111. package/js/utils/cookies.js +65 -0
  112. package/js/utils/crypto.js +439 -0
  113. package/js/utils/css.js +234 -0
  114. package/js/utils/date.js +300 -0
  115. package/js/utils/files.js +27 -0
  116. package/js/utils/gestures.js +165 -0
  117. package/js/utils/html.js +76 -0
  118. package/js/utils/misc.js +81 -0
  119. package/js/utils/object.js +324 -0
  120. package/js/utils/promise.js +49 -0
  121. package/js/utils/string.js +192 -0
  122. package/js/utils/url.js +187 -0
  123. package/js/utils/utils.js +3 -0
  124. package/js/utils/visibility-manager.js +211 -0
  125. package/js/views/common-views/common-views.js +7 -0
  126. package/js/views/common-views/icon-label-view.js +210 -0
  127. package/js/views/common-views/progress-view.js +89 -0
  128. package/js/views/common-views/structured-view.js +368 -0
  129. package/js/views/view.js +467 -0
  130. package/js/views/views.js +3 -0
  131. package/js/widgets/base-widget.js +23 -0
  132. package/js/widgets/common-widgets/check-button.js +109 -0
  133. package/js/widgets/common-widgets/choice-buttons.js +322 -0
  134. package/js/widgets/common-widgets/color-combo.js +104 -0
  135. package/js/widgets/common-widgets/combo.js +645 -0
  136. package/js/widgets/common-widgets/common-widgets.js +17 -0
  137. package/js/widgets/common-widgets/email-input.js +7 -0
  138. package/js/widgets/common-widgets/file-picker.js +133 -0
  139. package/js/widgets/common-widgets/labels.js +132 -0
  140. package/js/widgets/common-widgets/numeric-input.js +49 -0
  141. package/js/widgets/common-widgets/password-input.js +91 -0
  142. package/js/widgets/common-widgets/phone-input.js +7 -0
  143. package/js/widgets/common-widgets/progress-disk.js +174 -0
  144. package/js/widgets/common-widgets/push-button.js +155 -0
  145. package/js/widgets/common-widgets/slider.js +455 -0
  146. package/js/widgets/common-widgets/text-area.js +52 -0
  147. package/js/widgets/common-widgets/text-input.js +174 -0
  148. package/js/widgets/common-widgets/up-down.js +351 -0
  149. package/js/widgets/widgets.js +57 -0
  150. package/js/window.js +557 -0
  151. package/jsdoc.conf.json +20 -0
  152. package/less/base.less +123 -0
  153. package/less/forms/common-fields.less +101 -0
  154. package/less/forms/common-forms.less +5 -0
  155. package/less/forms/form-button.less +21 -0
  156. package/less/forms/form-field.less +266 -0
  157. package/less/forms/form.less +131 -0
  158. package/less/global-glass.less +64 -0
  159. package/less/icon-label-view.less +82 -0
  160. package/less/icons.less +144 -0
  161. package/less/lists.less +105 -0
  162. package/less/main-ui.less +328 -0
  163. package/less/messages.less +189 -0
  164. package/less/no-effects.less +24 -0
  165. package/less/pages/breadcrumbs.less +98 -0
  166. package/less/pages/common-pages.less +36 -0
  167. package/less/pages/page.less +70 -0
  168. package/less/progress-view.less +51 -0
  169. package/less/stock-icons.less +43 -0
  170. package/less/structured-view.less +245 -0
  171. package/less/tables.less +84 -0
  172. package/less/theme-dark.less +133 -0
  173. package/less/theme-light.less +132 -0
  174. package/less/theme.less +419 -0
  175. package/less/visibility-manager.less +11 -0
  176. package/less/widgets/check-button.less +96 -0
  177. package/less/widgets/choice-buttons.less +160 -0
  178. package/less/widgets/color-combo.less +33 -0
  179. package/less/widgets/combo.less +230 -0
  180. package/less/widgets/common-buttons.less +120 -0
  181. package/less/widgets/common.less +24 -0
  182. package/less/widgets/input.less +258 -0
  183. package/less/widgets/labels.less +81 -0
  184. package/less/widgets/progress-disk.less +70 -0
  185. package/less/widgets/slider.less +199 -0
  186. package/less/widgets/updown.less +115 -0
  187. package/less/widgets/various.less +36 -0
  188. package/package.json +47 -0
  189. package/pyproject.toml +45 -0
  190. package/qui/__init__.py +110 -0
  191. package/qui/constants.py +1 -0
  192. package/qui/exceptions.py +2 -0
  193. package/qui/j2template.py +71 -0
  194. package/qui/settings.py +60 -0
  195. package/qui/templates/manifest.json +25 -0
  196. package/qui/templates/qui.html +126 -0
  197. package/qui/templates/service-worker.js +188 -0
  198. package/qui/web/__init__.py +0 -0
  199. package/qui/web/tornado.py +220 -0
  200. package/scripts/postinstall.sh +10 -0
  201. package/webpack/webpack-adjust-css-urls-loader.js +36 -0
  202. package/webpack/webpack-common.js +384 -0
@@ -0,0 +1,419 @@
1
+
2
+ @import (reference) "theme-@{qui_theme}";
3
+
4
+
5
+ /* intermediate theme variables */
6
+
7
+ @top-border-color: mix(@interactive-color, @interactive-active-color, 50%);
8
+
9
+
10
+ /* Following rules are used only to obtain these variable names in js code */
11
+
12
+
13
+ br.-theme-name {
14
+ content: "@{theme-name}";
15
+ }
16
+
17
+
18
+ /* fonts */
19
+
20
+ br.-theme-base-font-family {
21
+ content: "@{base-font-family}";
22
+ }
23
+
24
+
25
+ /* base colors */
26
+
27
+ br.-theme-darkgray-color {
28
+ color: @darkgray-color;
29
+ }
30
+
31
+ br.-theme-gray-color {
32
+ color: @gray-color;
33
+ }
34
+
35
+ br.-theme-lightgray-color {
36
+ color: @lightgray-color;
37
+ }
38
+
39
+ br.-theme-white-color {
40
+ color: @white-color;
41
+ }
42
+
43
+ br.-theme-blue-color {
44
+ color: @blue-color;
45
+ }
46
+
47
+ br.-theme-magenta-color {
48
+ color: @magenta-color;
49
+ }
50
+
51
+ br.-theme-red-color {
52
+ color: @red-color;
53
+ }
54
+
55
+ br.-theme-orange-color {
56
+ color: @orange-color;
57
+ }
58
+
59
+ br.-theme-yellow-color {
60
+ color: @yellow-color;
61
+ }
62
+
63
+ br.-theme-green-color {
64
+ color: @green-color;
65
+ }
66
+
67
+ br.-theme-cyan-color {
68
+ color: @cyan-color;
69
+ }
70
+
71
+
72
+ br.-theme-darkgray-active-color {
73
+ color: @darkgray-active-color;
74
+ }
75
+
76
+ br.-theme-gray-active-color {
77
+ color: @gray-active-color;
78
+ }
79
+
80
+ br.-theme-lightgray-active-color {
81
+ color: @lightgray-active-color;
82
+ }
83
+
84
+ br.-theme-white-active-color {
85
+ color: @white-active-color;
86
+ }
87
+
88
+ br.-theme-blue-active-color {
89
+ color: @blue-active-color;
90
+ }
91
+
92
+ br.-theme-magenta-active-color {
93
+ color: @magenta-active-color;
94
+ }
95
+
96
+ br.-theme-red-active-color {
97
+ color: @red-active-color;
98
+ }
99
+
100
+ br.-theme-orange-active-color {
101
+ color: @orange-active-color;
102
+ }
103
+
104
+ br.-theme-yellow-active-color {
105
+ color: @yellow-active-color;
106
+ }
107
+
108
+ br.-theme-green-active-color {
109
+ color: @green-active-color;
110
+ }
111
+
112
+ br.-theme-cyan-active-color {
113
+ color: @cyan-active-color;
114
+ }
115
+
116
+
117
+ /* common UI elements colors */
118
+
119
+ br.-theme-background-root-color {
120
+ color: @background-root-color;
121
+ }
122
+
123
+ br.-theme-background-color {
124
+ color: @background-color;
125
+ }
126
+
127
+ br.-theme-foreground-color {
128
+ color: @foreground-color;
129
+ }
130
+
131
+ br.-theme-foreground-active-color {
132
+ color: @foreground-active-color;
133
+ }
134
+
135
+ br.-theme-foreground-interactive-color {
136
+ color: @foreground-interactive-color;
137
+ }
138
+
139
+ br.-theme-border-color {
140
+ color: @border-color;
141
+ }
142
+
143
+ br.-theme-readonly-color {
144
+ color: @readonly-color;
145
+ }
146
+
147
+ br.-theme-disabled-color {
148
+ color: @disabled-color;
149
+ }
150
+
151
+ br.-theme-disabled-alt-color {
152
+ color: @disabled-alt-color;
153
+ }
154
+
155
+ br.-theme-background-active-color {
156
+ color: @background-active-color;
157
+ }
158
+
159
+ br.-theme-interactive-color {
160
+ color: @interactive-color;
161
+ }
162
+
163
+ br.-theme-interactive-active-color {
164
+ color: @interactive-active-color;
165
+ }
166
+
167
+ br.-theme-highlight-color {
168
+ color: @highlight-color;
169
+ }
170
+
171
+ br.-theme-highlight-active-color {
172
+ color: @highlight-active-color;
173
+ }
174
+
175
+ br.-theme-danger-color {
176
+ color: @danger-color;
177
+ }
178
+
179
+ br.-theme-danger-active-color {
180
+ color: @danger-active-color;
181
+ }
182
+
183
+ br.-theme-warning-color {
184
+ color: @warning-color;
185
+ }
186
+
187
+ br.-theme-info-color {
188
+ color: @info-color;
189
+ }
190
+
191
+ br.-theme-error-color {
192
+ color: @error-color;
193
+ }
194
+
195
+ br.-theme-selection-color {
196
+ color: @selection-color;
197
+ }
198
+
199
+ br.-theme-odd-color {
200
+ color: @odd-color;
201
+ }
202
+
203
+ br.-theme-floating-shadow-color {
204
+ color: @floating-shadow-color;
205
+ }
206
+
207
+ br.-theme-bar-shadow-color {
208
+ color: @bar-shadow-color;
209
+ }
210
+
211
+ br.-theme-thick-shadow-color {
212
+ color: @thick-shadow-color;
213
+ }
214
+
215
+
216
+ /* icon colors */
217
+
218
+ br.-theme-darkgray-icon-y-offset {
219
+ margin-left: @darkgray-icon-y-offset;
220
+ }
221
+
222
+ br.-theme-gray-icon-y-offset {
223
+ margin-left: @gray-icon-y-offset;
224
+ }
225
+
226
+ br.-theme-lightgray-icon-y-offset {
227
+ margin-left: @lightgray-icon-y-offset;
228
+ }
229
+
230
+ br.-theme-white-icon-y-offset {
231
+ margin-left: @white-icon-y-offset;
232
+ }
233
+
234
+ br.-theme-blue-icon-y-offset {
235
+ margin-left: @blue-icon-y-offset;
236
+ }
237
+
238
+ br.-theme-magenta-icon-y-offset {
239
+ margin-left: @magenta-icon-y-offset;
240
+ }
241
+
242
+ br.-theme-red-icon-y-offset {
243
+ margin-left: @red-icon-y-offset;
244
+ }
245
+
246
+ br.-theme-orange-icon-y-offset {
247
+ margin-left: @orange-icon-y-offset;
248
+ }
249
+
250
+ br.-theme-yellow-icon-y-offset {
251
+ margin-left: @yellow-icon-y-offset;
252
+ }
253
+
254
+ br.-theme-green-icon-y-offset {
255
+ margin-left: @green-icon-y-offset;
256
+ }
257
+
258
+ br.-theme-cyan-icon-y-offset {
259
+ margin-left: @cyan-icon-y-offset;
260
+ }
261
+
262
+
263
+ br.-theme-background-icon-y-offset {
264
+ margin-left: @background-icon-y-offset;
265
+ }
266
+
267
+ br.-theme-foreground-icon-y-offset {
268
+ margin-left: @foreground-icon-y-offset;
269
+ }
270
+
271
+ br.-theme-foreground-interactive-icon-y-offset {
272
+ margin-left: @foreground-interactive-icon-y-offset;
273
+ }
274
+
275
+ br.-theme-disabled-icon-y-offset {
276
+ margin-left: @disabled-icon-y-offset;
277
+ }
278
+
279
+ br.-theme-interactive-icon-y-offset {
280
+ margin-left: @interactive-icon-y-offset;
281
+ }
282
+
283
+ br.-theme-highlight-icon-y-offset {
284
+ margin-left: @highlight-icon-y-offset;
285
+ }
286
+
287
+ br.-theme-danger-icon-y-offset {
288
+ margin-left: @danger-icon-y-offset;
289
+ }
290
+
291
+ br.-theme-info-icon-y-offset {
292
+ margin-left: @info-icon-y-offset;
293
+ }
294
+
295
+ br.-theme-warning-icon-y-offset {
296
+ margin-left: @warning-icon-y-offset;
297
+ }
298
+
299
+ br.-theme-error-icon-y-offset {
300
+ margin-left: @error-icon-y-offset;
301
+ }
302
+
303
+
304
+ /* icon offsets */
305
+
306
+ br.-theme-plus-icon-x-offset {
307
+ margin-left: @plus-icon-x-offset;
308
+ }
309
+
310
+ br.-theme-minus-icon-x-offset {
311
+ margin-left: @minus-icon-x-offset;
312
+ }
313
+
314
+ br.-theme-close-icon-x-offset {
315
+ margin-left: @close-icon-x-offset;
316
+ }
317
+
318
+ br.-theme-fat-arrow-icon-x-offset {
319
+ margin-left: @fat-arrow-icon-x-offset;
320
+ }
321
+
322
+ br.-theme-slim-arrow-icon-x-offset {
323
+ margin-left: @slim-arrow-icon-x-offset;
324
+ }
325
+
326
+ br.-theme-info-icon-x-offset {
327
+ margin-left: @info-icon-x-offset;
328
+ }
329
+
330
+ br.-theme-qmark-icon-x-offset {
331
+ margin-left: @qmark-icon-x-offset;
332
+ }
333
+
334
+ br.-theme-exclam-icon-x-offset {
335
+ margin-left: @exclam-icon-x-offset;
336
+ }
337
+
338
+ br.-theme-check-icon-x-offset {
339
+ margin-left: @check-icon-x-offset;
340
+ }
341
+
342
+ br.-theme-wrench-icon-x-offset {
343
+ margin-left: @wrench-icon-x-offset;
344
+ }
345
+
346
+ br.-theme-sliders-icon-x-offset {
347
+ margin-left: @sliders-icon-x-offset;
348
+ }
349
+
350
+ br.-theme-key-icon-x-offset {
351
+ margin-left: @key-icon-x-offset;
352
+ }
353
+
354
+ br.-theme-user-icon-x-offset {
355
+ margin-left: @user-icon-x-offset;
356
+ }
357
+
358
+ br.-theme-sync-icon-x-offset {
359
+ margin-left: @sync-icon-x-offset;
360
+ }
361
+
362
+ br.-theme-magnifier-icon-x-offset {
363
+ margin-left: @magnifier-icon-x-offset;
364
+ }
365
+
366
+ br.-theme-full-screen-icon-x-offset {
367
+ margin-left: @full-screen-icon-x-offset;
368
+ }
369
+
370
+ br.-theme-duplicate-icon-x-offset {
371
+ margin-left: @duplicate-icon-x-offset;
372
+ }
373
+
374
+ br.-theme-envelope-icon-x-offset {
375
+ margin-left: @envelope-icon-x-offset;
376
+ }
377
+
378
+ br.-theme-gear-icon-x-offset {
379
+ margin-left: @gear-icon-x-offset;
380
+ }
381
+
382
+ br.-theme-download-icon-x-offset {
383
+ margin-left: @download-icon-x-offset;
384
+ }
385
+
386
+ br.-theme-upload-icon-x-offset {
387
+ margin-left: @upload-icon-x-offset;
388
+ }
389
+
390
+ br.-theme-file-icon-x-offset {
391
+ margin-left: @file-icon-x-offset;
392
+ }
393
+
394
+ br.-theme-reset-icon-x-offset {
395
+ margin-left: @reset-icon-x-offset;
396
+ }
397
+
398
+ br.-theme-menu-icon-x-offset {
399
+ margin-left: @menu-icon-x-offset;
400
+ }
401
+
402
+ br.-theme-options-icon-x-offset {
403
+ margin-left: @options-icon-x-offset;
404
+ }
405
+
406
+
407
+ /* misc */
408
+
409
+ br.-theme-transition-duration {
410
+ transition-duration: @transition-duration;
411
+ }
412
+
413
+ br.-theme-glass-opacity {
414
+ margin-left: @glass-opacity;
415
+ }
416
+
417
+ br.-theme-modal-background-filter {
418
+ margin-left: @modal-background-filter;
419
+ }
@@ -0,0 +1,11 @@
1
+
2
+ @import (reference) "theme";
3
+
4
+
5
+ .qui-visibility-manager-hidden-width {
6
+ width: 0 !important;
7
+ }
8
+
9
+ .qui-visibility-manager-hidden-height {
10
+ height: 0 !important;
11
+ }
@@ -0,0 +1,96 @@
1
+
2
+ @import (reference) "../base";
3
+ @import (reference) "../theme";
4
+ @import (reference) "common";
5
+
6
+
7
+ div.qui-check-button {
8
+ display: inline-block;
9
+ vertical-align: middle;
10
+ width: 1.5em;
11
+ height: 1.5em;
12
+ padding: 0.125em;
13
+ border-radius: 0.2em;
14
+ border: 0.0625em solid @interactive-color;
15
+ line-height: 1.2em !important;
16
+ text-align: center;
17
+ overflow: hidden;
18
+ background: @background-color;
19
+ color: @foreground-interactive-color;
20
+ transition+: background @transition-duration ease,
21
+ color @transition-duration ease,
22
+ opacity @transition-duration ease,
23
+ border @transition-duration ease;
24
+ .qui-focusable-widget();
25
+
26
+ &:FOCUS {
27
+ .qui-focused-widget();
28
+ }
29
+
30
+ &.on {
31
+ background: @interactive-color;
32
+ }
33
+
34
+ &.active {
35
+ background: @interactive-active-color;
36
+ }
37
+
38
+ &.on::BEFORE {
39
+ content: '\2713';
40
+ font-size: 1.4em;
41
+ }
42
+
43
+ &.has-warning {
44
+ border-color: @warning-color;
45
+
46
+ &:FOCUS {
47
+ .qui-focused-widget-warning();
48
+ }
49
+
50
+ &.on {
51
+ background: @warning-color;
52
+ }
53
+
54
+ &.active {
55
+ background: @warning-active-color;
56
+ }
57
+
58
+ }
59
+
60
+ &.has-error {
61
+ border-color: @error-color;
62
+
63
+ &:FOCUS {
64
+ .qui-focused-widget-error();
65
+ }
66
+
67
+ &.on {
68
+ background: @error-color;
69
+ }
70
+
71
+ &.active {
72
+ background: @error-active-color;
73
+ }
74
+
75
+ }
76
+
77
+ &.readonly {
78
+ border-color: @readonly-color;
79
+ color: @foreground-color;
80
+ background: @background-color !important;
81
+
82
+ &:FOCUS {
83
+ .qui-focused-widget-readonly();
84
+ }
85
+
86
+ }
87
+
88
+ &.disabled {
89
+
90
+ border-color: @disabled-color;
91
+ background: @background-color !important;
92
+ color: @disabled-color;
93
+
94
+ }
95
+
96
+ }
@@ -0,0 +1,160 @@
1
+
2
+ @import (reference) "../base";
3
+ @import (reference) "../theme";
4
+ @import (reference) "common";
5
+
6
+
7
+ div.qui-choice-buttons-container {
8
+ border-radius: 0.2em;
9
+ .qui-focusable-widget();
10
+
11
+ &:FOCUS {
12
+ .qui-focused-widget();
13
+ }
14
+
15
+ &.has-warning:FOCUS {
16
+ .qui-focused-widget-warning();
17
+ }
18
+
19
+ &.has-error:FOCUS {
20
+ .qui-focused-widget-error();
21
+ }
22
+
23
+ &.readonly:FOCUS {
24
+ .qui-focused-widget-readonly();
25
+ }
26
+
27
+ & > div.qui-choice-buttons-group-container {
28
+ display: grid;
29
+ white-space: nowrap;
30
+
31
+ & > div.qui-choice-button {
32
+ display: inline-block;
33
+ padding: 0 0.25em;
34
+ border-radius: 0;
35
+ border-width: 0.0625em 0 0 0.0625em;
36
+ border-style: solid;
37
+ border-color: @interactive-color;
38
+ min-width: 1em;
39
+ box-sizing: border-box;
40
+ text-align: center;
41
+ background: @background-color;
42
+ color: @foreground-color;
43
+ line-height: 1.85em; /* 1.9 - 2 * 0.0625, round up so it looks good */
44
+
45
+ &.on,
46
+ &.active {
47
+ color: @foreground-interactive-color;
48
+ }
49
+
50
+ &.active {
51
+ background: @interactive-active-color;
52
+ }
53
+
54
+ &.on:NOT(.active) {
55
+ background: @interactive-color;
56
+ }
57
+
58
+ &:FIRST-CHILD {
59
+ border-top-left-radius: 0.1875em;
60
+ border-bottom-left-radius: 0.1875em;
61
+ }
62
+
63
+ &:LAST-CHILD {
64
+ border-top-right-radius: 0.1875em;
65
+ border-bottom-right-radius: 0.1875em;
66
+ border-right-width: 0.0625em;
67
+ }
68
+
69
+ }
70
+
71
+ &:LAST-CHILD div.qui-choice-button {
72
+ border-bottom-width: 0.0625em;
73
+ }
74
+
75
+ &:NOT(:FIRST-CHILD) div.qui-choice-button {
76
+ border-top-left-radius: 0;
77
+ border-top-right-radius: 0;
78
+ }
79
+
80
+ &:NOT(:LAST-CHILD) div.qui-choice-button {
81
+ border-bottom-left-radius: 0;
82
+ border-bottom-right-radius: 0;
83
+ }
84
+
85
+ }
86
+
87
+ &.has-warning > div.qui-choice-buttons-group-container {
88
+
89
+ & > div.qui-choice-button {
90
+ border-color: @warning-color;
91
+
92
+ &.active {
93
+ background: @warning-active-color;
94
+ }
95
+
96
+ &.on:NOT(.active) {
97
+ background: @warning-color;
98
+ }
99
+
100
+ }
101
+
102
+ }
103
+
104
+ &.has-error > div.qui-choice-buttons-group-container {
105
+
106
+ & > div.qui-choice-button {
107
+ border-color: @error-color;
108
+
109
+ &.active {
110
+ background: @error-active-color;
111
+ }
112
+
113
+ &.on:NOT(.active) {
114
+ background: @error-color;
115
+ }
116
+
117
+ }
118
+
119
+ }
120
+
121
+ &.readonly > div.qui-choice-buttons-group-container {
122
+
123
+ & > div.qui-choice-button {
124
+ border-color: @disabled-color;
125
+ background: @background-color;
126
+ cursor: default;
127
+
128
+ &.active:NOT(.on) {
129
+ color: @foreground-color;
130
+ background: @background-color !important;
131
+ }
132
+
133
+ &.on {
134
+ color: @background-color;
135
+ background: @foreground-color !important;
136
+ }
137
+
138
+ }
139
+
140
+ }
141
+
142
+ &.disabled > div.qui-choice-buttons-group-container {
143
+
144
+ & > div.qui-choice-button,
145
+ & > div.qui-choice-button.active {
146
+ border-color: @disabled-color;
147
+ color: @disabled-color;
148
+ background: @background-color;
149
+ cursor: default;
150
+
151
+ &.on {
152
+ color: @background-color;
153
+ background: @disabled-color !important;
154
+ }
155
+
156
+ }
157
+
158
+ }
159
+
160
+ }
@@ -0,0 +1,33 @@
1
+
2
+ @import (reference) "../base";
3
+ @import (reference) "../theme";
4
+
5
+
6
+ div.qui-combo-item.selected > div.qui-color-combo-entry,
7
+ div.qui-combo-container:FOCUS > div.qui-combo-button > span.combo-label > div.qui-color-combo-entry {
8
+ border-color: @background-color;
9
+ }
10
+
11
+ div.qui-color-combo-entry-label {
12
+ overflow: hidden;
13
+ text-overflow: ellipsis;
14
+ }
15
+
16
+ div.qui-color-combo-entry-color {
17
+ width: 1em;
18
+ height: 1em;
19
+ box-sizing: border-box;
20
+ border-radius: 0.1em;
21
+ border: 0.0625em solid @foreground-color;
22
+ display: inline-block;
23
+ vertical-align: middle;
24
+ transition: border-color @transition-duration linear;
25
+ position: relative;
26
+ margin: 0.375em;
27
+ }
28
+
29
+ span.qui-color-combo-entry-text {
30
+ position: relative;
31
+ font-size: 0.9em;
32
+ vertical-align: middle;
33
+ }