0.1.3 • Published 6 years ago

inkr v0.1.3

Weekly downloads
2
License
MIT
Repository
github
Last release
6 years ago

inkr

Inkr is a (yet another) Material Design ink ripples script for HTML.
(This project is essentially a pure-JS port of legitRipple, with some extra stuff added in.)

Browser Support

Inkr is known to support the following browsers:

  • Firefox
  • Chrome/Chromium
  • Safari

These ratings are all based off the bundled version.

If you want to report another browser Inkr works in, feel free to open an issue stating which browser (and version).
Inkr will not support Internet Explorer or any archaically outdated browser. Ever.

Installation

In HTML

<html>
    <head>
        <!-- ... -->

        <!-- This isn't needed if using a bundled version of inkr, as it will auto-inject its CSS.-->
        <style rel="stylesheet" href="inkr.css">
        <!-- ... -->
    </head>
    <body>
        <!-- ... -->
        <script src="inkr.js"></script>
    </body>
</html>

Though NPM

$ npm install inkr
# or
$ yarn add inkr

Usage

If you don't like supidly worded and confusing examples, you can see the pure API docs here.

Basic

The simplest usage of Inkr is done by just passing stuff to inkr().
This can either be a query selector, an element, or a mixed array of query selectors and elements.

Query Selector

inkr('.cool-class');

Element

inkr(document.getElementById('my-very-special-element'));

Mixed List of Both

let arrayOfCoolStuff = ['.cool-class', document.getElementById('very-cool-id'), document.getElementsByClassName('very-cool-elements')];

// Inkr shallow flattens arrays as a result of being able to take in a list of query selectors.
inkr(arrayOfCoolStuff);

You can also pass various options as listed here, to Inkr through the second argument.

inkr('.cool-class', {
    maxDiameter: '250px'
});

Automatic Application

If the script tag importing Inkr does not have the data-no-init attribute, Inkr will automatically find any elements that have the inkr class, and apply itself to them. It will also watch the DOM for future additions of elements with the inkr class.
If you've disabled auto init of Inkr with the attribute, you can use inkr.autoInit to apply Inkr to elements of your choosing (defaulting to any with the inkr class), and then have it watch the DOM and automatically apply Inkr to any dynamically added/edited elements that get the inkr class.

In the future you may be able to specify a selector to pass to inkr.watchDOM however it is currently not implemented. (You can always pull request it of course 😉)

<!--Disables auto application of inkr-->
<script src="inkr.js" data-no-init></script>
<script>
    let el = document.createElement('div');
    el.classList.add('inkr');
    el.classList.add('my-fancy-class');

    inkr.autoInit('.my-elements');
    document.body.appendChild(el);
</script>

You can also make Inkr not automatically watch for DOM updates by adding {watchDOM: false} as the second argument to inkr.autoInit(). Extra options get passed as {options: {...}} in the second argmument.

let el = document.createElement('div');
el.classList.add('inkr');

inkr.autoInit('.my-elements', {watchDOM: false});
document.body.appendChild(el); // Won't get Inkr applied to it.

And if you've already ran Inkr on elements you want, and you wish to watch the DOM, you can call inkr.watchDOM by yourself.

inkr.watchDOM({
    maxDiameter: '250px';
    ...
});

Removing

If you need to remove Inkr from elements, you can call inkr.destroy (aliased to inkr.remove) with a set of elements you wish to remove it from (same style as when applying Inkr). If you don't give it any elements, it'll default to removing it from all elements that have had Inkr applied to it, that is, any elements with the data-isinked attribute, which is automatically applied by Inkr.

inkr.destroy();
// or
inkr.destroy('.my-cool-elements');

Building

Since Inkr uses ES6 syntax and ES6 modules, you'll need to build it in order to use it properly on most browsers. To do this, all you gotta do is:

Install the dependencies: (these are just dev dependencies as the main library doesn't actually need these)

$ npm install
# or
$ yarn

And then run the NPM build script:

$ npm run build
# or
$ yarn build

This will lint, bundle, and minify Inkr, and then output it in dist/.