15c10376b0
To conform with naming conventions regarding functions, which the templates are.
60 lines
1.7 KiB
JavaScript
60 lines
1.7 KiB
JavaScript
import tplChatHead from './templates/chat-head.js';
|
|
import { CustomElement } from 'shared/components/element.js';
|
|
import { __ } from 'i18n';
|
|
import { _converse, api } from "@converse/headless/core.js";
|
|
|
|
|
|
export default class HeadlinesHeading extends CustomElement {
|
|
|
|
static get properties () {
|
|
return {
|
|
'jid': { type: String },
|
|
}
|
|
}
|
|
|
|
async initialize () {
|
|
this.model = _converse.chatboxes.get(this.jid);
|
|
await this.model.initialized;
|
|
this.requestUpdate();
|
|
}
|
|
|
|
render () {
|
|
return tplChatHead({
|
|
...this.model.toJSON(),
|
|
...{
|
|
'display_name': this.model.getDisplayName(),
|
|
'heading_buttons_promise': this.getHeadingButtons()
|
|
}
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Returns a list of objects which represent buttons for the headlines header.
|
|
* @async
|
|
* @emits _converse#getHeadingButtons
|
|
* @method HeadlinesHeading#getHeadingButtons
|
|
*/
|
|
getHeadingButtons () {
|
|
const buttons = [];
|
|
if (!api.settings.get('singleton')) {
|
|
buttons.push({
|
|
'a_class': 'close-chatbox-button',
|
|
'handler': ev => this.close(ev),
|
|
'i18n_text': __('Close'),
|
|
'i18n_title': __('Close these announcements'),
|
|
'icon_class': 'fa-times',
|
|
'name': 'close',
|
|
'standalone': api.settings.get('view_mode') === 'overlayed'
|
|
});
|
|
}
|
|
return _converse.api.hook('getHeadingButtons', this, buttons);
|
|
}
|
|
|
|
close (ev) {
|
|
ev.preventDefault();
|
|
this.model.close();
|
|
}
|
|
}
|
|
|
|
api.elements.define('converse-headlines-heading', HeadlinesHeading);
|