Skip to content

laphilosophia/utilies

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Utilies

Utilities for every web app needed

Public Methods

    getNode(selector, parent)
    // no need document.querySelector or any similars. 
    // just type selector name. 
    // parent is optional
    autoExpand(field)
    // (getNode('textarea'))
    setAttributes(el, attrs)
    // (getNode('.el'), 'data-role="blah"')
    removeAttributes(els, attrs)
    // similar to setAttributes
    addClass(el, className)
    // (getNode('.el'), 'active')
    removeClass(el, className)
    // (getNode('.el'), 'active')
    toggleClass(el, className)
    // (getNode('.el'), 'active')
    hasClass(elem, className)
    // (getNode('.el'), 'active')
    siblings(el, callback)
    // (getNode(el), self => { ... })
    matches(el, selector)
    // (getNode('.el'), '.className')
    contains(str, el)
    // ('haystack', 'needle')
    prependBefore(el, parent)
    // (getNode('.el'), getNode('.parent'))
    appendChild(el, parent)
    // (getNode('.el'), getNode('.parent'))
    replaceWith(node, target)
    // (HTMLNode, getNode('.target'))
    removeElement(el)
    // (getNode('.el'))
    dynamicListener(parent, event, selector, fn)
    // ('body', 'click', '.el', event => { ... })
    cloneNodeWithEvents(oElm, bDeep, bEvents)
    // (HTMLElement, boolean, boolean)
    // bDeep and bEvents optional
    detectScrollPosition(element, isEndCallback)
    // (getNode('.el'), self => { ... })
    emitEvent(type, elem, detail)
    // ('click', getNode('.el'), event => { ... })
    const obs = observer(element, options, console.log) // Logs all mutations that happen on the page
    obs.disconnect()
    // (getNode('.el'), { attributeFilter: ['data-target'] }, (mutation) => { ... })
    buildQuery(data)
    // ('string or anything')
    getParents(elem, selector)
    // (getNode('.el'), '.active')
    getParentsUntil(elem, parent, filter)
    // (getNode('.el'), '.parent', '.filterClass')
    getOffsetTop(element)
    // (getNode('.el'))
    getOffsetLeft(element)
    // (getNode('.el'))
    childrenMatches(elem, selector)
    // (getNode('.el'), '.active')
    getSiblings(elem)
    // (getNode('.el'))
    getNextSibling(elem, selector)
    // (getNode('.el'), '.active')
    getPreviousSibling(elem, selector)
    // (getNode('.el'), '.active')
    getNextUntil(elem, selector)
    // (getNode('.el'), '.active')
    getPreviousUntil(elem, selector)
    // (getNode('.el'), '.active')
    nextUntil(elem, selector, filter)
    // (getNode('.el'), '.active', '.filterClass')
    getNextSiblings(el, filter)
    // (getNode('.el'), '.filterClass')
    getPreviousSiblings(el, filter)
    // (getNode('.el'), '.filterClass')
    isVisible(el)
    // (getNode('.el'))
    isHidden(el)
    // (getNode('.el'))
    decodeHTML(htmlNode)
    // let data = '<div><p></p></div>'
    // (data)
    sanitizeHTML(htmlNode)
    // let data = '<div><p></p></div>'
    // (data)
    addToObject(obj, key, value, index)
    // (myObj, 'KEY', 'VALUE', 1)
    arrayUnique(arr)
    // (myArray)
    // it's return true or false
    serializeArray(form)
    // (getNode('.formElement'))
    // it's return array
    dedupe(arr)
    // (myArray)
    // it's return true or false
    copy(obj)
    // (myObject)
    // it's return new Object
    shuffle(array)
    // (myArray)
    // be careful! it's mutate given array than return
    deepMerge()
    // (obj1, obj2, obj3, ...)
    // it's return new Object
    // more reading: https://gomakethings.com/merging-objects-with-vanilla-javascript/
    isEqual(value, other)
    // (var1, var2)
    // it's return true or false
    isPlainObject(obj)
    // (object)
    // it's return true or false
    objectFilter(obj, callback)
    // (myObject, () => { ... })
    // it's return new Object
    pick(obj, props)
    // (object, 'key')
    // it's return new Object
    put(obj, path, val)
    // (myObject, 'val.subval', 'lorem ipsum')
    // more reading: https://gomakethings.com/adding-items-to-an-object-at-a-specific-path-with-vanilla-js/
    trueTypeOf(obj)
    // (myObject)
    // it's return more accurately check the type of a object
    debounce(delay, atBegin, callback)
    throttle(delay, noTrailing, callback, debounceMode)
    // thanks for niksy
    // for usage and detailed explanations: https://github.com/niksy/throttle-debounce
    switcher(cases)
    // for usage and detailed explanations: https://github.com/laphilosophia/switch-fn
    resizeListener(eventName)
    // ('optimizedResize')
    // window.on('optimizedResize', event => {
    //     let screen = event.target.screen
    //     let width = event.target.innerWidth
    //
    //     ...
    // }))
    responsiveWatch({sizes, orientations, medias, queries, check}, cb)
    // usage: https://github.com/pauldijou/responsive-watch
    scrollStop(callback)
    // (() => { ... })
    // it's return your callback function
    isInViewport(elem)
    // (getNode('.el'))
    // it's return true or false
    isOutOfViewport(elem)
    // (getNode('.el'))
    // it's return true or false
    placeholders(template, data)
    // usage: https://codepen.io/cferdinandi/pen/ejrEGQ?editors=1010
    autocomplete(input, array)
    // let api = connect('/myApiRoute')
    // api.get('posts').then(res => res.json()).then(res => {
    //    autocomplete(getNode('.searchInput'), res)
    // })
    ready(fn)
    // (event => { ... })
    // similar to window.addEventListener(event => { ... })
    // but shorter version..
    connect (route)
    // let api = connect('/myApiRoute')
    scrollFix(options)
    // ({ element: '', className: '' })
    // when body scrolled, add given class to given element
    simpleTab(element, activeClass)
    // (getNode('#tab'), 'active')
    // 
    // html template 
    // <ul id="tab">
    //     <li class="active"><a href="tab-01"></a></li>
    //     <li><a href="tab-02"></a></li>
    //     <li><a href="tab-03"></a></li>
    // </ul>
    // <div>
    //     <div class="active" id="tab-01"></div>
    //     <div id="tab-02"></div>
    //     <div id="tab-03"></div>
    // </div>
    activeByPage (menu, activeClass)
    // ('#navigation', 'active') ~ that's it
    truncate(elem, limit, after)
    // (getNode('.el'), 30, '...')
    memoize(fn)
    // const myFunc = (p, a) => { ... }
    // let memo = memoize(myFunc)
    // memo('lorem', 'ipsum')
    // memo('lorem', 'ipsum') ~ and voila!
    shank(arr, index, delCount, elements)
    // const names = ['alpha', 'bravo', 'charlie']
    // const namesAndDelta = shank(names, 1, 0, 'delta') // [ 'alpha', 'delta', 'bravo', 'charlie' ]
    // const namesNoBravo = shank(names, 1, 1) // [ 'alpha', 'charlie' ]
    // console.log(names) // ['alpha', 'bravo', 'charlie']
    objectFromPairs(array)
    // ([['a', 1], ['b', 2]]) -> ({ a: 1, b: 2 })

Releases

No releases published

Packages

No packages published