1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-04-26 20:16:38 +02:00

introduce bound helper function

This commit is contained in:
koalyptus 2018-05-20 21:43:20 +10:00
parent bfa23c3b6e
commit fe51fdecb8
12 changed files with 106 additions and 277 deletions

4
dist/starter.html vendored
View file

@ -1,10 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<title>tablefilter v0.6.37 - Starter</title>
<title>tablefilter v0.6.38 - Starter</title>
</head>
<body>
<h1>tablefilter v0.6.37</h1>
<h1>tablefilter v0.6.38</h1>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

315
package-lock.json generated
View file

@ -1,6 +1,6 @@
{
"name": "tablefilter",
"version": "0.6.34",
"version": "0.6.38",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -152,7 +152,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true,
"requires": {
"ms": "2.0.0"
@ -504,12 +504,6 @@
"integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
"dev": true
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
"dev": true
},
"asn1": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz",
@ -1273,6 +1267,44 @@
"babel-types": "6.26.0"
}
},
"babel-preset-env": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz",
"integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==",
"dev": true,
"requires": {
"babel-plugin-check-es2015-constants": "6.22.0",
"babel-plugin-syntax-trailing-function-commas": "6.22.0",
"babel-plugin-transform-async-to-generator": "6.24.1",
"babel-plugin-transform-es2015-arrow-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoping": "6.26.0",
"babel-plugin-transform-es2015-classes": "6.24.1",
"babel-plugin-transform-es2015-computed-properties": "6.24.1",
"babel-plugin-transform-es2015-destructuring": "6.23.0",
"babel-plugin-transform-es2015-duplicate-keys": "6.24.1",
"babel-plugin-transform-es2015-for-of": "6.23.0",
"babel-plugin-transform-es2015-function-name": "6.24.1",
"babel-plugin-transform-es2015-literals": "6.22.0",
"babel-plugin-transform-es2015-modules-amd": "6.24.1",
"babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
"babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
"babel-plugin-transform-es2015-modules-umd": "6.24.1",
"babel-plugin-transform-es2015-object-super": "6.24.1",
"babel-plugin-transform-es2015-parameters": "6.24.1",
"babel-plugin-transform-es2015-shorthand-properties": "6.24.1",
"babel-plugin-transform-es2015-spread": "6.22.0",
"babel-plugin-transform-es2015-sticky-regex": "6.24.1",
"babel-plugin-transform-es2015-template-literals": "6.22.0",
"babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
"babel-plugin-transform-es2015-unicode-regex": "6.24.1",
"babel-plugin-transform-exponentiation-operator": "6.24.1",
"babel-plugin-transform-regenerator": "6.26.0",
"browserslist": "3.2.7",
"invariant": "2.2.2",
"semver": "5.5.0"
}
},
"babel-preset-es2015": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz",
@ -1725,6 +1757,16 @@
"pako": "1.0.6"
}
},
"browserslist": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.7.tgz",
"integrity": "sha512-oYVLxFVqpX9uMhOIQBLtZL+CX4uY8ZpWcjNTaxyWl5rO8yA9SSNikFnAfvk8J3P/7z3BZwNmEqFKaJoYltj3MQ==",
"dev": true,
"requires": {
"caniuse-lite": "1.0.30000843",
"electron-to-chromium": "1.3.47"
}
},
"buffer": {
"version": "4.9.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz",
@ -1850,6 +1892,12 @@
"map-obj": "1.0.1"
}
},
"caniuse-lite": {
"version": "1.0.30000843",
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000843.tgz",
"integrity": "sha512-1ntiW826MhRBmM0CeI7w1cQr16gxwOoM8doJWh3BFalPZoKWdZXs27Bc04xth/3NR1/wNXn9cpP4F92lVenCvg==",
"dev": true
},
"caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@ -2218,28 +2266,6 @@
"object-visit": "1.0.1"
}
},
"collections": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/collections/-/collections-2.0.3.tgz",
"integrity": "sha1-dlcSXoSkCGotx5f/LWltgZpyD7U=",
"dev": true,
"requires": {
"mini-map": "1.0.0",
"pop-arrayify": "1.0.0",
"pop-clear": "1.0.0",
"pop-clone": "1.0.1",
"pop-compare": "1.0.0",
"pop-equals": "1.0.0",
"pop-has": "1.0.0",
"pop-hash": "1.0.1",
"pop-iterate": "1.0.1",
"pop-observe": "2.0.2",
"pop-swap": "1.0.0",
"pop-zip": "1.0.0",
"regexp-escape": "0.0.1",
"weak-map": "1.0.5"
}
},
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
@ -2925,6 +2951,12 @@
"integrity": "sha1-zIcsFoiArjxxiXYv1f/ACJbJUYo=",
"dev": true
},
"electron-to-chromium": {
"version": "1.3.47",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.47.tgz",
"integrity": "sha1-dk6IfKkQTQGgrI6r7n38DizhQQQ=",
"dev": true
},
"elegant-spinner": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz",
@ -5593,50 +5625,6 @@
}
}
},
"grunt-gh-pages": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/grunt-gh-pages/-/grunt-gh-pages-2.0.0.tgz",
"integrity": "sha1-yC9I17b4SRvkJpT1wsk7Ewj6d3s=",
"dev": true,
"requires": {
"async": "2.0.1",
"fs-extra": "0.30.0",
"graceful-fs": "4.1.5",
"q": "0.9.3",
"q-io": "2.0.2",
"url-safe": "2.0.0"
},
"dependencies": {
"async": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async/-/async-2.0.1.tgz",
"integrity": "sha1-twnMAoCpw28J9FNr6CPIOKkEniU=",
"dev": true,
"requires": {
"lodash": "4.17.4"
}
},
"fs-extra": {
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz",
"integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=",
"dev": true,
"requires": {
"graceful-fs": "4.1.5",
"jsonfile": "2.4.0",
"klaw": "1.3.1",
"path-is-absolute": "1.0.1",
"rimraf": "2.6.2"
}
},
"graceful-fs": {
"version": "4.1.5",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.5.tgz",
"integrity": "sha1-9HRejK7V4N0u8hu14tIpoy6Ak8A=",
"dev": true
}
}
},
"grunt-known-options": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-1.1.0.tgz",
@ -7989,12 +7977,6 @@
"mime-db": "1.30.0"
}
},
"mimeparse": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/mimeparse/-/mimeparse-0.1.4.tgz",
"integrity": "sha1-2vsCdSNw/SJgk64xUsJxrwGsJUo=",
"dev": true
},
"mimic-fn": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
@ -8016,12 +7998,6 @@
"dom-walk": "0.1.1"
}
},
"mini-map": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/mini-map/-/mini-map-1.0.0.tgz",
"integrity": "sha1-lkHgEV2Zs9wTcRz4z9pMgZmJP04=",
"dev": true
},
"minimalistic-assert": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.0.tgz",
@ -9016,90 +8992,6 @@
"integrity": "sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==",
"dev": true
},
"pop-arrayify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-arrayify/-/pop-arrayify-1.0.0.tgz",
"integrity": "sha1-ZVIrP+OuIb5PjosrnkRjTBWmxIE=",
"dev": true
},
"pop-clear": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-clear/-/pop-clear-1.0.0.tgz",
"integrity": "sha1-/IFk/IX4nyiPI7k2toAeqCKuRYY=",
"dev": true
},
"pop-clone": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pop-clone/-/pop-clone-1.0.1.tgz",
"integrity": "sha1-YY1GJJfpbQb5zaMVsyXMo6JjYDg=",
"dev": true,
"requires": {
"mini-map": "1.0.0",
"pop-equals": "1.0.0"
}
},
"pop-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-compare/-/pop-compare-1.0.0.tgz",
"integrity": "sha1-xzLiLCfwz6uAohfUXncitc4VGCA=",
"dev": true
},
"pop-equals": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-equals/-/pop-equals-1.0.0.tgz",
"integrity": "sha1-kEFPj9pxo3+IHR5eOi4C7ww7fgs=",
"dev": true,
"requires": {
"mini-map": "1.0.0"
}
},
"pop-has": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-has/-/pop-has-1.0.0.tgz",
"integrity": "sha1-myJrWblgq2XqsLQS3VVw3OkOZRw=",
"dev": true,
"requires": {
"pop-equals": "1.0.0"
}
},
"pop-hash": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pop-hash/-/pop-hash-1.0.1.tgz",
"integrity": "sha1-vNaUVL0vmd7SC1/Iork9a1+rRMw=",
"dev": true,
"requires": {
"weak-map": "1.0.5"
}
},
"pop-iterate": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pop-iterate/-/pop-iterate-1.0.1.tgz",
"integrity": "sha1-zqz9q0q/NT16DyqqLB/Hs/lBO6M=",
"dev": true
},
"pop-observe": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/pop-observe/-/pop-observe-2.0.2.tgz",
"integrity": "sha1-WstaxvJMfG/6ssMhUbCtt0Du82M=",
"dev": true,
"requires": {
"pop-equals": "1.0.0",
"pop-has": "1.0.0",
"pop-swap": "1.0.0"
}
},
"pop-swap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-swap/-/pop-swap-1.0.0.tgz",
"integrity": "sha1-iLRAVT4IXQF50yJVsJ+TqrmJDGY=",
"dev": true
},
"pop-zip": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pop-zip/-/pop-zip-1.0.0.tgz",
"integrity": "sha1-PcEUAHss7OdP87jOpz6xIMcNsFY=",
"dev": true
},
"portfinder": {
"version": "1.0.13",
"resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.13.tgz",
@ -9248,45 +9140,6 @@
"integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
"dev": true
},
"q": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/q/-/q-0.9.3.tgz",
"integrity": "sha1-QE6rutDQMe01/LU/fFvAYoO050w=",
"dev": true
},
"q-io": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/q-io/-/q-io-2.0.2.tgz",
"integrity": "sha1-GTNM5KlL2r/42dMBXz07csm+O/U=",
"dev": true,
"requires": {
"collections": "2.0.3",
"mime": "1.4.1",
"mimeparse": "0.1.4",
"q": "2.0.3",
"qs": "0.6.6",
"url2": "1.0.4"
},
"dependencies": {
"q": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/q/-/q-2.0.3.tgz",
"integrity": "sha1-dbjbAlWhpa+C9Yw/Oqoe/sfQ0TQ=",
"dev": true,
"requires": {
"asap": "2.0.6",
"pop-iterate": "1.0.1",
"weak-map": "1.0.5"
}
},
"qs": {
"version": "0.6.6",
"resolved": "https://registry.npmjs.org/qs/-/qs-0.6.6.tgz",
"integrity": "sha1-bgFQmP9RlouKPIGQAdXyyJvEsQc=",
"dev": true
}
}
},
"qs": {
"version": "6.4.0",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
@ -9571,12 +9424,6 @@
"safe-regex": "1.1.0"
}
},
"regexp-escape": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/regexp-escape/-/regexp-escape-0.0.1.tgz",
"integrity": "sha1-PzJqBi2PdZaykUkpVQqsd+r43nU=",
"dev": true
},
"regexpp": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-1.1.0.tgz",
@ -11338,23 +11185,6 @@
"integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
"dev": true
},
"url": {
"version": "0.10.2",
"resolved": "https://registry.npmjs.org/url/-/url-0.10.2.tgz",
"integrity": "sha1-aGIdaSnqHK00Tr8TXYL89+sadGk=",
"dev": true,
"requires": {
"punycode": "1.3.2"
},
"dependencies": {
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
"integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
"dev": true
}
}
},
"url-join": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz",
@ -11388,27 +11218,12 @@
"prepend-http": "2.0.0"
}
},
"url-safe": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/url-safe/-/url-safe-2.0.0.tgz",
"integrity": "sha1-3NRt5GZqdUbuQ+qQasF12qYm3p4=",
"dev": true
},
"url-to-options": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz",
"integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=",
"dev": true
},
"url2": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/url2/-/url2-1.0.4.tgz",
"integrity": "sha1-3yKErhXHSbqAl1FRDl4l2p67gNg=",
"dev": true,
"requires": {
"url": "0.10.2"
}
},
"urlgrey": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/urlgrey/-/urlgrey-0.4.4.tgz",
@ -11652,12 +11467,6 @@
"minimalistic-assert": "1.0.0"
}
},
"weak-map": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.5.tgz",
"integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes=",
"dev": true
},
"webidl-conversions": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-2.0.1.tgz",

View file

@ -1,6 +1,6 @@
{
"name": "tablefilter",
"version": "0.6.37",
"version": "0.6.38",
"description": "A Javascript library making HTML tables filterable and a bit more",
"license": "MIT",
"author": {
@ -43,8 +43,7 @@
"babel-core": "^6.24.1",
"babel-eslint": "8.2.3",
"babel-loader": "^7.0.0",
"babel-plugin-transform-es2015-classes": "^6.24.1",
"babel-preset-es2015": "^6.24.1",
"babel-preset-env": "1.7.0",
"clean-webpack-plugin": "^0.1.16",
"codecov": "3.0.1",
"diacritics": "1.3.0",

View file

@ -109,3 +109,16 @@ export const keyCode = (evt) => {
export const isKeyPressed = (evt, keyCodes = []) => {
return keyCodes.indexOf(keyCode(evt)) !== -1;
};
/**
* Bind passed function to passed scope
* @param {Function} fn function
* @param {Object} scope object instance
*/
export function bound(fn, scope) {
let boundFnName = `${fn.name}_bound`;
if (!scope[boundFnName]) {
scope[boundFnName] = fn.bind(scope);
}
return scope[boundFnName];
}

View file

@ -5,6 +5,7 @@ import {numSortAsc} from '../../sort';
import {FORMATTED_NUMBER} from '../../const';
import formatNumber from 'format-number';
import {defaultsFn, defaultsArr} from '../../settings';
import {bound} from '../../event';
const EVENTS = [
'after-filtering',
@ -115,7 +116,7 @@ export default class ColOps extends Feature {
return;
}
// subscribe to events
this.emitter.on(EVENTS, () => this.calcAll());
this.emitter.on(EVENTS, bound(this.calcAll, this));
this.calcAll();
@ -471,7 +472,7 @@ export default class ColOps extends Feature {
return;
}
// unsubscribe to events
this.emitter.off(EVENTS, () => this.calcAll());
this.emitter.off(EVENTS, bound(this.calcAll, this));
this.initialized = false;
}

View file

@ -1,7 +1,7 @@
import {Feature} from '../feature';
import {createElm, createOpt, createText, elm, removeElm} from '../dom';
import {isArray, isNull, EMPTY_FN} from '../types';
import {addEvt, removeEvt, isKeyPressed} from '../event';
import {addEvt, removeEvt, isKeyPressed, bound} from '../event';
import {INPUT, SELECT, NONE, ENTER_KEY} from '../const';
import {
defaultsStr, defaultsNb, defaultsBool, defaultsArr, defaultsFn
@ -483,11 +483,10 @@ export class Paging extends Feature {
this.setPagingInfo(tf.validRowsIndex);
}
this.emitter.on(['after-filtering'], () => this.resetPagingInfo());
this.emitter.on(['change-page'],
(tf, pageNumber) => this.setPage(pageNumber));
this.emitter.on(['after-filtering'], bound(this.resetPagingInfo, this));
this.emitter.on(['change-page'], bound(this.changePageHandler, this));
this.emitter.on(['change-page-results'],
(tf, pageLength) => this.changeResultsPerPage(pageLength));
bound(this.changePageResultsHandler, this));
/** @inherited */
this.initialized = true;
@ -830,6 +829,16 @@ export class Paging extends Feature {
this.emitter.emit('after-reset-page-length', tf, pglenIndex);
}
/** @private */
changePageHandler(tf, pageNumber) {
this.setPage(pageNumber);
}
/** @private */
changePageResultsHandler(tf, pageLength) {
this.changeResultsPerPage(pageLength);
}
/**
* Remove paging feature
*/
@ -893,11 +902,11 @@ export class Paging extends Feature {
this.removeResultsPerPage();
}
this.emitter.off(['after-filtering'], () => this.resetPagingInfo());
this.emitter.off(['change-page'],
(tf, pageNumber) => this.setPage(pageNumber));
this.emitter.off(['after-filtering'],
bound(this.resetPagingInfo, this));
this.emitter.off(['change-page'], bound(this.changePageHandler, this));
this.emitter.off(['change-page-results'],
(tf, pageLength) => this.changeResultsPerPage(pageLength));
bound(this.changePageResultsHandler, this));
this.pageSlc = null;
this.nbPages = 0;

View file

@ -30,9 +30,7 @@ module.exports = {
exclude: /tablefilter\/node_modules/,
options: {
compact: false,
presets: ['es2015'],
// plugins: [['transform-es2015-classes', {loose: true}]]
plugins: 'transform-es2015-classes'
presets: ['env']
},
loader: 'babel-loader'
}, {