PATH: /home/hwyuvbry/dear.waroenkhoki123.web.id/staff/assets/js
FILE_BARU
CREATE
FOLDER_BARU
MKDIR
UPLOAD_FILE
GO
[ .. KEMBALI ]
📄 app-access-permission.js
↓
X
📄 app-access-roles.js
↓
X
📄 app-calendar-events.js
↓
X
📄 app-calendar.js
↓
X
📄 app-chat.js
↓
X
📄 app-email.js
↓
X
📄 app-invoice-add.js
↓
X
📄 app-invoice-edit.js
↓
X
📄 app-invoice-list.js
↓
X
📄 app-invoice-print.js
↓
X
📄 app-kanban.js
↓
X
📄 app-user-list.js
↓
X
📄 app-user-view-account.js
↓
X
📄 app-user-view-billing.js
↓
X
📄 app-user-view-security.js
↓
X
📄 app-user-view.js
↓
X
📄 cards-actions.js
↓
X
📄 cards-analytics.js
↓
X
📄 cards-statistics.js
↓
X
📄 charts-apex.js
↓
X
📄 charts-chartjs.js
↓
X
📄 config.js
↓
X
📄 dashboards-analytics.js
↓
X
📄 dashboards-crm.js
↓
X
📄 dashboards-ecommerce.js
↓
X
📄 extended-ui-blockui.js
↓
X
📄 extended-ui-drag-and-drop.js
↓
X
📄 extended-ui-media-player.js
↓
X
📄 extended-ui-misc-clipboardjs.js
↓
X
📄 extended-ui-misc-idle-timer.js
↓
X
📄 extended-ui-misc-numeraljs.js
↓
X
📄 extended-ui-perfect-scrollbar.js
↓
X
📄 extended-ui-star-ratings.js
↓
X
📄 extended-ui-sweetalert2.js
↓
X
📄 extended-ui-timeline.js
↓
X
📄 extended-ui-tour.js
↓
X
📄 extended-ui-treeview.js
↓
X
📄 form-basic-inputs.js
↓
X
📄 form-layouts.js
↓
X
📄 form-validation.js
↓
X
📄 form-wizard-icons.js
↓
X
📄 form-wizard-numbered.js
↓
X
📄 form-wizard-validation.js
↓
X
📄 forms-editors.js
↓
X
📄 forms-extras.js
↓
X
📄 forms-file-upload.js
↓
X
📄 forms-pickers.js
↓
X
📄 forms-selects.js
↓
X
📄 forms-sliders.js
↓
X
📄 forms-tagify.js
↓
X
📄 forms-typeahead.js
↓
X
📄 main.js
↓
X
📄 maps-leaflet.js
↓
X
📄 modal-add-new-address.js
↓
X
📄 modal-add-new-cc.js
↓
X
📄 modal-add-permission.js
↓
X
📄 modal-add-role.js
↓
X
📄 modal-create-app.js
↓
X
📄 modal-edit-cc.js
↓
X
📄 modal-edit-permission.js
↓
X
📄 modal-edit-user.js
↓
X
📄 modal-enable-otp.js
↓
X
📄 modal-share-project.js
↓
X
📄 modal-two-factor-auth.js
↓
X
📄 offcanvas-add-payment.js
↓
X
📄 offcanvas-send-invoice.js
↓
X
📄 pages-account-settings-account.js
↓
X
📄 pages-account-settings-billing.js
↓
X
📄 pages-account-settings-security.js
↓
X
📄 pages-auth-multisteps.js
↓
X
📄 pages-auth-two-steps.js
↓
X
📄 pages-auth.js
↓
X
📄 pages-pricing.js
↓
X
📄 pages-profile.js
↓
X
📄 tables-datatables-advanced.js
↓
X
📄 tables-datatables-basic.js
↓
X
📄 tables-datatables-extensions.js
↓
X
📄 ui-app-brand.js
↓
X
📄 ui-carousel.js
↓
X
📄 ui-menu.js
↓
X
📄 ui-modals.js
↓
X
📄 ui-navbar.js
↓
X
📄 ui-popover.js
↓
X
📄 ui-toasts.js
↓
X
📄 wizard-ex-checkout.js
↓
X
📄 wizard-ex-create-deal.js
↓
X
📄 wizard-ex-property-listing.js
↓
X
SAVING...
BERHASIL DIUBAH!
EDITING: app-chat.js
/** * App Chat */ 'use strict'; document.addEventListener('DOMContentLoaded', function () { (function () { const chatContactsBody = document.querySelector('.app-chat-contacts .sidebar-body'), chatContactListItems = [].slice.call( document.querySelectorAll('.chat-contact-list-item:not(.chat-contact-list-item-title)') ), chatHistoryBody = document.querySelector('.chat-history-body'), chatSidebarLeftBody = document.querySelector('.app-chat-sidebar-left .sidebar-body'), chatSidebarRightBody = document.querySelector('.app-chat-sidebar-right .sidebar-body'), chatUserStatus = [].slice.call(document.querySelectorAll(".form-check-input[name='chat-user-status']")), chatSidebarLeftUserAbout = $('.chat-sidebar-left-user-about'), formSendMessage = document.querySelector('.form-send-message'), messageInput = document.querySelector('.message-input'), searchInput = document.querySelector('.chat-search-input'), speechToText = $('.speech-to-text'), // ! jQuery dependency for speech to text userStatusObj = { active: 'avatar-online', offline: 'avatar-offline', away: 'avatar-away', busy: 'avatar-busy' }; // Initialize PerfectScrollbar // ------------------------------ // Chat contacts scrollbar if (chatContactsBody) { new PerfectScrollbar(chatContactsBody, { wheelPropagation: false, suppressScrollX: true }); } // Chat history scrollbar if (chatHistoryBody) { new PerfectScrollbar(chatHistoryBody, { wheelPropagation: false, suppressScrollX: true }); } // Sidebar left scrollbar if (chatSidebarLeftBody) { new PerfectScrollbar(chatSidebarLeftBody, { wheelPropagation: false, suppressScrollX: true }); } // Sidebar right scrollbar if (chatSidebarRightBody) { new PerfectScrollbar(chatSidebarRightBody, { wheelPropagation: false, suppressScrollX: true }); } // Scroll to bottom function function scrollToBottom() { chatHistoryBody.scrollTo(0, chatHistoryBody.scrollHeight); } scrollToBottom(); // User About Maxlength Init if (chatSidebarLeftUserAbout.length) { chatSidebarLeftUserAbout.maxlength({ alwaysShow: true, warningClass: 'label label-success bg-success text-white', limitReachedClass: 'label label-danger', separator: '/', validate: true, threshold: 120 }); } // Update user status chatUserStatus.forEach(el => { el.addEventListener('click', e => { let chatLeftSidebarUserAvatar = document.querySelector('.chat-sidebar-left-user .avatar'), value = e.currentTarget.value; //Update status in left sidebar user avatar chatLeftSidebarUserAvatar.removeAttribute('class'); Helpers._addClass('avatar avatar-xl w-px-75 h-px-75 ' + userStatusObj[value] + '', chatLeftSidebarUserAvatar); //Update status in contacts sidebar user avatar let chatContactsUserAvatar = document.querySelector('.app-chat-contacts .avatar'); chatContactsUserAvatar.removeAttribute('class'); Helpers._addClass('flex-shrink-0 avatar ' + userStatusObj[value] + ' me-3', chatContactsUserAvatar); }); }); // Select chat or contact chatContactListItems.forEach(chatContactListItem => { // Bind click event to each chat contact list item chatContactListItem.addEventListener('click', e => { // Remove active class from chat contact list item chatContactListItems.forEach(chatContactListItem => { chatContactListItem.classList.remove('active'); }); // Add active class to current chat contact list item e.currentTarget.classList.add('active'); }); }); // Filter Chats if (searchInput) { searchInput.addEventListener('keyup', e => { let searchValue = e.currentTarget.value.toLowerCase(), searchChatListItemsCount = 0, searchContactListItemsCount = 0, chatListItem0 = document.querySelector('.chat-list-item-0'), contactListItem0 = document.querySelector('.contact-list-item-0'), searchChatListItems = [].slice.call( document.querySelectorAll('#chat-list li:not(.chat-contact-list-item-title)') ), searchContactListItems = [].slice.call( document.querySelectorAll('#contact-list li:not(.chat-contact-list-item-title)') ); // Search in chats searchChatContacts(searchChatListItems, searchChatListItemsCount, searchValue, chatListItem0); // Search in contacts searchChatContacts(searchContactListItems, searchContactListItemsCount, searchValue, contactListItem0); }); } // Search chat and contacts function function searchChatContacts(searchListItems, searchListItemsCount, searchValue, listItem0) { searchListItems.forEach(searchListItem => { let searchListItemText = searchListItem.textContent.toLowerCase(); if (searchValue) { if (-1 < searchListItemText.indexOf(searchValue)) { searchListItem.classList.add('d-flex'); searchListItem.classList.remove('d-none'); searchListItemsCount++; } else { searchListItem.classList.add('d-none'); } } else { searchListItem.classList.add('d-flex'); searchListItem.classList.remove('d-none'); searchListItemsCount++; } }); // Display no search fount if searchListItemsCount == 0 if (searchListItemsCount == 0) { listItem0.classList.remove('d-none'); } else { listItem0.classList.add('d-none'); } } // Send Message formSendMessage.addEventListener('submit', e => { e.preventDefault(); if (messageInput.value) { // Create a div and add a class let renderMsg = document.createElement('div'); renderMsg.className = 'chat-message-text mt-3'; renderMsg.innerHTML = '<p class="mb-0">' + messageInput.value + '</p>'; document.querySelector('li:last-child .chat-message-wrapper').appendChild(renderMsg); messageInput.value = ''; scrollToBottom(); } }); // on click of chatHistoryHeaderMenu, Remove data-overlay attribute from chatSidebarLeftClose to resolve overlay overlapping issue for two sidebar let chatHistoryHeaderMenu = document.querySelector(".chat-history-header [data-target='#app-chat-contacts']"), chatSidebarLeftClose = document.querySelector('.app-chat-sidebar-left .close-sidebar'); chatHistoryHeaderMenu.addEventListener('click', e => { chatSidebarLeftClose.removeAttribute('data-overlay'); }); // } // Speech To Text if (speechToText.length) { var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition; if (SpeechRecognition !== undefined && SpeechRecognition !== null) { var recognition = new SpeechRecognition(), listening = false; speechToText.on('click', function () { const $this = $(this); recognition.onspeechstart = function () { listening = true; }; if (listening === false) { recognition.start(); } recognition.onerror = function (event) { listening = false; }; recognition.onresult = function (event) { $this.closest('.form-send-message').find('.message-input').val(event.results[0][0].transcript); }; recognition.onspeechend = function (event) { listening = false; recognition.stop(); }; }); } } })(); });
SIMPAN PERUBAHAN