@phucbm/os-util

0.0.5 • Public • Published

OS Util

https://www.npmjs.com/package/@phucbm/os-util

Install

# Install
npm i @phucbm/os-util

Features

Get options from attribute

import {getOptionsFromAttribute} from "@phucbm/os-util";

1. Test cases for boolean and numeric values

<section data-json='{"testNum":"480", "testFalse":"false", "testTrue":"true"}'>
</section>
const options = getOptionsFromAttribute({
    target: document.querySelector('section'), // required, DOM element that holds the attribute
    attributeName: 'data-json', // required, attribute name that holds the value
    numericValues: ['testNum'], // optional, the props will be converted into numeric values
    defaultOptions: {}, // optional, options from attribute will override these default options, 
    // or return defaultOptions if options are not found
});
console.log(options); // => {"testNum": 480, "testFalse": false, "testTrue": true};

2. Empty value

<section data-json></section>
const options = getOptionsFromAttribute({
    target: document.querySelector('section'),
    attributeName: 'data-json',
});
console.log(options); // => {}

3. Value is just a string

<section data-json="hello-world"></section>
const options = getOptionsFromAttribute({
    target: document.querySelector('section'),
    attributeName: 'data-json',
    onIsString: value => {
        console.log(value); // => "hello-world"
    }
});
console.log(options); // => {}

Events Manager

import {EventsManager} from "@phucbm/os-util";

In your plugin constructor

// init events manager
this.events = new EventsManager(this, {
    names: ['onInit'] // register event names
});

// fire an event
this.events.fire('onInit', {source}); // the 2nd param is an object that will be passed to the callback

Create a method to assign late-events

/**
 * Assign late-events
 */
function on(eventName, callback){
    this.events.add(eventName, callback);
}

Usage

// add event from init
const instance = Plugin.init({
    onInit: data => {
        console.log('init', data)
    }
});

// add via method after init
instance.on('onInit', data => {
    console.log('init', data)
});

// with or without keyword on before the event name are all acceptable
instance.on('init', data => {
    console.log('init', data)
});

Deployment

# Publish package
# 1. Export the new function in index.js
# 2. Update version in package.json
# 3. Run publish
npm publish

# Dev
npm run dev

Package Sidebar

Install

npm i @phucbm/os-util

Weekly Downloads

16

Version

0.0.5

License

MIT

Unpacked Size

10.4 kB

Total Files

7

Last publish

Collaborators

  • phucbui96