mirror of
https://github.com/gravitational/teleport
synced 2024-10-22 10:13:21 +00:00
(web) adding 'InviteLink has expired' page and handling server errors on Login and Invite screens.
This commit is contained in:
parent
331763f418
commit
a99b8aa5fa
844
web/dist/app/app.js
vendored
844
web/dist/app/app.js
vendored
File diff suppressed because one or more lines are too long
681
web/dist/app/assets/css/datepicker3.css
vendored
681
web/dist/app/assets/css/datepicker3.css
vendored
|
@ -1,681 +0,0 @@
|
|||
/*!
|
||||
* Datepicker for Bootstrap v1.6.0 (https://github.com/eternicode/bootstrap-datepicker)
|
||||
*
|
||||
* Copyright 2012 Stefan Petre
|
||||
* Improvements by Andrew Rowls
|
||||
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
|
||||
*/
|
||||
.datepicker {
|
||||
border-radius: 4px;
|
||||
direction: ltr;
|
||||
}
|
||||
.datepicker-inline {
|
||||
width: 220px;
|
||||
}
|
||||
.datepicker.datepicker-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
.datepicker.datepicker-rtl table tr td span {
|
||||
float: right;
|
||||
}
|
||||
.datepicker-dropdown {
|
||||
top: 0;
|
||||
left: 0;
|
||||
padding: 4px;
|
||||
}
|
||||
.datepicker-dropdown:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 7px solid transparent;
|
||||
border-right: 7px solid transparent;
|
||||
border-bottom: 7px solid rgba(0, 0, 0, 0.15);
|
||||
border-top: 0;
|
||||
border-bottom-color: rgba(0, 0, 0, 0.2);
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown:after {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
border-left: 6px solid transparent;
|
||||
border-right: 6px solid transparent;
|
||||
border-bottom: 6px solid #ffffff;
|
||||
border-top: 0;
|
||||
position: absolute;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:before {
|
||||
left: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-left:after {
|
||||
left: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:before {
|
||||
right: 6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-right:after {
|
||||
right: 7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:before {
|
||||
top: -7px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-bottom:after {
|
||||
top: -6px;
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:before {
|
||||
bottom: -7px;
|
||||
border-bottom: 0;
|
||||
border-top: 7px solid rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
.datepicker-dropdown.datepicker-orient-top:after {
|
||||
bottom: -6px;
|
||||
border-bottom: 0;
|
||||
border-top: 6px solid #ffffff;
|
||||
}
|
||||
.datepicker > div {
|
||||
display: none;
|
||||
}
|
||||
.datepicker table {
|
||||
margin: 0;
|
||||
-webkit-touch-callout: none;
|
||||
-webkit-user-select: none;
|
||||
-khtml-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.datepicker table tr td,
|
||||
.datepicker table tr th {
|
||||
text-align: center;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border-radius: 4px;
|
||||
border: none;
|
||||
}
|
||||
.table-striped .datepicker table tr td,
|
||||
.table-striped .datepicker table tr th {
|
||||
background-color: transparent;
|
||||
}
|
||||
.datepicker table tr td.old,
|
||||
.datepicker table tr td.new {
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.day:hover,
|
||||
.datepicker table tr td.focused {
|
||||
background: #eeeeee;
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker table tr td.disabled,
|
||||
.datepicker table tr td.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td.highlighted {
|
||||
color: #000000;
|
||||
background-color: #d9edf7;
|
||||
border-color: #85c5e5;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.highlighted:focus,
|
||||
.datepicker table tr td.highlighted.focus {
|
||||
color: #000000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #298fc2;
|
||||
}
|
||||
.datepicker table tr td.highlighted:hover {
|
||||
color: #000000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #52addb;
|
||||
}
|
||||
.datepicker table tr td.highlighted:active,
|
||||
.datepicker table tr td.highlighted.active {
|
||||
color: #000000;
|
||||
background-color: #afd9ee;
|
||||
border-color: #52addb;
|
||||
}
|
||||
.datepicker table tr td.highlighted:active:hover,
|
||||
.datepicker table tr td.highlighted.active:hover,
|
||||
.datepicker table tr td.highlighted:active:focus,
|
||||
.datepicker table tr td.highlighted.active:focus,
|
||||
.datepicker table tr td.highlighted:active.focus,
|
||||
.datepicker table tr td.highlighted.active.focus {
|
||||
color: #000000;
|
||||
background-color: #91cbe8;
|
||||
border-color: #298fc2;
|
||||
}
|
||||
.datepicker table tr td.highlighted.disabled:hover,
|
||||
.datepicker table tr td.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted:hover,
|
||||
.datepicker table tr td.highlighted.disabled:focus,
|
||||
.datepicker table tr td.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted:focus,
|
||||
.datepicker table tr td.highlighted.disabled.focus,
|
||||
.datepicker table tr td.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.highlighted.focus {
|
||||
background-color: #d9edf7;
|
||||
border-color: #85c5e5;
|
||||
}
|
||||
.datepicker table tr td.highlighted.focused {
|
||||
background: #afd9ee;
|
||||
}
|
||||
.datepicker table tr td.highlighted.disabled,
|
||||
.datepicker table tr td.highlighted.disabled:active {
|
||||
background: #d9edf7;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.today {
|
||||
color: #000000;
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today.focus {
|
||||
color: #000000;
|
||||
background-color: #ffc966;
|
||||
border-color: #b37400;
|
||||
}
|
||||
.datepicker table tr td.today:hover {
|
||||
color: #000000;
|
||||
background-color: #ffc966;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active,
|
||||
.datepicker table tr td.today.active {
|
||||
color: #000000;
|
||||
background-color: #ffc966;
|
||||
border-color: #f59e00;
|
||||
}
|
||||
.datepicker table tr td.today:active:hover,
|
||||
.datepicker table tr td.today.active:hover,
|
||||
.datepicker table tr td.today:active:focus,
|
||||
.datepicker table tr td.today.active:focus,
|
||||
.datepicker table tr td.today:active.focus,
|
||||
.datepicker table tr td.today.active.focus {
|
||||
color: #000000;
|
||||
background-color: #ffbc42;
|
||||
border-color: #b37400;
|
||||
}
|
||||
.datepicker table tr td.today.disabled:hover,
|
||||
.datepicker table tr td.today[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.today:hover,
|
||||
.datepicker table tr td.today.disabled:focus,
|
||||
.datepicker table tr td.today[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.today:focus,
|
||||
.datepicker table tr td.today.disabled.focus,
|
||||
.datepicker table tr td.today[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.today.focus {
|
||||
background-color: #ffdb99;
|
||||
border-color: #ffb733;
|
||||
}
|
||||
.datepicker table tr td.today.focused {
|
||||
background: #ffc966;
|
||||
}
|
||||
.datepicker table tr td.today.disabled,
|
||||
.datepicker table tr td.today.disabled:active {
|
||||
background: #ffdb99;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range {
|
||||
color: #000000;
|
||||
background-color: #eeeeee;
|
||||
border-color: #bbbbbb;
|
||||
border-radius: 0;
|
||||
}
|
||||
.datepicker table tr td.range:focus,
|
||||
.datepicker table tr td.range.focus {
|
||||
color: #000000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #7c7c7c;
|
||||
}
|
||||
.datepicker table tr td.range:hover {
|
||||
color: #000000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #9d9d9d;
|
||||
}
|
||||
.datepicker table tr td.range:active,
|
||||
.datepicker table tr td.range.active {
|
||||
color: #000000;
|
||||
background-color: #d5d5d5;
|
||||
border-color: #9d9d9d;
|
||||
}
|
||||
.datepicker table tr td.range:active:hover,
|
||||
.datepicker table tr td.range.active:hover,
|
||||
.datepicker table tr td.range:active:focus,
|
||||
.datepicker table tr td.range.active:focus,
|
||||
.datepicker table tr td.range:active.focus,
|
||||
.datepicker table tr td.range.active.focus {
|
||||
color: #000000;
|
||||
background-color: #c3c3c3;
|
||||
border-color: #7c7c7c;
|
||||
}
|
||||
.datepicker table tr td.range.disabled:hover,
|
||||
.datepicker table tr td.range[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range:hover,
|
||||
.datepicker table tr td.range.disabled:focus,
|
||||
.datepicker table tr td.range[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range:focus,
|
||||
.datepicker table tr td.range.disabled.focus,
|
||||
.datepicker table tr td.range[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.focus {
|
||||
background-color: #eeeeee;
|
||||
border-color: #bbbbbb;
|
||||
}
|
||||
.datepicker table tr td.range.focused {
|
||||
background: #d5d5d5;
|
||||
}
|
||||
.datepicker table tr td.range.disabled,
|
||||
.datepicker table tr td.range.disabled:active {
|
||||
background: #eeeeee;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted {
|
||||
color: #000000;
|
||||
background-color: #e4eef3;
|
||||
border-color: #9dc1d3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:focus,
|
||||
.datepicker table tr td.range.highlighted.focus {
|
||||
color: #000000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #4b88a6;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:hover {
|
||||
color: #000000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #73a6c0;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:active,
|
||||
.datepicker table tr td.range.highlighted.active {
|
||||
color: #000000;
|
||||
background-color: #c1d7e3;
|
||||
border-color: #73a6c0;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted:active:hover,
|
||||
.datepicker table tr td.range.highlighted.active:hover,
|
||||
.datepicker table tr td.range.highlighted:active:focus,
|
||||
.datepicker table tr td.range.highlighted.active:focus,
|
||||
.datepicker table tr td.range.highlighted:active.focus,
|
||||
.datepicker table tr td.range.highlighted.active.focus {
|
||||
color: #000000;
|
||||
background-color: #a8c8d8;
|
||||
border-color: #4b88a6;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.disabled:hover,
|
||||
.datepicker table tr td.range.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted:hover,
|
||||
.datepicker table tr td.range.highlighted.disabled:focus,
|
||||
.datepicker table tr td.range.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted:focus,
|
||||
.datepicker table tr td.range.highlighted.disabled.focus,
|
||||
.datepicker table tr td.range.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.highlighted.focus {
|
||||
background-color: #e4eef3;
|
||||
border-color: #9dc1d3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.focused {
|
||||
background: #c1d7e3;
|
||||
}
|
||||
.datepicker table tr td.range.highlighted.disabled,
|
||||
.datepicker table tr td.range.highlighted.disabled:active {
|
||||
background: #e4eef3;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.range.today {
|
||||
color: #000000;
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today.focus {
|
||||
color: #000000;
|
||||
background-color: #f4b747;
|
||||
border-color: #815608;
|
||||
}
|
||||
.datepicker table tr td.range.today:hover {
|
||||
color: #000000;
|
||||
background-color: #f4b747;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active,
|
||||
.datepicker table tr td.range.today.active {
|
||||
color: #000000;
|
||||
background-color: #f4b747;
|
||||
border-color: #bf800c;
|
||||
}
|
||||
.datepicker table tr td.range.today:active:hover,
|
||||
.datepicker table tr td.range.today.active:hover,
|
||||
.datepicker table tr td.range.today:active:focus,
|
||||
.datepicker table tr td.range.today.active:focus,
|
||||
.datepicker table tr td.range.today:active.focus,
|
||||
.datepicker table tr td.range.today.active.focus {
|
||||
color: #000000;
|
||||
background-color: #f2aa25;
|
||||
border-color: #815608;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled:hover,
|
||||
.datepicker table tr td.range.today[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:hover,
|
||||
.datepicker table tr td.range.today.disabled:focus,
|
||||
.datepicker table tr td.range.today[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today:focus,
|
||||
.datepicker table tr td.range.today.disabled.focus,
|
||||
.datepicker table tr td.range.today[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.range.today.focus {
|
||||
background-color: #f7ca77;
|
||||
border-color: #f1a417;
|
||||
}
|
||||
.datepicker table tr td.range.today.disabled,
|
||||
.datepicker table tr td.range.today.disabled:active {
|
||||
background: #f7ca77;
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker table tr td.selected,
|
||||
.datepicker table tr td.selected.highlighted {
|
||||
color: #ffffff;
|
||||
background-color: #777777;
|
||||
border-color: #555555;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.selected:focus,
|
||||
.datepicker table tr td.selected.highlighted:focus,
|
||||
.datepicker table tr td.selected.focus,
|
||||
.datepicker table tr td.selected.highlighted.focus {
|
||||
color: #ffffff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #161616;
|
||||
}
|
||||
.datepicker table tr td.selected:hover,
|
||||
.datepicker table tr td.selected.highlighted:hover {
|
||||
color: #ffffff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active,
|
||||
.datepicker table tr td.selected.highlighted:active,
|
||||
.datepicker table tr td.selected.active,
|
||||
.datepicker table tr td.selected.highlighted.active {
|
||||
color: #ffffff;
|
||||
background-color: #5e5e5e;
|
||||
border-color: #373737;
|
||||
}
|
||||
.datepicker table tr td.selected:active:hover,
|
||||
.datepicker table tr td.selected.highlighted:active:hover,
|
||||
.datepicker table tr td.selected.active:hover,
|
||||
.datepicker table tr td.selected.highlighted.active:hover,
|
||||
.datepicker table tr td.selected:active:focus,
|
||||
.datepicker table tr td.selected.highlighted:active:focus,
|
||||
.datepicker table tr td.selected.active:focus,
|
||||
.datepicker table tr td.selected.highlighted.active:focus,
|
||||
.datepicker table tr td.selected:active.focus,
|
||||
.datepicker table tr td.selected.highlighted:active.focus,
|
||||
.datepicker table tr td.selected.active.focus,
|
||||
.datepicker table tr td.selected.highlighted.active.focus {
|
||||
color: #ffffff;
|
||||
background-color: #4c4c4c;
|
||||
border-color: #161616;
|
||||
}
|
||||
.datepicker table tr td.selected.disabled:hover,
|
||||
.datepicker table tr td.selected.highlighted.disabled:hover,
|
||||
.datepicker table tr td.selected[disabled]:hover,
|
||||
.datepicker table tr td.selected.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected:hover,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,
|
||||
.datepicker table tr td.selected.disabled:focus,
|
||||
.datepicker table tr td.selected.highlighted.disabled:focus,
|
||||
.datepicker table tr td.selected[disabled]:focus,
|
||||
.datepicker table tr td.selected.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected:focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,
|
||||
.datepicker table tr td.selected.disabled.focus,
|
||||
.datepicker table tr td.selected.highlighted.disabled.focus,
|
||||
.datepicker table tr td.selected[disabled].focus,
|
||||
.datepicker table tr td.selected.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.focus,
|
||||
fieldset[disabled] .datepicker table tr td.selected.highlighted.focus {
|
||||
background-color: #777777;
|
||||
border-color: #555555;
|
||||
}
|
||||
.datepicker table tr td.active,
|
||||
.datepicker table tr td.active.highlighted {
|
||||
color: #ffffff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td.active:focus,
|
||||
.datepicker table tr td.active.highlighted:focus,
|
||||
.datepicker table tr td.active.focus,
|
||||
.datepicker table tr td.active.highlighted.focus {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td.active:hover,
|
||||
.datepicker table tr td.active.highlighted:hover {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td.active:active,
|
||||
.datepicker table tr td.active.highlighted:active,
|
||||
.datepicker table tr td.active.active,
|
||||
.datepicker table tr td.active.highlighted.active {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td.active:active:hover,
|
||||
.datepicker table tr td.active.highlighted:active:hover,
|
||||
.datepicker table tr td.active.active:hover,
|
||||
.datepicker table tr td.active.highlighted.active:hover,
|
||||
.datepicker table tr td.active:active:focus,
|
||||
.datepicker table tr td.active.highlighted:active:focus,
|
||||
.datepicker table tr td.active.active:focus,
|
||||
.datepicker table tr td.active.highlighted.active:focus,
|
||||
.datepicker table tr td.active:active.focus,
|
||||
.datepicker table tr td.active.highlighted:active.focus,
|
||||
.datepicker table tr td.active.active.focus,
|
||||
.datepicker table tr td.active.highlighted.active.focus {
|
||||
color: #ffffff;
|
||||
background-color: #204d74;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td.active.disabled:hover,
|
||||
.datepicker table tr td.active.highlighted.disabled:hover,
|
||||
.datepicker table tr td.active[disabled]:hover,
|
||||
.datepicker table tr td.active.highlighted[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted:hover,
|
||||
.datepicker table tr td.active.disabled:focus,
|
||||
.datepicker table tr td.active.highlighted.disabled:focus,
|
||||
.datepicker table tr td.active[disabled]:focus,
|
||||
.datepicker table tr td.active.highlighted[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted:focus,
|
||||
.datepicker table tr td.active.disabled.focus,
|
||||
.datepicker table tr td.active.highlighted.disabled.focus,
|
||||
.datepicker table tr td.active[disabled].focus,
|
||||
.datepicker table tr td.active.highlighted[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.focus,
|
||||
fieldset[disabled] .datepicker table tr td.active.highlighted.focus {
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
.datepicker table tr td span {
|
||||
display: block;
|
||||
width: 23%;
|
||||
height: 54px;
|
||||
line-height: 54px;
|
||||
float: left;
|
||||
margin: 1%;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
}
|
||||
.datepicker table tr td span:hover,
|
||||
.datepicker table tr td span.focused {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker table tr td span.disabled,
|
||||
.datepicker table tr td span.disabled:hover {
|
||||
background: none;
|
||||
color: #777777;
|
||||
cursor: default;
|
||||
}
|
||||
.datepicker table tr td span.active,
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active.disabled,
|
||||
.datepicker table tr td span.active.disabled:hover {
|
||||
color: #ffffff;
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
|
||||
}
|
||||
.datepicker table tr td span.active:focus,
|
||||
.datepicker table tr td span.active:hover:focus,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.focus,
|
||||
.datepicker table tr td span.active:hover.focus,
|
||||
.datepicker table tr td span.active.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.focus {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td span.active:hover,
|
||||
.datepicker table tr td span.active:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:hover {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td span.active:active,
|
||||
.datepicker table tr td span.active:hover:active,
|
||||
.datepicker table tr td span.active.disabled:active,
|
||||
.datepicker table tr td span.active.disabled:hover:active,
|
||||
.datepicker table tr td span.active.active,
|
||||
.datepicker table tr td span.active:hover.active,
|
||||
.datepicker table tr td span.active.disabled.active,
|
||||
.datepicker table tr td span.active.disabled:hover.active {
|
||||
color: #ffffff;
|
||||
background-color: #286090;
|
||||
border-color: #204d74;
|
||||
}
|
||||
.datepicker table tr td span.active:active:hover,
|
||||
.datepicker table tr td span.active:hover:active:hover,
|
||||
.datepicker table tr td span.active.disabled:active:hover,
|
||||
.datepicker table tr td span.active.disabled:hover:active:hover,
|
||||
.datepicker table tr td span.active.active:hover,
|
||||
.datepicker table tr td span.active:hover.active:hover,
|
||||
.datepicker table tr td span.active.disabled.active:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.active:hover,
|
||||
.datepicker table tr td span.active:active:focus,
|
||||
.datepicker table tr td span.active:hover:active:focus,
|
||||
.datepicker table tr td span.active.disabled:active:focus,
|
||||
.datepicker table tr td span.active.disabled:hover:active:focus,
|
||||
.datepicker table tr td span.active.active:focus,
|
||||
.datepicker table tr td span.active:hover.active:focus,
|
||||
.datepicker table tr td span.active.disabled.active:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.active:focus,
|
||||
.datepicker table tr td span.active:active.focus,
|
||||
.datepicker table tr td span.active:hover:active.focus,
|
||||
.datepicker table tr td span.active.disabled:active.focus,
|
||||
.datepicker table tr td span.active.disabled:hover:active.focus,
|
||||
.datepicker table tr td span.active.active.focus,
|
||||
.datepicker table tr td span.active:hover.active.focus,
|
||||
.datepicker table tr td span.active.disabled.active.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.active.focus {
|
||||
color: #ffffff;
|
||||
background-color: #204d74;
|
||||
border-color: #122b40;
|
||||
}
|
||||
.datepicker table tr td span.active.disabled:hover,
|
||||
.datepicker table tr td span.active:hover.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled.disabled:hover,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:hover,
|
||||
.datepicker table tr td span.active[disabled]:hover,
|
||||
.datepicker table tr td span.active:hover[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled[disabled]:hover,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
|
||||
.datepicker table tr td span.active.disabled:focus,
|
||||
.datepicker table tr td span.active:hover.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled.disabled:focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled:focus,
|
||||
.datepicker table tr td span.active[disabled]:focus,
|
||||
.datepicker table tr td span.active:hover[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled[disabled]:focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
|
||||
.datepicker table tr td span.active.disabled.focus,
|
||||
.datepicker table tr td span.active:hover.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled.disabled.focus,
|
||||
.datepicker table tr td span.active.disabled:hover.disabled.focus,
|
||||
.datepicker table tr td span.active[disabled].focus,
|
||||
.datepicker table tr td span.active:hover[disabled].focus,
|
||||
.datepicker table tr td span.active.disabled[disabled].focus,
|
||||
.datepicker table tr td span.active.disabled:hover[disabled].focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active:hover.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled.focus,
|
||||
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {
|
||||
background-color: #337ab7;
|
||||
border-color: #2e6da4;
|
||||
}
|
||||
.datepicker table tr td span.old,
|
||||
.datepicker table tr td span.new {
|
||||
color: #777777;
|
||||
}
|
||||
.datepicker .datepicker-switch {
|
||||
width: 145px;
|
||||
}
|
||||
.datepicker .datepicker-switch,
|
||||
.datepicker .prev,
|
||||
.datepicker .next,
|
||||
.datepicker tfoot tr th {
|
||||
cursor: pointer;
|
||||
}
|
||||
.datepicker .datepicker-switch:hover,
|
||||
.datepicker .prev:hover,
|
||||
.datepicker .next:hover,
|
||||
.datepicker tfoot tr th:hover {
|
||||
background: #eeeeee;
|
||||
}
|
||||
.datepicker .cw {
|
||||
font-size: 10px;
|
||||
width: 12px;
|
||||
padding: 0 2px 0 5px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
.input-group.date .input-group-addon {
|
||||
cursor: pointer;
|
||||
}
|
||||
.input-daterange {
|
||||
width: 100%;
|
||||
}
|
||||
.input-daterange input {
|
||||
text-align: center;
|
||||
}
|
||||
.input-daterange input:first-child {
|
||||
border-radius: 3px 0 0 3px;
|
||||
}
|
||||
.input-daterange input:last-child {
|
||||
border-radius: 0 3px 3px 0;
|
||||
}
|
||||
.input-daterange .input-group-addon {
|
||||
width: auto;
|
||||
min-width: 16px;
|
||||
padding: 4px 5px;
|
||||
line-height: 1.42857143;
|
||||
text-shadow: 0 1px 0 #fff;
|
||||
border-width: 1px 0;
|
||||
margin-left: -5px;
|
||||
margin-right: -5px;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-datepicker3.css.map */
|
67
web/dist/app/assets/img/grv-tlpt-logo.svg
vendored
Normal file
67
web/dist/app/assets/img/grv-tlpt-logo.svg
vendored
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="150px" height="150px" viewBox="0 0 150 150" enable-background="new 0 0 150 150" xml:space="preserve">
|
||||
<g display="none">
|
||||
<path display="inline" d="M76,35.422c-10.912,0-20.806,4.438-27.973,11.605S36.422,64.088,36.422,75
|
||||
c0,10.912,4.438,20.806,11.605,27.973c7.167,7.166,17.061,11.604,27.973,11.604c10.912,0,20.806-4.438,27.973-11.604
|
||||
c7.166-7.167,11.604-17.061,11.604-27.973c0-10.912-4.438-20.806-11.604-27.973C96.806,39.861,86.912,35.422,76,35.422z"/>
|
||||
<path display="inline" d="M141.604,95.871l-6.731-5.839l-6.731-5.839c0.24-1.306,0.395-2.662,0.488-4.037
|
||||
c0.095-1.373,0.129-2.765,0.129-4.139s-0.034-2.765-0.129-4.139c-0.094-1.374-0.248-2.731-0.488-4.037l6.731-5.839l6.731-5.839
|
||||
c0.481-0.344,0.809-0.841,0.955-1.391c0.146-0.55,0.111-1.15-0.129-1.701c-1.375-4.224-3.247-8.346-5.506-12.245
|
||||
c-2.258-3.898-4.902-7.574-7.822-10.905c-0.412-0.481-0.91-0.808-1.442-0.953c-0.532-0.146-1.1-0.111-1.649,0.129l-8.484,2.954
|
||||
l-8.483,2.953c-2.095-1.718-4.328-3.263-6.672-4.628c-2.345-1.365-4.801-2.55-7.343-3.547l-1.682-8.792l-1.683-8.792
|
||||
c-0.103-0.55-0.396-1.082-0.808-1.494s-0.945-0.704-1.529-0.773C84.93,6.085,80.465,5.639,76,5.639s-8.93,0.446-13.327,1.339
|
||||
c-0.584,0.069-1.116,0.361-1.529,0.773c-0.412,0.412-0.704,0.944-0.807,1.494l-1.683,8.793l-1.683,8.793
|
||||
c-2.542,0.997-5.032,2.182-7.394,3.547c-2.361,1.365-4.594,2.91-6.621,4.628l-8.484-2.953l-8.484-2.954
|
||||
c-0.549-0.241-1.116-0.275-1.648-0.129c-0.533,0.146-1.031,0.472-1.443,0.953c-2.919,3.332-5.564,7.007-7.823,10.905
|
||||
c-2.258,3.898-4.13,8.021-5.504,12.245c-0.241,0.55-0.275,1.151-0.128,1.7c0.146,0.549,0.472,1.047,0.953,1.391l6.732,5.839
|
||||
l6.732,5.839c-0.24,1.305-0.395,2.662-0.489,4.036c-0.095,1.374-0.129,2.766-0.129,4.139c0,1.374,0.034,2.766,0.128,4.139
|
||||
c0.094,1.375,0.249,2.731,0.489,4.037l-6.731,5.839l-6.731,5.839c-0.48,0.344-0.807,0.842-0.953,1.392
|
||||
c-0.146,0.549-0.112,1.149,0.128,1.699c1.374,4.226,3.246,8.347,5.504,12.246c2.259,3.898,4.903,7.573,7.823,10.905
|
||||
c0.413,0.48,0.911,0.807,1.443,0.953c0.533,0.146,1.099,0.111,1.649-0.129l8.484-2.954l8.484-2.954
|
||||
c2.026,1.718,4.259,3.264,6.621,4.629c2.361,1.365,4.852,2.55,7.393,3.546l1.683,8.794l1.683,8.793
|
||||
c0.103,0.55,0.395,1.082,0.807,1.494s0.945,0.705,1.529,0.773c2.198,0.412,4.396,0.738,6.611,0.961
|
||||
c2.215,0.224,4.448,0.344,6.716,0.344c2.267,0,4.499-0.12,6.715-0.344c2.216-0.223,4.413-0.549,6.611-0.961
|
||||
c0.585-0.068,1.117-0.361,1.529-0.773c0.413-0.412,0.704-0.944,0.808-1.494l1.683-8.793l1.683-8.794
|
||||
c2.542-0.996,4.998-2.181,7.343-3.546c2.344-1.365,4.577-2.911,6.672-4.629l8.483,2.954l8.484,2.954
|
||||
c0.55,0.24,1.117,0.274,1.649,0.129c0.532-0.146,1.03-0.473,1.442-0.953c2.92-3.332,5.564-7.007,7.822-10.905
|
||||
c2.259-3.899,4.131-8.021,5.506-12.246c0.24-0.55,0.273-1.15,0.127-1.699C142.412,96.713,142.085,96.215,141.604,95.871z
|
||||
M76,118.577c-12.015,0-22.909-4.888-30.8-12.778C37.31,97.908,32.422,87.014,32.422,75c0-12.015,4.887-22.909,12.778-30.8
|
||||
C53.091,36.31,63.985,31.422,76,31.422c12.014,0,22.908,4.887,30.799,12.778c7.891,7.891,12.778,18.785,12.778,30.8
|
||||
c0,12.014-4.888,22.908-12.778,30.799S88.014,118.577,76,118.577z"/>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
<g>
|
||||
<path d="M75.851,35.422c-10.912,0-20.806,4.438-27.973,11.605S36.273,64.088,36.273,75s4.438,20.805,11.605,27.973
|
||||
c7.167,7.166,17.061,11.604,27.973,11.604c10.912,0,20.806-4.438,27.973-11.604c7.166-7.168,11.604-17.061,11.604-27.973
|
||||
s-4.438-20.807-11.604-27.973C96.656,39.86,86.763,35.422,75.851,35.422z M92.65,64.207H80.531v34.2h-9.36v-34.2h-12.12v-8.28
|
||||
h33.6V64.207z"/>
|
||||
<path d="M142.409,97.262c-0.146-0.549-0.474-1.047-0.955-1.391l-6.731-5.84l-6.731-5.838c0.24-1.307,0.395-2.662,0.488-4.037
|
||||
c0.095-1.373,0.129-2.766,0.129-4.139c0-1.375-0.034-2.765-0.129-4.14c-0.094-1.374-0.248-2.731-0.488-4.037l6.731-5.839
|
||||
l6.731-5.839c0.481-0.344,0.809-0.841,0.955-1.391c0.146-0.55,0.111-1.15-0.129-1.701c-1.375-4.224-3.247-8.346-5.506-12.245
|
||||
c-2.258-3.898-4.902-7.574-7.822-10.905c-0.412-0.481-0.91-0.808-1.442-0.953c-0.532-0.146-1.1-0.111-1.649,0.129l-8.484,2.954
|
||||
l-8.483,2.953c-2.095-1.718-4.328-3.263-6.672-4.628c-2.345-1.365-4.801-2.55-7.343-3.547l-1.682-8.792l-1.683-8.792
|
||||
c-0.103-0.55-0.396-1.082-0.808-1.494s-0.945-0.704-1.529-0.773C84.78,6.084,80.315,5.638,75.85,5.638s-8.93,0.446-13.327,1.339
|
||||
c-0.584,0.069-1.116,0.361-1.529,0.773c-0.412,0.412-0.704,0.944-0.807,1.494l-1.683,8.793l-1.683,8.793
|
||||
c-2.542,0.997-5.032,2.182-7.394,3.547c-2.361,1.365-4.594,2.91-6.621,4.628l-8.484-2.953l-8.484-2.954
|
||||
c-0.549-0.241-1.116-0.275-1.648-0.129c-0.533,0.146-1.031,0.472-1.443,0.953c-2.919,3.332-5.564,7.007-7.823,10.905
|
||||
c-2.258,3.898-4.13,8.021-5.504,12.245c-0.241,0.55-0.275,1.151-0.128,1.7c0.146,0.549,0.472,1.047,0.953,1.391l6.732,5.839
|
||||
l6.732,5.839c-0.24,1.305-0.395,2.662-0.489,4.036c-0.095,1.374-0.129,2.766-0.129,4.139c0,1.373,0.034,2.766,0.128,4.139
|
||||
c0.094,1.375,0.249,2.73,0.489,4.037l-6.731,5.838l-6.731,5.84c-0.48,0.344-0.807,0.842-0.953,1.391
|
||||
c-0.146,0.549-0.112,1.15,0.128,1.699c1.374,4.227,3.246,8.348,5.504,12.246c2.259,3.898,4.903,7.574,7.823,10.906
|
||||
c0.413,0.48,0.911,0.807,1.443,0.953c0.533,0.145,1.099,0.111,1.649-0.129l8.484-2.955l8.484-2.953
|
||||
c2.026,1.717,4.259,3.264,6.621,4.629c2.361,1.365,4.852,2.549,7.393,3.545l1.683,8.795l1.683,8.793
|
||||
c0.103,0.549,0.395,1.082,0.807,1.494s0.945,0.705,1.529,0.773c2.198,0.412,4.396,0.738,6.611,0.961s4.448,0.344,6.716,0.344
|
||||
c2.267,0,4.499-0.121,6.715-0.344s4.413-0.549,6.611-0.961c0.585-0.068,1.117-0.361,1.529-0.773
|
||||
c0.413-0.412,0.704-0.945,0.808-1.494l1.683-8.793l1.683-8.795c2.542-0.996,4.998-2.18,7.343-3.545
|
||||
c2.344-1.365,4.577-2.912,6.672-4.629l8.483,2.953l8.484,2.955c0.55,0.24,1.117,0.273,1.649,0.129
|
||||
c0.532-0.146,1.03-0.473,1.442-0.953c2.92-3.332,5.564-7.008,7.822-10.906c2.259-3.898,4.131-8.02,5.506-12.246
|
||||
C142.522,98.412,142.556,97.811,142.409,97.262z M106.649,105.799c-7.891,7.891-18.785,12.777-30.799,12.777
|
||||
c-12.015,0-22.909-4.887-30.8-12.777C37.16,97.908,32.273,87.014,32.273,75c0-12.015,4.887-22.909,12.778-30.8
|
||||
c7.891-7.891,18.785-12.778,30.8-12.778c12.014,0,22.908,4.887,30.799,12.778c7.891,7.891,12.778,18.785,12.778,30.8
|
||||
C119.428,87.014,114.54,97.908,106.649,105.799z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
2125
web/dist/app/assets/js/bootstrap-datepicker.js
vendored
2125
web/dist/app/assets/js/bootstrap-datepicker.js
vendored
File diff suppressed because it is too large
Load diff
82
web/dist/app/styles.js
vendored
82
web/dist/app/styles.js
vendored
File diff suppressed because one or more lines are too long
1643
web/dist/app/vendor.js
vendored
1643
web/dist/app/vendor.js
vendored
File diff suppressed because one or more lines are too long
6
web/dist/index.html
vendored
6
web/dist/index.html
vendored
|
@ -13,12 +13,12 @@
|
|||
<script src="/web/app/assets/js/bootstrap.js"></script>
|
||||
<script src="/web/app/assets/js/term.js"></script>
|
||||
<script src="/web/app/assets/js/bootstrap-datepicker-1.6.0.js"></script>
|
||||
<script src="/web/app/vendor.js?ver=0.11457824653536"></script>
|
||||
<script src="/web/app/styles.js?ver=0.11457824653536"></script>
|
||||
<script src="/web/app/vendor.js?ver=0.11457890068495"></script>
|
||||
<script src="/web/app/styles.js?ver=0.11457890068495"></script>
|
||||
|
||||
</head>
|
||||
<body class="grv">
|
||||
<div id="app"></div>
|
||||
</body>
|
||||
<script src="/web/app/app.js?ver=0.11457824653536"></script>
|
||||
<script src="/web/app/app.js?ver=0.11457890068495"></script>
|
||||
</html>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
var React = require('react');
|
||||
var {getters, actions} = require('app/modules/activeTerminal/');
|
||||
var NotFoundPage = require('app/components/notFoundPage.jsx');
|
||||
var SessionPlayer = require('./sessionPlayer.jsx');
|
||||
var ActiveSession = require('./activeSession.jsx');
|
||||
|
||||
|
|
35
web/src/app/components/errorPage.jsx
Normal file
35
web/src/app/components/errorPage.jsx
Normal file
|
@ -0,0 +1,35 @@
|
|||
var React = require('react');
|
||||
|
||||
var NotFound = React.createClass({
|
||||
render() {
|
||||
return (
|
||||
<div className="grv-error-page">
|
||||
<div className="grv-logo-tprt">Teleport</div>
|
||||
<div className="grv-warning"><i className="fa fa-warning"></i> </div>
|
||||
<h1>Whoops, we cannot find that</h1>
|
||||
<div>Looks like the page you are looking for isn't here any longer</div>
|
||||
<div>If you believe this is an error, please contact your organization administrator.</div>
|
||||
<div className="contact-section">If you believe this is an issue with Teleport, please <a href="https://github.com/gravitational/teleport/issues/new">create a GitHub issue.</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
})
|
||||
|
||||
var ExpiredInvite = React.createClass({
|
||||
render() {
|
||||
return (
|
||||
<div className="grv-error-page">
|
||||
<div className="grv-logo-tprt">Teleport</div>
|
||||
<div className="grv-warning"><i className="fa fa-warning"></i> </div>
|
||||
<h1>Invite code has expired</h1>
|
||||
<div>Looks like your invite code isn't valid anymore</div>
|
||||
<div className="contact-section">If you believe this is an issue with Teleport, please <a href="https://github.com/gravitational/teleport/issues/new">create a GitHub issue.</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
})
|
||||
|
||||
export default NotFound;
|
||||
export {NotFound, ExpiredInvite}
|
|
@ -4,4 +4,4 @@ module.exports.NewUser = require('./newUser.jsx');
|
|||
module.exports.Nodes = require('./nodes/main.jsx');
|
||||
module.exports.Sessions = require('./sessions/main.jsx');
|
||||
module.exports.CurrentSessionHost = require('./currentSession/main.jsx');
|
||||
module.exports.NotFoundPage = require('./notFoundPage.jsx');
|
||||
module.exports.NotFound = require('./errorPage.jsx').NotFound;
|
||||
|
|
|
@ -2,7 +2,7 @@ var React = require('react');
|
|||
var $ = require('jQuery');
|
||||
var reactor = require('app/reactor');
|
||||
var LinkedStateMixin = require('react-addons-linked-state-mixin');
|
||||
var {actions} = require('app/modules/user');
|
||||
var {actions, getters} = require('app/modules/user');
|
||||
var GoogleAuthInfo = require('./googleAuthLogo');
|
||||
var cfg = require('app/config');
|
||||
|
||||
|
@ -31,6 +31,8 @@ var LoginInputForm = React.createClass({
|
|||
},
|
||||
|
||||
render() {
|
||||
let {isProcessing, isFailed, message } = this.props.attemp;
|
||||
|
||||
return (
|
||||
<form ref="form" className="grv-login-input-form">
|
||||
<h3> Welcome to Teleport </h3>
|
||||
|
@ -44,7 +46,8 @@ var LoginInputForm = React.createClass({
|
|||
<div className="form-group">
|
||||
<input valueLink={this.linkState('token')} className="form-control required" name="token" placeholder="Two factor token (Google Authenticator)"/>
|
||||
</div>
|
||||
<button type="submit" className="btn btn-primary block full-width m-b" onClick={this.onClick}>Login</button>
|
||||
<button onClick={this.onClick} disabled={isProcessing} type="submit" className="btn btn-primary block full-width m-b">Login</button>
|
||||
{ isFailed ? (<label className="error">{message}</label>) : null }
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
@ -57,6 +60,7 @@ var Login = React.createClass({
|
|||
|
||||
getDataBindings() {
|
||||
return {
|
||||
attemp: getters.loginAttemp
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -71,15 +75,13 @@ var Login = React.createClass({
|
|||
actions.login(inputData, redirect);
|
||||
},
|
||||
|
||||
render() {
|
||||
var isProcessing = false;//this.state.userRequest.get('isLoading');
|
||||
var isError = false;//this.state.userRequest.get('isError');
|
||||
render() {
|
||||
return (
|
||||
<div className="grv-login text-center">
|
||||
<div className="grv-logo-tprt"></div>
|
||||
<div className="grv-content grv-flex">
|
||||
<div className="grv-flex-column">
|
||||
<LoginInputForm onClick={this.onClick}/>
|
||||
<LoginInputForm attemp={this.state.attemp} onClick={this.onClick}/>
|
||||
<GoogleAuthInfo/>
|
||||
<div className="grv-login-info">
|
||||
<i className="fa fa-question"></i>
|
||||
|
|
|
@ -5,6 +5,7 @@ var {actions, getters} = require('app/modules/invite');
|
|||
var userModule = require('app/modules/user');
|
||||
var LinkedStateMixin = require('react-addons-linked-state-mixin');
|
||||
var GoogleAuthInfo = require('./googleAuthLogo');
|
||||
var {ExpiredInvite} = require('./errorPage');
|
||||
|
||||
var InviteInputForm = React.createClass({
|
||||
|
||||
|
@ -58,6 +59,7 @@ var InviteInputForm = React.createClass({
|
|||
},
|
||||
|
||||
render() {
|
||||
let {isProcessing, isFailed, message } = this.props.attemp;
|
||||
return (
|
||||
<form ref="form" className="grv-invite-input-form">
|
||||
<h3> Get started with Teleport </h3>
|
||||
|
@ -89,12 +91,13 @@ var InviteInputForm = React.createClass({
|
|||
</div>
|
||||
<div className="form-group">
|
||||
<input
|
||||
name="token"
|
||||
name="token"
|
||||
valueLink={this.linkState('token')}
|
||||
className="form-control required"
|
||||
placeholder="Two factor token (Google Authenticator)" />
|
||||
</div>
|
||||
<button type="submit" disabled={this.props.attemp.isProcessing} className="btn btn-primary block full-width m-b" onClick={this.onClick} >Sign up</button>
|
||||
<button type="submit" disabled={isProcessing} className="btn btn-primary block full-width m-b" onClick={this.onClick} >Sign up</button>
|
||||
{ isFailed ? (<label className="error">{message}</label>) : null }
|
||||
</div>
|
||||
</form>
|
||||
);
|
||||
|
@ -108,7 +111,8 @@ var Invite = React.createClass({
|
|||
getDataBindings() {
|
||||
return {
|
||||
invite: getters.invite,
|
||||
attemp: getters.attemp
|
||||
attemp: getters.attemp,
|
||||
fetchingInvite: getters.fetchingInvite
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -117,7 +121,13 @@ var Invite = React.createClass({
|
|||
},
|
||||
|
||||
render: function() {
|
||||
if(!this.state.invite) {
|
||||
let {fetchingInvite, invite, attemp} = this.state;
|
||||
|
||||
if(fetchingInvite.isFailed){
|
||||
return <ExpiredInvite/>
|
||||
}
|
||||
|
||||
if(!invite) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -126,12 +136,12 @@ var Invite = React.createClass({
|
|||
<div className="grv-logo-tprt"></div>
|
||||
<div className="grv-content grv-flex">
|
||||
<div className="grv-flex-column">
|
||||
<InviteInputForm attemp={this.state.attemp} invite={this.state.invite.toJS()}/>
|
||||
<InviteInputForm attemp={attemp} invite={invite.toJS()}/>
|
||||
<GoogleAuthInfo/>
|
||||
</div>
|
||||
<div className="grv-flex-column grv-invite-barcode">
|
||||
<h4>Scan bar code for auth token <br/> <small>Scan below to generate your two factor token</small></h4>
|
||||
<img className="img-thumbnail" src={ `data:image/png;base64,${this.state.invite.get('qr')}` } />
|
||||
<img className="img-thumbnail" src={ `data:image/png;base64,${invite.get('qr')}` } />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
var React = require('react');
|
||||
|
||||
var NotFoundPage = React.createClass({
|
||||
render() {
|
||||
return (
|
||||
<div className="grv-page-notfound">
|
||||
<div className="grv-logo-tprt">Teleport</div>
|
||||
<div className="grv-warning"><i className="fa fa-warning"></i> </div>
|
||||
<h1>Whoops, we cannot find that</h1>
|
||||
<div>Looks like the page you are looking for isn't here any longer</div>
|
||||
<div>If you believe this is an error, please contact your organization administrator.</div>
|
||||
<div className="contact-section">If you believe this is an issue with Teleport, please <a href="https://github.com/gravitational/teleport/issues/new">create a GitHub issue.</a>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = NotFoundPage;
|
|
@ -57,7 +57,6 @@ const ButtonCell = ({ rowIndex, data, ...props }) => {
|
|||
)
|
||||
}
|
||||
|
||||
|
||||
var SessionList = React.createClass({
|
||||
|
||||
mixins: [LinkedStateMixin],
|
||||
|
@ -101,7 +100,7 @@ var SessionList = React.createClass({
|
|||
render: function() {
|
||||
var data = this.sortAndFilter(this.props.sessionRecords);
|
||||
return (
|
||||
<div>
|
||||
<div>
|
||||
<div className="grv-search">
|
||||
<input valueLink={this.linkState('filter')} placeholder="Search..." className="form-control input-sm"/>
|
||||
</div>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
var React = require('react');
|
||||
var render = require('react-dom').render;
|
||||
var { Router, Route, Redirect, IndexRoute, browserHistory } = require('react-router');
|
||||
var { App, Login, Nodes, Sessions, NewUser, CurrentSessionHost, NotFoundPage } = require('./components');
|
||||
var { App, Login, Nodes, Sessions, NewUser, CurrentSessionHost, NotFound } = require('./components');
|
||||
var {ensureUser} = require('./modules/user/actions');
|
||||
var auth = require('./auth');
|
||||
var session = require('./session');
|
||||
|
@ -26,7 +26,7 @@ render((
|
|||
<Route path={cfg.routes.nodes} component={Nodes}/>
|
||||
<Route path={cfg.routes.activeSession} components={{CurrentSessionHost: CurrentSessionHost}}/>
|
||||
<Route path={cfg.routes.sessions} component={Sessions}/>
|
||||
</Route>
|
||||
<Route path="*" component={NotFoundPage} />
|
||||
</Route>
|
||||
<Route path="*" component={NotFound} />
|
||||
</Router>
|
||||
), document.getElementById("app"));
|
||||
|
|
|
@ -1,13 +1,20 @@
|
|||
var reactor = require('app/reactor');
|
||||
var { TLPT_RECEIVE_USER_INVITE } = require('./actionTypes');
|
||||
var { FETCHING_INVITE} = require('app/modules/restApi/constants');
|
||||
var restApiActions = require('app/modules/restApi/actions');
|
||||
var api = require('app/services/api');
|
||||
var cfg = require('app/config');
|
||||
|
||||
export default {
|
||||
fetchInvite(inviteToken){
|
||||
var path = cfg.api.getInviteUrl(inviteToken);
|
||||
restApiActions.start(FETCHING_INVITE);
|
||||
api.get(path).done(invite=>{
|
||||
restApiActions.success(FETCHING_INVITE);
|
||||
reactor.dispatch(TLPT_RECEIVE_USER_INVITE, invite);
|
||||
}).
|
||||
fail((err)=>{
|
||||
restApiActions.fail(FETCHING_INVITE, err.responseJSON.message);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,10 @@
|
|||
/*eslint no-undef: 0, no-unused-vars: 0, no-debugger:0*/
|
||||
var {TRYING_TO_SIGN_UP, FETCHING_INVITE} = require('app/modules/restApi/constants');
|
||||
var {requestStatus} = require('app/modules/restApi/getters');
|
||||
|
||||
var {TRYING_TO_SIGN_UP} = require('app/modules/restApi/constants');
|
||||
|
||||
const invite = [ ['tlpt_invite'], (invite) => {
|
||||
return invite;
|
||||
}
|
||||
];
|
||||
|
||||
const attemp = [ ['tlpt_rest_api', TRYING_TO_SIGN_UP], (attemp) => {
|
||||
var defaultObj = {
|
||||
isProcessing: false,
|
||||
isError: false,
|
||||
isSuccess: false,
|
||||
message: ''
|
||||
}
|
||||
|
||||
return attemp ? attemp.toJS() : defaultObj;
|
||||
|
||||
}
|
||||
];
|
||||
const invite = [ ['tlpt_invite'], (invite) => invite ];
|
||||
|
||||
export default {
|
||||
invite,
|
||||
attemp
|
||||
attemp: requestStatus(TRYING_TO_SIGN_UP),
|
||||
fetchingInvite: requestStatus(FETCHING_INVITE)
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
import keyMirror from 'keymirror'
|
||||
|
||||
export default keyMirror({
|
||||
TRYING_TO_SIGN_UP: null
|
||||
TRYING_TO_SIGN_UP: null,
|
||||
TRYING_TO_LOGIN: null,
|
||||
FETCHING_INVITE: null
|
||||
})
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
var defaultObj = {
|
||||
isProcessing: false,
|
||||
isError: false,
|
||||
isSuccess: false,
|
||||
message: ''
|
||||
}
|
||||
|
||||
const requestStatus = (reqType) => [ ['tlpt_rest_api', reqType], (attemp) => {
|
||||
return attemp ? attemp.toJS() : defaultObj;
|
||||
}
|
||||
];
|
||||
|
||||
export default { requestStatus };
|
|
@ -1,3 +1,3 @@
|
|||
module.exports.getters = require('./getters');
|
||||
module.exports.actions = require('./actions');
|
||||
module.exports.nodeStore = require('./statusStore');
|
||||
module.exports.constants = require('./constants');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
var reactor = require('app/reactor');
|
||||
var { TLPT_RECEIVE_USER } = require('./actionTypes');
|
||||
var { TRYING_TO_SIGN_UP} = require('app/modules/restApi/constants');
|
||||
var { TRYING_TO_SIGN_UP, TRYING_TO_LOGIN} = require('app/modules/restApi/constants');
|
||||
var restApiActions = require('app/modules/restApi/actions');
|
||||
var auth = require('app/auth');
|
||||
var session = require('app/session');
|
||||
|
@ -28,18 +28,19 @@ export default {
|
|||
restApiActions.success(TRYING_TO_SIGN_UP);
|
||||
session.getHistory().push({pathname: cfg.routes.app});
|
||||
})
|
||||
.fail(()=>{
|
||||
restApiActions.fail(TRYING_TO_SIGN_UP, 'failed to sing up');
|
||||
.fail((err)=>{
|
||||
restApiActions.fail(TRYING_TO_SIGN_UP, err.responseJSON.message || 'failed to sing up');
|
||||
});
|
||||
},
|
||||
|
||||
login({user, password, token}, redirect){
|
||||
auth.login(user, password, token)
|
||||
.done((sessionData)=>{
|
||||
reactor.dispatch(TLPT_RECEIVE_USER, sessionData.user);
|
||||
session.getHistory().push({pathname: redirect});
|
||||
})
|
||||
.fail(()=>{
|
||||
})
|
||||
restApiActions.start(TRYING_TO_LOGIN);
|
||||
auth.login(user, password, token)
|
||||
.done((sessionData)=>{
|
||||
restApiActions.success(TRYING_TO_LOGIN);
|
||||
reactor.dispatch(TLPT_RECEIVE_USER, sessionData.user);
|
||||
session.getHistory().push({pathname: redirect});
|
||||
})
|
||||
.fail((err)=> restApiActions.fail(TRYING_TO_LOGIN, err.responseJSON.message))
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
var {TRYING_TO_LOGIN} = require('app/modules/restApi/constants');
|
||||
var {requestStatus} = require('app/modules/restApi/getters');
|
||||
|
||||
const user = [ ['tlpt_user'], (currentUser) => {
|
||||
if(!currentUser){
|
||||
return null;
|
||||
|
@ -15,5 +18,6 @@ const user = [ ['tlpt_user'], (currentUser) => {
|
|||
];
|
||||
|
||||
export default {
|
||||
user
|
||||
user,
|
||||
loginAttemp: requestStatus(TRYING_TO_LOGIN)
|
||||
}
|
||||
|
|
67
web/src/assets/img/grv-tlpt-logo.svg
Normal file
67
web/src/assets/img/grv-tlpt-logo.svg
Normal file
|
@ -0,0 +1,67 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="150px" height="150px" viewBox="0 0 150 150" enable-background="new 0 0 150 150" xml:space="preserve">
|
||||
<g display="none">
|
||||
<path display="inline" d="M76,35.422c-10.912,0-20.806,4.438-27.973,11.605S36.422,64.088,36.422,75
|
||||
c0,10.912,4.438,20.806,11.605,27.973c7.167,7.166,17.061,11.604,27.973,11.604c10.912,0,20.806-4.438,27.973-11.604
|
||||
c7.166-7.167,11.604-17.061,11.604-27.973c0-10.912-4.438-20.806-11.604-27.973C96.806,39.861,86.912,35.422,76,35.422z"/>
|
||||
<path display="inline" d="M141.604,95.871l-6.731-5.839l-6.731-5.839c0.24-1.306,0.395-2.662,0.488-4.037
|
||||
c0.095-1.373,0.129-2.765,0.129-4.139s-0.034-2.765-0.129-4.139c-0.094-1.374-0.248-2.731-0.488-4.037l6.731-5.839l6.731-5.839
|
||||
c0.481-0.344,0.809-0.841,0.955-1.391c0.146-0.55,0.111-1.15-0.129-1.701c-1.375-4.224-3.247-8.346-5.506-12.245
|
||||
c-2.258-3.898-4.902-7.574-7.822-10.905c-0.412-0.481-0.91-0.808-1.442-0.953c-0.532-0.146-1.1-0.111-1.649,0.129l-8.484,2.954
|
||||
l-8.483,2.953c-2.095-1.718-4.328-3.263-6.672-4.628c-2.345-1.365-4.801-2.55-7.343-3.547l-1.682-8.792l-1.683-8.792
|
||||
c-0.103-0.55-0.396-1.082-0.808-1.494s-0.945-0.704-1.529-0.773C84.93,6.085,80.465,5.639,76,5.639s-8.93,0.446-13.327,1.339
|
||||
c-0.584,0.069-1.116,0.361-1.529,0.773c-0.412,0.412-0.704,0.944-0.807,1.494l-1.683,8.793l-1.683,8.793
|
||||
c-2.542,0.997-5.032,2.182-7.394,3.547c-2.361,1.365-4.594,2.91-6.621,4.628l-8.484-2.953l-8.484-2.954
|
||||
c-0.549-0.241-1.116-0.275-1.648-0.129c-0.533,0.146-1.031,0.472-1.443,0.953c-2.919,3.332-5.564,7.007-7.823,10.905
|
||||
c-2.258,3.898-4.13,8.021-5.504,12.245c-0.241,0.55-0.275,1.151-0.128,1.7c0.146,0.549,0.472,1.047,0.953,1.391l6.732,5.839
|
||||
l6.732,5.839c-0.24,1.305-0.395,2.662-0.489,4.036c-0.095,1.374-0.129,2.766-0.129,4.139c0,1.374,0.034,2.766,0.128,4.139
|
||||
c0.094,1.375,0.249,2.731,0.489,4.037l-6.731,5.839l-6.731,5.839c-0.48,0.344-0.807,0.842-0.953,1.392
|
||||
c-0.146,0.549-0.112,1.149,0.128,1.699c1.374,4.226,3.246,8.347,5.504,12.246c2.259,3.898,4.903,7.573,7.823,10.905
|
||||
c0.413,0.48,0.911,0.807,1.443,0.953c0.533,0.146,1.099,0.111,1.649-0.129l8.484-2.954l8.484-2.954
|
||||
c2.026,1.718,4.259,3.264,6.621,4.629c2.361,1.365,4.852,2.55,7.393,3.546l1.683,8.794l1.683,8.793
|
||||
c0.103,0.55,0.395,1.082,0.807,1.494s0.945,0.705,1.529,0.773c2.198,0.412,4.396,0.738,6.611,0.961
|
||||
c2.215,0.224,4.448,0.344,6.716,0.344c2.267,0,4.499-0.12,6.715-0.344c2.216-0.223,4.413-0.549,6.611-0.961
|
||||
c0.585-0.068,1.117-0.361,1.529-0.773c0.413-0.412,0.704-0.944,0.808-1.494l1.683-8.793l1.683-8.794
|
||||
c2.542-0.996,4.998-2.181,7.343-3.546c2.344-1.365,4.577-2.911,6.672-4.629l8.483,2.954l8.484,2.954
|
||||
c0.55,0.24,1.117,0.274,1.649,0.129c0.532-0.146,1.03-0.473,1.442-0.953c2.92-3.332,5.564-7.007,7.822-10.905
|
||||
c2.259-3.899,4.131-8.021,5.506-12.246c0.24-0.55,0.273-1.15,0.127-1.699C142.412,96.713,142.085,96.215,141.604,95.871z
|
||||
M76,118.577c-12.015,0-22.909-4.888-30.8-12.778C37.31,97.908,32.422,87.014,32.422,75c0-12.015,4.887-22.909,12.778-30.8
|
||||
C53.091,36.31,63.985,31.422,76,31.422c12.014,0,22.908,4.887,30.799,12.778c7.891,7.891,12.778,18.785,12.778,30.8
|
||||
c0,12.014-4.888,22.908-12.778,30.799S88.014,118.577,76,118.577z"/>
|
||||
</g>
|
||||
<g id="Layer_2">
|
||||
<g>
|
||||
<path d="M75.851,35.422c-10.912,0-20.806,4.438-27.973,11.605S36.273,64.088,36.273,75s4.438,20.805,11.605,27.973
|
||||
c7.167,7.166,17.061,11.604,27.973,11.604c10.912,0,20.806-4.438,27.973-11.604c7.166-7.168,11.604-17.061,11.604-27.973
|
||||
s-4.438-20.807-11.604-27.973C96.656,39.86,86.763,35.422,75.851,35.422z M92.65,64.207H80.531v34.2h-9.36v-34.2h-12.12v-8.28
|
||||
h33.6V64.207z"/>
|
||||
<path d="M142.409,97.262c-0.146-0.549-0.474-1.047-0.955-1.391l-6.731-5.84l-6.731-5.838c0.24-1.307,0.395-2.662,0.488-4.037
|
||||
c0.095-1.373,0.129-2.766,0.129-4.139c0-1.375-0.034-2.765-0.129-4.14c-0.094-1.374-0.248-2.731-0.488-4.037l6.731-5.839
|
||||
l6.731-5.839c0.481-0.344,0.809-0.841,0.955-1.391c0.146-0.55,0.111-1.15-0.129-1.701c-1.375-4.224-3.247-8.346-5.506-12.245
|
||||
c-2.258-3.898-4.902-7.574-7.822-10.905c-0.412-0.481-0.91-0.808-1.442-0.953c-0.532-0.146-1.1-0.111-1.649,0.129l-8.484,2.954
|
||||
l-8.483,2.953c-2.095-1.718-4.328-3.263-6.672-4.628c-2.345-1.365-4.801-2.55-7.343-3.547l-1.682-8.792l-1.683-8.792
|
||||
c-0.103-0.55-0.396-1.082-0.808-1.494s-0.945-0.704-1.529-0.773C84.78,6.084,80.315,5.638,75.85,5.638s-8.93,0.446-13.327,1.339
|
||||
c-0.584,0.069-1.116,0.361-1.529,0.773c-0.412,0.412-0.704,0.944-0.807,1.494l-1.683,8.793l-1.683,8.793
|
||||
c-2.542,0.997-5.032,2.182-7.394,3.547c-2.361,1.365-4.594,2.91-6.621,4.628l-8.484-2.953l-8.484-2.954
|
||||
c-0.549-0.241-1.116-0.275-1.648-0.129c-0.533,0.146-1.031,0.472-1.443,0.953c-2.919,3.332-5.564,7.007-7.823,10.905
|
||||
c-2.258,3.898-4.13,8.021-5.504,12.245c-0.241,0.55-0.275,1.151-0.128,1.7c0.146,0.549,0.472,1.047,0.953,1.391l6.732,5.839
|
||||
l6.732,5.839c-0.24,1.305-0.395,2.662-0.489,4.036c-0.095,1.374-0.129,2.766-0.129,4.139c0,1.373,0.034,2.766,0.128,4.139
|
||||
c0.094,1.375,0.249,2.73,0.489,4.037l-6.731,5.838l-6.731,5.84c-0.48,0.344-0.807,0.842-0.953,1.391
|
||||
c-0.146,0.549-0.112,1.15,0.128,1.699c1.374,4.227,3.246,8.348,5.504,12.246c2.259,3.898,4.903,7.574,7.823,10.906
|
||||
c0.413,0.48,0.911,0.807,1.443,0.953c0.533,0.145,1.099,0.111,1.649-0.129l8.484-2.955l8.484-2.953
|
||||
c2.026,1.717,4.259,3.264,6.621,4.629c2.361,1.365,4.852,2.549,7.393,3.545l1.683,8.795l1.683,8.793
|
||||
c0.103,0.549,0.395,1.082,0.807,1.494s0.945,0.705,1.529,0.773c2.198,0.412,4.396,0.738,6.611,0.961s4.448,0.344,6.716,0.344
|
||||
c2.267,0,4.499-0.121,6.715-0.344s4.413-0.549,6.611-0.961c0.585-0.068,1.117-0.361,1.529-0.773
|
||||
c0.413-0.412,0.704-0.945,0.808-1.494l1.683-8.793l1.683-8.795c2.542-0.996,4.998-2.18,7.343-3.545
|
||||
c2.344-1.365,4.577-2.912,6.672-4.629l8.483,2.953l8.484,2.955c0.55,0.24,1.117,0.273,1.649,0.129
|
||||
c0.532-0.146,1.03-0.473,1.442-0.953c2.92-3.332,5.564-7.008,7.822-10.906c2.259-3.898,4.131-8.02,5.506-12.246
|
||||
C142.522,98.412,142.556,97.811,142.409,97.262z M106.649,105.799c-7.891,7.891-18.785,12.777-30.799,12.777
|
||||
c-12.015,0-22.909-4.887-30.8-12.777C37.16,97.908,32.273,87.014,32.273,75c0-12.015,4.887-22.909,12.778-30.8
|
||||
c7.891-7.891,18.785-12.778,30.8-12.778c12.014,0,22.908,4.887,30.799,12.778c7.891,7.891,12.778,18.785,12.778,30.8
|
||||
C119.428,87.014,114.54,97.908,106.649,105.799z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 6.4 KiB |
|
@ -6,7 +6,7 @@
|
|||
@import "grv-sessions";
|
||||
@import "grv-nav";
|
||||
@import "grv-current-session";
|
||||
@import "grv-page-notfound";
|
||||
@import "grv-error-page";
|
||||
@import "grv-slider";
|
||||
@import "grv-session-player";
|
||||
@import "grv-terminal";
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
.grv-page-notfound{
|
||||
|
||||
.grv-error-page{
|
||||
margin: 0 auto;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
.grv-content{
|
||||
padding: 15px;
|
||||
width: 700px;
|
||||
width: 600px;
|
||||
z-index: 100;
|
||||
margin: 0 auto;
|
||||
margin-top: 20px;
|
||||
|
|
Loading…
Reference in a new issue