Odd Camp's JavaScript utilities
A library of ES6 utilities.
Usage
-
Install with $ yarn add @oddcamp/js-utils
.
-
Import utils you need to your project, e.g.:
import { addEventListener } from "js-utils/src/event";
-
Browse Documentation
In order to gain a wider browser support, install and import these polyfills in your project:
Development
- Install dependencies with
$ yarn
- Run
$ yarn dev
when developing. This will:
- Run the linter for your own good
- Start server for demos
- Edit contents of
src
and make sure the corresponding examples on demo
are updated/added
Documentation
onCssAnimationEnd(elements, callback [, options = { continuous = false, oncePerElems = true, oncePerAnims = true }])
Fires a callback function when CSS animation ends.
Examples:
onCssAnimationEnd(btn, callbackFunction)
onCssAnimationEnd(btns, callbackFunction, {oncePerAnims = false})
onCssAnimationEnd('.btn', callbackFunction)
onCssTransitionEnd(elements, callback [, options = { continuous = false, oncePerElems = true, oncePerAnims = true }])
Fires a callback function when CSS transition ends
Examples:
onCssTransitionEnd(btn, callbackFunction)
onCssTransitionEnd(btns, callbackFunction, {oncePerElems = false})
onCssTransitionEnd('.btn', callbackFunction)
clearCssAnimationEnd(elements)
Cleans all CSS animation end event listeners
clearCssTransitionEnd(elements)
Cleans all CSS transition end event listeners
addClass(elements, classnames)
An extended implementation of Element.classList.add(): adds classname(s) to
single or multiple elements
Examples:
addClass(btn, "btn--green");
addClass(".btn", "btn--disabled btn--grey");
removeClass(elements, classnames)
An extended implementation of Element.classList.remove(): removes classname(s)
from single or multiple elements
Examples:
removeClass(btn, "btn--green");
removeClass(".btn", "btn--disabled btn--grey");
toggleClass(elements, classnames [, force = undefined])
An extended implementation of Element.classList.remove(): toggles classname(s)
from single or multiple elements
Examples:
toggleClass(btn, "btn--green", true);
toggleClass(".btn", "btn--disabled btn--grey");
containsAnyClass(element, classnames)
Check if an element contains at least one classname
Examples:
containsAnyClass(btn, "btn--green btn--disabled btn--grey");
containsAnyClass(".btn", "btn--green btn--disabled btn--grey");
containsAllClasses(element, classnames)
Check if an element contains all classnames
Examples:
containsAllClasses(btn, "btn--green btn--disabled btn--grey");
containsAllClasses(".btn", "btn--green btn--disabled btn--grey");
getCookieValue(name)
Finds cookie by name and returns its value.
Examples:
getCookieValue("_ga");
addEventListener(elements, eventNames, callback [, options/useCapture = false])
Attaches the event handler. More about options/useCapture.
Examples:
addEventListener(btns, "click", doIt);
addEventListener([btn1, btn2], "click", doIt);
addEventListener(".btn", "click", doIt);
addEventListener(btn, "click focus", doIt);
addEventListener(btn, "click", doIt, { passive: true });
delegateEventListener(selector, eventNames, callback)
Delegates the event handler (an equivalent to jQuery's .live()
).
Examples:
delegateEventListener(".btn", "click", doIt);
delegateEventListener(".btn", "click focus", doIt);
In order to remove event handler, use document
as a target element, e.g.:
delegateEventListener(".btn", "click", doIt);
removeEventListener(document, "click", doIt);
delegateEventListener(".btn", "click.btnDelegate", doIt);
removeEventListener(document, "click.btnDelegate");
removeEventListener(elements [, eventName = false, callback = false, options/useCapture = false])
Removes the event handler. More about options/useCapture.
Examples:
removeEventListener(btn);
removeEventListener(btn, "click");
removeEventListener(".btn", "click");
removeEventListener(btn, "click.thisIsNamespace");
removeEventListener(btn, false, doIt);
removeEventListener(btn, "click", doIt);
removeEventListener(btn, false, false, { passive: false });
triggerEvent(elements, eventNames [, data = null])
Triggers the event(s). data
— data to pass to the event handler ((e) => {e.detail}
). Data passing doesn't yet work with click|focus|blur
events.
Examples:
triggerEvent(btn, "click");
triggerEvent(btn, "click.thisIsNamespace");
triggerEvent(btn, ".thisIsNamespace");
triggerEvent(btn, "customEvent");
triggerEvent(btn, "customEvent anotherCustomEvent");
triggerEvent(btn, "customEvent", "someData");
triggerEvent(btn, "customEvent", { some: "data" });
debounce(delay, fn)
Debounces execution of a function.
Example:
window.addEventListener(
"resize",
debounce(500, () => {
})
);
throttle(delay, fn)
Throttles execution of a function.
Example:
window.addEventListener(
"scroll",
throttle(500, () => {
})
);
loadScript(src, cache = true)
Loads script file.
Returns: Promise.
Example:
loadScript("jquery.min.js", false)
.then(() => {
alert(typeof $);
})
.catch((error) => {
alert(`Error: ${error}. Try again.`);
});
getOffset(elements)
Returns top/left offsets of an element
Returns: Object.
Example:
getOffset(container);
getOffset(".container");
serialPromises(...fns)
Resolves promises sequentially.
Example:
serialPromises(
() => loadScript("jquery.min.js"),
() => loadScript("jquery-ui.min.js")
)
.then(() => {
$("ul").sortable();
})
.catch((error) => {
});
getElements(elements [, source = document])
Accepts String, Element, NodeList, Array and returns Array of elements.
hasClosest(element, matches)
Based on how Element.closest() works. Returns true if element
has the
closest ancestor (or itself) that matches the matches
(element|selector).
getParents(element [, selector = '', until = null])
Returns an Array of parents of element
that matches the given selector
up until the until
matching element|selector.
Smart Outline hides the outline when interacting with a mouse and brings it back when interacting with a keyboard.
initSmartOutline([selectors])
Inits Smart Outline. selectors
is an array of CSS selectors whose elements to affect. Default value:
```js
[
'input:focus',
'button:focus',
'textarea:focus',
'select:focus',
]
```
showSmartOutline()
Temporarily reveals outline.
haltSmartOutline()
Halts Smart Outline.
Other resources
For more functionality, consider using these vanilla JavaScript libraries:
Utilities
Accessibility
Performance
DOM manipulation
Modals
Tooltips
Validation
Forms and inputs
Gesture
Calendar
Scroll
Charts
Browsing experience
CSS
Video
Polyfils