|
@@ -1,17 +1,16 @@
|
|
-import { html } from "lit";
|
|
|
|
|
|
+import { html } from 'lit';
|
|
import { repeat } from 'lit/directives/repeat.js';
|
|
import { repeat } from 'lit/directives/repeat.js';
|
|
-import { _converse, api, u } from "@converse/headless";
|
|
|
|
|
|
+import { _converse, api, u } from '@converse/headless';
|
|
import 'shared/components/icons.js';
|
|
import 'shared/components/icons.js';
|
|
import { __ } from 'i18n';
|
|
import { __ } from 'i18n';
|
|
import { toggleGroup } from '../utils.js';
|
|
import { toggleGroup } from '../utils.js';
|
|
|
|
|
|
const { isUniView } = u;
|
|
const { isUniView } = u;
|
|
|
|
|
|
-
|
|
|
|
/**
|
|
/**
|
|
* @param {import('@converse/headless/types/plugins/roster/contact').default} contact
|
|
* @param {import('@converse/headless/types/plugins/roster/contact').default} contact
|
|
*/
|
|
*/
|
|
-function renderContact (contact) {
|
|
|
|
|
|
+function renderContact(contact) {
|
|
const jid = contact.get('jid');
|
|
const jid = contact.get('jid');
|
|
const extra_classes = [];
|
|
const extra_classes = [];
|
|
if (isUniView()) {
|
|
if (isUniView()) {
|
|
@@ -21,9 +20,9 @@ function renderContact (contact) {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
const ask = contact.get('ask');
|
|
const ask = contact.get('ask');
|
|
- const requesting = contact.get('requesting');
|
|
|
|
|
|
+ const requesting = contact.get('requesting');
|
|
const subscription = contact.get('subscription');
|
|
const subscription = contact.get('subscription');
|
|
- if ((ask === 'subscribe') || (subscription === 'from')) {
|
|
|
|
|
|
+ if (ask === 'subscribe' || subscription === 'from') {
|
|
/* ask === 'subscribe'
|
|
/* ask === 'subscribe'
|
|
* Means we have asked to subscribe to them.
|
|
* Means we have asked to subscribe to them.
|
|
*
|
|
*
|
|
@@ -43,23 +42,39 @@ function renderContact (contact) {
|
|
extra_classes.push(subscription);
|
|
extra_classes.push(subscription);
|
|
extra_classes.push(contact.getStatus());
|
|
extra_classes.push(contact.getStatus());
|
|
}
|
|
}
|
|
- return html`
|
|
|
|
- <li class="list-item d-flex controlbox-padded ${extra_classes.join(' ')}" data-status="${contact.getStatus()}">
|
|
|
|
- <converse-roster-contact .model=${contact}></converse-roster-contact>
|
|
|
|
- </li>`;
|
|
|
|
|
|
+ return html` <li
|
|
|
|
+ class="list-item d-flex controlbox-padded ${extra_classes.join(' ')}"
|
|
|
|
+ data-status="${contact.getStatus()}"
|
|
|
|
+ >
|
|
|
|
+ <converse-roster-contact .model=${contact}></converse-roster-contact>
|
|
|
|
+ </li>`;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
export default (o) => {
|
|
export default (o) => {
|
|
const i18n_title = __('Click to hide these contacts');
|
|
const i18n_title = __('Click to hide these contacts');
|
|
const collapsed = _converse.state.roster.state.get('collapsed_groups');
|
|
const collapsed = _converse.state.roster.state.get('collapsed_groups');
|
|
- return html`
|
|
|
|
- <div class="roster-group" data-group="${o.name}">
|
|
|
|
- <a href="#" class="list-toggle group-toggle controlbox-padded" title="${i18n_title}" @click=${ev => toggleGroup(ev, o.name)}>
|
|
|
|
- <converse-icon color="var(--chat-color)" size="1em" class="fa ${ (collapsed.includes(o.name)) ? 'fa-caret-right' : 'fa-caret-down' }"></converse-icon> ${o.name}
|
|
|
|
- </a>
|
|
|
|
- <ul class="items-list roster-group-contacts ${ (collapsed.includes(o.name)) ? 'collapsed' : '' }" data-group="${o.name}">
|
|
|
|
- ${ repeat(o.contacts, (c) => c.get('jid'), renderContact) }
|
|
|
|
- </ul>
|
|
|
|
- </div>`;
|
|
|
|
-}
|
|
|
|
|
|
+ return html`<div class="roster-group" data-group="${o.name}">
|
|
|
|
+ <a
|
|
|
|
+ href="#"
|
|
|
|
+ class="list-toggle group-toggle controlbox-padded"
|
|
|
|
+ title="${i18n_title}"
|
|
|
|
+ @click=${(ev) => toggleGroup(ev, o.name)}
|
|
|
|
+ >
|
|
|
|
+ <converse-icon
|
|
|
|
+ color="var(--chat-color)"
|
|
|
|
+ size="1em"
|
|
|
|
+ class="fa ${collapsed.includes(o.name) ? 'fa-caret-right' : 'fa-caret-down'}"
|
|
|
|
+ ></converse-icon>
|
|
|
|
+ ${o.name}
|
|
|
|
+ ${o.contacts[0].get('requesting')
|
|
|
|
+ ? html` <converse-icon color="var(--chat-color)" size="1.2em" class="fa fa-bell-alt"></converse-icon>`
|
|
|
|
+ : ``}
|
|
|
|
+ </a>
|
|
|
|
+ <ul
|
|
|
|
+ class="items-list roster-group-contacts ${collapsed.includes(o.name) ? 'collapsed' : ''}"
|
|
|
|
+ data-group="${o.name}"
|
|
|
|
+ >
|
|
|
|
+ ${repeat(o.contacts, (c) => c.get('jid'), renderContact)}
|
|
|
|
+ </ul>
|
|
|
|
+ </div>`;
|
|
|
|
+};
|