UNPKG

gentelella

Version:

Gentelella Admin is a free to use Bootstrap admin template

130 lines (104 loc) 4.58 kB
// Inbox.html specific JavaScript with Bootstrap WYSIWYG editor // Import jQuery setup first import $ from './jquery-setup.js'; window.jQuery = window.$ = $; globalThis.jQuery = globalThis.$ = $; // Bootstrap 5 import * as bootstrap from 'bootstrap'; window.bootstrap = bootstrap; globalThis.bootstrap = bootstrap; // Global styles import './main.scss'; // Essential scripts for layout import './js/helpers/smartresize.js'; import './js/sidebar.js'; import './js/init.js'; // Bootstrap WYSIWYG Editor import 'bootstrap-wysiwyg'; // Initialize WYSIWYG editor when DOM is ready document.addEventListener('DOMContentLoaded', function() { // Check if we have the required elements const editorEl = document.getElementById('editor'); const toolbarEl = document.querySelector('[data-role="editor-toolbar"]'); if (editorEl && toolbarEl && window.jQuery) { try { // Initialize the WYSIWYG editor $(editorEl).wysiwyg({ toolbarSelector: '[data-role="editor-toolbar"]', activeToolbarClass: 'btn-info', hotKeys: { 'ctrl+b meta+b': 'bold', 'ctrl+i meta+i': 'italic', 'ctrl+u meta+u': 'underline', 'ctrl+z meta+z': 'undo', 'ctrl+y meta+y meta+shift+z': 'redo' } }); // Style the editor $(editorEl).css({ 'min-height': '200px', 'padding': '10px', 'border': '1px solid #E6E9ED', 'border-radius': '4px', 'background-color': '#fff' }); // Add some default content $(editorEl).html('<p>Start typing your message here...</p>'); // Handle toolbar button states $(editorEl).on('keyup mouseup', function() { // Update toolbar button states based on current selection $('[data-role="editor-toolbar"] [data-edit]').each(function() { const command = $(this).data('edit'); if (document.queryCommandState(command)) { $(this).addClass('active btn-info'); } else { $(this).removeClass('active btn-info'); } }); }); // Handle file upload for images $('#file-upload').on('change', function(e) { const file = e.target.files[0]; if (file && file.type.match('image.*')) { const reader = new FileReader(); reader.onload = function(event) { const img = '<img src="' + event.target.result + '" class="img-responsive" style="max-width: 100%; height: auto;">'; $(editorEl).append(img); }; reader.readAsDataURL(file); } }); } catch (error) { console.error('❌ Error initializing WYSIWYG editor:', error); } } else { console.warn('⚠️ WYSIWYG editor elements not found or jQuery not available'); } }); // Handle send button document.addEventListener('click', function(e) { if (e.target.matches('[data-action="send"]')) { e.preventDefault(); const content = document.getElementById('editor').innerHTML; // Show success message if (window.bootstrap && window.bootstrap.Toast) { const toastHtml = ` <div class="toast align-items-center text-white bg-success border-0" role="alert" aria-live="assertive" aria-atomic="true"> <div class="d-flex"> <div class="toast-body"> Message sent successfully! </div> <button type="button" class="btn-close btn-close-white me-2 m-auto" data-bs-dismiss="toast"></button> </div> </div> `; const toastContainer = document.createElement('div'); toastContainer.innerHTML = toastHtml; document.body.appendChild(toastContainer); const toast = new bootstrap.Toast(toastContainer.querySelector('.toast')); toast.show(); } else { alert('Message sent successfully!'); } } });