/*!
* Grid Interaction
*
* Pico.css - https://picocss.com
* Copyright 2019 - Licensed under MIT
*/
(function() {
/**
* Config
*/
var grid = {
columnsCurrent: 4,
columnsMin: 1,
columnsMax: 12,
targetButtons: '#grids article', // Buttons inserted before target
targetGrid: '#grids .grid', // Grid target
targetCode: '#grids pre code', // Code target
selectorAdd: '#grids button.add', // Add button selector in Dom
selectorRemove: '#grids button.remove', // Remove Button selector in Dom
};
/**
* Init
*/
initGridInteraction();
/**
* Init grid interaction
*/
function initGridInteraction() {
// Add buttons
addButtons();
// Add button listener
document.querySelector(grid.selectorAdd).addEventListener('click', function() {
addColumn();
}, false);
// Remove button listener
document.querySelector(grid.selectorRemove).addEventListener('click', function() {
removeColumn();
}, false);
}
/**
* Add buttons
*/
function addButtons() {
var buttons = document.createElement('P');
buttons.innerHTML = ''
+ '';
document.querySelector(grid.targetButtons).before(buttons);
}
/**
* Add column
*/
function addColumn() {
if (grid.columnsCurrent < grid.columnsMax) {
grid.columnsCurrent++;
generateGrid(grid.columnsCurrent);
}
}
/**
* Remove column
*/
function removeColumn() {
if (grid.columnsCurrent > grid.columnsMin) {
grid.columnsCurrent--;
generateGrid(grid.columnsCurrent);
}
}
/**
* Generate grid
*
* @param {number} cols
*/
function generateGrid(cols) {
var colsHTML = '';
var colsCode = '';
var colsCodePref = '<div class="grid">\n';
var colsCodeSuff = '</div>';
for (var i=0; i' + (i+1) + '';
colsCode += ' <div>' + (i+1) + '</div>\n';
}
document.querySelector(grid.targetGrid).innerHTML = colsHTML;
document.querySelector(grid.targetCode).innerHTML = colsCodePref+colsCode+colsCodeSuff;
}
})();