mirror of
https://github.com/pierre42100/ComunicWeb
synced 2025-06-19 12:25:16 +00:00
Update fullcalendar
This commit is contained in:
141
assets/3rdparty/fullcalendar/examples/js/theme-chooser.js
vendored
Normal file
141
assets/3rdparty/fullcalendar/examples/js/theme-chooser.js
vendored
Normal file
@ -0,0 +1,141 @@
|
||||
|
||||
function initThemeChooser(settings) {
|
||||
var isInitialized = false;
|
||||
var currentThemeSystem; // don't set this directly. use setThemeSystem
|
||||
var currentStylesheetEl;
|
||||
var loadingEl = document.getElementById('loading');
|
||||
var systemSelectEl = document.querySelector('#theme-system-selector select');
|
||||
var themeSelectWrapEls = Array.prototype.slice.call( // convert to real array
|
||||
document.querySelectorAll('.selector[data-theme-system]')
|
||||
);
|
||||
|
||||
systemSelectEl.addEventListener('change', function() {
|
||||
setThemeSystem(this.value);
|
||||
});
|
||||
|
||||
setThemeSystem(systemSelectEl.value);
|
||||
|
||||
themeSelectWrapEls.forEach(function(themeSelectWrapEl) {
|
||||
var themeSelectEl = themeSelectWrapEl.querySelector('select');
|
||||
|
||||
themeSelectWrapEl.addEventListener('change', function() {
|
||||
setTheme(
|
||||
currentThemeSystem,
|
||||
themeSelectEl.options[themeSelectEl.selectedIndex].value
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function setThemeSystem(themeSystem) {
|
||||
var selectedTheme;
|
||||
|
||||
currentThemeSystem = themeSystem;
|
||||
|
||||
themeSelectWrapEls.forEach(function(themeSelectWrapEl) {
|
||||
var themeSelectEl = themeSelectWrapEl.querySelector('select');
|
||||
|
||||
if (themeSelectWrapEl.getAttribute('data-theme-system') === themeSystem) {
|
||||
selectedTheme = themeSelectEl.options[themeSelectEl.selectedIndex].value;
|
||||
themeSelectWrapEl.style.display = 'inline-block';
|
||||
} else {
|
||||
themeSelectWrapEl.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
setTheme(themeSystem, selectedTheme);
|
||||
}
|
||||
|
||||
|
||||
function setTheme(themeSystem, themeName) {
|
||||
var stylesheetUrl = generateStylesheetUrl(themeSystem, themeName);
|
||||
var stylesheetEl;
|
||||
|
||||
function done() {
|
||||
if (!isInitialized) {
|
||||
isInitialized = true;
|
||||
settings.init(themeSystem);
|
||||
}
|
||||
else {
|
||||
settings.change(themeSystem);
|
||||
}
|
||||
|
||||
showCredits(themeSystem, themeName);
|
||||
}
|
||||
|
||||
if (stylesheetUrl) {
|
||||
stylesheetEl = document.createElement('link');
|
||||
stylesheetEl.setAttribute('rel', 'stylesheet');
|
||||
stylesheetEl.setAttribute('href', stylesheetUrl);
|
||||
document.querySelector('head').appendChild(stylesheetEl);
|
||||
|
||||
loadingEl.style.display = 'inline';
|
||||
|
||||
whenStylesheetLoaded(stylesheetEl, function() {
|
||||
if (currentStylesheetEl) {
|
||||
currentStylesheetEl.parentNode.removeChild(currentStylesheetEl);
|
||||
}
|
||||
currentStylesheetEl = stylesheetEl;
|
||||
loadingEl.style.display = 'none';
|
||||
done();
|
||||
});
|
||||
} else {
|
||||
if (currentStylesheetEl) {
|
||||
currentStylesheetEl.parentNode.removeChild(currentStylesheetEl);
|
||||
currentStylesheetEl = null
|
||||
}
|
||||
done();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function generateStylesheetUrl(themeSystem, themeName) {
|
||||
if (themeSystem === 'bootstrap') {
|
||||
if (themeName) {
|
||||
return 'https://bootswatch.com/4/' + themeName + '/bootstrap.min.css';
|
||||
}
|
||||
else { // the default bootstrap theme
|
||||
return 'https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function showCredits(themeSystem, themeName) {
|
||||
var creditId;
|
||||
|
||||
if (themeSystem.match('bootstrap')) {
|
||||
if (themeName) {
|
||||
creditId = 'bootstrap-custom';
|
||||
}
|
||||
else {
|
||||
creditId = 'bootstrap-standard';
|
||||
}
|
||||
}
|
||||
|
||||
Array.prototype.slice.call( // convert to real array
|
||||
document.querySelectorAll('.credits')
|
||||
).forEach(function(creditEl) {
|
||||
if (creditEl.getAttribute('data-credit-id') === creditId) {
|
||||
creditEl.style.display = 'block';
|
||||
} else {
|
||||
creditEl.style.display = 'none';
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
function whenStylesheetLoaded(linkNode, callback) {
|
||||
var isReady = false;
|
||||
|
||||
function ready() {
|
||||
if (!isReady) { // avoid double-call
|
||||
isReady = true;
|
||||
callback();
|
||||
}
|
||||
}
|
||||
|
||||
linkNode.onload = ready; // does not work cross-browser
|
||||
setTimeout(ready, 2000); // max wait. also handles browsers that don't support onload
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user