Skip to content

Commit

Permalink
Ref #4: install NiceAdmin & move existing data to it
Browse files Browse the repository at this point in the history
  • Loading branch information
LucileDT committed Mar 24, 2024
1 parent a766dbf commit 682836a
Show file tree
Hide file tree
Showing 9 changed files with 1,902 additions and 23 deletions.
4 changes: 3 additions & 1 deletion assets/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@ import './styles/app.scss';
// include libraries
const $ = require('jquery');
require('@popperjs/core'); // tooltips
const bootstrap = require('bootstrap');
const bootstrap = require('bootstrap'); // bootstrap 5
require ('./javascripts/NiceAdmin/main'); // NiceAdmin


// enable popper tooltips (bootstrap tooltips)
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
Expand Down
Binary file added assets/images/placeholder-profile.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
342 changes: 342 additions & 0 deletions assets/javascripts/NiceAdmin/main.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,342 @@
// const bootstrap = require('bootstrap'); // bootstrap 5 needed for tooltips activation

/**
* Template Name: NiceAdmin
* Template URL: https://bootstrapmade.com/nice-admin-bootstrap-admin-html-template/
* Updated: Mar 17 2024 with Bootstrap v5.3.3
* Author: BootstrapMade.com
* License: https://bootstrapmade.com/license/
*/

(function () {
"use strict";

/**
* Easy selector helper function
*/
const select = (el, all = false) => {
el = el.trim()
if (all) {
return [...document.querySelectorAll(el)]
} else {
return document.querySelector(el)
}
}

/**
* Easy event listener function
*/
const on = (type, el, listener, all = false) => {
if (all) {
select(el, all).forEach(e => e.addEventListener(type, listener))
} else {
select(el, all).addEventListener(type, listener)
}
}

/**
* Easy on scroll event listener
*/
const onscroll = (el, listener) => {
el.addEventListener('scroll', listener)
}

/**
* Sidebar toggle
*/
if (select('.toggle-sidebar-btn')) {
on('click', '.toggle-sidebar-btn', function (e) {
select('body').classList.toggle('toggle-sidebar')
})
}

/**
* Search bar toggle
*/
if (select('.search-bar-toggle')) {
on('click', '.search-bar-toggle', function (e) {
select('.search-bar').classList.toggle('search-bar-show')
})
}

/**
* Navbar links active state on scroll
*/
let navbarLinks = select('#navbar .scrollto', true)
const navbarLinksActive = () => {
let position = window.scrollY + 200
navbarLinks.forEach(navbarLink => {
if (!navbarLink.hash) return
let section = select(navbarLink.hash)
if (!section) return
if (position >= section.offsetTop && position <= (section.offsetTop + section.offsetHeight)) {
navbarLink.classList.add('active')
} else {
navbarLink.classList.remove('active')
}
})
}
window.addEventListener('load', navbarLinksActive)
onscroll(document, navbarLinksActive)

/**
* Toggle .header-scrolled class to #header when page is scrolled
*/
let selectHeader = select('#header')
if (selectHeader) {
const headerScrolled = () => {
if (window.scrollY > 100) {
selectHeader.classList.add('header-scrolled')
} else {
selectHeader.classList.remove('header-scrolled')
}
}
window.addEventListener('load', headerScrolled)
onscroll(document, headerScrolled)
}

/**
* Back to top button
*/
let backToTop = select('.back-to-top')
if (backToTop) {
const toggleBackToTop = () => {
if (window.scrollY > 100) {
backToTop.classList.add('active')
} else {
backToTop.classList.remove('active')
}
}
window.addEventListener('load', toggleBackToTop)
onscroll(document, toggleBackToTop)
}

/**
* Initiate tooltips - already enabled in assets/app.js
*/
// let tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
// let tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
// return new bootstrap.Tooltip(tooltipTriggerEl)
// })

/**
* Initiate quill editors (WYSIWYG text editor)
* Uncomment, install the library and require it to enable
*/
// if (select('.quill-editor-default')) {
// new Quill('.quill-editor-default', {
// theme: 'snow'
// });
// }
//
// if (select('.quill-editor-bubble')) {
// new Quill('.quill-editor-bubble', {
// theme: 'bubble'
// });
// }
//
// if (select('.quill-editor-full')) {
// new Quill(".quill-editor-full", {
// modules: {
// toolbar: [
// [{
// font: []
// }, {
// size: []
// }],
// ["bold", "italic", "underline", "strike"],
// [{
// color: []
// },
// {
// background: []
// }
// ],
// [{
// script: "super"
// },
// {
// script: "sub"
// }
// ],
// [{
// list: "ordered"
// },
// {
// list: "bullet"
// },
// {
// indent: "-1"
// },
// {
// indent: "+1"
// }
// ],
// ["direction", {
// align: []
// }],
// ["link", "image", "video"],
// ["clean"]
// ]
// },
// theme: "snow"
// });
// }

/**
* Initiate TinyMCE Editor (WYSIWYG text editor)
* Uncomment, install the library and require it to enable
*/
// const useDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
// const isSmallScreen = window.matchMedia('(max-width: 1023.5px)').matches;
//
// tinymce.init({
// selector: 'textarea.tinymce-editor',
// plugins: 'preview importcss searchreplace autolink autosave save directionality code visualblocks visualchars fullscreen image link media template codesample table charmap pagebreak nonbreaking anchor insertdatetime advlist lists wordcount help charmap quickbars emoticons',
// editimage_cors_hosts: ['picsum.photos'],
// menubar: 'file edit view insert format tools table help',
// toolbar: 'undo redo | bold italic underline strikethrough | fontfamily fontsize blocks | alignleft aligncenter alignright alignjustify | outdent indent | numlist bullist | forecolor backcolor removeformat | pagebreak | charmap emoticons | fullscreen preview save print | insertfile image media template link anchor codesample | ltr rtl',
// toolbar_sticky: true,
// toolbar_sticky_offset: isSmallScreen ? 102 : 108,
// autosave_ask_before_unload: true,
// autosave_interval: '30s',
// autosave_prefix: '{path}{query}-{id}-',
// autosave_restore_when_empty: false,
// autosave_retention: '2m',
// image_advtab: true,
// link_list: [{
// title: 'My page 1',
// value: 'https://www.tiny.cloud'
// },
// {
// title: 'My page 2',
// value: 'http://www.moxiecode.com'
// }
// ],
// image_list: [{
// title: 'My page 1',
// value: 'https://www.tiny.cloud'
// },
// {
// title: 'My page 2',
// value: 'http://www.moxiecode.com'
// }
// ],
// image_class_list: [{
// title: 'None',
// value: ''
// },
// {
// title: 'Some class',
// value: 'class-name'
// }
// ],
// importcss_append: true,
// file_picker_callback: (callback, value, meta) => {
// /* Provide file and text for the link dialog */
// if (meta.filetype === 'file') {
// callback('https://www.google.com/logos/google.jpg', {
// text: 'My text'
// });
// }
//
// /* Provide image and alt text for the image dialog */
// if (meta.filetype === 'image') {
// callback('https://www.google.com/logos/google.jpg', {
// alt: 'My alt text'
// });
// }
//
// /* Provide alternative source and posted for the media dialog */
// if (meta.filetype === 'media') {
// callback('movie.mp4', {
// source2: 'alt.ogg',
// poster: 'https://www.google.com/logos/google.jpg'
// });
// }
// },
// templates: [{
// title: 'New Table',
// description: 'creates a new table',
// content: '<div class="mceTmpl"><table width="98%%" border="0" cellspacing="0" cellpadding="0"><tr><th scope="col"> </th><th scope="col"> </th></tr><tr><td> </td><td> </td></tr></table></div>'
// },
// {
// title: 'Starting my story',
// description: 'A cure for writers block',
// content: 'Once upon a time...'
// },
// {
// title: 'New list with dates',
// description: 'New List with dates',
// content: '<div class="mceTmpl"><span class="cdate">cdate</span><br><span class="mdate">mdate</span><h2>My List</h2><ul><li></li><li></li></ul></div>'
// }
// ],
// template_cdate_format: '[Date Created (CDATE): %m/%d/%Y : %H:%M:%S]',
// template_mdate_format: '[Date Modified (MDATE): %m/%d/%Y : %H:%M:%S]',
// height: 600,
// image_caption: true,
// quickbars_selection_toolbar: 'bold italic | quicklink h2 h3 blockquote quickimage quicktable',
// noneditable_class: 'mceNonEditable',
// toolbar_mode: 'sliding',
// contextmenu: 'link image table',
// skin: useDarkMode ? 'oxide-dark' : 'oxide',
// content_css: useDarkMode ? 'dark' : 'default',
// content_style: 'body { font-family:Helvetica,Arial,sans-serif; font-size:16px }'
// });

/**
* Initiate Bootstrap validation check
*/
const needsValidation = document.querySelectorAll('.needs-validation');
Array.prototype.slice.call(needsValidation)
.forEach(function (form) {
form.addEventListener('submit', function (event) {
if (!form.checkValidity()) {
event.preventDefault()
event.stopPropagation()
}

form.classList.add('was-validated')
}, false)
});

/**
* Initiate SimpleDatatables
* Uncomment, install the library and require it to enable
*/
// const datatables = select('.datatable', true)
// datatables.forEach(datatable => {
// new simpleDatatables.DataTable(datatable, {
// perPageSelect: [5, 10, 15, ["All", -1]],
// columns: [{
// select: 2,
// sortSequence: ["desc", "asc"]
// },
// {
// select: 3,
// sortSequence: ["desc"]
// },
// {
// select: 4,
// cellClass: "green",
// headerClass: "red"
// }
// ]
// });
// })

/**
* Autoresize echart charts
* Uncomment, install the library and require it to enable
*/
// const mainContainer = select('#main');
// if (mainContainer) {
// setTimeout(() => {
// new ResizeObserver(function () {
// select('.echart', true).forEach(getEchart => {
// echarts.getInstanceByDom(getEchart).resize();
// })
// }).observe(mainContainer);
// }, 200);
// }
})();
Loading

0 comments on commit 682836a

Please sign in to comment.