From 781ff323db4c70e4ca476f9ef13a04e5aa063585 Mon Sep 17 00:00:00 2001 From: enahum Date: Fri, 16 Sep 2016 15:35:13 -0300 Subject: Webrtc client side (#4026) * WebRTC Server side * WebRTC client side * Bug fixes and improvements * Pushing UI improvements for webrtc (#3728) * Pushing UI improvements for webrtc * Updating webrtc css * PLT-3943 WebRTC P1: bug fixes and improvements * Video resolution set to std, reduce volume of ringtone and flip video horizontally * Fix calling a user B while WebRTC RHS is still opened * Leave RHS opened when call ends, Fix isBusy on popover and channel_header * Fix pre-release feature, RHS & System Console * PLT-3945 - Updating UI for webrtc (#3908) * PLT-3943 Webrtc p1 * Add ongoing call indicator when RHS is opened * UI updates to to webrtc notifcation (#3959) --- webapp/sass/components/_webrtc.scss | 297 ++++++++++++++++++++++++++++++++++++ 1 file changed, 297 insertions(+) create mode 100644 webapp/sass/components/_webrtc.scss (limited to 'webapp/sass/components/_webrtc.scss') diff --git a/webapp/sass/components/_webrtc.scss b/webapp/sass/components/_webrtc.scss new file mode 100644 index 000000000..b8fc64442 --- /dev/null +++ b/webapp/sass/components/_webrtc.scss @@ -0,0 +1,297 @@ +@charset 'UTF-8'; + +.webrtc__user-profile { + @include webrtc-button; + text-align: center; + + #webrtc-btn { + display: inherit; + } +} + +.webrtc__header { + @include webrtc-button; + float: left; + margin-right: 10px; + position: relative; + top: 13px; +} + +.webrtc__notification--rhs { + background: $button--ready; + border-radius: 3px 0 0 3px; + bottom: 10px; + color: $white; + cursor: pointer; + padding: 10px 15px; + position: absolute; + right: 0; + z-index: 9999; + + &:empty { + display: none; + } + + .fa { + margin-right: 6px; + } +} + +.webrtc__error { + padding: 0 20px; + text-align: center; + + .control-label { + @include border-radius(3px); + background: #f2f2f2; + font-size: 14px; + font-weight: normal; + margin: 1em 0 -1em; + padding: .7em 1em; + width: 100%; + } + + .has-error { + .control-label { + color: #a94442; + font-size: .95em; + + &:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + color: #a94442; + content: '\F071'; + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + margin-right: 4px; + text-rendering: auto; + transform: translate(0, 0); + } + } + } +} + +#videos { + background: $black; + font-size: 0; + left: 0; + pointer-events: none; + position: relative; + text-align: center; + transition: all 1s; + width: 100%; + + #main-video video { + width: 100%; + } + + #local-video { + border: 1px solid gray; + max-width: 30%; + opacity: 1; + position: absolute; + right: 10px; + top: 10px; + transition: opacity 1s; + z-index: 2; + + video { + -moz-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + -o-transform: scale(-1, 1); + -webkit-transform: scale(-1, 1); + height: 100%; + max-height: 100%; + max-width: 100%; + object-fit: cover; + transform: scale(-1, 1); + transition: opacity 1s; + width: 100%; + } + } + + .webrtc__local-image { + position: absolute; + right: 10px; + top: 10px; + z-index: 2; + + img { + border-radius: 50%; + height: 64px; + max-width: 100%; + width: 64px; + } + } + + .webrtc__remote-image { + background-color: $black; + border: 1px solid alpha-color($black, .2); + padding: 40px 0; + + img { + border-radius: 50%; + max-height: 128px; + max-width: 128px; + width: 100%; + } + } + + .webrtc__remote-mute { + bottom: 0; + position: absolute; + right: 10px; + z-index: 9999; + } +} + +.webrtc-buttons { + margin-top: 1.2em; + text-align: center; + + .webrtc-icons__call { + border-radius: 48px; + + circle { + fill: $button--ready; + } + + &:hover { + cursor: pointer; + + circle { + fill: darken($button--ready, 5%); + } + } + + &[disabled] { + circle { + fill: $video-circle-offline; + } + } + } + + .webrtc-icons__cancel { + border-radius: 48px; + + circle { + fill: $button--cancel; + } + + &:hover { + cursor: pointer; + + circle { + fill: darken($button--cancel, 5%); + } + } + } +} + +.webrtc-icons { + &.active { + svg { + transform: translateY(0); + } + } + + svg { + border-radius: 48px; + margin: 5px; + + path { + &.on { + display: block; + } + + &.off { + display: none; + } + } + } +} + +.connecting { + position: absolute; + top: 0; + width: 100%; + + .loading-screen { + background-color: rgba(0,0,0, .3); + color: $connecting; + margin-left: 5px; + padding: 20px; + position: relative; + top: 75px; + width: 97%; + + .loading__content { + .round { + background: $connecting !important; + } + } + } +} + +.webrtc-notification { + background-color: $webrtc-notification-bg; + color: $white; + left: calc(50% - 200px); + padding: 20px 30px 10px; + position: absolute; + text-align: center; + top: calc(50% - 115px); + width: 400px; + z-index: 99999; + + .webrtc-buttons { + margin-top: 1.2em; + text-align: center; + + .webrtc-icons__pickup { + circle { + fill: $button--pickup; + } + + &:hover { + cursor: pointer; + + circle { + fill: darken($button--pickup, 3%); + } + } + } + } +} + +.sidebar--right--expanded { + #videos { + height: 100%; + position: absolute; + + #main-video { + height: 100%; + + video { + height: 100%; + width: auto; + } + } + } + + .webrtc-buttons { + bottom: 5px; + position: absolute; + width: 100%; + } + + #videos { + #local-video { + max-width: 200px; + } + } + + #videos.small { + position: relative; + } +} -- cgit v1.2.3-1-g7c22