diff --git a/README.md b/README.md index a30d271..fb31911 100644 --- a/README.md +++ b/README.md @@ -40,27 +40,6 @@ Añade a tu `` la siguiente etiqueta. ```html ``` -#### Scroll - -##### Añadir la clase `down` al `nav` cuando el usuario haga scroll hacia abajo. - -```html - -``` - -##### Quitar la clase `down` al `nav` cuando el usuario haga scroll hacia arriba. - -```html - -``` - -#### Hover - -##### Añadir la clase `tadam` al selector `#menu` cuando el usuario haga `hover` sobre el botón. - -```html - -``` #### Clases sin eventos diff --git a/dist/ffnm.min.js b/dist/ffnm.min.js index 868a7df..c8193e5 100644 --- a/dist/ffnm.min.js +++ b/dist/ffnm.min.js @@ -1,2 +1,2 @@ -document.addEventListener("DOMContentLoaded",()=>{const e={class:["add","remove","toggle"]};let t=[];t=[],["i-click","i-view","i-scroll-up","i-scroll-down","i-hover"].map(o=>[...document.querySelectorAll(`[${o}]`)].map(r=>{let l=Object.keys(e).map(t=>e[t].map(e=>RegExp(`^${t}:${e}\\('\\w+', *'[#,.,a-zA-Z]\\w*'\\)$`).test(r.getAttribute(o))).some(e=>e)).every(e=>e);return l?t.push(r):(console.error("FFNM: Bad syntax"),console.error(r)),l}).every(e=>e)).every(e=>e)}); +document.addEventListener("DOMContentLoaded",()=>{const e={class:["add","remove","toggle"]};let t=[];t=[],["i-click","i-view","i-scroll-up","i-scroll-down","i-hover"].map(c=>[...document.querySelectorAll(`[${c}]`)].map(s=>{let o=Object.keys(e).map(t=>e[t].map(e=>RegExp(`^${t}:${e}\\('\\w+', *'[#,.,a-zA-Z]\\w*'\\)$`).test(s.getAttribute(c))).some(e=>e)).every(e=>e);return o?t.push(s):(console.error("FFNM: Bad syntax"),console.error(s)),o}).every(e=>e)).every(e=>e),[...document.querySelectorAll("[i-click]")].forEach(t=>{Object.keys(e).map(c=>e[c].map(e=>{switch(c){case"class":switch(e){case"add":t.classList.add("key")}}}))})}); //# sourceMappingURL=ffnm.min.js.map diff --git a/src/core.js b/src/core.js index dd914c9..e405b39 100644 --- a/src/core.js +++ b/src/core.js @@ -48,6 +48,35 @@ document.addEventListener('DOMContentLoaded', () => { * return void */ function addEventClick() { + let eventClick = 'i-click'; + return [...document.querySelectorAll(`[${eventClick}]`)].forEach((element) => { + let params = splitParams(element, eventClick); + switch(params.functionParent) { + case 'class': + switch(params.functionChild) { + case 'add': + [...document.querySelectorAll(params.target)].forEach((item) => item.classList.add(params.value)); + break; + case 'remove': + [...document.querySelectorAll(params.target)].forEach((item) => item.classList.remove(params.value)); + break; + case 'toggle': + [...document.querySelectorAll(params.target)].forEach((item) => item.classList.toggle(params.value)); + break; + } + break; + } + }; + } + + /** + * Method return params + * return JSON - {'functionParent': '', 'functionChild': '', 'value': '', 'target': ''} + * example - i-click="class:add('show', '#menu')" + * return {'functionParent': 'class', 'functionChild': 'add', 'value': 'show', 'target': '#menu'} + */ + function splitParams(element, attribute) { + return {'functionParent': '', 'functionChild': '', 'value': '', 'target': ''}; } @@ -55,6 +84,5 @@ document.addEventListener('DOMContentLoaded', () => { // INIT //=== validateSyntax(); - - + addEventClick(); });