xmpp.chapril.org-conversejs/src/plugins/headlines-view/heading.js
JC Brand 15c10376b0 Rename all templates to camelCase
To conform with naming conventions regarding functions, which the
templates are.
2023-02-15 14:29:07 +01:00

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);