# HG changeset patch # User Goffi # Date 1691532699 -7200 # Node ID a5a80d761e3eb2a234a637d4eea560cea9f15536 # Parent 281d1c958d56fdcca5c56d831d356314c412f2bc bulma (call): update template to integrate call features: previously, call template was a minimum UI for testing implementation. This commit introduce a usable UI with search interface, mute and full screen button, animations, and other UI/UX improvments. rel 423 diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/call/call.html --- a/sat_templates/templates/bulma/call/call.html Mon Jul 10 15:43:49 2023 +0200 +++ b/sat_templates/templates/bulma/call/call.html Wed Aug 09 00:11:39 2023 +0200 @@ -4,32 +4,76 @@ {% endif %} {% block body %} -
+ {{ icon_defs( + "resize-full", "resize-small", "volume-up", "videocam", "dot-3-vert", "wrench", "user-circle" + ) }} + +
+
+ + {# Search #} +
+
+
+ +
-
- - +
+ + +
+
+ +
+
+
-
-
- -
-
-
-
- + {# Calls #} +
{% endblock body %} diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/call/call_avatar.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_templates/templates/bulma/call/call_avatar.html Wed Aug 09 00:11:39 2023 +0200 @@ -0,0 +1,3 @@ +{% import 'components/avatar.html' as avatar with context %} + +{{ avatar.avatar(entity, "is-64x64") }} diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/call/call_button.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_templates/templates/bulma/call/call_button.html Wed Aug 09 00:11:39 2023 +0200 @@ -0,0 +1,9 @@ + diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/call/call_status.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_templates/templates/bulma/call/call_status.html Wed Aug 09 00:11:39 2023 +0200 @@ -0,0 +1,8 @@ +{% if status == none %} +
+
+{% elif status == "dialing" %} +
+

{% trans %}Calling {{name}}…{% endtrans %}

+
+{% endif %} diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/chat/message.html --- a/sat_templates/templates/bulma/chat/message.html Mon Jul 10 15:43:49 2023 +0200 +++ b/sat_templates/templates/bulma/chat/message.html Wed Aug 09 00:11:39 2023 +0200 @@ -63,7 +63,7 @@ {{ icon('doc', cls='icon') }} {%- endif %}
- {{attachment.name}} + {{attachment.name}}
{%- endfor %} diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/static/call.css --- a/sat_templates/templates/bulma/static/call.css Mon Jul 10 15:43:49 2023 +0200 +++ b/sat_templates/templates/bulma/static/call.css Wed Aug 09 00:11:39 2023 +0200 @@ -1,11 +1,14 @@ +#containers_wrapper { + position: relative; + height: 100%; + width: 100%; -.call_box { +} + +#call_container { + position: absolute; + height: 100%; width: 100%; - height: 500px; - position: relative; - overflow: hidden; - border: 1px solid #ddd; - margin-bottom: 15px; } #remote_video, #local_video { @@ -13,7 +16,8 @@ box-shadow: 2px 2px 8px rgba(0, 0, 0, 0.1); width: 100%; height: 100%; - object-fit: cover; + object-fit: contain; + background-color: #000; } #remote_video { @@ -22,11 +26,56 @@ left: 0; } +#hangup_btn { + padding-top: 2rem; + padding-bottom: 2rem; +} + +.fullscreen-btn { + position: absolute; + top: 10px; + right: 10px; + z-index: 2; +} + #local_video { position: absolute; - bottom: 10px; - right: 10px; + bottom: 0; + right: 0; width: 30%; height: 30%; } +.controls { + position: absolute; + bottom: 10px; + left: 0; + right: 0; + display: flex; + justify-content: center; + align-items: center; + z-index: 2; +} + +.muted::after { + content: "/"; + position: absolute; + font-size: 50px; + color: red; + top: 43%; + left: 52%; + transform: translate(-50%, -50%) rotate(45deg); +} + +.dropdown .dropdown-menu { + display: none; +} + +.dropdown.is-active .dropdown-menu { + display: block; +} + +.call_status { + padding-top: 1.3rem; + padding-bottom: 1.3rem; +} diff -r 281d1c958d56 -r a5a80d761e3e sat_templates/templates/bulma/static/styles.css --- a/sat_templates/templates/bulma/static/styles.css Mon Jul 10 15:43:49 2023 +0200 +++ b/sat_templates/templates/bulma/static/styles.css Wed Aug 09 00:11:39 2023 +0200 @@ -18,6 +18,12 @@ overflow: hidden; } +.is-full-below-menu { + /* full viewport minus top menu height */ + position:relative; + height: calc(100vh - 52px); +} + .has-whitespace-pre-wrap { white-space: pre-wrap; } @@ -613,3 +619,148 @@ transform: rotate(359deg); } } + + +/************** + * animations * + *************/ + +/* Fade In */ + +@keyframes fade-in { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +.fade-in { + animation: fade-in 0.5s ease-in forwards; +} + +@keyframes fade-in-x { + 0% { + opacity: 0; + transform: scaleX(0); + } + 100% { + opacity: 1; + transform: scaleX(1); + } +} + +.fade-in-x { + animation: fade-in-x 0.5s ease-in forwards; +} + +@keyframes fade-in-y { + 0% { + opacity: 0; + transform: scaleY(0); + } + 100% { + opacity: 1; + transform: scaleY(1); + } +} + +.fade-in-y { + animation: fade-in-y 0.5s ease-in forwards; +} + +@keyframes fade-in-xy { + 0% { + opacity: 0; + transform: scale(0); + } + 100% { + opacity: 1; + transform: scale(1); + } +} + +.fade-in-xy { + animation: fade-in-xy 0.5s ease-in forwards; +} + +/* Fade Out */ + +@keyframes fade-out { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} + +.fade-out { + animation: fade-out 0.5s ease-in forwards; +} + +@keyframes fade-out-x { + 0% { + opacity: 1; + transform: scaleX(1); + } + 100% { + opacity: 0; + transform: scaleX(0); + } +} + +.fade-out-x { + animation: fade-out-x 0.5s ease-in forwards; +} + +@keyframes fade-out-y { + 0% { + opacity: 1; + transform: scaleY(1); + } + 100% { + opacity: 0; + transform: scaleY(0); + } +} + +.fade-out-y { + animation: fade-out-y 0.5s ease-in forwards; +} + +@keyframes fade-out-xy { + 0% { + opacity: 1; + transform: scale(1); + } + 100% { + opacity: 0; + transform: scale(0); + } +} + +.fade-out-xy { + animation: fade-out-xy 0.5s ease-in forwards; +} + +/* Slide In */ +@keyframes slide-in { + 0% { + transform: translateY(100%); + opacity: 0; + } + 100% { + transform: translateY(0); + opacity: 1; + } +} + +.slide-in { + animation: slide-in 0.5s ease-in-out forwards; +} + +.animation-reverse { + animation-direction: reverse; +}