UNPKG

@processor/vue

Version:
3 lines (2 loc) 3.35 kB
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],n):n((e||self).ProcessorVue={},e.vue)}(this,function(e,n){function t(e){return e instanceof Array?e:[e]}e.useProcessor=function(e){if(!n.isReactive(e))throw new Error("config must be a reactive object");var r=function(e){var n={filter:{cache:[],handler:function(e){return e},update:function(){n.filter.cache=n.filter.handler(r)}},search:{cache:[],handler:function(e){return e},update:function(){n.search.cache=n.search.handler(n.filter.cache)}},sort:{cache:[],handler:function(e){return e},update:function(){n.sort.cache=n.sort.handler(n.search.cache)}},page:{cache:{current:[],page:1,pageCount:1,total:0},handler:function(e){return{current:e,page:1,pageCount:1,total:e.length}},update:function(){n.page.cache=n.page.handler(n.sort.cache)}}},r=[],o=null;function c(e){e.forEach(function(e){n[e].update()}),o&&o(n.page.cache)}var u={load:function(e){return r=e.concat(),c(["filter","search","sort","page"]),u},filter:function(e){return n.filter.handler=function(n){return n.filter(function(n){return Object.keys(e).every(function(r){var o=n[r];return t(e[r]).some(function(e){return!function(e){return void 0!==e}(e)||function(e,n){return"function"==typeof n?n(e):n===e}(o,e)})})})},c(["filter","search","sort","page"]),u},search:function(e,t){return n.search.handler=function(n){return e?"function"==typeof e?e(n.concat()):n.filter(function(n){var r=t||Object.keys(n),o=new RegExp(e,"i");return r.some(function(e){return function(e){return e.toString?e.toString():""}(n[e]).search(o)>-1})}):n.concat()},c(["search","sort","page"]),u},sort:function(e,r){return n.sort.handler=function(n){if(n=n.concat(),"function"==typeof e)return n.sort(e);var o=t(e),c=t(r);return n.sort(function(e,n){return o.map(function(t,r){var o=["acs","ascing",void 0].includes(c[r])?1:-1;return e[t]>n[t]?o:e[t]<n[t]?-o:0}).reduce(function(e,n){return e||n},0)}),n},c(["sort","page"]),u},page:function(e,t){return void 0===t&&(t=1),n.page.handler=function(n){var r=n.length;if(!e||e<=0)return{current:n.concat(),page:1,pageCount:1,total:r};t<1&&(t=1);var o=Math.ceil(r/e);return t=Math.min(t,o),{current:n.slice((t-1)*e,t*e),page:t,total:r,pageCount:o}},c(["page"]),u},onUpdate:function(e){return o=e,u},exec:function(){return c(["filter","search","sort","page"]),n.page.cache}};return u}(),o=n.ref(null),c=n.ref(0),u=n.ref(0),a=n.ref(0),i=n.ref(0);function f(){e.source?r.load(e.source):(o.value=null,c.value=0,u.value=0,a.value=0)}function s(){void 0!==e.searchOption&&r.search(e.searchOption,e.searchFields)}function l(){e.filterOption&&r.filter(e.filterOption)}function p(){e.sortOption&&r.sort(e.sortOption,e.sortOrder)}function h(){r.page(e.pageSize,u.value)}function d(e){o.value=e.current,c.value=e.total,u.value=e.page,i.value=e.pageCount}return n.watch(function(){return e.source},f,{deep:!0}),n.watch([function(){return e.searchOption},e.searchFields],s,{deep:!0}),n.watch(function(){return e.filterOption},l,{deep:!0}),n.watch([function(){return e.sortOption},function(){return e.sortOrder}],p,{deep:!0}),n.watch([function(){return e.pageSize},u],h),r.onUpdate(d),n.onBeforeMount(function(){f(),s(),l(),p(),h(),d(r.exec())}),{data:o,total:c,currentPage:u,pageCount:i}}}); //# sourceMappingURL=index.umd.js.map