messenger.navigation.html 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. <!-- My identity -->
  2. <div id="my-identity" ng-if="ctrl.showMyIdentity()">
  3. <div class="my-identity-content" eee-my-identity
  4. eee-identity="ctrl.getMyIdentity()"></div>
  5. <md-menu md-position-mode="target-right target" md-offset="0 45">
  6. <md-button aria-label="Open menu" class="md-icon-button" ng-click="$mdOpenMenu($event)">
  7. <i class="material-icons md-light md-24">more_vert</i>
  8. </md-button>
  9. <md-menu-content width="4">
  10. <md-menu-item>
  11. <md-button ng-click="ctrl.closeSession()">
  12. <md-icon aria-label="Close session" class="material-icons md-24">exit_to_app</md-icon>
  13. <span translate>common.SESSION_CLOSE</span>
  14. </md-button>
  15. </md-menu-item>
  16. <md-menu-item ng-if="ctrl.isPersistent()">
  17. <md-button ng-click="ctrl.deleteSession()">
  18. <md-icon aria-label="Delete session" class="material-icons md-24">delete</md-icon>
  19. <span translate>common.SESSION_DELETE</span>
  20. </md-button>
  21. </md-menu-item>
  22. <md-menu-item>
  23. <md-button ng-click="ctrl.settings()">
  24. <md-icon aria-label="Settings" class="material-icons md-24">settings</md-icon>
  25. <span translate>messenger.SETTINGS</span>
  26. </md-button>
  27. </md-menu-item>
  28. <md-menu-item>
  29. <md-button ng-click="ctrl.about()">
  30. <md-icon aria-label="About" class="material-icons md-24">info</md-icon>
  31. <span translate>messenger.ABOUT</span>
  32. </md-button>
  33. </md-menu-item>
  34. </md-menu-content>
  35. </md-menu>
  36. </div>
  37. <!-- Header -->
  38. <div id="navigation-header">
  39. <div class="main">
  40. <md-nav-bar md-no-ink md-selected-nav-item="ctrl.activeTab" nav-bar-aria-label="navigation links">
  41. <md-nav-item md-nav-click="" name="conversations">
  42. <i class="material-icons md-dark md-24" translate translate-attr-title="messenger.CONVERSATIONS">speaker_notes</i>
  43. </md-nav-item>
  44. <md-nav-item md-nav-click="" name="contacts">
  45. <i class="material-icons md-dark md-24" translate translate-attr-title="messenger.CONTACTS">person</i>
  46. </md-nav-item>
  47. </md-nav-bar>
  48. <span flex></span>
  49. <md-button aria-label="Search" class="md-icon-button" ng-click="ctrl.toggleSearch()">
  50. <i class="material-icons md-dark md-24" translate translate-attr-title="messenger.SEARCH">search</i>
  51. </md-button>
  52. </div>
  53. <div class="search" searchbox searchbox-focus="ctrl.searchVisible">
  54. <input type="text" ng-model="ctrl.searchText" translate translate-attr-placeholder="messenger.SEARCH" aria-label="Search" translate-attr-aria-label="messenger.SEARCH">
  55. </div>
  56. </div>
  57. <!-- Conversations -->
  58. <div id="navigation-conversations" class="tab-content" ng-if="ctrl.activeTab == 'conversations'" in-view-container>
  59. <p class="empty" ng-if="ctrl.conversations().length === 0" translate>messenger.NO_CONVERSATIONS_FOUND</p>
  60. <ul>
  61. <li ng-repeat="conversation in ctrl.conversations() | filter:ctrl.searchConversation"
  62. ng-class="{'unread': conversation.unreadCount > 0,
  63. 'active': ctrl.isActive(conversation)}"
  64. ui-sref="messenger.home.conversation({ type: conversation.type, id: conversation.id, initParams: null })"
  65. class="conversation" ng-if="ctrl.isVisible(conversation)">
  66. <section class="avatar-box">
  67. <eee-avatar eee-type="conversation.type"
  68. eee-receiver="conversation.receiver"
  69. eee-resolution="'low'"></eee-avatar>
  70. </section>
  71. <section class="conversation-box">
  72. <section class="receiver-box">
  73. <span ng-class="{'disabled': conversation.receiver.disabled === true}">
  74. {{ conversation.receiver.displayName }}
  75. </span>
  76. <span class="badge unread-count" ng-show="conversation.unreadCount > 0">
  77. {{ conversation.unreadCount }}
  78. </span>
  79. </section>
  80. <section class="message-box">
  81. <eee-latest-message
  82. ng-show="!conversation.receiver.isTyping() && conversation.latestMessage"
  83. ng-class="latest-message-text"
  84. eee-type="conversation.type"
  85. eee-receiver="conversation.receiver"
  86. eee-message="conversation.latestMessage"></eee-latest-message>
  87. </section>
  88. </section>
  89. </li>
  90. </ul>
  91. </div>
  92. <!-- Contacts -->
  93. <div id="navigation-contacts" class="tab-content" ng-if="ctrl.activeTab == 'contacts'" in-view-container>
  94. <p class="empty" ng-if="ctrl.contacts().length === 0" translate>messenger.NO_CONTACTS_FOUND</p>
  95. <ul>
  96. <li ng-repeat="contact in ctrl.contacts() | isNotMe | filter:ctrl.searchContact"
  97. ui-sref="messenger.home.conversation({ type: 'contact', id: contact.id, initParams: null })"
  98. class="contact"
  99. ng-class="{'inactive': contact.state == 'INACTIVE'}">
  100. <section class="avatar-box">
  101. <eee-avatar eee-type="'contact'"
  102. eee-receiver="contact"
  103. eee-resolution="'low'"></eee-avatar>
  104. </section>
  105. <section class="left">
  106. <div class="name">{{ contact.displayName }}</div>
  107. <div class="identity">{{ contact.id }}</div>
  108. </section>
  109. <section class="right">
  110. <div class="nickname">
  111. <span ng-show="contact.publicNickname && contact.verificationLevel < 2 && contact.publicNickname != contact.identity">
  112. ~{{ contact.publicNickname }}
  113. </span>
  114. </div>
  115. <div class="verification-level">
  116. <eee-verification-level
  117. contact="contact"
  118. ng-if="contact.verificationLevel">
  119. </eee-verification-level>
  120. </div>
  121. </section>
  122. </li>
  123. </ul>
  124. </div>
  125. <!-- FAB -->
  126. <div id="navigation-fab">
  127. <md-fab-speed-dial md-direction="up" class="md-scale md-fab-bottom-right md-hover-full" ng-cloak>
  128. <md-fab-trigger>
  129. <md-button aria-label="menu" class="md-fab">
  130. <md-icon aria-label="Add" class="material-icons md-24">add</md-icon>
  131. </md-button>
  132. </md-fab-trigger>
  133. <md-fab-actions>
  134. <md-button
  135. ng-click="ctrl.addContact()"
  136. translate-attr="{'aria-label': 'messenger.ADD_CONTACT'}"
  137. aria-label="Add Contact"
  138. class="md-fab md-raised md-mini fab-button-add-contact">
  139. <md-tooltip md-direction="left" md-visible="tooltipVisible">
  140. <label translate>messenger.ADD_CONTACT</label>
  141. </md-tooltip>
  142. <md-icon class="material-icons md-24">person_add</md-icon>
  143. </md-button>
  144. <md-button
  145. ng-click="ctrl.createGroup()"
  146. translate-attr="{'aria-label': 'messenger.CREATE_GROUP'}"
  147. aria-label="Create Group"
  148. class="md-fab md-mini fab-button-add-group">
  149. <md-tooltip md-direction="left" md-visible="tooltipVisible">
  150. <label translate>messenger.CREATE_GROUP</label>
  151. </md-tooltip>
  152. <md-icon class="material-icons md-24">group_add</md-icon>
  153. </md-button>
  154. <md-button
  155. ng-click="ctrl.createDistributionList()"
  156. translate-attr="{'aria-label': 'messenger.CREATE_DISTRIBUTION_LIST'}"
  157. aria-label="Create Distribution list"
  158. class="md-fab md-mini fab-button-add-distribution-list">
  159. <md-tooltip md-direction="left" md-visible="tooltipVisible">
  160. <label translate>messenger.CREATE_DISTRIBUTION_LIST</label>
  161. </md-tooltip>
  162. <md-icon class="material-icons md-24">question_answer</md-icon>
  163. </md-button>
  164. </md-fab-actions>
  165. </md-fab-speed-dial>
  166. </div>