Mercurial > libervia-templates
view sat_templates/templates/bulma/chat/chat.html @ 411:f7a434581872 default tip
chat: Add forward, rich editing and extra recipients:
- There is a new "forward" menu in message. For now, a simple prompt ask for recipient JID.
- A new "extra" menu is available next to input field. Inside there are 2 items for now:
add extra recipient, and toggle rich edit mode.
- Extra recipient option add a field to add an email-like "to", "cc" or "bcc" recipients.
- Rich edit let use rich styling such as bold, italic, underline, etc.
rel 461
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 04 Jul 2025 17:33:22 +0200 |
parents | 44439110247f |
children |
line wrap: on
line source
{% if not embedded %} {% set loading_screen = true %} {% extends 'base/base.html' %} {% endif %} {% from 'components/collapsible_card.html' import collapsible_card %} {% block title %}{{ target_jid }} - {{ super() }}{% endblock %} {% block body %} {{ icon_defs( "check", "comment-dots", "ellipsis", "ellipsis-vertical", "regular envelope", "lock", "paperclip", "pencil", "pen-to-square", "quote-left", "reply", "regular face-smile", "regular share-from-square", "regular trash-can", "share-nodes", "unlock" ) }} <div class="columns is-gapless chat-container"> <!-- Left Panel --> <div class="column is-2 left-sidebar has-background-dark" id="left_panel"> <aside class="menu pl-4"> <button class="button is-ghost has-text-grey-light mb-2 pl-1 is-align-items-center is-justify-content-start is-fullwidth" id="new_chat_btn" aria-label="Start new discussion"> <span class="icon"> <i class="fas fa-circle-plus"></i> </span> <span class="pt-1">Start New Chat</span> </button> <p class="menu-label has-text-grey-light"> {% trans %}Rooms{% endtrans %} </p> <ul class="menu-list"> {% for room_address, room_info in bookmarks.items() %} <li> <a {{ {'href': chat_url + "/" + room_address}|xmlattr}} class="chat-jid has-text-white"><span class="icon"><i class="fas fa-hashtag"></i></span> {{ room_info.get('name', room_address.split('@')[0]) }}</a> </li> {% endfor %} </ul> <p class="menu-label has-text-grey-light"> Direct Messages </p> <div id="direct-messages"></div> </aside> </div> <!-- Main Chat Area --> <div class="column is-8 main-panel chat-main" id="main_panel"> <div class="panel-header px-4 py-2"> <div class="level is-mobile"> <div class="level-left"> <div class="level-item"> <button class="button is-small" id="left_panel-toggle" aria-label="Toggle left panel"> <span class="icon"><i class="fas fa-bars"></i></span> </button> </div> <div class="level-item"> <h1 class="title is-5 mb-0 pt-1">{{target_jid}}</h1> </div> {% if data_policy is defined and data_policy_score is defined %} {# Data Policy badge #} <div class="level-item"> {% set color_class = 'success' if data_policy_score >= 8 else 'warning' if data_policy_score >= 5 else 'danger' %} <div class="data-policy-badge tag is-{{ color_class }} is-clickable p-3"> <span class="icon fa fa-file-shield"></span> <span class="pt-1">{{ data_policy_score }}</span> </div> </div> {% endif %} </div> <div class="level-right"> <div class="level-item"> <div class="field has-addons"> <div class="control"> <input class="input is-small" type="text" placeholder="Search"> </div> <div class="control"> <button class="button is-info is-small"> <span class="icon is-small"> <i class="fas fa-search"></i> </span> </button> </div> </div> </div> <div class="level-item"> <button class="button is-small"> <span class="icon"><i class="fas fa-cog"></i></span> </button> </div> <div class="level-item {{ "is-hidden" if chat_type != "group" }}"> <button class="button is-small" id="right_panel-toggle"> <span class="icon"><i class="fas fa-info-circle"></i></span> </button> </div> </div> </div> </div> <!-- Messages --> <div id="messages"> {% for msg in messages %} {% set current_date = msg.timestamp|date_fmt('full', date_only=True) %} {% if loop.changed(current_date) %} <div class="separator"> <hr class="has-background-light" /> <span class="has-text-grey is-size-7">{{current_date}}</span> <hr class="has-background-light" /> </div> {% endif %} {% include 'chat/message.html' %} {% endfor %} </div> <div id="input-panel-area"> {% include 'chat/message_input.html' %} </div> </div> <!-- Right Panel --> <div class="column is-2-desktop is-3-tablet right-sidebar {{ 'is-hidden' if chat_type != 'group' }}" id="right_panel"> <div class="box is-shadowless has-background-white-bis is-full-height"> <h3 class="title is-5 has-text-centered mb-4">Room Details</h3> {% if subject is defined %} {% call collapsible_card("Subject", icon="fas fa-quote-left") %} {{subject}} {% endcall %} {% endif %} <div class="card"> <div class="card-header has-background-info-light"> <p class="card-header-title has-text-info-dark"> <span class="icon"><i class="fas fa-users"></i></span> <span>Members (<span id="occupants-count">0</span>)</span> </p> </div> <div class="card-content py-3 px-4" id="group-occupants"> </div> </div> </div> </div> {% endblock body %} {% block footer %}{% endblock footer %}