/*! * 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'; colsCode += ' <div>' + (i+1) + '</div>\n'; } document.querySelector(grid.targetGrid).innerHTML = colsHTML; document.querySelector(grid.targetCode).innerHTML = colsCodePref+colsCode+colsCodeSuff; } })();