domtastic
Version:
Small, fast, and modular DOM and event library for modern browsers.
48 lines (43 loc) • 1.23 kB
JavaScript
/**
* @module BaseClass
*/
import { $ as selector, DOMtastic } from './selector/index';
import { extend } from './util';
export default function(api) {
/**
* Provide subclass for classes or components to extend from.
* The opposite and successor of plugins (no need to extend `$.fn` anymore, complete control).
*
* @return {Class} The class to extend from, including all `$.fn` methods.
* @example
* import { BaseClass } from 'domtastic';
*
* class MyComponent extends BaseClass {
* doSomething() {
* return this.addClass('.foo');
* }
* }
*
* let component = new MyComponent('body');
* component.doSomething();
*
* @example
* import $ from 'domtastic';
*
* class MyComponent extends $.BaseClass {
* progress(value) {
* return this.attr('data-progress', value);
* }
* }
*
* let component = new MyComponent(document.body);
* component.progress('ive').append('<p>enhancement</p>');
*/
class BaseClass {
constructor() {
DOMtastic.call(this, selector(...arguments));
}
}
extend(BaseClass.prototype, api);
return BaseClass;
}