flipper-ui 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/docs/ui/README.md +14 -8
- data/lib/flipper/ui/public/css/application.css +58 -57
- data/lib/flipper/ui/public/css/primer/primer.css +23 -23
- data/lib/flipper/version.rb +1 -1
- data/spec/flipper/ui/actions/actors_gate_spec.rb +3 -3
- data/spec/flipper/ui/actions/boolean_gate_spec.rb +2 -2
- data/spec/flipper/ui/actions/feature_spec.rb +2 -2
- data/spec/flipper/ui/actions/features_spec.rb +1 -1
- data/spec/flipper/ui/actions/gate_spec.rb +1 -1
- data/spec/flipper/ui/actions/groups_gate_spec.rb +3 -3
- data/spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb +2 -2
- data/spec/flipper/ui/actions/percentage_of_time_gate_spec.rb +2 -2
- data/spec/flipper/ui_spec.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 18dd240173e431e875d360b98531df45db9947fe
|
4
|
+
data.tar.gz: 95a577557c91cf3d59e98f2045553feeb1ea18b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b76f4930a9ff90a801f0d2f8600d86ce6e06a1486d05428a4f84c714ba334fbcda71f55da697259d0e3c0b2f4915ba732322545328ba15f35bc91e62446c2896
|
7
|
+
data.tar.gz: cf88313a03f6ceadf7206a557877eb5892843a7e5fb089ab85e2fe53efa8545409c1184a5892e8f9b0909f4f1805c4b73a27c33e07e299c1210fef85e86d8848
|
data/docs/ui/README.md
CHANGED
@@ -28,19 +28,25 @@ Or install it yourself as:
|
|
28
28
|
|
29
29
|
### Rails
|
30
30
|
|
31
|
-
Given that you've already initialized `Flipper` as per the [flipper](https://github.com/jnunemaker/flipper) readme:
|
31
|
+
Given that you've already initialized `Flipper` as per the [flipper](https://github.com/jnunemaker/flipper) readme, you can mount `Flipper::UI` to a route of your choice:
|
32
32
|
|
33
33
|
```ruby
|
34
|
-
# config/
|
35
|
-
|
34
|
+
# config/routes.rb
|
35
|
+
YourRailsApp::Application.routes.draw do
|
36
|
+
mount Flipper::UI.app(flipper) => '/flipper'
|
37
|
+
end
|
36
38
|
```
|
37
39
|
|
38
|
-
you
|
40
|
+
If you'd like to lazy load flipper, you can pass a block instead:
|
41
|
+
|
39
42
|
```ruby
|
40
43
|
# config/routes.rb
|
41
|
-
|
42
44
|
YourRailsApp::Application.routes.draw do
|
43
|
-
|
45
|
+
flipper_block = lambda {
|
46
|
+
# some flipper initialization here, for example:
|
47
|
+
# YourRailsApp.flipper
|
48
|
+
}
|
49
|
+
mount Flipper::UI.app(flipper_block) => '/flipper'
|
44
50
|
end
|
45
51
|
```
|
46
52
|
|
@@ -53,7 +59,7 @@ You almost certainly want to limit access when using Flipper::UI in production.
|
|
53
59
|
|
54
60
|
flipper_constraint = lambda { |request| request.remote_ip == '127.0.0.1' }
|
55
61
|
constraints flipper_constraint do
|
56
|
-
mount Flipper::UI.app(
|
62
|
+
mount Flipper::UI.app(flipper) => '/flipper'
|
57
63
|
end
|
58
64
|
```
|
59
65
|
|
@@ -72,7 +78,7 @@ end
|
|
72
78
|
# config/routes.rb
|
73
79
|
|
74
80
|
constraints CanAccessFlipperUI do
|
75
|
-
mount Flipper::UI.app(
|
81
|
+
mount Flipper::UI.app(flipper) => '/flipper'
|
76
82
|
end
|
77
83
|
```
|
78
84
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
@charset "UTF-8";
|
1
2
|
body {
|
2
3
|
padding-top: 20px; }
|
3
4
|
|
@@ -7,7 +8,7 @@ body {
|
|
7
8
|
*
|
8
9
|
* Released under MIT license. Copyright 2015 GitHub, Inc.
|
9
10
|
*/
|
10
|
-
|
11
|
+
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
|
11
12
|
/**
|
12
13
|
* 1. Set default font family to sans-serif.
|
13
14
|
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
@@ -323,7 +324,7 @@ input[type="search"]::-webkit-search-decoration {
|
|
323
324
|
* Define consistent border, margin, and padding.
|
324
325
|
*/
|
325
326
|
fieldset {
|
326
|
-
border: 1px solid
|
327
|
+
border: 1px solid #c0c0c0;
|
327
328
|
margin: 0 2px;
|
328
329
|
padding: 0.35em 0.625em 0.75em; }
|
329
330
|
|
@@ -374,7 +375,7 @@ button {
|
|
374
375
|
|
375
376
|
body {
|
376
377
|
font: 13px/1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
377
|
-
color: #
|
378
|
+
color: #333;
|
378
379
|
background-color: #fff; }
|
379
380
|
|
380
381
|
a {
|
@@ -390,7 +391,7 @@ hr,
|
|
390
391
|
overflow: hidden;
|
391
392
|
background: transparent;
|
392
393
|
border: 0;
|
393
|
-
border-bottom: 1px solid #
|
394
|
+
border-bottom: 1px solid #ddd; }
|
394
395
|
hr:before,
|
395
396
|
.rule:before {
|
396
397
|
display: table;
|
@@ -565,7 +566,7 @@ textarea {
|
|
565
566
|
background-color: #fff;
|
566
567
|
background-repeat: no-repeat;
|
567
568
|
background-position: right center;
|
568
|
-
border: 1px solid #
|
569
|
+
border: 1px solid #ccc;
|
569
570
|
border-radius: 3px;
|
570
571
|
outline: none;
|
571
572
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); }
|
@@ -809,7 +810,7 @@ html.no-dnd-uploads .drag-and-drop {
|
|
809
810
|
html.no-dnd-uploads .drag-and-drop .default {
|
810
811
|
display: none; }
|
811
812
|
html.no-dnd-uploads .upload-enabled textarea {
|
812
|
-
border-bottom: 1px solid #
|
813
|
+
border-bottom: 1px solid #ddd; }
|
813
814
|
|
814
815
|
.drag-and-drop {
|
815
816
|
padding: 7px 10px;
|
@@ -818,7 +819,7 @@ html.no-dnd-uploads .upload-enabled textarea {
|
|
818
819
|
line-height: 16px;
|
819
820
|
color: #aaa;
|
820
821
|
background-color: #fafafa;
|
821
|
-
border: 1px solid #
|
822
|
+
border: 1px solid #ccc;
|
822
823
|
border-top: 0;
|
823
824
|
border-bottom-right-radius: 3px;
|
824
825
|
border-bottom-left-radius: 3px; }
|
@@ -876,7 +877,7 @@ html.no-dnd-uploads .upload-enabled textarea {
|
|
876
877
|
|
877
878
|
.upload-enabled textarea {
|
878
879
|
display: block;
|
879
|
-
border-bottom: 1px dashed #
|
880
|
+
border-bottom: 1px dashed #ddd;
|
880
881
|
border-bottom-right-radius: 0;
|
881
882
|
border-bottom-left-radius: 0; }
|
882
883
|
|
@@ -927,7 +928,7 @@ div.composer {
|
|
927
928
|
height: 35px;
|
928
929
|
padding: 0 10px;
|
929
930
|
margin-bottom: 10px;
|
930
|
-
border-bottom: 1px solid #
|
931
|
+
border-bottom: 1px solid #eee; }
|
931
932
|
|
932
933
|
.composer .tabnav {
|
933
934
|
margin: 0 0 10px; }
|
@@ -1019,7 +1020,7 @@ p.explain {
|
|
1019
1020
|
.options-content p.explain {
|
1020
1021
|
padding: 10px 10px 0;
|
1021
1022
|
margin-top: 0;
|
1022
|
-
border-top: 1px solid #
|
1023
|
+
border-top: 1px solid #ddd; }
|
1023
1024
|
|
1024
1025
|
.form-actions:before {
|
1025
1026
|
display: table;
|
@@ -1286,7 +1287,7 @@ p.explain {
|
|
1286
1287
|
padding: 2px 5px 3px;
|
1287
1288
|
font-size: 14px;
|
1288
1289
|
background: #fff;
|
1289
|
-
border: 1px solid #
|
1290
|
+
border: 1px solid #eee;
|
1290
1291
|
border-radius: 3px; }
|
1291
1292
|
.blankslate > .mega-octicon {
|
1292
1293
|
color: #aaa; }
|
@@ -1335,7 +1336,7 @@ p.explain {
|
|
1335
1336
|
vertical-align: middle;
|
1336
1337
|
cursor: pointer;
|
1337
1338
|
background-color: #eee;
|
1338
|
-
background-image: linear-gradient(#fcfcfc, #
|
1339
|
+
background-image: linear-gradient(#fcfcfc, #eee);
|
1339
1340
|
border: 1px solid #d5d5d5;
|
1340
1341
|
border-radius: 3px;
|
1341
1342
|
user-select: none;
|
@@ -1357,7 +1358,7 @@ p.explain {
|
|
1357
1358
|
.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active {
|
1358
1359
|
text-decoration: none;
|
1359
1360
|
background-color: #ddd;
|
1360
|
-
background-image: linear-gradient(#
|
1361
|
+
background-image: linear-gradient(#eee, #ddd);
|
1361
1362
|
border-color: #ccc; }
|
1362
1363
|
.btn:active, .btn.selected, .btn.selected:hover, .btn.zeroclipboard-is-active {
|
1363
1364
|
background-color: #dcdcdc;
|
@@ -1480,10 +1481,10 @@ p.explain {
|
|
1480
1481
|
font-size: 11px;
|
1481
1482
|
font-weight: bold;
|
1482
1483
|
line-height: 20px;
|
1483
|
-
color: #
|
1484
|
+
color: #333;
|
1484
1485
|
vertical-align: middle;
|
1485
1486
|
background-color: #fff;
|
1486
|
-
border: 1px solid #
|
1487
|
+
border: 1px solid #ddd;
|
1487
1488
|
border-left: 0;
|
1488
1489
|
border-top-right-radius: 3px;
|
1489
1490
|
border-bottom-right-radius: 3px; }
|
@@ -1572,8 +1573,8 @@ p.explain {
|
|
1572
1573
|
position: relative;
|
1573
1574
|
display: block;
|
1574
1575
|
padding: 8px 10px;
|
1575
|
-
text-shadow: 0 1px 0
|
1576
|
-
border-bottom: 1px solid #
|
1576
|
+
text-shadow: 0 1px 0 #fff;
|
1577
|
+
border-bottom: 1px solid #eee; }
|
1577
1578
|
.menu-item:first-child {
|
1578
1579
|
border-top: 0;
|
1579
1580
|
border-top-right-radius: 2px;
|
@@ -1605,7 +1606,7 @@ p.explain {
|
|
1605
1606
|
.menu-item .octicon {
|
1606
1607
|
margin-right: 5px;
|
1607
1608
|
width: 16px;
|
1608
|
-
color: #
|
1609
|
+
color: #333;
|
1609
1610
|
text-align: center; }
|
1610
1611
|
.menu-item .counter {
|
1611
1612
|
float: right;
|
@@ -1629,7 +1630,7 @@ p.explain {
|
|
1629
1630
|
line-height: 20px;
|
1630
1631
|
color: #555;
|
1631
1632
|
background-color: #f7f7f7;
|
1632
|
-
border-bottom: 1px solid #
|
1633
|
+
border-bottom: 1px solid #eee; }
|
1633
1634
|
.menu-heading:hover {
|
1634
1635
|
text-decoration: none; }
|
1635
1636
|
.menu-heading:first-child {
|
@@ -1643,7 +1644,7 @@ p.explain {
|
|
1643
1644
|
.tabnav {
|
1644
1645
|
margin-top: 0;
|
1645
1646
|
margin-bottom: 15px;
|
1646
|
-
border-bottom: 1px solid #
|
1647
|
+
border-bottom: 1px solid #ddd; }
|
1647
1648
|
.tabnav .counter {
|
1648
1649
|
margin-left: 5px; }
|
1649
1650
|
|
@@ -1763,7 +1764,7 @@ a.tabnav-extra:hover {
|
|
1763
1764
|
display: none;
|
1764
1765
|
padding: 5px 8px;
|
1765
1766
|
font: normal normal 11px/1.5 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
1766
|
-
color:
|
1767
|
+
color: #fff;
|
1767
1768
|
text-align: center;
|
1768
1769
|
text-decoration: none;
|
1769
1770
|
text-shadow: none;
|
@@ -1890,7 +1891,7 @@ a.tabnav-extra:hover {
|
|
1890
1891
|
.tooltipped-multiline.tooltipped-w:after, .tooltipped-multiline.tooltipped-e:after {
|
1891
1892
|
right: 100%; }
|
1892
1893
|
|
1893
|
-
@media screen and (min-width: 0
|
1894
|
+
@media screen and (min-width: 0\0) {
|
1894
1895
|
.tooltipped-multiline:after {
|
1895
1896
|
width: 250px; } }
|
1896
1897
|
.tooltipped-sticky:before, .tooltipped-sticky:after {
|
@@ -1899,7 +1900,7 @@ a.tabnav-extra:hover {
|
|
1899
1900
|
display: table-cell; }
|
1900
1901
|
|
1901
1902
|
.fullscreen-overlay-enabled.dark-theme .tooltipped:after {
|
1902
|
-
color:
|
1903
|
+
color: #000;
|
1903
1904
|
background: rgba(255, 255, 255, 0.8); }
|
1904
1905
|
.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before,
|
1905
1906
|
.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before,
|
@@ -1960,10 +1961,10 @@ th {
|
|
1960
1961
|
padding: 8px;
|
1961
1962
|
line-height: 1.42857;
|
1962
1963
|
vertical-align: top;
|
1963
|
-
border-top: 1px solid #
|
1964
|
+
border-top: 1px solid #ddd; }
|
1964
1965
|
.table > thead > tr > th {
|
1965
1966
|
vertical-align: bottom;
|
1966
|
-
border-bottom: 2px solid #
|
1967
|
+
border-bottom: 2px solid #ddd; }
|
1967
1968
|
.table > caption + thead > tr:first-child > th,
|
1968
1969
|
.table > caption + thead > tr:first-child > td,
|
1969
1970
|
.table > colgroup + thead > tr:first-child > th,
|
@@ -1972,9 +1973,9 @@ th {
|
|
1972
1973
|
.table > thead:first-child > tr:first-child > td {
|
1973
1974
|
border-top: 0; }
|
1974
1975
|
.table > tbody + tbody {
|
1975
|
-
border-top: 2px solid #
|
1976
|
+
border-top: 2px solid #ddd; }
|
1976
1977
|
.table .table {
|
1977
|
-
background-color:
|
1978
|
+
background-color: #fff; }
|
1978
1979
|
|
1979
1980
|
.table-condensed > thead > tr > th,
|
1980
1981
|
.table-condensed > thead > tr > td,
|
@@ -1985,14 +1986,14 @@ th {
|
|
1985
1986
|
padding: 5px; }
|
1986
1987
|
|
1987
1988
|
.table-bordered {
|
1988
|
-
border: 1px solid #
|
1989
|
+
border: 1px solid #ddd; }
|
1989
1990
|
.table-bordered > thead > tr > th,
|
1990
1991
|
.table-bordered > thead > tr > td,
|
1991
1992
|
.table-bordered > tbody > tr > th,
|
1992
1993
|
.table-bordered > tbody > tr > td,
|
1993
1994
|
.table-bordered > tfoot > tr > th,
|
1994
1995
|
.table-bordered > tfoot > tr > td {
|
1995
|
-
border: 1px solid #
|
1996
|
+
border: 1px solid #ddd; }
|
1996
1997
|
.table-bordered > thead > tr > th,
|
1997
1998
|
.table-bordered > thead > tr > td {
|
1998
1999
|
border-bottom-width: 2px; }
|
@@ -2001,7 +2002,7 @@ th {
|
|
2001
2002
|
background-color: #f9f9f9; }
|
2002
2003
|
|
2003
2004
|
.table-hover > tbody > tr:hover {
|
2004
|
-
background-color:
|
2005
|
+
background-color: #f5f5f5; }
|
2005
2006
|
|
2006
2007
|
table col[class*="col-"] {
|
2007
2008
|
position: static;
|
@@ -2024,7 +2025,7 @@ table th[class*="col-"] {
|
|
2024
2025
|
.table > tfoot > tr > th.active,
|
2025
2026
|
.table > tfoot > tr.active > td,
|
2026
2027
|
.table > tfoot > tr.active > th {
|
2027
|
-
background-color:
|
2028
|
+
background-color: #f5f5f5; }
|
2028
2029
|
|
2029
2030
|
.table-hover > tbody > tr > td.active:hover,
|
2030
2031
|
.table-hover > tbody > tr > th.active:hover, .table-hover > tbody > tr.active:hover > td, .table-hover > tbody > tr:hover > .active, .table-hover > tbody > tr.active:hover > th {
|
@@ -2103,7 +2104,7 @@ table th[class*="col-"] {
|
|
2103
2104
|
margin-bottom: 15px;
|
2104
2105
|
overflow-y: hidden;
|
2105
2106
|
-ms-overflow-style: -ms-autohiding-scrollbar;
|
2106
|
-
border: 1px solid #
|
2107
|
+
border: 1px solid #ddd; }
|
2107
2108
|
.table-responsive > .table {
|
2108
2109
|
margin-bottom: 0; }
|
2109
2110
|
.table-responsive > .table > thead > tr > th,
|
@@ -2137,7 +2138,7 @@ table th[class*="col-"] {
|
|
2137
2138
|
|
2138
2139
|
.panel {
|
2139
2140
|
margin-bottom: 20px;
|
2140
|
-
background-color:
|
2141
|
+
background-color: #fff;
|
2141
2142
|
border: 1px solid transparent;
|
2142
2143
|
border-radius: 4px;
|
2143
2144
|
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);
|
@@ -2173,8 +2174,8 @@ table th[class*="col-"] {
|
|
2173
2174
|
|
2174
2175
|
.panel-footer {
|
2175
2176
|
padding: 10px 15px;
|
2176
|
-
background-color:
|
2177
|
-
border-top: 1px solid #
|
2177
|
+
background-color: #f5f5f5;
|
2178
|
+
border-top: 1px solid #ddd;
|
2178
2179
|
border-bottom-right-radius: 3px;
|
2179
2180
|
border-bottom-left-radius: 3px; }
|
2180
2181
|
|
@@ -2271,7 +2272,7 @@ table th[class*="col-"] {
|
|
2271
2272
|
.panel > .panel-body + .table-responsive,
|
2272
2273
|
.panel > .table + .panel-body,
|
2273
2274
|
.panel > .table-responsive + .panel-body {
|
2274
|
-
border-top: 1px solid #
|
2275
|
+
border-top: 1px solid #ddd; }
|
2275
2276
|
.panel > .table > tbody:first-child > tr:first-child th,
|
2276
2277
|
.panel > .table > tbody:first-child > tr:first-child td {
|
2277
2278
|
border-top: 0; }
|
@@ -2337,37 +2338,37 @@ table th[class*="col-"] {
|
|
2337
2338
|
border-bottom: 0; }
|
2338
2339
|
.panel-group .panel-heading + .panel-collapse > .panel-body,
|
2339
2340
|
.panel-group .panel-heading + .panel-collapse > .list-group {
|
2340
|
-
border-top: 1px solid #
|
2341
|
+
border-top: 1px solid #ddd; }
|
2341
2342
|
.panel-group .panel-footer {
|
2342
2343
|
border-top: 0; }
|
2343
2344
|
.panel-group .panel-footer + .panel-collapse .panel-body {
|
2344
|
-
border-bottom: 1px solid #
|
2345
|
+
border-bottom: 1px solid #ddd; }
|
2345
2346
|
|
2346
2347
|
.panel-default {
|
2347
|
-
border-color: #
|
2348
|
+
border-color: #ddd; }
|
2348
2349
|
.panel-default > .panel-heading {
|
2349
2350
|
color: #333333;
|
2350
|
-
background-color:
|
2351
|
-
border-color: #
|
2351
|
+
background-color: #f5f5f5;
|
2352
|
+
border-color: #ddd; }
|
2352
2353
|
.panel-default > .panel-heading + .panel-collapse > .panel-body {
|
2353
|
-
border-top-color: #
|
2354
|
+
border-top-color: #ddd; }
|
2354
2355
|
.panel-default > .panel-heading .badge {
|
2355
|
-
color:
|
2356
|
+
color: #f5f5f5;
|
2356
2357
|
background-color: #333333; }
|
2357
2358
|
.panel-default > .panel-footer + .panel-collapse > .panel-body {
|
2358
|
-
border-bottom-color: #
|
2359
|
+
border-bottom-color: #ddd; }
|
2359
2360
|
|
2360
2361
|
.panel-primary {
|
2361
2362
|
border-color: #337ab7; }
|
2362
2363
|
.panel-primary > .panel-heading {
|
2363
|
-
color:
|
2364
|
+
color: #fff;
|
2364
2365
|
background-color: #337ab7;
|
2365
2366
|
border-color: #337ab7; }
|
2366
2367
|
.panel-primary > .panel-heading + .panel-collapse > .panel-body {
|
2367
2368
|
border-top-color: #337ab7; }
|
2368
2369
|
.panel-primary > .panel-heading .badge {
|
2369
2370
|
color: #337ab7;
|
2370
|
-
background-color:
|
2371
|
+
background-color: #fff; }
|
2371
2372
|
.panel-primary > .panel-footer + .panel-collapse > .panel-body {
|
2372
2373
|
border-bottom-color: #337ab7; }
|
2373
2374
|
|
@@ -2436,8 +2437,8 @@ table th[class*="col-"] {
|
|
2436
2437
|
display: block;
|
2437
2438
|
padding: 10px 15px;
|
2438
2439
|
margin-bottom: -1px;
|
2439
|
-
background-color:
|
2440
|
-
border: 1px solid #
|
2440
|
+
background-color: #fff;
|
2441
|
+
border: 1px solid #ddd; }
|
2441
2442
|
.list-group-item:first-child {
|
2442
2443
|
border-top-right-radius: 4px;
|
2443
2444
|
border-top-left-radius: 4px; }
|
@@ -2447,13 +2448,13 @@ table th[class*="col-"] {
|
|
2447
2448
|
border-bottom-left-radius: 4px; }
|
2448
2449
|
|
2449
2450
|
a.list-group-item {
|
2450
|
-
color: #
|
2451
|
+
color: #555; }
|
2451
2452
|
a.list-group-item .list-group-item-heading {
|
2452
|
-
color: #
|
2453
|
+
color: #333; }
|
2453
2454
|
a.list-group-item:hover, a.list-group-item:focus {
|
2454
2455
|
text-decoration: none;
|
2455
|
-
color: #
|
2456
|
-
background-color:
|
2456
|
+
color: #555;
|
2457
|
+
background-color: #f5f5f5; }
|
2457
2458
|
|
2458
2459
|
.list-group-item.disabled, .list-group-item.disabled:hover, .list-group-item.disabled:focus {
|
2459
2460
|
background-color: #eeeeee;
|
@@ -2465,7 +2466,7 @@ a.list-group-item {
|
|
2465
2466
|
color: #777777; }
|
2466
2467
|
.list-group-item.active, .list-group-item.active:hover, .list-group-item.active:focus {
|
2467
2468
|
z-index: 2;
|
2468
|
-
color:
|
2469
|
+
color: #fff;
|
2469
2470
|
background-color: #337ab7;
|
2470
2471
|
border-color: #337ab7; }
|
2471
2472
|
.list-group-item.active .list-group-item-heading,
|
@@ -2555,14 +2556,14 @@ a.list-group-item-danger {
|
|
2555
2556
|
padding: 8px 15px;
|
2556
2557
|
margin-bottom: 20px;
|
2557
2558
|
list-style: none;
|
2558
|
-
background-color:
|
2559
|
+
background-color: #f5f5f5;
|
2559
2560
|
border-radius: 4px; }
|
2560
2561
|
.breadcrumb > li {
|
2561
2562
|
display: inline-block; }
|
2562
2563
|
.breadcrumb > li + li:before {
|
2563
|
-
content: "
|
2564
|
+
content: "/ ";
|
2564
2565
|
padding: 0 5px;
|
2565
|
-
color: #
|
2566
|
+
color: #ccc; }
|
2566
2567
|
.breadcrumb > .active {
|
2567
2568
|
color: #777777; }
|
2568
2569
|
|
@@ -2589,7 +2590,7 @@ a.list-group-item-danger {
|
|
2589
2590
|
|
2590
2591
|
.breadcrumb {
|
2591
2592
|
background-color: #fff;
|
2592
|
-
border: 1px solid #
|
2593
|
+
border: 1px solid #ddd; }
|
2593
2594
|
|
2594
2595
|
.header .btn.right {
|
2595
2596
|
margin-top: 5px;
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*
|
5
5
|
* Released under MIT license. Copyright 2015 GitHub, Inc.
|
6
6
|
*/
|
7
|
-
|
7
|
+
/*! normalize.css v3.0.1 | MIT License | git.io/normalize */
|
8
8
|
/**
|
9
9
|
* 1. Set default font family to sans-serif.
|
10
10
|
* 2. Prevent iOS text size adjust after orientation change, without disabling
|
@@ -320,7 +320,7 @@ input[type="search"]::-webkit-search-decoration {
|
|
320
320
|
* Define consistent border, margin, and padding.
|
321
321
|
*/
|
322
322
|
fieldset {
|
323
|
-
border: 1px solid
|
323
|
+
border: 1px solid #c0c0c0;
|
324
324
|
margin: 0 2px;
|
325
325
|
padding: 0.35em 0.625em 0.75em; }
|
326
326
|
|
@@ -371,7 +371,7 @@ button {
|
|
371
371
|
|
372
372
|
body {
|
373
373
|
font: 13px/1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
374
|
-
color: #
|
374
|
+
color: #333;
|
375
375
|
background-color: #fff; }
|
376
376
|
|
377
377
|
a {
|
@@ -387,7 +387,7 @@ hr,
|
|
387
387
|
overflow: hidden;
|
388
388
|
background: transparent;
|
389
389
|
border: 0;
|
390
|
-
border-bottom: 1px solid #
|
390
|
+
border-bottom: 1px solid #ddd; }
|
391
391
|
hr:before,
|
392
392
|
.rule:before {
|
393
393
|
display: table;
|
@@ -562,7 +562,7 @@ textarea {
|
|
562
562
|
background-color: #fff;
|
563
563
|
background-repeat: no-repeat;
|
564
564
|
background-position: right center;
|
565
|
-
border: 1px solid #
|
565
|
+
border: 1px solid #ccc;
|
566
566
|
border-radius: 3px;
|
567
567
|
outline: none;
|
568
568
|
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075); }
|
@@ -806,7 +806,7 @@ html.no-dnd-uploads .drag-and-drop {
|
|
806
806
|
html.no-dnd-uploads .drag-and-drop .default {
|
807
807
|
display: none; }
|
808
808
|
html.no-dnd-uploads .upload-enabled textarea {
|
809
|
-
border-bottom: 1px solid #
|
809
|
+
border-bottom: 1px solid #ddd; }
|
810
810
|
|
811
811
|
.drag-and-drop {
|
812
812
|
padding: 7px 10px;
|
@@ -815,7 +815,7 @@ html.no-dnd-uploads .upload-enabled textarea {
|
|
815
815
|
line-height: 16px;
|
816
816
|
color: #aaa;
|
817
817
|
background-color: #fafafa;
|
818
|
-
border: 1px solid #
|
818
|
+
border: 1px solid #ccc;
|
819
819
|
border-top: 0;
|
820
820
|
border-bottom-right-radius: 3px;
|
821
821
|
border-bottom-left-radius: 3px; }
|
@@ -873,7 +873,7 @@ html.no-dnd-uploads .upload-enabled textarea {
|
|
873
873
|
|
874
874
|
.upload-enabled textarea {
|
875
875
|
display: block;
|
876
|
-
border-bottom: 1px dashed #
|
876
|
+
border-bottom: 1px dashed #ddd;
|
877
877
|
border-bottom-right-radius: 0;
|
878
878
|
border-bottom-left-radius: 0; }
|
879
879
|
|
@@ -924,7 +924,7 @@ div.composer {
|
|
924
924
|
height: 35px;
|
925
925
|
padding: 0 10px;
|
926
926
|
margin-bottom: 10px;
|
927
|
-
border-bottom: 1px solid #
|
927
|
+
border-bottom: 1px solid #eee; }
|
928
928
|
|
929
929
|
.composer .tabnav {
|
930
930
|
margin: 0 0 10px; }
|
@@ -1016,7 +1016,7 @@ p.explain {
|
|
1016
1016
|
.options-content p.explain {
|
1017
1017
|
padding: 10px 10px 0;
|
1018
1018
|
margin-top: 0;
|
1019
|
-
border-top: 1px solid #
|
1019
|
+
border-top: 1px solid #ddd; }
|
1020
1020
|
|
1021
1021
|
.form-actions:before {
|
1022
1022
|
display: table;
|
@@ -1283,7 +1283,7 @@ p.explain {
|
|
1283
1283
|
padding: 2px 5px 3px;
|
1284
1284
|
font-size: 14px;
|
1285
1285
|
background: #fff;
|
1286
|
-
border: 1px solid #
|
1286
|
+
border: 1px solid #eee;
|
1287
1287
|
border-radius: 3px; }
|
1288
1288
|
.blankslate > .mega-octicon {
|
1289
1289
|
color: #aaa; }
|
@@ -1332,7 +1332,7 @@ p.explain {
|
|
1332
1332
|
vertical-align: middle;
|
1333
1333
|
cursor: pointer;
|
1334
1334
|
background-color: #eee;
|
1335
|
-
background-image: linear-gradient(#fcfcfc, #
|
1335
|
+
background-image: linear-gradient(#fcfcfc, #eee);
|
1336
1336
|
border: 1px solid #d5d5d5;
|
1337
1337
|
border-radius: 3px;
|
1338
1338
|
user-select: none;
|
@@ -1354,7 +1354,7 @@ p.explain {
|
|
1354
1354
|
.btn:hover, .btn:active, .btn.zeroclipboard-is-hover, .btn.zeroclipboard-is-active {
|
1355
1355
|
text-decoration: none;
|
1356
1356
|
background-color: #ddd;
|
1357
|
-
background-image: linear-gradient(#
|
1357
|
+
background-image: linear-gradient(#eee, #ddd);
|
1358
1358
|
border-color: #ccc; }
|
1359
1359
|
.btn:active, .btn.selected, .btn.selected:hover, .btn.zeroclipboard-is-active {
|
1360
1360
|
background-color: #dcdcdc;
|
@@ -1477,10 +1477,10 @@ p.explain {
|
|
1477
1477
|
font-size: 11px;
|
1478
1478
|
font-weight: bold;
|
1479
1479
|
line-height: 20px;
|
1480
|
-
color: #
|
1480
|
+
color: #333;
|
1481
1481
|
vertical-align: middle;
|
1482
1482
|
background-color: #fff;
|
1483
|
-
border: 1px solid #
|
1483
|
+
border: 1px solid #ddd;
|
1484
1484
|
border-left: 0;
|
1485
1485
|
border-top-right-radius: 3px;
|
1486
1486
|
border-bottom-right-radius: 3px; }
|
@@ -1569,8 +1569,8 @@ p.explain {
|
|
1569
1569
|
position: relative;
|
1570
1570
|
display: block;
|
1571
1571
|
padding: 8px 10px;
|
1572
|
-
text-shadow: 0 1px 0
|
1573
|
-
border-bottom: 1px solid #
|
1572
|
+
text-shadow: 0 1px 0 #fff;
|
1573
|
+
border-bottom: 1px solid #eee; }
|
1574
1574
|
.menu-item:first-child {
|
1575
1575
|
border-top: 0;
|
1576
1576
|
border-top-right-radius: 2px;
|
@@ -1602,7 +1602,7 @@ p.explain {
|
|
1602
1602
|
.menu-item .octicon {
|
1603
1603
|
margin-right: 5px;
|
1604
1604
|
width: 16px;
|
1605
|
-
color: #
|
1605
|
+
color: #333;
|
1606
1606
|
text-align: center; }
|
1607
1607
|
.menu-item .counter {
|
1608
1608
|
float: right;
|
@@ -1626,7 +1626,7 @@ p.explain {
|
|
1626
1626
|
line-height: 20px;
|
1627
1627
|
color: #555;
|
1628
1628
|
background-color: #f7f7f7;
|
1629
|
-
border-bottom: 1px solid #
|
1629
|
+
border-bottom: 1px solid #eee; }
|
1630
1630
|
.menu-heading:hover {
|
1631
1631
|
text-decoration: none; }
|
1632
1632
|
.menu-heading:first-child {
|
@@ -1640,7 +1640,7 @@ p.explain {
|
|
1640
1640
|
.tabnav {
|
1641
1641
|
margin-top: 0;
|
1642
1642
|
margin-bottom: 15px;
|
1643
|
-
border-bottom: 1px solid #
|
1643
|
+
border-bottom: 1px solid #ddd; }
|
1644
1644
|
.tabnav .counter {
|
1645
1645
|
margin-left: 5px; }
|
1646
1646
|
|
@@ -1760,7 +1760,7 @@ a.tabnav-extra:hover {
|
|
1760
1760
|
display: none;
|
1761
1761
|
padding: 5px 8px;
|
1762
1762
|
font: normal normal 11px/1.5 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
|
1763
|
-
color:
|
1763
|
+
color: #fff;
|
1764
1764
|
text-align: center;
|
1765
1765
|
text-decoration: none;
|
1766
1766
|
text-shadow: none;
|
@@ -1887,7 +1887,7 @@ a.tabnav-extra:hover {
|
|
1887
1887
|
.tooltipped-multiline.tooltipped-w:after, .tooltipped-multiline.tooltipped-e:after {
|
1888
1888
|
right: 100%; }
|
1889
1889
|
|
1890
|
-
@media screen and (min-width: 0
|
1890
|
+
@media screen and (min-width: 0\0) {
|
1891
1891
|
.tooltipped-multiline:after {
|
1892
1892
|
width: 250px; } }
|
1893
1893
|
.tooltipped-sticky:before, .tooltipped-sticky:after {
|
@@ -1896,7 +1896,7 @@ a.tabnav-extra:hover {
|
|
1896
1896
|
display: table-cell; }
|
1897
1897
|
|
1898
1898
|
.fullscreen-overlay-enabled.dark-theme .tooltipped:after {
|
1899
|
-
color:
|
1899
|
+
color: #000;
|
1900
1900
|
background: rgba(255, 255, 255, 0.8); }
|
1901
1901
|
.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-s:before,
|
1902
1902
|
.fullscreen-overlay-enabled.dark-theme .tooltipped .tooltipped-se:before,
|
data/lib/flipper/version.rb
CHANGED
@@ -20,7 +20,7 @@ RSpec.describe Flipper::UI::Actions::ActorsGate do
|
|
20
20
|
before do
|
21
21
|
post "features/search/actors",
|
22
22
|
{"value" => "User:6", "operation" => "enable", "authenticity_token" => "a"},
|
23
|
-
"rack.session" => {
|
23
|
+
"rack.session" => {"_csrf_token" => "a"}
|
24
24
|
end
|
25
25
|
|
26
26
|
it "adds item to members" do
|
@@ -38,7 +38,7 @@ RSpec.describe Flipper::UI::Actions::ActorsGate do
|
|
38
38
|
flipper[:search].enable_actor Flipper::UI::Actor.new("User:6")
|
39
39
|
post "features/search/actors",
|
40
40
|
{"value" => "User:6", "operation" => "disable", "authenticity_token" => "a"},
|
41
|
-
"rack.session" => {
|
41
|
+
"rack.session" => {"_csrf_token" => "a"}
|
42
42
|
end
|
43
43
|
|
44
44
|
it "removes item from members" do
|
@@ -55,7 +55,7 @@ RSpec.describe Flipper::UI::Actions::ActorsGate do
|
|
55
55
|
before do
|
56
56
|
post "features/search/actors",
|
57
57
|
{"value" => "", "operation" => "enable", "authenticity_token" => "a"},
|
58
|
-
"rack.session" => {
|
58
|
+
"rack.session" => {"_csrf_token" => "a"}
|
59
59
|
end
|
60
60
|
|
61
61
|
it "redirects back to feature" do
|
@@ -7,7 +7,7 @@ RSpec.describe Flipper::UI::Actions::BooleanGate do
|
|
7
7
|
flipper.disable :search
|
8
8
|
post "features/search/boolean",
|
9
9
|
{"action" => "Enable", "authenticity_token" => "a"},
|
10
|
-
"rack.session" => {
|
10
|
+
"rack.session" => {"_csrf_token" => "a"}
|
11
11
|
end
|
12
12
|
|
13
13
|
it "enables the feature" do
|
@@ -25,7 +25,7 @@ RSpec.describe Flipper::UI::Actions::BooleanGate do
|
|
25
25
|
flipper.enable :search
|
26
26
|
post "features/search/boolean",
|
27
27
|
{"action" => "Disable", "authenticity_token" => "a"},
|
28
|
-
"rack.session" => {
|
28
|
+
"rack.session" => {"_csrf_token" => "a"}
|
29
29
|
end
|
30
30
|
|
31
31
|
it "disables the feature" do
|
@@ -6,7 +6,7 @@ RSpec.describe Flipper::UI::Actions::Feature do
|
|
6
6
|
flipper.enable :search
|
7
7
|
delete "/features/search",
|
8
8
|
{"authenticity_token" => "a"},
|
9
|
-
"rack.session" => {
|
9
|
+
"rack.session" => {"_csrf_token" => "a"}
|
10
10
|
end
|
11
11
|
|
12
12
|
it "removes feature" do
|
@@ -24,7 +24,7 @@ RSpec.describe Flipper::UI::Actions::Feature do
|
|
24
24
|
flipper.enable :search
|
25
25
|
post "/features/search",
|
26
26
|
{"_method" => "DELETE", "authenticity_token" => "a"},
|
27
|
-
"rack.session" => {
|
27
|
+
"rack.session" => {"_csrf_token" => "a"}
|
28
28
|
end
|
29
29
|
|
30
30
|
it "removes feature" do
|
@@ -22,7 +22,7 @@ RSpec.describe Flipper::UI::Actions::Features do
|
|
22
22
|
before do
|
23
23
|
post "/features",
|
24
24
|
{"value" => "notifications_next", "authenticity_token" => "a"},
|
25
|
-
"rack.session" => {
|
25
|
+
"rack.session" => {"_csrf_token" => "a"}
|
26
26
|
end
|
27
27
|
|
28
28
|
it "adds feature" do
|
@@ -33,7 +33,7 @@ RSpec.describe Flipper::UI::Actions::GroupsGate do
|
|
33
33
|
before do
|
34
34
|
post "features/search/groups",
|
35
35
|
{"value" => "admins", "operation" => "enable", "authenticity_token" => "a"},
|
36
|
-
"rack.session" => {
|
36
|
+
"rack.session" => {"_csrf_token" => "a"}
|
37
37
|
end
|
38
38
|
|
39
39
|
it "adds item to members" do
|
@@ -51,7 +51,7 @@ RSpec.describe Flipper::UI::Actions::GroupsGate do
|
|
51
51
|
flipper[:search].enable_group :admins
|
52
52
|
post "features/search/groups",
|
53
53
|
{"value" => "admins", "operation" => "disable", "authenticity_token" => "a"},
|
54
|
-
"rack.session" => {
|
54
|
+
"rack.session" => {"_csrf_token" => "a"}
|
55
55
|
end
|
56
56
|
|
57
57
|
it "removes item from members" do
|
@@ -68,7 +68,7 @@ RSpec.describe Flipper::UI::Actions::GroupsGate do
|
|
68
68
|
before do
|
69
69
|
post "features/search/groups",
|
70
70
|
{"value" => "not_here", "operation" => "enable", "authenticity_token" => "a"},
|
71
|
-
"rack.session" => {
|
71
|
+
"rack.session" => {"_csrf_token" => "a"}
|
72
72
|
end
|
73
73
|
|
74
74
|
it "redirects back to feature" do
|
@@ -6,7 +6,7 @@ RSpec.describe Flipper::UI::Actions::PercentageOfActorsGate do
|
|
6
6
|
before do
|
7
7
|
post "features/search/percentage_of_actors",
|
8
8
|
{"value" => "24", "authenticity_token" => "a"},
|
9
|
-
"rack.session" => {
|
9
|
+
"rack.session" => {"_csrf_token" => "a"}
|
10
10
|
end
|
11
11
|
|
12
12
|
it "enables the feature" do
|
@@ -23,7 +23,7 @@ RSpec.describe Flipper::UI::Actions::PercentageOfActorsGate do
|
|
23
23
|
before do
|
24
24
|
post "features/search/percentage_of_actors",
|
25
25
|
{"value" => "555", "authenticity_token" => "a"},
|
26
|
-
"rack.session" => {
|
26
|
+
"rack.session" => {"_csrf_token" => "a"}
|
27
27
|
end
|
28
28
|
|
29
29
|
it "does not change value" do
|
@@ -6,7 +6,7 @@ RSpec.describe Flipper::UI::Actions::PercentageOfTimeGate do
|
|
6
6
|
before do
|
7
7
|
post "features/search/percentage_of_time",
|
8
8
|
{"value" => "24", "authenticity_token" => "a"},
|
9
|
-
"rack.session" => {
|
9
|
+
"rack.session" => {"_csrf_token" => "a"}
|
10
10
|
end
|
11
11
|
|
12
12
|
it "enables the feature" do
|
@@ -23,7 +23,7 @@ RSpec.describe Flipper::UI::Actions::PercentageOfTimeGate do
|
|
23
23
|
before do
|
24
24
|
post "features/search/percentage_of_time",
|
25
25
|
{"value" => "555", "authenticity_token" => "a"},
|
26
|
-
"rack.session" => {
|
26
|
+
"rack.session" => {"_csrf_token" => "a"}
|
27
27
|
end
|
28
28
|
|
29
29
|
it "does not change value" do
|
data/spec/flipper/ui_spec.rb
CHANGED
@@ -37,7 +37,7 @@ RSpec.describe Flipper::UI do
|
|
37
37
|
it "can route features with names that match static directories" do
|
38
38
|
post "features/refactor-images/actors",
|
39
39
|
{"value" => "User:6", "operation" => "enable", "authenticity_token" => "a"},
|
40
|
-
"rack.session" => {
|
40
|
+
"rack.session" => {"_csrf_token" => "a"}
|
41
41
|
expect(last_response.status).to be(302)
|
42
42
|
expect(last_response.headers["Location"]).to eq("/features/refactor-images")
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flipper-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Nunemaker
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -50,14 +50,14 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 0.7.
|
53
|
+
version: 0.7.3
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
58
|
- - "~>"
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: 0.7.
|
60
|
+
version: 0.7.3
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: erubis
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -283,7 +283,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
283
283
|
version: '0'
|
284
284
|
requirements: []
|
285
285
|
rubyforge_project:
|
286
|
-
rubygems_version: 2.
|
286
|
+
rubygems_version: 2.4.5.1
|
287
287
|
signing_key:
|
288
288
|
specification_version: 4
|
289
289
|
summary: UI for the Flipper gem
|