]> git.proxmox.com Git - mirror_novnc.git/blobdiff - app/styles/base.css
Expand password dialog to work for usernames too
[mirror_novnc.git] / app / styles / base.css
index 59ca6fdb5e83b9c721410f4ce17009b3bb943596..9db83bf69ab4a2a9ef1d60b1e5d92e18553abae0 100644 (file)
@@ -1,8 +1,6 @@
 /*
  * noVNC base CSS
- * Copyright (C) 2012 Joel Martin
- * Copyright (C) 2016 Samuel Mannehed for Cendio AB
- * Copyright (C) 2016 Pierre Ossman for Cendio AB
+ * Copyright (C) 2019 The noVNC Authors
  * noVNC is licensed under the MPL 2.0 (see LICENSE.txt)
  * This file is licensed under the 2-Clause BSD license (see LICENSE.txt).
  */
@@ -41,6 +39,10 @@ html {
   display: none;
 }
 
+.noVNC_disabled {
+  color: rgb(128, 128, 128);
+}
+
 /* ----------------------------------------
  * Spinner
  * ----------------------------------------
@@ -52,24 +54,28 @@ html {
 .noVNC_spinner, .noVNC_spinner::before, .noVNC_spinner::after {
   width: 10px;
   height: 10px;
-  border-radius: 50%;
-  animation: noVNC_spinner 1.0s ease-in-out alternate infinite;
+  border-radius: 2px;
+  box-shadow: -60px 10px 0 rgba(255, 255, 255, 0);
+  animation: noVNC_spinner 1.0s linear infinite;
 }
 .noVNC_spinner::before {
   content: "";
   position: absolute;
-  left: -20px;
-  animation-delay: -0.2s;
+  left: 0px;
+  top: 0px;
+  animation-delay: -0.1s;
 }
 .noVNC_spinner::after {
   content: "";
   position: absolute;
-  left: 20px;
-  animation-delay: 0.2s;
+  top: 0px;
+  left: 0px;
+  animation-delay: 0.1s;
 }
 @keyframes noVNC_spinner {
-  0% { box-shadow: 0 10px 0 white; }
-  100% { box-shadow: 0 30px 0 white; }
+  0% { box-shadow: -60px 10px 0 rgba(255, 255, 255, 0); width: 20px; }
+  25% { box-shadow: 20px 10px 0 rgba(255, 255, 255, 1); width: 10px; }
+  50% { box-shadow: 60px 10px 0 rgba(255, 255, 255, 0); width: 10px; }
 }
 
 /* ----------------------------------------
@@ -77,7 +83,8 @@ html {
  * ----------------------------------------
  */
 
-input[type=input], input[type=password], input:not([type]), textarea {
+input[type=input], input[type=password], input[type=number],
+input:not([type]), textarea {
   /* Disable default rendering */
   -webkit-appearance: none;
   -moz-appearance: none;
@@ -91,7 +98,7 @@ input[type=input], input[type=password], input:not([type]), textarea {
   background: linear-gradient(to top, rgb(255, 255, 255) 80%, rgb(240, 240, 240));
 }
 
-input[type=button], select {
+input[type=button], input[type=submit], select {
   /* Disable default rendering */
   -webkit-appearance: none;
   -moz-appearance: none;
@@ -109,7 +116,7 @@ input[type=button], select {
   vertical-align: middle;
 }
 
-input[type=button] {
+input[type=button], input[type=submit] {
   padding-left: 20px;
   padding-right: 20px;
 }
@@ -121,29 +128,35 @@ option {
 
 input[type=input]:focus, input[type=password]:focus,
 input:not([type]):focus, input[type=button]:focus,
+input[type=submit]:focus,
 textarea:focus, select:focus {
   box-shadow: 0px 0px 3px rgba(74, 144, 217, 0.5);
   border-color: rgb(74, 144, 217);
   outline: none;
 }
 
-input[type=button]::-moz-focus-inner {
+input[type=button]::-moz-focus-inner,
+input[type=submit]::-moz-focus-inner {
   border: none;
 }
 
 input[type=input]:disabled, input[type=password]:disabled,
 input:not([type]):disabled, input[type=button]:disabled,
+input[type=submit]:disabled, input[type=number]:disabled,
 textarea:disabled, select:disabled {
   color: rgb(128, 128, 128);
   background: rgb(240, 240, 240);
 }
 
-input[type=button]:active, select:active {
+input[type=button]:active, input[type=submit]:active,
+select:active {
   border-bottom-width: 1px;
   margin-top: 3px;
 }
 
-:root:not(.noVNC_touch) input[type=button]:hover:not(:disabled), :root:not(.noVNC_touch) select:hover:not(:disabled) {
+:root:not(.noVNC_touch) input[type=button]:hover:not(:disabled),
+:root:not(.noVNC_touch) input[type=submit]:hover:not(:disabled),
+:root:not(.noVNC_touch) select:hover:not(:disabled) {
   background: linear-gradient(to top, rgb(255, 255, 255), rgb(250, 250, 250));
 }
 
@@ -201,31 +214,32 @@ input[type=button]:active, select:active {
  */
 
 #noVNC_fallback_error {
-  position: fixed;
   z-index: 1000;
-  left: 50%;
-  transform: translate(-50%, -50px);
-  transition: 0.5s ease-in-out;
-
   visibility: hidden;
-  opacity: 0;
+}
+#noVNC_fallback_error.noVNC_open {
+  visibility: visible;
+}
 
-  top: 60px;
+#noVNC_fallback_error > div {
+  max-width: 90%;
   padding: 15px;
-  width: auto;
+
+  transition: 0.5s ease-in-out;
+
+  transform: translateY(-50px);
+  opacity: 0;
 
   text-align: center;
   font-weight: bold;
-  word-wrap: break-word;
   color: #fff;
 
   border-radius: 10px;
   box-shadow: 6px 6px 0px rgba(0, 0, 0, 0.5);
   background: rgba(200,55,55,0.8);
 }
-#noVNC_fallback_error.noVNC_open {
-  transform: translate(-50%, 0);
-  visibility: visible;
+#noVNC_fallback_error.noVNC_open > div {
+  transform: translateY(0);
   opacity: 1;
 }
 
@@ -233,6 +247,13 @@ input[type=button]:active, select:active {
   font-weight: normal;
 }
 
+#noVNC_fallback_errormsg .noVNC_message {
+  display: inline-block;
+  text-align: left;
+  font-family: monospace;
+  white-space: pre-wrap;
+}
+
 #noVNC_fallback_error .noVNC_location {
   font-style: italic;
   font-size: 0.8em;
@@ -240,13 +261,16 @@ input[type=button]:active, select:active {
 }
 
 #noVNC_fallback_error .noVNC_stack {
+  max-height: 50vh;
   padding: 10px;
   margin: 10px;
   font-size: 0.8em;
   text-align: left;
+  font-family: monospace;
   white-space: pre;
   border: 1px solid rgba(0, 0, 0, 0.5);
   background: rgba(0, 0, 0, 0.2);
+  overflow: auto;
 }
 
 /* ----------------------------------------
@@ -378,6 +402,36 @@ input[type=button]:active, select:active {
   padding: 0 5px 0 10px;
 }
 
+/* Control bar hint */
+#noVNC_control_bar_hint {
+  position: fixed;
+  left: calc(100vw - 50px);
+  right: auto;
+  top: 50%;
+  transform: translateY(-50%) scale(0);
+  width: 100px;
+  height: 50%;
+  max-height: 600px;
+
+  visibility: hidden;
+  opacity: 0;
+  transition: 0.2s ease-in-out;
+  background: transparent;
+  box-shadow: 0 0 10px black, inset 0 0 10px 10px rgba(110, 132, 163, 0.8);
+  border-radius: 10px;
+  transition-delay: 0s;
+}
+#noVNC_control_bar_anchor.noVNC_right #noVNC_control_bar_hint{
+  left: auto;
+  right: calc(100vw - 50px);
+}
+#noVNC_control_bar_hint.noVNC_active {
+  visibility: visible;
+  opacity: 1;
+  transition-delay: 0.2s;
+  transform: translateY(-50%) scale(1);
+}
+
 /* General button style */
 .noVNC_button {
   display: block;
@@ -401,11 +455,15 @@ input[type=button]:active, select:active {
   padding-top: 5px;
   padding-bottom: 3px;
 }
-:root:not(.noVNC_touch) .noVNC_button.noVNC_selected:hover {
+/* Android browsers don't properly update hover state if touch events
+ * are intercepted, but focus should be safe to display */
+:root:not(.noVNC_touch) .noVNC_button.noVNC_selected:hover,
+.noVNC_button.noVNC_selected:focus {
   border-color: rgba(0, 0, 0, 0.4);
   background: rgba(0, 0, 0, 0.2);
 }
-:root:not(.noVNC_touch) .noVNC_button:hover {
+:root:not(.noVNC_touch) .noVNC_button:hover,
+.noVNC_button:focus {
   background: rgba(255, 255, 255, 0.2);
 }
 .noVNC_button.noVNC_hidden {
@@ -520,18 +578,6 @@ input[type=button]:active, select:active {
   display: none;
 }
 
-#noVNC_keyboardinput {
-  width: 1px;
-  height: 1px;
-  background-color: #fff;
-  color: #fff;
-  border: 0;
-  position: relative;
-  left: -40px;
-  z-index: -1;
-  ime-mode: disabled;
-}
-
 /* Extra manual keys */
 :root:not(.noVNC_connected) #noVNC_extra_keys {
   display: none;
@@ -543,17 +589,17 @@ input[type=button]:active, select:active {
   padding: 0 10px;
 }
 
-/* XVP Shutdown/Reboot */
-:root:not(.noVNC_connected) #noVNC_xvp_button {
+/* Shutdown/Reboot */
+:root:not(.noVNC_connected) #noVNC_power_button {
   display: none;
 }
-#noVNC_xvp {
+#noVNC_power {
 }
-#noVNC_xvp_buttons {
+#noVNC_power_buttons {
   display: none;
 }
 
-#noVNC_xvp input[type=button] {
+#noVNC_power input[type=button] {
   width: 100%;
 }
 
@@ -585,6 +631,16 @@ input[type=button]:active, select:active {
   width: 100px;
 }
 
+/* Version */
+
+.noVNC_version_wrapper {
+  font-size: small;
+}
+
+.noVNC_version {
+  margin-left: 1rem;
+}
+
 /* Connection Controls */
 :root:not(.noVNC_connected) #noVNC_disconnect_button {
   display: none;
@@ -603,6 +659,8 @@ input[type=button]:active, select:active {
   z-index: 100;
   transform: translateY(-100%);
 
+  cursor: pointer;
+
   transition: 0.5s ease-in-out;
 
   visibility: hidden;
@@ -732,19 +790,23 @@ input[type=button]:active, select:active {
  * ----------------------------------------
  */
 
-#noVNC_password_dlg {
+#noVNC_credentials_dlg {
   position: relative;
 
   transform: translateY(-50px);
 }
-#noVNC_password_dlg.noVNC_open {
+#noVNC_credentials_dlg.noVNC_open {
   transform: translateY(0);
 }
-#noVNC_password_dlg ul {
+#noVNC_credentials_dlg ul {
   list-style: none;
   margin: 0px;
   padding: 0px;
 }
+.noVNC_hidden {
+  display: none;
+}
+
 
 /* ----------------------------------------
  * Main Area
@@ -770,6 +832,7 @@ input[type=button]:active, select:active {
   justify-content: center;
   flex-direction: column;
 }
+:root.noVNC_loading #noVNC_transition,
 :root.noVNC_connecting #noVNC_transition,
 :root.noVNC_disconnecting #noVNC_transition,
 :root.noVNC_reconnecting #noVNC_transition {
@@ -784,44 +847,23 @@ input[type=button]:active, select:active {
 
 /* Main container */
 #noVNC_container {
-  display: table;
   width: 100%;
   height: 100%;
   background-color: #313131;
   border-bottom-right-radius: 800px 600px;
   /*border-top-left-radius: 800px 600px;*/
 }
-:root.noVNC_connected #noVNC_container {
-  background-color: rgb(40, 40, 40);
-  border-radius: 0;
-}
 
-/* HTML5 Canvas */
-#noVNC_screen {
-  position: absolute;
-  margin: 0px;
-  padding: 0px;
-  bottom: 0px;
-  top: 0px;
-  left: 0px;
-  right: 0px;
-  width: auto;
-  height: auto;
-}
-:root:not(.noVNC_connected) #noVNC_screen {
-  display: none;
-}
-
-/* Do not set width/height for VNC_canvas or incorrect
- * scaling will occur. Canvas size depends on remote VNC
- * settings and noVNC settings. */
-#noVNC_canvas {
+#noVNC_keyboardinput {
+  width: 1px;
+  height: 1px;
+  background-color: #fff;
+  color: #fff;
+  border: 0;
   position: absolute;
-  top: 0;
-  left: 0;
-  right: 0;
-  bottom: 0;
-  margin: auto;
+  left: -40px;
+  z-index: -1;
+  ime-mode: disabled;
 }
 
 /*Default noVNC logo.*/