Browse Source

feat(modals): use dark theme

master
Leonard Kim 6 years ago
parent
commit
134ff71c78

+ 1
- 0
.flowconfig View File

@@ -18,6 +18,7 @@
18 18
 
19 19
 ; Ignore packages in node_modules which we (i.e. the jitsi-meet project) have
20 20
 ; seen to cause errors and we have chosen not to fix.
21
+.*/node_modules/@atlaskit/.*/*.js.flow
21 22
 .*/node_modules/@atlassian
22 23
 .*/node_modules/bower/lib/node_modules/bower-json/test/.*
23 24
 .*/node_modules/immutable/dist/immutable.js.flow

+ 0
- 1
css/_aui_reset.scss View File

@@ -135,7 +135,6 @@ h3 {
135 135
   margin: 30px 0 0 0;
136 136
 }
137 137
 h4 {
138
-  color: #333;
139 138
   font-size: 16px;
140 139
   font-weight: bold;
141 140
   line-height: 1.25;

+ 6
- 2
css/modals/_dialog.scss View File

@@ -101,7 +101,7 @@
101 101
             }
102 102
 
103 103
             &-content {
104
-                background-color: $auiDialogContentBg;
104
+                background-color: $auiDialogBg;
105 105
                 box-sizing: border-box;
106 106
                 color: $auiDialogColor;
107 107
                 font-size: em(14, 12);
@@ -126,6 +126,11 @@
126 126
         }
127 127
     }
128 128
 
129
+    .input-control {
130
+        background-color: $auiDialogContentBg;
131
+        color: $auiDialogColor;
132
+    }
133
+
129 134
     .form-control:not(:last-child) {
130 135
         border-bottom: 1px solid $auiBorderColor;
131 136
     }
@@ -138,7 +143,6 @@
138 143
 }
139 144
 
140 145
 .modal-dialog-form {
141
-    color: $modalTextColor;
142 146
     margin-top: 5px !important;
143 147
 
144 148
     .input-control {

+ 1
- 2
css/modals/desktop-picker/_desktop-picker.scss View File

@@ -36,13 +36,12 @@
36 36
 }
37 37
 
38 38
 .desktop-picker-source {
39
-    color: $defaultDarkFontColor;
40 39
     margin-top: 10px;
41 40
     text-align: center;
42 41
 
43 42
     &.is-selected {
44 43
         .desktop-source-preview-image-container {
45
-            background: rgba(0, 0, 0, 0.1);
44
+            background: rgba(255,255,255,0.3);
46 45
             border-radius: $borderRadius;
47 46
         }
48 47
     }

+ 7
- 11
css/modals/device-selection/_device-selection.scss View File

@@ -1,6 +1,4 @@
1 1
 .device-selection {
2
-    color: $feedbackInputTextColor;
3
-
4 2
     .device-selectors {
5 3
         font-size: 14px;
6 4
 
@@ -22,19 +20,15 @@
22 20
 
23 21
         /* device-selector-trigger stylings attempt to mimic AtlasKit button */
24 22
         .device-selector-trigger {
25
-            background-color: rgba(9, 30, 66, 0.04);
26
-            border-radius: 3px;
27
-            color: #505f79;
23
+            background-color: #0E1624;
24
+            border: 1px solid #455166;
25
+            border-radius: 5px;
28 26
             display: flex;
29 27
             height: 2.3em;
30 28
             justify-content: space-between;
31 29
             line-height: 2.3em;
32 30
             overflow: hidden;
33 31
             padding: 0 8px;
34
-
35
-            &:hover {
36
-                background-color: rgba(9,30,66,.08);
37
-            }
38 32
         }
39 33
         .device-selector-trigger-disabled {
40 34
             .device-selector-trigger {
@@ -108,19 +102,21 @@
108 102
     .audio-output-preview {
109 103
         font-size: 14px;
110 104
         margin-top: 10px;
105
+
111 106
         a {
107
+            color: 4C9AFF;
112 108
             cursor: pointer;
113 109
             text-decoration: none;
114 110
         }
115 111
     }
116 112
 
117 113
     .audio-input-preview {
118
-        background: #f4f5f7;
114
+        background: #7b7b7b;
119 115
         border-radius: 5px;
120 116
         height: 6px;
121 117
 
122 118
         .audio-input-preview-level {
123
-            background: #0052cc;
119
+            background: #4C9AFF;
124 120
             border-radius: 5px;
125 121
             height: 100%;
126 122
             -webkit-transition: width .1s ease-in-out;

+ 0
- 4
css/modals/speaker_stats/_speaker_stats.scss View File

@@ -42,10 +42,6 @@
42 42
         width: 55%;
43 43
     }
44 44
 
45
-    .speaker-stats-item:nth-child(even) {
46
-        background: whitesmoke;
47
-    }
48
-
49 45
     .speaker-stats-item__name,
50 46
     .speaker-stats-item__time {
51 47
         overflow: hidden;

+ 10
- 10
css/themes/_light.scss View File

@@ -14,11 +14,11 @@ $sliderThumbBackground: #3572b0;
14 14
 /**
15 15
 * Buttons
16 16
 */
17
-$buttonBackground: #f5f5f5;
18
-$buttonHoverBackground: #e9e9e9;
19
-$buttonBorder: #ccc;
20
-$buttonHoverBorder: #999;
21
-$buttonColor: #333;
17
+$buttonBackground: #44A5FF;
18
+$buttonHoverBackground: #2c4062;
19
+$buttonBorder: transparent;
20
+$buttonHoverBorder: transparent;
21
+$buttonColor: #eceef1;
22 22
 
23 23
 $buttonLightBackground: #f5f5f5;
24 24
 $buttonLightHoverBackground: #e9e9e9;
@@ -47,10 +47,10 @@ $reloadProgressBarBg: #0074E0;
47 47
 /**
48 48
  * Dialog colors
49 49
  **/
50
-$auiDialogColor: #333;
51
-$auiDialogBg: #f5f5f5;
52
-$auiDialogContentBg: $baseLight;
53
-$auiBorderColor: #ccc;
50
+$auiDialogColor: #eceef1;
51
+$auiDialogBg: #253858;
52
+$auiDialogContentBg: #344563;
53
+$auiBorderColor: #253858;
54 54
 $dialogTitleFontWeight: 400;
55 55
 $dialogErrorText: #344563;
56 56
 
@@ -58,7 +58,7 @@ $dialogErrorText: #344563;
58 58
 * Inlay colors
59 59
 **/
60 60
 $inlayColorBg: lighten($defaultBackground, 20%);
61
-$inlayBorderColor: lighten($auiDialogContentBg, 10%);
61
+$inlayBorderColor: lighten($baseLight, 10%);
62 62
 $inlayIconBg: #000;
63 63
 $inlayIconColor: #fff;
64 64
 $inlayFilmstripOnlyColor: #474747;

+ 1
- 1
css/unsupported-browser/_no-mobile-app.scss View File

@@ -5,7 +5,7 @@
5 5
     width: auto;
6 6
 
7 7
     &__title {
8
-        border-bottom: 1px solid $auiBorderColor;
8
+        border-bottom: 1px solid $inlayBorderColor;
9 9
         color: $unsupportedBrowserTitleColor;
10 10
         font-weight: 400;
11 11
         letter-spacing: 0.5px;

+ 451
- 102
package-lock.json View File

@@ -4,28 +4,25 @@
4 4
   "lockfileVersion": 1,
5 5
   "requires": true,
6 6
   "dependencies": {
7
+    "@atlaskit/analytics-next": {
8
+      "version": "1.1.3",
9
+      "resolved": "https://registry.npmjs.org/@atlaskit/analytics-next/-/analytics-next-1.1.3.tgz",
10
+      "integrity": "sha512-1r9kU2ZbleLCEpJhoPoor/IBbyRue22sutT/+5b8PY43xRgN4HzYT+lWBJRI9fWpG9yJJXLnr9uAjO8LJUKrCg==",
11
+      "requires": {
12
+        "prop-types": "15.6.0"
13
+      }
14
+    },
7 15
     "@atlaskit/avatar": {
8 16
       "version": "8.0.5",
9 17
       "resolved": "https://registry.npmjs.org/@atlaskit/avatar/-/avatar-8.0.5.tgz",
10 18
       "integrity": "sha1-mJ4NkoR7N4yphKI+oHWY9jUhP/I=",
11 19
       "requires": {
12 20
         "@atlaskit/dropdown-menu": "3.10.2",
13
-        "@atlaskit/theme": "2.2.0",
14
-        "@atlaskit/util-shared-styles": "2.10.6",
15
-        "babel-runtime": "6.26.0",
16
-        "prop-types": "15.6.0",
17
-        "styled-components": "1.3.0"
18
-      }
19
-    },
20
-    "@atlaskit/blanket": {
21
-      "version": "2.4.3",
22
-      "resolved": "https://registry.npmjs.org/@atlaskit/blanket/-/blanket-2.4.3.tgz",
23
-      "integrity": "sha1-5kJGkzk+FxcZ1z8MDiw4OnqkzYA=",
24
-      "requires": {
21
+        "@atlaskit/theme": "2.4.0",
25 22
         "@atlaskit/util-shared-styles": "2.10.6",
26 23
         "babel-runtime": "6.26.0",
27 24
         "prop-types": "15.6.0",
28
-        "styled-components": "1.3.0"
25
+        "styled-components": "1.4.6"
29 26
       }
30 27
     },
31 28
     "@atlaskit/button": {
@@ -33,11 +30,11 @@
33 30
       "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-5.4.2.tgz",
34 31
       "integrity": "sha1-CSu+/KR+fPJJBQzRu9/E18o0KYQ=",
35 32
       "requires": {
36
-        "@atlaskit/theme": "2.2.0",
33
+        "@atlaskit/theme": "2.4.0",
37 34
         "babel-runtime": "6.26.0",
38 35
         "classnames": "2.2.5",
39 36
         "prop-types": "15.6.0",
40
-        "styled-components": "1.3.0"
37
+        "styled-components": "1.4.6"
41 38
       }
42 39
     },
43 40
     "@atlaskit/dropdown-menu": {
@@ -93,7 +90,7 @@
93 90
         "@atlaskit/item": "4.2.11",
94 91
         "@atlaskit/layer": "2.7.2",
95 92
         "@atlaskit/spinner": "4.0.0",
96
-        "@atlaskit/theme": "2.2.0",
93
+        "@atlaskit/theme": "2.4.0",
97 94
         "@atlaskit/tooltip": "6.0.0",
98 95
         "babel-runtime": "6.26.0",
99 96
         "classnames": "2.2.5",
@@ -219,10 +216,159 @@
219 216
       "integrity": "sha1-pasqvkxDkjQXiTb2JYNHmaiZRQ0=",
220 217
       "requires": {
221 218
         "@atlaskit/field-base": "8.1.13",
222
-        "@atlaskit/theme": "2.2.0",
219
+        "@atlaskit/theme": "2.4.0",
223 220
         "babel-runtime": "6.26.0",
224 221
         "prop-types": "15.6.0",
225
-        "styled-components": "1.3.0"
222
+        "styled-components": "1.4.6"
223
+      }
224
+    },
225
+    "@atlaskit/field-text-area": {
226
+      "version": "1.2.0",
227
+      "resolved": "https://registry.npmjs.org/@atlaskit/field-text-area/-/field-text-area-1.2.0.tgz",
228
+      "integrity": "sha512-dLZk+KX8F8/nslTYAQEpf3iZnlhmey5uWhtoytBRax2aeBAHAt102E26C86B7Rw5r9JX81c7MuSZWW2pjbdY/Q==",
229
+      "requires": {
230
+        "@atlaskit/button": "6.6.3",
231
+        "@atlaskit/field-base": "8.2.1",
232
+        "@atlaskit/icon": "10.12.2",
233
+        "@atlaskit/theme": "2.4.0",
234
+        "@atlaskit/util-readme": "3.6.5",
235
+        "babel-runtime": "6.26.0",
236
+        "prop-types": "15.6.0",
237
+        "styled-components": "1.4.6"
238
+      },
239
+      "dependencies": {
240
+        "@atlaskit/button": {
241
+          "version": "6.6.3",
242
+          "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-6.6.3.tgz",
243
+          "integrity": "sha512-+NLQrWv6HeJPC32Q6o+3w59F3secYWPT+9AM9nblPOjvRXmIVosafkro8wncVzX07/nx7MnBIXtYJRE+Cv+9Vg==",
244
+          "requires": {
245
+            "@atlaskit/analytics-next": "1.1.3",
246
+            "@atlaskit/theme": "2.4.1",
247
+            "babel-runtime": "6.26.0",
248
+            "styled-components": "1.4.6"
249
+          },
250
+          "dependencies": {
251
+            "@atlaskit/theme": {
252
+              "version": "2.4.1",
253
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
254
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
255
+              "requires": {
256
+                "prop-types": "15.6.0",
257
+                "styled-components": "1.4.6"
258
+              }
259
+            }
260
+          }
261
+        },
262
+        "@atlaskit/field-base": {
263
+          "version": "8.2.1",
264
+          "resolved": "https://registry.npmjs.org/@atlaskit/field-base/-/field-base-8.2.1.tgz",
265
+          "integrity": "sha512-s18bwvmGug6sYZ6nuHLP33T2AWYZemteZCIaFPwlEKT4MkTXNX3KX9bYy8TRJmQo2+NC4uPVUUT2U8MeF4wBnQ==",
266
+          "requires": {
267
+            "@atlaskit/icon": "10.12.2",
268
+            "@atlaskit/inline-dialog": "5.3.2",
269
+            "@atlaskit/spinner": "4.2.1",
270
+            "@atlaskit/theme": "2.4.1",
271
+            "babel-runtime": "6.26.0",
272
+            "styled-components": "1.4.6"
273
+          },
274
+          "dependencies": {
275
+            "@atlaskit/theme": {
276
+              "version": "2.4.1",
277
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
278
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
279
+              "requires": {
280
+                "prop-types": "15.6.0",
281
+                "styled-components": "1.4.6"
282
+              }
283
+            }
284
+          }
285
+        },
286
+        "@atlaskit/icon": {
287
+          "version": "10.12.2",
288
+          "resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-10.12.2.tgz",
289
+          "integrity": "sha512-OGNCVg8CdyaF/pD6DyhSaiK2pfb5R0jTWezlKCeKNXpmNiLUF4/B5MkOJFBMAHZc1A3EpBr9YNqH/uhJvG9G/Q==",
290
+          "requires": {
291
+            "@atlaskit/theme": "2.4.1",
292
+            "babel-runtime": "6.26.0",
293
+            "styled-components": "1.4.6",
294
+            "uuid": "3.1.0"
295
+          },
296
+          "dependencies": {
297
+            "@atlaskit/theme": {
298
+              "version": "2.4.1",
299
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
300
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
301
+              "requires": {
302
+                "prop-types": "15.6.0",
303
+                "styled-components": "1.4.6"
304
+              }
305
+            }
306
+          }
307
+        },
308
+        "@atlaskit/inline-dialog": {
309
+          "version": "5.3.2",
310
+          "resolved": "https://registry.npmjs.org/@atlaskit/inline-dialog/-/inline-dialog-5.3.2.tgz",
311
+          "integrity": "sha512-FUZZBi9x6Cr1bpd/f00Q262wLlTfl0Sl7PJUQLoHxy0u7Zg9lBLrUEoxuGh0OlOlqvQA99lJK23igZYOXDe9xA==",
312
+          "requires": {
313
+            "@atlaskit/layer": "2.9.1",
314
+            "@atlaskit/theme": "2.4.1",
315
+            "styled-components": "1.4.6"
316
+          },
317
+          "dependencies": {
318
+            "@atlaskit/theme": {
319
+              "version": "2.4.1",
320
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
321
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
322
+              "requires": {
323
+                "prop-types": "15.6.0",
324
+                "styled-components": "1.4.6"
325
+              }
326
+            }
327
+          }
328
+        },
329
+        "@atlaskit/layer": {
330
+          "version": "2.9.1",
331
+          "resolved": "https://registry.npmjs.org/@atlaskit/layer/-/layer-2.9.1.tgz",
332
+          "integrity": "sha512-nyIVGeS2OhuGR5gIMTYUfRmCG8z/9KMgUzTpbpsB70sH6+d4KSFhfkz+KhKNIa8gvKI6zBc+3UBYSlUW1t1qmQ==",
333
+          "requires": {
334
+            "styled-components": "1.4.6"
335
+          }
336
+        },
337
+        "@atlaskit/spinner": {
338
+          "version": "4.2.1",
339
+          "resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-4.2.1.tgz",
340
+          "integrity": "sha512-PWJ3hFMl+7rls0vvwFtH6qOu9HKeIHQFtDvJ/+HykmhzIp1tQ+S5DQ+et4ciHfNSh2On2GNiLcZHwXahHvR5WA==",
341
+          "requires": {
342
+            "@atlaskit/theme": "2.4.1",
343
+            "babel-runtime": "6.26.0",
344
+            "react-transition-group": "2.2.1",
345
+            "styled-components": "1.4.6"
346
+          },
347
+          "dependencies": {
348
+            "@atlaskit/theme": {
349
+              "version": "2.4.1",
350
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
351
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
352
+              "requires": {
353
+                "prop-types": "15.6.0",
354
+                "styled-components": "1.4.6"
355
+              }
356
+            }
357
+          }
358
+        },
359
+        "react-transition-group": {
360
+          "version": "2.2.1",
361
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
362
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
363
+          "requires": {
364
+            "chain-function": "1.0.0",
365
+            "classnames": "2.2.5",
366
+            "dom-helpers": "3.3.1",
367
+            "loose-envify": "1.3.1",
368
+            "prop-types": "15.6.0",
369
+            "warning": "3.0.0"
370
+          }
371
+        }
226 372
       }
227 373
     },
228 374
     "@atlaskit/flag": {
@@ -232,12 +378,12 @@
232 378
       "requires": {
233 379
         "@atlaskit/button": "5.4.2",
234 380
         "@atlaskit/icon": "7.1.0",
235
-        "@atlaskit/theme": "2.2.0",
381
+        "@atlaskit/theme": "2.4.0",
236 382
         "@atlaskit/util-shared-styles": "2.10.6",
237 383
         "babel-runtime": "6.26.0",
238 384
         "prop-types": "15.6.0",
239 385
         "react-transition-group": "1.2.1",
240
-        "styled-components": "1.3.0"
386
+        "styled-components": "1.4.6"
241 387
       },
242 388
       "dependencies": {
243 389
         "@atlaskit/icon": {
@@ -247,7 +393,7 @@
247 393
           "requires": {
248 394
             "babel-runtime": "6.26.0",
249 395
             "prop-types": "15.6.0",
250
-            "styled-components": "1.3.0"
396
+            "styled-components": "1.4.6"
251 397
           }
252 398
         }
253 399
       }
@@ -259,7 +405,7 @@
259 405
       "requires": {
260 406
         "babel-runtime": "6.26.0",
261 407
         "prop-types": "15.6.0",
262
-        "styled-components": "1.3.0"
408
+        "styled-components": "1.4.6"
263 409
       }
264 410
     },
265 411
     "@atlaskit/inline-dialog": {
@@ -268,10 +414,10 @@
268 414
       "integrity": "sha1-xwPi9seo0M+nrcPXgJK0bE7ShkQ=",
269 415
       "requires": {
270 416
         "@atlaskit/layer": "2.7.2",
271
-        "@atlaskit/theme": "2.2.0",
417
+        "@atlaskit/theme": "2.4.0",
272 418
         "babel-runtime": "6.26.0",
273 419
         "prop-types": "15.6.0",
274
-        "styled-components": "1.3.0"
420
+        "styled-components": "1.4.6"
275 421
       }
276 422
     },
277 423
     "@atlaskit/inline-message": {
@@ -282,10 +428,10 @@
282 428
         "@atlaskit/button": "3.6.0",
283 429
         "@atlaskit/icon": "7.1.0",
284 430
         "@atlaskit/inline-dialog": "5.0.2",
285
-        "@atlaskit/theme": "2.2.0",
431
+        "@atlaskit/theme": "2.4.0",
286 432
         "babel-runtime": "6.26.0",
287 433
         "prop-types": "15.6.0",
288
-        "styled-components": "1.3.0"
434
+        "styled-components": "1.4.6"
289 435
       },
290 436
       "dependencies": {
291 437
         "@atlaskit/button": {
@@ -297,7 +443,7 @@
297 443
             "babel-runtime": "6.26.0",
298 444
             "classnames": "2.2.5",
299 445
             "prop-types": "15.6.0",
300
-            "styled-components": "1.3.0"
446
+            "styled-components": "1.4.6"
301 447
           }
302 448
         },
303 449
         "@atlaskit/icon": {
@@ -307,7 +453,7 @@
307 453
           "requires": {
308 454
             "babel-runtime": "6.26.0",
309 455
             "prop-types": "15.6.0",
310
-            "styled-components": "1.3.0"
456
+            "styled-components": "1.4.6"
311 457
           }
312 458
         }
313 459
       }
@@ -375,6 +521,33 @@
375 521
         }
376 522
       }
377 523
     },
524
+    "@atlaskit/layer-manager": {
525
+      "version": "2.8.0",
526
+      "resolved": "https://registry.npmjs.org/@atlaskit/layer-manager/-/layer-manager-2.8.0.tgz",
527
+      "integrity": "sha512-/o4c+zyF3nOeR3xJGFeUpOh8TUbcX293285Nvxcbo1F+knM7WA1JhE786XkTK05nZ2HCqK6zHKSlyIoKdJYtkw==",
528
+      "requires": {
529
+        "focusin": "2.0.0",
530
+        "prop-types": "15.6.0",
531
+        "react-transition-group": "2.2.1",
532
+        "styled-components": "1.4.6",
533
+        "tabbable": "1.1.2"
534
+      },
535
+      "dependencies": {
536
+        "react-transition-group": {
537
+          "version": "2.2.1",
538
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
539
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
540
+          "requires": {
541
+            "chain-function": "1.0.0",
542
+            "classnames": "2.2.5",
543
+            "dom-helpers": "3.3.1",
544
+            "loose-envify": "1.3.1",
545
+            "prop-types": "15.6.0",
546
+            "warning": "3.0.0"
547
+          }
548
+        }
549
+      }
550
+    },
378 551
     "@atlaskit/lozenge": {
379 552
       "version": "3.4.2",
380 553
       "resolved": "https://registry.npmjs.org/@atlaskit/lozenge/-/lozenge-3.4.2.tgz",
@@ -383,7 +556,7 @@
383 556
         "@atlaskit/util-shared-styles": "1.7.1",
384 557
         "babel-runtime": "6.26.0",
385 558
         "prop-types": "15.6.0",
386
-        "styled-components": "1.3.0"
559
+        "styled-components": "1.4.6"
387 560
       },
388 561
       "dependencies": {
389 562
         "@atlaskit/util-shared-styles": {
@@ -397,15 +570,100 @@
397 570
       }
398 571
     },
399 572
     "@atlaskit/modal-dialog": {
400
-      "version": "2.6.0",
401
-      "resolved": "https://registry.npmjs.org/@atlaskit/modal-dialog/-/modal-dialog-2.6.0.tgz",
402
-      "integrity": "sha1-gqXtcN8W5s6ttZHQDeYvTzx3jiE=",
403
-      "requires": {
404
-        "@atlaskit/blanket": "2.4.3",
405
-        "@atlaskit/util-shared-styles": "2.10.6",
406
-        "babel-runtime": "6.26.0",
573
+      "version": "3.4.0",
574
+      "resolved": "https://registry.npmjs.org/@atlaskit/modal-dialog/-/modal-dialog-3.4.0.tgz",
575
+      "integrity": "sha512-5KOZrwCanzXD3b9+kQYIS4tACAj/HjcwY+yLGY1SCxlDxj94uUNr+tTAznng3EKRf64UbqshrRQXBj8Fcol4sw==",
576
+      "requires": {
577
+        "@atlaskit/blanket": "4.1.1",
578
+        "@atlaskit/button": "6.6.3",
579
+        "@atlaskit/icon": "10.12.2",
580
+        "@atlaskit/layer-manager": "2.8.0",
581
+        "@atlaskit/theme": "2.4.0",
582
+        "focusin": "2.0.0",
407 583
         "prop-types": "15.6.0",
408
-        "styled-components": "1.3.0"
584
+        "raf-schd": "2.1.0",
585
+        "react-transition-group": "2.2.1",
586
+        "styled-components": "1.4.6",
587
+        "tabbable": "1.1.2"
588
+      },
589
+      "dependencies": {
590
+        "@atlaskit/blanket": {
591
+          "version": "4.1.1",
592
+          "resolved": "https://registry.npmjs.org/@atlaskit/blanket/-/blanket-4.1.1.tgz",
593
+          "integrity": "sha512-LPqRNVkR6+mI67EutF6iQIUARf1MWpjdVxeLaMJZOG/ej8u9dYIkoOOVeliXx/bx+4X5NfnKikeg34MB6VU5DQ==",
594
+          "requires": {
595
+            "@atlaskit/theme": "2.4.1",
596
+            "styled-components": "1.4.6"
597
+          },
598
+          "dependencies": {
599
+            "@atlaskit/theme": {
600
+              "version": "2.4.1",
601
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
602
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
603
+              "requires": {
604
+                "prop-types": "15.6.0",
605
+                "styled-components": "1.4.6"
606
+              }
607
+            }
608
+          }
609
+        },
610
+        "@atlaskit/button": {
611
+          "version": "6.6.3",
612
+          "resolved": "https://registry.npmjs.org/@atlaskit/button/-/button-6.6.3.tgz",
613
+          "integrity": "sha512-+NLQrWv6HeJPC32Q6o+3w59F3secYWPT+9AM9nblPOjvRXmIVosafkro8wncVzX07/nx7MnBIXtYJRE+Cv+9Vg==",
614
+          "requires": {
615
+            "@atlaskit/analytics-next": "1.1.3",
616
+            "@atlaskit/theme": "2.4.1",
617
+            "babel-runtime": "6.26.0",
618
+            "styled-components": "1.4.6"
619
+          },
620
+          "dependencies": {
621
+            "@atlaskit/theme": {
622
+              "version": "2.4.1",
623
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
624
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
625
+              "requires": {
626
+                "prop-types": "15.6.0",
627
+                "styled-components": "1.4.6"
628
+              }
629
+            }
630
+          }
631
+        },
632
+        "@atlaskit/icon": {
633
+          "version": "10.12.2",
634
+          "resolved": "https://registry.npmjs.org/@atlaskit/icon/-/icon-10.12.2.tgz",
635
+          "integrity": "sha512-OGNCVg8CdyaF/pD6DyhSaiK2pfb5R0jTWezlKCeKNXpmNiLUF4/B5MkOJFBMAHZc1A3EpBr9YNqH/uhJvG9G/Q==",
636
+          "requires": {
637
+            "@atlaskit/theme": "2.4.1",
638
+            "babel-runtime": "6.26.0",
639
+            "styled-components": "1.4.6",
640
+            "uuid": "3.1.0"
641
+          },
642
+          "dependencies": {
643
+            "@atlaskit/theme": {
644
+              "version": "2.4.1",
645
+              "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.1.tgz",
646
+              "integrity": "sha512-I4AMg+asUUwaruwsWDaUzub2zhEKYHhZ5tRlaNQ+8dhATpO1RSu6g9FSgwnAZ20M4Cf+YITVND/wyNpAON5HCQ==",
647
+              "requires": {
648
+                "prop-types": "15.6.0",
649
+                "styled-components": "1.4.6"
650
+              }
651
+            }
652
+          }
653
+        },
654
+        "react-transition-group": {
655
+          "version": "2.2.1",
656
+          "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-2.2.1.tgz",
657
+          "integrity": "sha512-q54UBM22bs/CekG8r3+vi9TugSqh0t7qcEVycaRc9M0p0aCEu+h6rp/RFiW7fHfgd1IKpd9oILFTl5QK+FpiPA==",
658
+          "requires": {
659
+            "chain-function": "1.0.0",
660
+            "classnames": "2.2.5",
661
+            "dom-helpers": "3.3.1",
662
+            "loose-envify": "1.3.1",
663
+            "prop-types": "15.6.0",
664
+            "warning": "3.0.0"
665
+          }
666
+        }
409 667
       }
410 668
     },
411 669
     "@atlaskit/multi-select": {
@@ -419,12 +677,12 @@
419 677
         "@atlaskit/spinner": "3.4.2",
420 678
         "@atlaskit/tag": "3.1.3",
421 679
         "@atlaskit/tag-group": "3.5.3",
422
-        "@atlaskit/theme": "2.2.0",
680
+        "@atlaskit/theme": "2.4.0",
423 681
         "@atlaskit/util-shared-styles": "2.10.6",
424 682
         "babel-runtime": "6.26.0",
425 683
         "classnames": "2.2.5",
426 684
         "prop-types": "15.6.0",
427
-        "styled-components": "1.3.0",
685
+        "styled-components": "1.4.6",
428 686
         "uid": "0.0.2"
429 687
       },
430 688
       "dependencies": {
@@ -437,7 +695,7 @@
437 695
             "classnames": "2.2.5",
438 696
             "create-error": "0.3.1",
439 697
             "prop-types": "15.6.0",
440
-            "styled-components": "1.3.0"
698
+            "styled-components": "1.4.6"
441 699
           }
442 700
         },
443 701
         "@atlaskit/spinner": {
@@ -450,7 +708,7 @@
450 708
             "prop-types": "15.6.0",
451 709
             "prop-types-extra": "1.0.1",
452 710
             "react-transition-group": "1.2.1",
453
-            "styled-components": "1.3.0"
711
+            "styled-components": "1.4.6"
454 712
           }
455 713
         }
456 714
       }
@@ -460,12 +718,12 @@
460 718
       "resolved": "https://registry.npmjs.org/@atlaskit/spinner/-/spinner-4.0.0.tgz",
461 719
       "integrity": "sha1-u8MaEjYPwzNhegZsMPhmRmJoOhA=",
462 720
       "requires": {
463
-        "@atlaskit/theme": "2.2.0",
721
+        "@atlaskit/theme": "2.4.0",
464 722
         "babel-runtime": "6.26.0",
465 723
         "prop-types": "15.6.0",
466 724
         "prop-types-extra": "1.0.1",
467 725
         "react-transition-group": "1.2.1",
468
-        "styled-components": "1.3.0"
726
+        "styled-components": "1.4.6"
469 727
       }
470 728
     },
471 729
     "@atlaskit/tabs": {
@@ -473,14 +731,14 @@
473 731
       "resolved": "https://registry.npmjs.org/@atlaskit/tabs/-/tabs-4.0.1.tgz",
474 732
       "integrity": "sha1-vM2WQ8nSO9kR+0GCK4U1oYJHHM8=",
475 733
       "requires": {
476
-        "@atlaskit/theme": "2.2.0",
734
+        "@atlaskit/theme": "2.4.0",
477 735
         "@atlaskit/util-shared-styles": "1.7.1",
478 736
         "classnames": "2.2.5",
479 737
         "css-element-queries": "0.3.2",
480 738
         "debounce": "1.1.0",
481 739
         "keycode": "2.1.9",
482 740
         "prop-types": "15.6.0",
483
-        "styled-components": "1.3.0"
741
+        "styled-components": "1.4.6"
484 742
       },
485 743
       "dependencies": {
486 744
         "@atlaskit/util-shared-styles": {
@@ -571,13 +829,12 @@
571 829
       }
572 830
     },
573 831
     "@atlaskit/theme": {
574
-      "version": "2.2.0",
575
-      "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.2.0.tgz",
576
-      "integrity": "sha1-uHNsuA3U7TnizAkPLbFdz4eEgBo=",
832
+      "version": "2.4.0",
833
+      "resolved": "https://registry.npmjs.org/@atlaskit/theme/-/theme-2.4.0.tgz",
834
+      "integrity": "sha512-JORaZ4/9Bm8V2qsSC4O8Zn6aTHM0MJA4nVJPzxlvFJlz0CX6GTQ+CJiPPssJGidBR8Y78j0LvNXASH5ijLBChw==",
577 835
       "requires": {
578
-        "@atlaskit/util-shared-styles": "2.10.6",
579 836
         "prop-types": "15.6.0",
580
-        "styled-components": "1.3.0"
837
+        "styled-components": "1.4.6"
581 838
       }
582 839
     },
583 840
     "@atlaskit/tooltip": {
@@ -586,11 +843,11 @@
586 843
       "integrity": "sha1-rn3xMCmvO1iZqcuKNPPIT8K7mpc=",
587 844
       "requires": {
588 845
         "@atlaskit/layer": "2.7.2",
589
-        "@atlaskit/theme": "2.2.0",
846
+        "@atlaskit/theme": "2.4.0",
590 847
         "@atlaskit/util-shared-styles": "2.10.6",
591 848
         "babel-runtime": "6.26.0",
592 849
         "prop-types": "15.6.0",
593
-        "styled-components": "1.3.0"
850
+        "styled-components": "1.4.6"
594 851
       }
595 852
     },
596 853
     "@atlaskit/util-common": {
@@ -603,6 +860,19 @@
603 860
         "keycode": "2.1.9"
604 861
       }
605 862
     },
863
+    "@atlaskit/util-readme": {
864
+      "version": "3.6.5",
865
+      "resolved": "https://registry.npmjs.org/@atlaskit/util-readme/-/util-readme-3.6.5.tgz",
866
+      "integrity": "sha1-M6jgyQEI9liaYtiZdOH30J59zuc=",
867
+      "requires": {
868
+        "@atlaskit/util-shared-styles": "2.10.6",
869
+        "decamelize": "1.2.0",
870
+        "prop-types": "15.6.0",
871
+        "react-docgen": "2.20.1",
872
+        "react-syntax-highlighter": "3.0.2",
873
+        "styled-components": "1.4.6"
874
+      }
875
+    },
606 876
     "@atlaskit/util-shared-styles": {
607 877
       "version": "2.10.6",
608 878
       "resolved": "https://registry.npmjs.org/@atlaskit/util-shared-styles/-/util-shared-styles-2.10.6.tgz",
@@ -1107,6 +1377,11 @@
1107 1377
       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
1108 1378
       "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
1109 1379
     },
1380
+    "ast-types": {
1381
+      "version": "0.10.1",
1382
+      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.10.1.tgz",
1383
+      "integrity": "sha512-UY7+9DPzlJ9VM8eY0b2TUZcZvF+1pO0hzMtAyjBYKhOmnvRlqYNYnWdtsMj0V16CGaMlpL0G1jnLbLo4AyotuQ=="
1384
+    },
1110 1385
     "async": {
1111 1386
       "version": "0.9.0",
1112 1387
       "resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz",
@@ -2194,7 +2469,7 @@
2194 2469
     "babylon": {
2195 2470
       "version": "6.18.0",
2196 2471
       "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
2197
-      "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ=="
2472
+      "integrity": "sha1-ry87iPpvXB5MY00aD46sT1WzleM="
2198 2473
     },
2199 2474
     "balanced-match": {
2200 2475
       "version": "1.0.0",
@@ -3342,14 +3617,6 @@
3342 3617
       "resolved": "https://registry.npmjs.org/css-element-queries/-/css-element-queries-0.3.2.tgz",
3343 3618
       "integrity": "sha1-U12AiRs68hOV0AXxmQX+UVS1zP8="
3344 3619
     },
3345
-    "css-in-js-utils": {
3346
-      "version": "2.0.0",
3347
-      "resolved": "https://registry.npmjs.org/css-in-js-utils/-/css-in-js-utils-2.0.0.tgz",
3348
-      "integrity": "sha512-yuWmPMD9FLi50Xf3k8W8oO3WM1eVnxEGCldCLyfusQ+CgivFk0s23yst4ooW6tfxMuSa03S6uUEga9UhX6GRrA==",
3349
-      "requires": {
3350
-        "hyphenate-style-name": "1.0.2"
3351
-      }
3352
-    },
3353 3620
     "css-loader": {
3354 3621
       "version": "0.28.7",
3355 3622
       "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.7.tgz",
@@ -3675,7 +3942,6 @@
3675 3942
       "version": "2.1.0",
3676 3943
       "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
3677 3944
       "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
3678
-      "dev": true,
3679 3945
       "requires": {
3680 3946
         "esutils": "2.0.2"
3681 3947
       }
@@ -4128,7 +4394,7 @@
4128 4394
         "esprima": {
4129 4395
           "version": "4.0.0",
4130 4396
           "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
4131
-          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==",
4397
+          "integrity": "sha1-RJnt3NERDgshi6zy+n9/WfVcqAQ=",
4132 4398
           "dev": true
4133 4399
         },
4134 4400
         "globals": {
@@ -5017,6 +5283,11 @@
5017 5283
         }
5018 5284
       }
5019 5285
     },
5286
+    "focusin": {
5287
+      "version": "2.0.0",
5288
+      "resolved": "https://registry.npmjs.org/focusin/-/focusin-2.0.0.tgz",
5289
+      "integrity": "sha1-WMARgN+xlJ8D493u4GNzn8M7b/w="
5290
+    },
5020 5291
     "for-in": {
5021 5292
       "version": "1.0.2",
5022 5293
       "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
@@ -5995,29 +6266,6 @@
5995 6266
       "integrity": "sha1-nMj/ABF3lXoRcmq1CNQVu4Cxi88=",
5996 6267
       "dev": true
5997 6268
     },
5998
-    "glamor": {
5999
-      "version": "2.20.40",
6000
-      "resolved": "https://registry.npmjs.org/glamor/-/glamor-2.20.40.tgz",
6001
-      "integrity": "sha512-DNXCd+c14N9QF8aAKrfl4xakPk5FdcFwmH7sD0qnC0Pr7xoZ5W9yovhUrY/dJc3psfGGXC58vqQyRtuskyUJxA==",
6002
-      "requires": {
6003
-        "fbjs": "0.8.16",
6004
-        "inline-style-prefixer": "3.0.8",
6005
-        "object-assign": "4.1.1",
6006
-        "prop-types": "15.6.0",
6007
-        "through": "2.3.8"
6008
-      },
6009
-      "dependencies": {
6010
-        "inline-style-prefixer": {
6011
-          "version": "3.0.8",
6012
-          "resolved": "https://registry.npmjs.org/inline-style-prefixer/-/inline-style-prefixer-3.0.8.tgz",
6013
-          "integrity": "sha1-hVG45bTVcyROZqNLBPfTIHaitTQ=",
6014
-          "requires": {
6015
-            "bowser": "1.9.2",
6016
-            "css-in-js-utils": "2.0.0"
6017
-          }
6018
-        }
6019
-      }
6020
-    },
6021 6269
     "glob": {
6022 6270
       "version": "7.1.2",
6023 6271
       "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
@@ -6236,6 +6484,11 @@
6236 6484
         "sntp": "2.1.0"
6237 6485
       }
6238 6486
     },
6487
+    "highlight.js": {
6488
+      "version": "9.8.0",
6489
+      "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.8.0.tgz",
6490
+      "integrity": "sha1-OO7vQM1F6t2+yMnlI4+3p4OjtoU="
6491
+    },
6239 6492
     "hmac-drbg": {
6240 6493
       "version": "1.0.1",
6241 6494
       "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -6496,7 +6749,7 @@
6496 6749
         "source-map": {
6497 6750
           "version": "0.6.1",
6498 6751
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
6499
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
6752
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
6500 6753
           "dev": true
6501 6754
         },
6502 6755
         "supports-color": {
@@ -7467,6 +7720,21 @@
7467 7720
         "signal-exit": "3.0.2"
7468 7721
       }
7469 7722
     },
7723
+    "lowlight": {
7724
+      "version": "1.9.1",
7725
+      "resolved": "https://registry.npmjs.org/lowlight/-/lowlight-1.9.1.tgz",
7726
+      "integrity": "sha512-CpDhyVhI+xHjruiGvH2F/Fr5q5aTn5A6Oyh7MI+4oI8G0A1E7p9a3Zqv9Hzx9WByK8gAiNifEueAXz+cA2xdEA==",
7727
+      "requires": {
7728
+        "highlight.js": "9.12.0"
7729
+      },
7730
+      "dependencies": {
7731
+        "highlight.js": {
7732
+          "version": "9.12.0",
7733
+          "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.12.0.tgz",
7734
+          "integrity": "sha1-5tnb5Xy+/mB1HwKvM2GVhwyQwB4="
7735
+        }
7736
+      }
7737
+    },
7470 7738
     "lru-cache": {
7471 7739
       "version": "4.1.1",
7472 7740
       "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.1.tgz",
@@ -7811,7 +8079,7 @@
7811 8079
         "async": {
7812 8080
           "version": "2.6.0",
7813 8081
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
7814
-          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
8082
+          "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
7815 8083
           "requires": {
7816 8084
             "lodash": "4.17.4"
7817 8085
           }
@@ -8071,6 +8339,14 @@
8071 8339
       "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.3.tgz",
8072 8340
       "integrity": "sha1-Jp1cR2gQ7JLtvntsLygxY4T5p+g="
8073 8341
     },
8342
+    "node-dir": {
8343
+      "version": "0.1.17",
8344
+      "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz",
8345
+      "integrity": "sha1-X1Zl2TNRM1yqvvjxxVRRbPXx5OU=",
8346
+      "requires": {
8347
+        "minimatch": "3.0.4"
8348
+      }
8349
+    },
8074 8350
     "node-fetch": {
8075 8351
       "version": "1.7.3",
8076 8352
       "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
@@ -9087,7 +9363,7 @@
9087 9363
         "source-map": {
9088 9364
           "version": "0.6.1",
9089 9365
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9090
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9366
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9091 9367
           "dev": true
9092 9368
         },
9093 9369
         "supports-color": {
@@ -9151,7 +9427,7 @@
9151 9427
         "source-map": {
9152 9428
           "version": "0.6.1",
9153 9429
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9154
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9430
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9155 9431
           "dev": true
9156 9432
         },
9157 9433
         "supports-color": {
@@ -9215,7 +9491,7 @@
9215 9491
         "source-map": {
9216 9492
           "version": "0.6.1",
9217 9493
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9218
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9494
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9219 9495
           "dev": true
9220 9496
         },
9221 9497
         "supports-color": {
@@ -9279,7 +9555,7 @@
9279 9555
         "source-map": {
9280 9556
           "version": "0.6.1",
9281 9557
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
9282
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
9558
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
9283 9559
           "dev": true
9284 9560
         },
9285 9561
         "supports-color": {
@@ -9601,6 +9877,11 @@
9601 9877
       "integrity": "sha1-DPf4T5Rj/wrlHExLFC2VvjdyTZw=",
9602 9878
       "dev": true
9603 9879
     },
9880
+    "raf-schd": {
9881
+      "version": "2.1.0",
9882
+      "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-2.1.0.tgz",
9883
+      "integrity": "sha512-6OXM6ObuPnyqjiHVz/XaFTm/yEYC1PXYMt/UFCwMvLQK1Wqlc2f7eU4+8JbgjfZLiQNQU9miFEGPnFUEMEx2hA=="
9884
+    },
9604 9885
     "railroad-diagrams": {
9605 9886
       "version": "1.0.0",
9606 9887
       "resolved": "https://registry.npmjs.org/railroad-diagrams/-/railroad-diagrams-1.0.0.tgz",
@@ -9754,6 +10035,35 @@
9754 10035
         }
9755 10036
       }
9756 10037
     },
10038
+    "react-docgen": {
10039
+      "version": "2.20.1",
10040
+      "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-2.20.1.tgz",
10041
+      "integrity": "sha512-NYmD8nDPMWpIpqWqhSZjQ3P5iQml55IMkDG0ZInyWP7JD2ljaNhrxNWZnXPrOezUu6bYlcZUCxjw19s7zhE2uw==",
10042
+      "requires": {
10043
+        "async": "2.6.0",
10044
+        "babel-runtime": "6.26.0",
10045
+        "babylon": "5.8.38",
10046
+        "commander": "2.14.1",
10047
+        "doctrine": "2.1.0",
10048
+        "node-dir": "0.1.17",
10049
+        "recast": "0.12.9"
10050
+      },
10051
+      "dependencies": {
10052
+        "async": {
10053
+          "version": "2.6.0",
10054
+          "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
10055
+          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
10056
+          "requires": {
10057
+            "lodash": "4.17.4"
10058
+          }
10059
+        },
10060
+        "babylon": {
10061
+          "version": "5.8.38",
10062
+          "resolved": "https://registry.npmjs.org/babylon/-/babylon-5.8.38.tgz",
10063
+          "integrity": "sha1-7JsSCxG/bM1Bc6GL8hfmC3mFn/0="
10064
+        }
10065
+      }
10066
+    },
9757 10067
     "react-dom": {
9758 10068
       "version": "16.2.0",
9759 10069
       "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.2.0.tgz",
@@ -9984,6 +10294,16 @@
9984 10294
         }
9985 10295
       }
9986 10296
     },
10297
+    "react-syntax-highlighter": {
10298
+      "version": "3.0.2",
10299
+      "resolved": "https://registry.npmjs.org/react-syntax-highlighter/-/react-syntax-highlighter-3.0.2.tgz",
10300
+      "integrity": "sha1-d8VWOFu/cdwul0upa/3Q7e9cMZI=",
10301
+      "requires": {
10302
+        "babel-runtime": "6.26.0",
10303
+        "highlight.js": "9.8.0",
10304
+        "lowlight": "1.9.1"
10305
+      }
10306
+    },
9987 10307
     "react-timer-mixin": {
9988 10308
       "version": "0.13.3",
9989 10309
       "resolved": "https://registry.npmjs.org/react-timer-mixin/-/react-timer-mixin-0.13.3.tgz",
@@ -10084,6 +10404,30 @@
10084 10404
         }
10085 10405
       }
10086 10406
     },
10407
+    "recast": {
10408
+      "version": "0.12.9",
10409
+      "resolved": "https://registry.npmjs.org/recast/-/recast-0.12.9.tgz",
10410
+      "integrity": "sha512-y7ANxCWmMW8xLOaiopiRDlyjQ9ajKRENBH+2wjntIbk3A6ZR1+BLQttkmSHMY7Arl+AAZFwJ10grg2T6f1WI8A==",
10411
+      "requires": {
10412
+        "ast-types": "0.10.1",
10413
+        "core-js": "2.5.3",
10414
+        "esprima": "4.0.0",
10415
+        "private": "0.1.8",
10416
+        "source-map": "0.6.1"
10417
+      },
10418
+      "dependencies": {
10419
+        "esprima": {
10420
+          "version": "4.0.0",
10421
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz",
10422
+          "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw=="
10423
+        },
10424
+        "source-map": {
10425
+          "version": "0.6.1",
10426
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
10427
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
10428
+        }
10429
+      }
10430
+    },
10087 10431
     "redent": {
10088 10432
       "version": "1.0.0",
10089 10433
       "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
@@ -11341,17 +11685,17 @@
11341 11685
       }
11342 11686
     },
11343 11687
     "styled-components": {
11344
-      "version": "1.3.0",
11345
-      "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-1.3.0.tgz",
11346
-      "integrity": "sha1-BxG1qC/nhLRY/W5QVLhCdRxUOms=",
11688
+      "version": "1.4.6",
11689
+      "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-1.4.6.tgz",
11690
+      "integrity": "sha1-WPMuimq1EPsUgekB6DjgR38UiwY=",
11347 11691
       "requires": {
11348 11692
         "buffer": "5.1.0",
11349 11693
         "css-to-react-native": "1.0.6",
11350 11694
         "fbjs": "0.8.16",
11351
-        "glamor": "2.20.40",
11352 11695
         "inline-style-prefixer": "2.0.5",
11353 11696
         "is-function": "1.0.1",
11354 11697
         "is-plain-object": "2.0.4",
11698
+        "prop-types": "15.6.0",
11355 11699
         "supports-color": "3.2.3"
11356 11700
       }
11357 11701
     },
@@ -11397,6 +11741,11 @@
11397 11741
       "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
11398 11742
       "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ=="
11399 11743
     },
11744
+    "tabbable": {
11745
+      "version": "1.1.2",
11746
+      "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-1.1.2.tgz",
11747
+      "integrity": "sha512-77oqsKEPrxIwgRcXUwipkj9W5ItO97L6eUT1Ar7vh+El16Zm4M6V+YU1cbipHEa6q0Yjw8O3Hoh8oRgatV5s7A=="
11748
+    },
11400 11749
     "table": {
11401 11750
       "version": "4.0.2",
11402 11751
       "resolved": "https://registry.npmjs.org/table/-/table-4.0.2.tgz",
@@ -11668,7 +12017,7 @@
11668 12017
         "source-map": {
11669 12018
           "version": "0.6.1",
11670 12019
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
11671
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
12020
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
11672 12021
         }
11673 12022
       }
11674 12023
     },
@@ -11682,7 +12031,7 @@
11682 12031
     "uglifyjs-webpack-plugin": {
11683 12032
       "version": "1.2.2",
11684 12033
       "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.2.2.tgz",
11685
-      "integrity": "sha512-CG/NvzXfemUAm5Y4Guh5eEaJYHtkG7kKNpXEJHp9QpxsFVB5/qKvYWoMaq4sa99ccZ0hM3MK8vQV9XPZB4357A==",
12034
+      "integrity": "sha1-51FtQ2ev23FcOEeEHrRvlMRcork=",
11686 12035
       "dev": true,
11687 12036
       "requires": {
11688 12037
         "cacache": "10.0.4",
@@ -11715,7 +12064,7 @@
11715 12064
         "schema-utils": {
11716 12065
           "version": "0.4.5",
11717 12066
           "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-0.4.5.tgz",
11718
-          "integrity": "sha512-yYrjb9TX2k/J1Y5UNy3KYdZq10xhYcF8nMpAW6o3hy6Q8WSIEf9lJHG/ePnOBfziPM3fvQwfOwa13U/Fh8qTfA==",
12067
+          "integrity": "sha1-IYNvBgiqwXt4+ePiTa/xSlyhOj4=",
11719 12068
           "dev": true,
11720 12069
           "requires": {
11721 12070
             "ajv": "6.2.1",
@@ -11725,7 +12074,7 @@
11725 12074
         "source-map": {
11726 12075
           "version": "0.6.1",
11727 12076
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
11728
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
12077
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
11729 12078
           "dev": true
11730 12079
         }
11731 12080
       }
@@ -12011,7 +12360,7 @@
12011 12360
         "async": {
12012 12361
           "version": "2.6.0",
12013 12362
           "resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
12014
-          "integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
12363
+          "integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
12015 12364
           "dev": true,
12016 12365
           "requires": {
12017 12366
             "lodash": "4.17.4"
@@ -12460,7 +12809,7 @@
12460 12809
         "source-map": {
12461 12810
           "version": "0.6.1",
12462 12811
           "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
12463
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
12812
+          "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
12464 12813
           "dev": true
12465 12814
         }
12466 12815
       }

+ 5
- 3
package.json View File

@@ -20,16 +20,18 @@
20 20
     "@atlaskit/dropdown-menu": "3.10.2",
21 21
     "@atlaskit/droplist": "4.11.1",
22 22
     "@atlaskit/field-text": "4.0.1",
23
+    "@atlaskit/field-text-area": "1.2.0",
23 24
     "@atlaskit/flag": "6.1.0",
24 25
     "@atlaskit/icon": "10.0.0",
25 26
     "@atlaskit/inline-dialog": "5.0.2",
26 27
     "@atlaskit/inline-message": "3.0.1",
28
+    "@atlaskit/layer-manager": "2.8.0",
27 29
     "@atlaskit/lozenge": "3.4.2",
28
-    "@atlaskit/modal-dialog": "2.6.0",
30
+    "@atlaskit/modal-dialog": "3.4.0",
29 31
     "@atlaskit/multi-select": "7.1.3",
30 32
     "@atlaskit/spinner": "4.0.0",
31 33
     "@atlaskit/tabs": "4.0.1",
32
-    "@atlaskit/theme": "2.2.0",
34
+    "@atlaskit/theme": "2.4.0",
33 35
     "@atlaskit/tooltip": "6.0.0",
34 36
     "autosize": "1.18.13",
35 37
     "es6-iterator": "2.0.3",
@@ -71,7 +73,7 @@
71 73
     "redux-thunk": "2.2.0",
72 74
     "strophe.js": "github:jitsi/strophejs#1.2.14-1",
73 75
     "strophejs-plugin-disco": "0.0.2",
74
-    "styled-components": "1.3.0",
76
+    "styled-components": "1.4.6",
75 77
     "url-polyfill": "github:github/url-polyfill#39734186de44612bc5a16eb25f5407adcc5b2e7c",
76 78
     "uuid": "3.1.0",
77 79
     "xmldom": "0.1.27"

+ 132
- 131
react/features/base/dialog/components/StatelessDialog.web.js View File

@@ -1,9 +1,10 @@
1 1
 // @flow
2 2
 
3 3
 import Button, { ButtonGroup } from '@atlaskit/button';
4
-import ModalDialog from '@atlaskit/modal-dialog';
5
-import { AtlasKitThemeProvider } from '@atlaskit/theme';
4
+import { withContextFromProps } from '@atlaskit/layer-manager';
5
+import Modal, { ModalFooter } from '@atlaskit/modal-dialog';
6 6
 import _ from 'lodash';
7
+import PropTypes from 'prop-types';
7 8
 import React, { Component } from 'react';
8 9
 
9 10
 import { translate } from '../../i18n';
@@ -30,6 +31,8 @@ const OK_BUTTON_ID = 'modal-dialog-ok-button';
30 31
 type Props = {
31 32
     ...DialogProps,
32 33
 
34
+    i18n: Object,
35
+
33 36
     /**
34 37
      * Disables dismissing the dialog when the blanket is clicked. Enabled
35 38
      * by default.
@@ -57,10 +60,26 @@ type Props = {
57 60
     width: string
58 61
 };
59 62
 
63
+/**
64
+ * ContexTypes is used as a workaround for Atlaskit's modal being displayed
65
+ * outside of the normal App hierarchy, thereby losing context. ContextType
66
+ * is responsible for taking its props and passing them into children.
67
+ *
68
+ * @type {ReactElement}
69
+ */
70
+const ContextProvider = withContextFromProps({
71
+    i18n: PropTypes.object
72
+});
73
+
60 74
 /**
61 75
  * Web dialog that uses atlaskit modal-dialog to display dialogs.
62 76
  */
63 77
 class StatelessDialog extends Component<Props> {
78
+    /**
79
+     * The functional component to be used for rendering the modal footer.
80
+     */
81
+    _Footer: ?Function
82
+
64 83
     _dialogElement: ?HTMLElement;
65 84
 
66 85
     /**
@@ -78,30 +97,24 @@ class StatelessDialog extends Component<Props> {
78 97
         this._onKeyDown = this._onKeyDown.bind(this);
79 98
         this._onSubmit = this._onSubmit.bind(this);
80 99
         this._setDialogElement = this._setDialogElement.bind(this);
81
-    }
82 100
 
83
-    /**
84
-     * React Component method that executes once component is mounted.
85
-     *
86
-     * @inheritdoc
87
-     */
88
-    componentDidMount() {
89
-        this._updateButtonFocus();
101
+        this._Footer = this._createFooterConstructor(props);
90 102
     }
91 103
 
92 104
     /**
93
-     * React Component method that executes once component is updated.
105
+     * React Component method that executes before the component is updated.
94 106
      *
95
-     * @param {Object} prevProps - The previous properties, before the update.
107
+     * @inheritdoc
108
+     * @param {Object} nextProps - The next properties, before the update.
96 109
      * @returns {void}
97 110
      */
98
-    componentDidUpdate(prevProps) {
99
-        // if there is an update in any of the buttons enable/disable props
100
-        // update the focus if needed
101
-        if (prevProps.okDisabled !== this.props.okDisabled
102
-                || prevProps.cancelDisabled !== this.props.cancelDisabled
103
-                || prevProps.submitDisabled !== this.props.submitDisabled) {
104
-            this._updateButtonFocus();
111
+    componentWillUpdate(nextProps) {
112
+        // If button states have changed, update the Footer constructor function
113
+        // so buttons of the proper state are rendered.
114
+        if (nextProps.okDisabled !== this.props.okDisabled
115
+                || nextProps.cancelDisabled !== this.props.cancelDisabled
116
+                || nextProps.submitDisabled !== this.props.submitDisabled) {
117
+            this._Footer = this._createFooterConstructor(nextProps);
105 118
         }
106 119
     }
107 120
 
@@ -112,36 +125,86 @@ class StatelessDialog extends Component<Props> {
112 125
      * @returns {ReactElement}
113 126
      */
114 127
     render() {
115
-        return (
128
+        const {
129
+            children,
130
+            t /* The following fixes a flow error: */ = _.identity,
131
+            titleString,
132
+            titleKey,
133
+            width
134
+        } = this.props;
116 135
 
117
-            /**
118
-             * Enabled light theme for dialogs until all in-dialog components
119
-             * support dark theme.
120
-             */
121
-            <AtlasKitThemeProvider mode = 'light'>
122
-                <div
123
-                    onKeyDown = { this._onKeyDown }
124
-                    ref = { this._setDialogElement }>
125
-                    <ModalDialog
126
-                        footer = { this._renderFooter() }
127
-                        header = { this._renderHeader() }
128
-                        isOpen = { true }
129
-                        onDialogDismissed = { this._onDialogDismissed }
130
-                        width = { this.props.width || 'medium' }>
131
-                        <div>
132
-                            <form
133
-                                className = 'modal-dialog-form'
134
-                                id = 'modal-dialog-form'
135
-                                onSubmit = { this._onSubmit }>
136
-                                { this.props.children }
137
-                            </form>
138
-                        </div>
139
-                    </ModalDialog>
140
-                </div>
141
-            </AtlasKitThemeProvider>
136
+        return (
137
+            <Modal
138
+                autoFocus = { true }
139
+                footer = { this._Footer }
140
+                heading = { titleString || t(titleKey) }
141
+                i18n = { this.props.i18n }
142
+                onClose = { this._onDialogDismissed }
143
+                onDialogDismissed = { this._onDialogDismissed }
144
+                shouldCloseOnEscapePress = { true }
145
+                width = { width || 'medium' }>
146
+                {
147
+
148
+                    /**
149
+                     * Wrapping the contents of {@link Modal} with
150
+                     * {@link ContextProvider} is a workaround for the
151
+                     * i18n context becoming undefined as modal gets rendered
152
+                     * outside of the normal react app context.
153
+                     */
154
+                }
155
+                <ContextProvider i18n = { this.props.i18n }>
156
+                    <div
157
+                        onKeyDown = { this._onKeyDown }
158
+                        ref = { this._setDialogElement }>
159
+                        <form
160
+                            className = 'modal-dialog-form'
161
+                            id = 'modal-dialog-form'
162
+                            onSubmit = { this._onSubmit }>
163
+                            { children }
164
+                        </form>
165
+                    </div>
166
+                </ContextProvider>
167
+            </Modal>
142 168
         );
143 169
     }
144 170
 
171
+    _onCancel: () => Function;
172
+
173
+    /**
174
+     * Returns a functional component to be used for the modal footer.
175
+     *
176
+     * @param {Object} options - The configuration for how the buttons in the
177
+     * footer should display. Essentially {@code StatelessDialog} props should
178
+     * be passed in.
179
+     * @private
180
+     * @returns {ReactElement}
181
+     */
182
+    _createFooterConstructor(options) {
183
+        // Filter out falsy (null) values because {@code ButtonGroup} will error
184
+        // if passed in anything but buttons with valid type props.
185
+        const buttons = [
186
+            this._renderOKButton(options),
187
+            this._renderCancelButton(options)
188
+        ].filter(Boolean);
189
+
190
+        return function Footer(modalFooterProps) {
191
+            return (
192
+                <ModalFooter showKeyline = { modalFooterProps.showKeyline } >
193
+                    {
194
+
195
+                        /**
196
+                         * Atlaskit has this empty span (JustifySim) so...
197
+                         */
198
+                    }
199
+                    <span />
200
+                    <ButtonGroup>
201
+                        { buttons }
202
+                    </ButtonGroup>
203
+                </ModalFooter>
204
+            );
205
+        };
206
+    }
207
+
145 208
     _onCancel: () => void;
146 209
 
147 210
     /**
@@ -188,11 +251,19 @@ class StatelessDialog extends Component<Props> {
188 251
     /**
189 252
      * Renders Cancel button.
190 253
      *
254
+     * @param {Object} options - The configuration for the Cancel button.
255
+     * @param {boolean} options.cancelDisabled - True if the cancel button
256
+     * should not be rendered.
257
+     * @param {string} options.cancelTitleKey - The translation key to use as
258
+     * text on the button.
259
+     * @param {boolean} options.isModal - True if the cancel button should not
260
+     * be rendered.
191 261
      * @private
192
-     * @returns {*} The Cancel button if enabled and dialog is not modal.
262
+     * @returns {ReactElement|null} The Cancel button if enabled and dialog is
263
+     * not modal.
193 264
      */
194
-    _renderCancelButton() {
195
-        if (this.props.cancelDisabled || this.props.isModal) {
265
+    _renderCancelButton(options = {}) {
266
+        if (options.cancelDisabled || options.isModal) {
196 267
             return null;
197 268
         }
198 269
 
@@ -207,62 +278,26 @@ class StatelessDialog extends Component<Props> {
207 278
                 key = 'cancel'
208 279
                 onClick = { this._onCancel }
209 280
                 type = 'button'>
210
-                { t(this.props.cancelTitleKey || 'dialog.Cancel') }
281
+                { t(options.cancelTitleKey || 'dialog.Cancel') }
211 282
             </Button>
212 283
         );
213 284
     }
214 285
 
215
-    /**
216
-     * Renders component in dialog footer.
217
-     *
218
-     * @private
219
-     * @returns {ReactElement}
220
-     */
221
-    _renderFooter() {
222
-        // Filter out falsy (null) values because {@code ButtonGroup} will error
223
-        // if passed in anything but buttons with valid type props.
224
-        const buttons = [
225
-            this._renderCancelButton(),
226
-            this._renderOKButton()
227
-        ].filter(Boolean);
228
-
229
-        return (
230
-            <footer className = 'modal-dialog-footer'>
231
-                <ButtonGroup>
232
-                    { buttons }
233
-                </ButtonGroup>
234
-            </footer>
235
-        );
236
-    }
237
-
238
-    /**
239
-     * Renders component in dialog header.
240
-     *
241
-     * @private
242
-     * @returns {ReactElement}
243
-     */
244
-    _renderHeader() {
245
-        const {
246
-            t /* The following fixes a flow error: */ = _.identity
247
-        } = this.props;
248
-
249
-        return (
250
-            <header>
251
-                <h3>
252
-                    { this.props.titleString || t(this.props.titleKey) }
253
-                </h3>
254
-            </header>
255
-        );
256
-    }
257
-
258 286
     /**
259 287
      * Renders OK button.
260 288
      *
289
+     * @param {Object} options - The configuration for the OK button.
290
+     * @param {boolean} options.okDisabled - True if the button should display
291
+     * as disabled and clicking should have no effect.
292
+     * @param {string} options.okTitleKey - The translation key to use as text
293
+     * on the button.
294
+     * @param {boolean} options.submitDisabled - True if the button should not
295
+     * be rendered.
261 296
      * @private
262
-     * @returns {*} The OK button if enabled.
297
+     * @returns {ReactElement|null} The OK button if enabled.
263 298
      */
264
-    _renderOKButton() {
265
-        if (this.props.submitDisabled) {
299
+    _renderOKButton(options = {}) {
300
+        if (options.submitDisabled) {
266 301
             return null;
267 302
         }
268 303
 
@@ -275,11 +310,11 @@ class StatelessDialog extends Component<Props> {
275 310
                 appearance = 'primary'
276 311
                 form = 'modal-dialog-form'
277 312
                 id = { OK_BUTTON_ID }
278
-                isDisabled = { this.props.okDisabled }
313
+                isDisabled = { options.okDisabled }
279 314
                 key = 'submit'
280 315
                 onClick = { this._onSubmit }
281 316
                 type = 'button'>
282
-                { t(this.props.okTitleKey || 'dialog.Ok') }
317
+                { t(options.okTitleKey || 'dialog.Ok') }
283 318
             </Button>
284 319
         );
285 320
     }
@@ -327,40 +362,6 @@ class StatelessDialog extends Component<Props> {
327 362
             }
328 363
         }
329 364
     }
330
-
331
-    /**
332
-     * Updates focused button, if we have a reference to the dialog element.
333
-     * Focus on available button if there is no focus already.
334
-     *
335
-     * @private
336
-     * @returns {void}
337
-     */
338
-    _updateButtonFocus() {
339
-        const dialogElement = this._dialogElement;
340
-
341
-        if (dialogElement) {
342
-
343
-            // if we have a focused element inside the dialog, skip changing
344
-            // the focus
345
-            if (dialogElement.contains(document.activeElement)) {
346
-                return;
347
-            }
348
-
349
-            let buttonToFocus;
350
-
351
-            if (this.props.submitDisabled) {
352
-                buttonToFocus
353
-                    = dialogElement.querySelector(`[id=${CANCEL_BUTTON_ID}]`);
354
-            } else if (!this.props.okDisabled) {
355
-                buttonToFocus
356
-                    = dialogElement.querySelector(`[id=${OK_BUTTON_ID}]`);
357
-            }
358
-
359
-            if (buttonToFocus) {
360
-                buttonToFocus.focus();
361
-            }
362
-        }
363
-    }
364 365
 }
365 366
 
366 367
 export default translate(StatelessDialog);

+ 4
- 1
react/features/device-selection/DeviceSelectionPopup.js View File

@@ -1,5 +1,6 @@
1 1
 /* global JitsiMeetJS */
2 2
 
3
+import { AtlasKitThemeProvider } from '@atlaskit/theme';
3 4
 import Logger from 'jitsi-meet-logger';
4 5
 import React from 'react';
5 6
 import ReactDOM from 'react-dom';
@@ -234,7 +235,9 @@ export default class DeviceSelectionPopup {
234 235
         ReactDOM.render(
235 236
             <I18nextProvider
236 237
                 i18n = { this._i18next }>
237
-                <DeviceSelectionDialogBase { ...props } />
238
+                <AtlasKitThemeProvider mode = 'dark'>
239
+                    <DeviceSelectionDialogBase { ...props } />
240
+                </AtlasKitThemeProvider>
238 241
             </I18nextProvider>,
239 242
             document.getElementById('react'));
240 243
     }

+ 4
- 1
react/features/feedback/components/FeedbackDialog.web.js View File

@@ -1,5 +1,6 @@
1 1
 /* global interfaceConfig */
2 2
 
3
+import { FieldTextAreaStateless } from '@atlaskit/field-text-area';
3 4
 import StarIcon from '@atlaskit/icon/glyph/star';
4 5
 import StarFilledIcon from '@atlaskit/icon/glyph/star-filled';
5 6
 import PropTypes from 'prop-types';
@@ -219,12 +220,14 @@ class FeedbackDialog extends Component {
219 220
                         </div>
220 221
                     </div>
221 222
                     <div className = 'details'>
222
-                        <textarea
223
+                        <FieldTextAreaStateless
223 224
                             autoFocus = { true }
224 225
                             className = 'input-control'
225 226
                             id = 'feedbackTextArea'
227
+                            isLabelHidden = { true }
226 228
                             onChange = { this._onMessageChange }
227 229
                             placeholder = { t('dialog.feedbackHelp') }
230
+                            shouldFitContainer = { true }
228 231
                             value = { message } />
229 232
                     </div>
230 233
                 </div>

Loading…
Cancel
Save