95 lines
3.1 KiB
JavaScript
Executable File
95 lines
3.1 KiB
JavaScript
Executable File
"use strict";
|
|
|
|
// Class definition
|
|
var KTAppChat = function () {
|
|
var chatAsideEl;
|
|
var chatContentEl;
|
|
|
|
// Private functions
|
|
var initAside = function () {
|
|
// Mobile offcanvas for mobile mode
|
|
var offcanvas = new KTOffcanvas(chatAsideEl, {
|
|
overlay: true,
|
|
baseClass: 'kt-app__aside',
|
|
closeBy: 'kt_chat_aside_close',
|
|
toggleBy: 'kt_chat_aside_mobile_toggle'
|
|
});
|
|
|
|
// User listing
|
|
var userListEl = KTUtil.find(chatAsideEl, '.kt-scroll');
|
|
if (!userListEl) {
|
|
return;
|
|
}
|
|
|
|
// Initialize perfect scrollbar(see: https://github.com/utatti/perfect-scrollbar)
|
|
KTUtil.scrollInit(userListEl, {
|
|
mobileNativeScroll: true, // enable native scroll for mobile
|
|
desktopNativeScroll: false, // disable native scroll and use custom scroll for desktop
|
|
resetHeightOnDestroy: true, // reset css height on scroll feature destroyed
|
|
handleWindowResize: true, // recalculate hight on window resize
|
|
rememberPosition: true, // remember scroll position in cookie
|
|
height: function() { // calculate height
|
|
var height;
|
|
var portletBodyEl = KTUtil.find(chatAsideEl, '.kt-portlet > .kt-portlet__body');
|
|
var widgetEl = KTUtil.find(chatAsideEl, '.kt-widget.kt-widget--users');
|
|
var searchbarEl = KTUtil.find(chatAsideEl, '.kt-searchbar');
|
|
|
|
if (KTUtil.isInResponsiveRange('desktop')) {
|
|
height = KTLayout.getContentHeight();
|
|
} else {
|
|
height = KTUtil.getViewPort().height;
|
|
}
|
|
|
|
if (chatAsideEl) {
|
|
height = height - parseInt(KTUtil.css(chatAsideEl, 'margin-top')) - parseInt(KTUtil.css(chatAsideEl, 'margin-bottom'));
|
|
height = height - parseInt(KTUtil.css(chatAsideEl, 'padding-top')) - parseInt(KTUtil.css(chatAsideEl, 'padding-bottom'));
|
|
}
|
|
|
|
if (widgetEl) {
|
|
height = height - parseInt(KTUtil.css(widgetEl, 'margin-top')) - parseInt(KTUtil.css(widgetEl, 'margin-bottom'));
|
|
height = height - parseInt(KTUtil.css(widgetEl, 'padding-top')) - parseInt(KTUtil.css(widgetEl, 'padding-bottom'));
|
|
}
|
|
|
|
if (portletBodyEl) {
|
|
height = height - parseInt(KTUtil.css(portletBodyEl, 'margin-top')) - parseInt(KTUtil.css(portletBodyEl, 'margin-bottom'));
|
|
height = height - parseInt(KTUtil.css(portletBodyEl, 'padding-top')) - parseInt(KTUtil.css(portletBodyEl, 'padding-bottom'));
|
|
}
|
|
|
|
if (searchbarEl) {
|
|
height = height - parseInt(KTUtil.css(searchbarEl, 'height'));
|
|
height = height - parseInt(KTUtil.css(searchbarEl, 'margin-top')) - parseInt(KTUtil.css(searchbarEl, 'margin-bottom'));
|
|
}
|
|
|
|
// remove additional space
|
|
height = height - 5;
|
|
|
|
return height;
|
|
}
|
|
});
|
|
}
|
|
|
|
return {
|
|
// public functions
|
|
init: function() {
|
|
// elements
|
|
chatAsideEl = KTUtil.getByID('kt_chat_aside');
|
|
|
|
// init aside and user list
|
|
initAside();
|
|
|
|
// init inline chat example
|
|
KTChat.setup(KTUtil.getByID('kt_chat_content'));
|
|
|
|
// trigger click to show popup modal chat on page load
|
|
if (KTUtil.getByID('kt_app_chat_launch_btn')) {
|
|
setTimeout(function() {
|
|
KTUtil.getByID('kt_app_chat_launch_btn').click();
|
|
}, 1000);
|
|
}
|
|
}
|
|
};
|
|
}();
|
|
|
|
KTUtil.ready(function() {
|
|
KTAppChat.init();
|
|
}); |