messenger.conversation.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <div id="conversation" class="drag-container">
  2. <drag-file
  3. ng-if="!ctrl.locked"
  4. submit="ctrl.submit"
  5. on-uploading="ctrl.onUploading"></drag-file>
  6. <div id="conversation-header" class="detail-header">
  7. <ng-include src="'partials/messenger.backbutton.html'"></ng-include>
  8. <div class="header-avatar" ng-click="ctrl.showReceiver()">
  9. <eee-avatar eee-type="ctrl.type" eee-receiver="ctrl.receiver"
  10. eee-resolution="'low'"></eee-avatar>
  11. </div>
  12. <div class="header-details" ng-click="ctrl.showReceiver()">
  13. <div class="conversation-header-details-name"
  14. ng-bind-html="ctrl.receiver.displayName | escapeHtml | emojify"></div>
  15. <div class="conversation-header-details-detail" ng-if="ctrl.type == 'contact'">
  16. <eee-verification-level ng-if="ctrl.type == 'contact'"
  17. contact="ctrl.receiver"></eee-verification-level>
  18. </div>
  19. <div class="conversation-header-details-detail" ng-if="ctrl.type == 'group'"
  20. title="{{ ctrl.receiver.members | idsToNames | escapeHtml }}">
  21. <span ng-bind-html="ctrl.receiver.members | idsToNames | escapeHtml | emojify"></span>
  22. </div>
  23. </div>
  24. </div>
  25. <div id="conversation-is-private" ng-if="ctrl.locked">
  26. <md-card>
  27. <md-toolbar class="md-warn">
  28. <div class="md-toolbar-tools">
  29. <h2 class="md-flex" translate>messenger.PRIVATE_CHAT</h2>
  30. </div>
  31. </md-toolbar>
  32. <md-card-content>
  33. <span translate>messenger.PRIVATE_CHAT_DESCRIPTION</span>
  34. </md-card-content>
  35. </md-card>
  36. </div>
  37. <div id="conversation-chat" scroll-glue in-view-container ng-show="!ctrl.locked">
  38. <ul class="chat">
  39. <li in-view="$inview && !ctrl.locked && ctrl.topOfChat()" class="load-more">
  40. <div ng-if="ctrl.hasMoreMessages()" class="loading">
  41. <img ng-src="img/spinner.gif" alt="...">
  42. </div>
  43. </li>
  44. <li ng-repeat="message in ctrl.messages" id="message-{{message.id}}">
  45. <eee-message eee-receiver="ctrl.receiver" eee-type="ctrl.type" eee-message="message"
  46. in-view="$inview && !ctrl.locked && ctrl.msgRead(message.id)"
  47. in-view-options="{ considerPageVisibility: true }"></eee-message>
  48. </li>
  49. <li ng-if="ctrl.isTyping()" class="typing-indicator">
  50. <!-- Non status messages -->
  51. <article class="message message-in">
  52. <div class="bubble-triangle"></div>
  53. <section class="message-body text-message-body">
  54. <div class="typing-animation"/>
  55. </section>
  56. </article>
  57. </li>
  58. </ul>
  59. </div>
  60. <div id="scrolljump" ng-click="ctrl.scrollDown()" ng-if="ctrl.showScrollJump && !ctrl.receiver.locked"
  61. translate translate-attr-title="messenger.SCROLL_DOWN">
  62. <svg x="0" y="0" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 50 50" width="100" height="100" style="fill: rgb(66, 66, 66);"><g fill="none" stroke="none" stroke-width="1" stroke-linecap="butt" stroke-linejoin="miter" stroke-miterlimit="10" stroke-dasharray="" stroke-dashoffset="0" font-family="sans-serif" font-weight="normal" font-size="12" text-anchor="start" mix-blend-mode="normal"><g><g><path d="M0,50l0,-50l50,0l0,50z" fill="none"/><path d="M25,46.5c-11.87412,0 -21.5,-9.62588 -21.5,-21.5l0,0c0,-11.87412 9.62588,-21.5 21.5,-21.5l0,0c11.87412,0 21.5,9.62588 21.5,21.5l0,0c0,11.87412 -9.62588,21.5 -21.5,21.5z" fill="#ffffff"/><g fill="#424242"><path d="M25,0.16c-13.69656,0 -24.84,11.14344 -24.84,24.84c0,13.69764 11.14344,24.84 24.84,24.84c13.69764,0 24.84,-11.14236 24.84,-24.84c0,-13.69656 -11.14236,-24.84 -24.84,-24.84z M36.56356,22.52356l-10.8,10.8c-0.2106,0.2106 -0.48708,0.31644 -0.76356,0.31644c-0.27648,0 -0.55296,-0.10584 -0.76356,-0.31644l-10.8,-10.8c-0.42228,-0.42228 -0.42228,-1.10484 0,-1.52712c0.42228,-0.42228 1.10484,-0.42228 1.52712,0l10.03644,10.03644l10.03644,-10.03644c0.42228,-0.42228 1.10484,-0.42228 1.52712,0c0.42228,0.42228 0.42228,1.10484 0,1.52712z"/></g></g></g></g></svg>
  63. </div>
  64. <div id="conversation-footer" ng-if="ctrl.isEnabled() && !ctrl.receiver.locked">
  65. <div ng-if="ctrl.isQuoting()" id="conversation-quote">
  66. <eee-message-quote
  67. class="message-quote"
  68. eee-quote="ctrl.getQuote()">
  69. </eee-message-quote>
  70. <md-button aria-label="Cancel Quoting" class="md-icon-button" ng-click="ctrl.cancelQuoting()">
  71. <i class="material-icons md-dark md-24" translate translate-attr-title="common.CANCEL">clear</i>
  72. </md-button>
  73. </div>
  74. <div id="mention-selector" ng-if="ctrl.showMentionSelector()">
  75. <ul class="member-list">
  76. <li ng-repeat="mention in ctrl.currentMentions"
  77. ng-click="ctrl.onMentionSelected(mention.identity)"
  78. ng-class="{selected: ctrl.selectedMention == $index}">
  79. <div class="contact-badge receiver-badge" ng-if="mention.isAll">
  80. <section class="avatar-box">
  81. <eee-avatar eee-type="'group'"
  82. eee-receiver="ctrl.receiver"
  83. eee-resolution="'low'"></eee-avatar>
  84. </section>
  85. <div translate>messenger.ALL</div>
  86. </div>
  87. <eee-contact-badge
  88. ng-if="!mention.isAll"
  89. eee-identity="mention.identity"
  90. eee-disable-click="true"/>
  91. </li>
  92. </ul>
  93. </div>
  94. <div class="chat-input">
  95. <compose-area
  96. submit="ctrl.submit"
  97. initial-data="ctrl.initialData"
  98. on-typing="ctrl.onTyping"
  99. on-key-down="ctrl.onComposeKeyDown"
  100. start-typing="ctrl.startTyping"
  101. stop-typing="ctrl.stopTyping"
  102. on-uploading="ctrl.onUploading"
  103. max-text-length="ctrl.maxTextLength">
  104. </compose-area>
  105. </div>
  106. </div>
  107. </div>