Browse Source

fix(polls): Update ux according to design

master
Vlad Piersec 4 years ago
parent
commit
2855642fc3

+ 131
- 143
css/_polls.scss View File

@@ -1,5 +1,7 @@
1 1
 .poll-dialog {
2
-    font-size: 1rem;
2
+    font-size: 14px;
3
+    font-weight: 400;
4
+    line-height: 20px;
3 5
 
4 6
     h1, span, li, strong {
5 7
         color: #bce;
@@ -16,28 +18,52 @@
16 18
 }
17 19
 
18 20
 .poll-header {
19
-    padding: 8px 16px;
21
+    margin-bottom: 8px;
20 22
 }
21 23
 
22
-.poll-answer-container{
23
-    padding: 8px;
24
+.poll-answer-container {
24 25
     background: #3D3D3D;
25 26
     border-radius: 3px;
26 27
     margin-bottom: 8px;
28
+
29
+    @media (max-width: 580px) {
30
+      &> span {
31
+        padding: 8px 0;
32
+      }
33
+
34
+      svg {
35
+        margin-top: 6px;
36
+      }
37
+    }
38
+}
39
+
40
+.poll-answer-option {
41
+   font-weight: 400;
42
+   display: block;
43
+   margin: 4px;
44
+
45
+   @media (max-width: 580px) {
46
+      font-size: 16px;
47
+      margin: 11px 8px
48
+   }
27 49
 }
28 50
 
29 51
 .poll-answer-field-list, .poll-answer-list, .poll-result-list {
30 52
     list-style-type: none;
31
-    padding: 0 16px;
53
+    padding: 0;
32 54
     margin: 0;
33 55
 }
34 56
 
57
+.poll-answer-field-list {
58
+    padding: 0 16px;
59
+}
60
+
35 61
 ol.poll-result-list {
36 62
     margin-bottom: 1.5em;
37 63
 }
38 64
 
39 65
 .poll-result-list > li {
40
-    margin-bottom: 8px;
66
+    margin-bottom: 16px;
41 67
 }
42 68
 
43 69
 .poll-answer-field {
@@ -60,7 +86,7 @@ ol.poll-result-list {
60 86
 .poll-create-container .jsYMHu {
61 87
     background: #292929;
62 88
     border-color: #808090;
63
-    color: white // #808090
89
+    color: #fff // #808090
64 90
 }
65 91
 
66 92
 .poll-add-button {
@@ -72,7 +98,7 @@ ol.poll-result-list {
72 98
 .poll-remove-option-button {
73 99
     background: 0 0;
74 100
     border: none;
75
-    color: #8B8B8B;
101
+    color: #E04757;
76 102
     padding-left: 0;
77 103
 }
78 104
 
@@ -85,7 +111,7 @@ ol.poll-result-list {
85 111
 
86 112
 .poll-icon-button, .poll-drag-handle {
87 113
     .jitsi-icon svg {
88
-        fill: #bce;
114
+        fill: #929292;
89 115
     }
90 116
 }
91 117
 
@@ -94,6 +120,7 @@ ol.poll-result-list {
94 120
     border: none;
95 121
     cursor: grab;
96 122
     padding-left: 8;
123
+    padding-top: 8px;
97 124
     display: flex;
98 125
 }
99 126
 
@@ -105,13 +132,12 @@ ol.poll-result-list {
105 132
 }
106 133
 
107 134
 .poll-question {
108
-    font-size: 1.2em;
135
+    font-size: 16px;
109 136
     font-weight: 600;
110
-    margin-bottom: 0.5em;
137
+    margin-bottom: 16px;
111 138
 }
112 139
 
113 140
 .poll-answer-voters {
114
-    font-size: 1em;
115 141
     font-weight: lighter;
116 142
     list-style-type: none;
117 143
     border: #616161 solid 1px;
@@ -191,29 +217,40 @@ ol.poll-result-list {
191 217
     display: flex;
192 218
     flex-direction: row;
193 219
     justify-content: space-between;
194
-}
195 220
 
196
-a.poll-detail-link, a.poll-change-vote-link {
197
-    color: #246FE5;
198
-    cursor: pointer;
199
-    text-decoration: none;
221
+    a.poll-detail-link, a.poll-change-vote-link {
222
+      color: #669AEC;
223
+      cursor: pointer;
224
+      font-weight: 600;
225
+      text-decoration: none;
226
+
227
+      &:hover {
228
+        color: #669AEC;
229
+      }
230
+
231
+      &:visited {
232
+        color: #669AEC;
233
+      }
234
+    }
200 235
 }
201 236
 
237
+
202 238
 .polls-pane-content {
203
-    display: flex;
204
-    flex-direction: column;
205
-    font-weight: 600;
206
-    height: 85%;
207
-    align-items: stretch;
239
+    height: calc(100% - 102px);
240
+    position: relative;
241
+
242
+    @media (max-width: 580px) {
243
+        height: calc(100% - 32px);
244
+    }
208 245
 }
209 246
 
210 247
 .pane-content{
211 248
     display: flex;
212 249
     flex-direction: column;
250
+    height: 100%;
213 251
     justify-content: center;
214 252
     align-items: center;
215 253
     width: 100%;
216
-    height: 100%;
217 254
 }
218 255
 
219 256
 .empty-pane-icon {
@@ -228,37 +265,41 @@ a.poll-detail-link, a.poll-change-vote-link {
228 265
 }
229 266
 
230 267
 .empty-pane-message {
268
+    color: #fff;
269
+    padding: 0 16px;
231 270
     text-align: center;
271
+
272
+}
273
+
274
+.poll-results, .poll-answer {
275
+    background: #292929;
276
+    border-radius: 8px;
277
+    border: 1px solid #666666;
278
+    margin: 16px;
279
+    padding: 16px;
280
+    word-break: break-word;
232 281
 }
233 282
 
234 283
 .poll-results {
235
-    color: white;
284
+    color: #fff;
236 285
 }
237 286
 
238 287
 .poll-answer {
288
+
239 289
     h1, strong ,span {
240
-        color: white;
290
+        color: #fff;
241 291
     }
242 292
 }
243 293
 
244
-.poll-results, .poll-answer {
245
-    margin-bottom: 16px;
246
-    background: #292929;
247
-    border-radius: 8px;
248
-    padding: 12px 8px;
249
-    border-width: thin;
250
-    border-style: solid;
251
-    border-color: #616161;
252
-    word-break: break-word;
253
-}
254
-
255 294
 .poll-create-label {
256
-    color: white;
257
-    margin-bottom: 4;
295
+    color: #C2C2C2;
258 296
     display: flex;
297
+    font-weight: 400;
298
+    margin-bottom: 4;
259 299
 }
260 300
 
261 301
 .expandable-input{
302
+    line-height: 18px;
262 303
     resize: none;
263 304
     width: 100%;
264 305
     height: 40px;
@@ -272,23 +313,26 @@ a.poll-detail-link, a.poll-change-vote-link {
272 313
 }
273 314
 
274 315
 .poll-container {
275
-    box-sizing: border-box;
276
-    flex: 1;
316
+    font-size: 14px;
317
+    font-weight: 600;
318
+    height: calc(100% - 88px);
319
+    line-height: 20px;
277 320
     overflow-y: auto;
278 321
     position: relative;
279
-    padding: 16px;
280 322
 
281 323
     & > * + *:not(.ignore-child) {
282 324
         margin-top: 16px;
283 325
     }
284 326
 
285
-    &::-webkit-scrollbar {
286
-        display: none;
327
+    @media (max-width: 580px) {
328
+        height: calc(100% - 102px);
287 329
     }
288 330
 }
289 331
 
290 332
 .poll-create-header {
333
+    color: #fff;
291 334
     font-size: 20px;
335
+    line-height: 28px;
292 336
     margin: 20px 16px;
293 337
     font-weight: 600;
294 338
 }
@@ -297,98 +341,45 @@ a.poll-detail-link, a.poll-change-vote-link {
297 341
     padding: 8px 0;
298 342
 }
299 343
 
300
-.poll-footer {
301
-    display: flex;
302
-    justify-content: flex-end;
303
-    padding: 8px 16px;
304
-    height: 40px;
305
-    align-items: stretch;
306
-
307
-    & > *:not(:last-child) {
308
-        margin-right: 16px;
309
-    }
344
+.poll-create-footer {
345
+    background-color: #141414;
346
+    bottom: 0;
347
+    position: absolute;
348
+    width: calc(100% - 32px);
310 349
 }
311 350
 
312
-.poll-primary-button {
313
-    align-items: center;
314
-    background-color: #0056E0;
315
-    border: 0;
316
-    border-radius: 6px;
317
-    display: flex;
318
-    font-weight: unset;
319
-    justify-content: center;
320
-    font-size: 15px;
321
-    flex: 1;
322
-
323
-    &:hover {
324
-        background-color: #246FE5;
325
-    }
326
-
327
-    &:active {
328
-        background-color: #0045B3;
329
-    }
330
-
331
-    &:focus {
332
-        background-color: #0045B3;
333
-        border: 3px solid #99BBF3;
334
-    }
335
-
336
-    &:disabled {
337
-        background-color: #00225A;
338
-        color: #858585;
339
-    }
340
-
341
-    & > *:not(:last-child) {
342
-        margin-right: 8px;
343
-    }
351
+.poll-footer {
352
+  display: flex;
353
+  justify-content: space-between;
354
+  padding: 0 16px 16px 16px;
344 355
 }
345 356
 
346
-.poll-secondary-button {
347
-    align-items: center;
348
-    background-color: #3D3D3D;
349
-    border: 0;
350
-    border-radius: 6px;
351
-    display: flex;
352
-    font-weight: unset;
353
-    justify-content: center;
354
-    font-size: 15px;
355
-    height: 40px;
356
-    width: 100%;
357
-
358
-    &:hover {
359
-        background-color: #525252;
360
-    }
361
-
362
-    &:active {
363
-        background-color: #292929;
364
-    }
357
+.poll-answer-footer {
358
+  padding: 8px 0 0 0;
359
+}
365 360
 
366
-    &:focus {
367
-        background-color: #292929;
368
-        border: 3px solid #858585;
369
-    }
361
+.poll-button {
362
+   align-items: center;
363
+   border: 0;
364
+   border-radius: 6px;
365
+   font-size: 14px;
366
+   font-weight: 600;
367
+   display: flex;
368
+   justify-content: center;
369
+   min-height: 40px;
370
+   width: 100%;
370 371
 
371
-    &:disabled {
372
-        background-color: #141414;
373
-        color: #858585;
374
-    }
372
+   &:disabled {
373
+     cursor: initial;
374
+   }
375 375
 
376
-    & > *:not(:last-child) {
377
-        margin-right: 8px;
378
-    }
376
+   @media (max-width: 580px) {
377
+     min-height: 48px;
378
+   }
379 379
 }
380 380
 
381
-.poll-small-primary-button {
382
-    align-items: center;
381
+.poll-button-primary {
383 382
     background-color: #0056E0;
384
-    border: 0;
385
-    border-radius: 6px;
386
-    display: flex;
387
-    font-weight: unset;
388
-    justify-content: center;
389
-    font-size: 15px;
390
-    height: 40px;
391
-    width: 50%;
392 383
 
393 384
     &:hover {
394 385
         background-color: #246FE5;
@@ -406,25 +397,11 @@ a.poll-detail-link, a.poll-change-vote-link {
406 397
     &:disabled {
407 398
         background-color: #00225A;
408 399
         color: #858585;
409
-        cursor: default;
410
-    }
411
-
412
-    & > *:not(:last-child) {
413
-        margin-right: 8px;
414 400
     }
415 401
 }
416 402
 
417
-.poll-small-secondary-button {
418
-    align-items: center;
403
+.poll-button-secondary {
419 404
     background-color: #3D3D3D;
420
-    border: 0;
421
-    border-radius: 6px;
422
-    display: flex;
423
-    font-weight: unset;
424
-    justify-content: center;
425
-    font-size: 15px;
426
-    height: 40px;
427
-    width: 50%;
428 405
 
429 406
     &:hover {
430 407
         background-color: #525252;
@@ -443,8 +420,19 @@ a.poll-detail-link, a.poll-change-vote-link {
443 420
         background-color: #141414;
444 421
         color: #858585;
445 422
     }
423
+}
446 424
 
447
-    & > *:not(:last-child) {
448
-        margin-right: 8px;
449
-    }
425
+.poll-button-short {
426
+  max-width: 132px;
427
+}
428
+
429
+.poll-button-shortest {
430
+  max-width: 117px;
431
+}
432
+
433
+.poll-button-short,
434
+.poll-button-shortest {
435
+   @media (max-width: 580px) {
436
+     min-width: 49%;
437
+   }
450 438
 }

+ 4
- 5
react/features/polls/components/web/PollAnswer.js View File

@@ -33,7 +33,7 @@ const PollAnswer = (props: AbstractProps) => {
33 33
                             <Checkbox
34 34
                                 isChecked = { checkBoxStates[index] }
35 35
                                 key = { index }
36
-                                label = { <span>{ answer.name }</span> }
36
+                                label = { <span className = 'poll-answer-option'>{ answer.name }</span> }
37 37
                                 // eslint-disable-next-line react/jsx-no-bind
38 38
                                 onChange = { ev => setCheckbox(index, ev.target.checked) }
39 39
                                 size = 'large' />
@@ -41,22 +41,21 @@ const PollAnswer = (props: AbstractProps) => {
41 41
                     ))
42 42
                 }
43 43
             </ol>
44
-            <div className = { 'poll-footer' }>
44
+            <div className = 'poll-footer poll-answer-footer' >
45 45
                 <button
46 46
                     aria-label = { t('polls.answer.skip') }
47
-                    className = { 'poll-small-secondary-button' }
47
+                    className = 'poll-button poll-button-secondary poll-button-shortest'
48 48
                     onClick = { skipAnswer } >
49 49
                     <span>{t('polls.answer.skip')}</span>
50 50
                 </button>
51 51
                 <button
52 52
                     aria-label = { t('polls.answer.submit') }
53
-                    className = 'poll-small-primary-button'
53
+                    className = 'poll-button poll-button-primary poll-button-shortest'
54 54
                     disabled = { isSubmitAnswerDisabled(checkBoxStates) }
55 55
                     onClick = { submitAnswer }>
56 56
                     <span>{t('polls.answer.submit')}</span>
57 57
                 </button>
58 58
             </div>
59
-
60 59
         </div>
61 60
     );
62 61
 };

+ 4
- 4
react/features/polls/components/web/PollCreate.js View File

@@ -212,7 +212,7 @@ const PollCreate = (props: AbstractProps) => {
212 212
             <div className = 'poll-add-button'>
213 213
                 <button
214 214
                     aria-label = { 'Add option' }
215
-                    className = { 'poll-secondary-button' }
215
+                    className = 'poll-button poll-button-secondary'
216 216
                     onClick = { () => {
217 217
                         addAnswer();
218 218
                         requestFocus(answers.length);
@@ -222,17 +222,17 @@ const PollCreate = (props: AbstractProps) => {
222 222
                 </button>
223 223
             </div>
224 224
         </div>
225
-        <div className = 'poll-footer'>
225
+        <div className = 'poll-footer poll-create-footer'>
226 226
             <button
227 227
                 aria-label = { t('polls.create.cancel') }
228
-                className = 'poll-small-secondary-button'
228
+                className = 'poll-button poll-button-secondary poll-button-short'
229 229
                 onClick = { () => setCreateMode(false) }
230 230
                 type = 'button' >
231 231
                 <span>{t('polls.create.cancel')}</span>
232 232
             </button>
233 233
             <button
234 234
                 aria-label = { t('polls.create.send') }
235
-                className = 'poll-small-primary-button'
235
+                className = 'poll-button poll-button-primary poll-button-short'
236 236
                 disabled = { isSubmitDisabled }
237 237
                 type = 'submit' >
238 238
                 <span>{t('polls.create.send')}</span>

+ 2
- 2
react/features/polls/components/web/PollsPane.js View File

@@ -19,10 +19,10 @@ const PollsPane = (props: AbstractProps) => {
19 19
             <div className = { 'poll-container' } >
20 20
                 <PollsList />
21 21
             </div>
22
-            <div className = { 'poll-footer' }>
22
+            <div className = 'poll-footer poll-create-footer'>
23 23
                 <button
24 24
                     aria-label = { t('polls.create.create') }
25
-                    className = { 'poll-primary-button' }
25
+                    className = 'poll-button poll-button-primary'
26 26
                     // eslint-disable-next-line react/jsx-no-bind
27 27
                     onClick = { onCreate } >
28 28
                     <span>{t('polls.create.create')}</span>

Loading…
Cancel
Save