flipper-ui 0.7.2 → 0.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|