/**
* @namespace flexygo.ui.wc
*/
var flexygo;
(function (flexygo) {
var ui;
(function (ui) {
var wc;
(function (wc) {
/**
* Library for the FlxMailNotificationElement web component.
*
* @class FlxMailNotificationElement
* @constructor
* @return {FlxMailNotificationElement}
*/
class FlxMailNotificationElement extends HTMLElement {
constructor() {
super();
}
/**
* Fires when element is attached to DOM
* @method connectedCallback
*/
connectedCallback() {
this.init();
}
/**
* Fires when element is detached to DOM
* @method disconnectedCallback
*/
disconnectedCallback() {
//Remove event handler
flexygo.events.off(this, 'push', 'notify', function (e) {
if (e.masterIdentity == 'updateMailNotice' && typeof e.sender['pendingMails'] != 'undefined') {
this.updateBadge(e.sender.pendingMails, true);
}
});
}
/**
* Monitor the list of observed attribute for changes.
* @property observedAttributes
*/
static get observedAttributes() {
return [];
}
/**
* Fires when the attribute value of the element is changed.
* @method attributeChangedCallback
*/
attributeChangedCallback(attrName, oldVal, newVal) {
}
/**
* Initialize Web Control
* @method init
*/
init() {
this.refresh();
flexygo.events.on(this, 'push', 'notify', function (e) {
if (e.masterIdentity == 'updateMailNotice' && typeof e.sender['pendingMails'] != 'undefined') {
this.updateBadge(e.sender.pendingMails, true);
}
});
}
/**
* Refreses Web Control
* @method refresh
*/
refresh() {
let ctx = $(this);
let notySpan = $('<span class="notify-dropdown"> <i class="flx-icon icon-mail-2 "></i> <b id="notifyMails" class="badge bounceIn animated"></b> </span>');
ctx.append(notySpan);
if (flexygo.utils.isSizeMobile()) {
notySpan.on('click', () => {
flexygo.nav.openPageName('syspage-notify', 'sysNotices', '', null, 'current', false, null);
});
}
else {
let tooltip = '<flx-tooltip container="body" mode="popover" placement="bottom"><div class="notifypopover"><flx-list objectname="sysNotices" objectwhere="" templateId="sysNotiFyListPopup"></flx-list></div></flx-tooltip>';
ctx.prepend(tooltip);
}
this.refreshBadge();
}
// /**
//* Navigates to notify node specification
//* @method goToNotice
//*/
// goToNotice(elm, noticeId) {
// let params: flexygo.api.Notify.NotifyParams = {
// NoticeId: noticeId
// }
// flexygo.ajax.post('~/api/Notify', 'GetNotice', params, (response: string) => {
// if (response) {
// let lfnav = new flexygo.ui.wc.FlxNavElement();
// var itemClick: Function = new Function(lfnav.getTreeNavigate(<flexygo.api.navigation.LoweredNavigationNode>flexygo.utils.lowerKeys(response)))
// itemClick.call(elm);
// }
// })
// }
/**
* Checks and refresh Notify Badge
* @method refreshBadge
*/
refreshBadge() {
if ($('#notifyBadge')) {
flexygo.ajax.post('~/api/Notify', 'GetMailBadgeValue', null, (response) => {
this.updateBadge(response, false);
});
}
}
/**
* Refreshes Notify Badge
* @method updateBadge
* @param {number} pendingMails - Number of pending mails
* @param {boolean} sound - Reproduces sound or not.
*/
updateBadge(pendingMails, sound) {
var currentMails = $('#notifyMails').html();
if (!currentMails || currentMails == '') {
currentMails = '0';
}
if (pendingMails > parseInt(currentMails)) {
var snd = new Audio(flexygo.utils.resolveUrl('~/js/plugins/lobibox-master/sounds/sound1.ogg'));
if (!flexygo.utils.testMode) {
snd.play();
}
}
if (pendingMails == 0) {
$('#notifyMails').html('');
}
else {
$('#notifyMails').html(pendingMails.toString());
}
}
}
wc.FlxMailNotificationElement = FlxMailNotificationElement;
})(wc = ui.wc || (ui.wc = {}));
})(ui = flexygo.ui || (flexygo.ui = {}));
})(flexygo || (flexygo = {}));
window.customElements.define('flx-mailnotification', flexygo.ui.wc.FlxMailNotificationElement);
//# sourceMappingURL=flx-mailnoification.js.map