{"_id":"@einhasad-vue/datatable-vue","_rev":"7-dff6eb30b38f5ce9d41ed5b664d16321","name":"@einhasad-vue/datatable-vue","dist-tags":{"latest":"0.4.4"},"versions":{"0.2.0":{"name":"@einhasad-vue/datatable-vue","version":"0.2.0","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.2.0","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"e99608641535f023aa1e57b4b45cc0c13b41fb1f","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.2.0.tgz","fileCount":73,"integrity":"sha512-wkJbvmE6oqPPdpJ8LdqdgNfxZG0q1reolCuRxBq4GXN7HZ04d7jD90v11hIfgmsFJDBe9n8rQd9m0MATtjkzXg==","signatures":[{"sig":"MEYCIQDQfFHBI002wdLyqZfCYQJ/dLAlh4j/F3bgCZ7tJuGHuQIhAKg30zGGt6/Vhi9vpIQsoRntCgQBIGAlZHVS4puy/zFr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":397785},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"d3f4c7b39755e7d9282e6083c55d00b3110332de","scripts":{"dev":"vite","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.2.0_1776847080225_0.8633554664133158","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@einhasad-vue/datatable-vue","version":"0.3.0","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.3.0","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"aabfb7fa5e7c4c202cfcea25baaff666f8520993","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.3.0.tgz","fileCount":74,"integrity":"sha512-F4G4sA2FGK+fxVOqmzhfsnyaU6sB5mD82jIle/K8WD6pksm7arIlwUsaVI0j9SovN6qRhpJpS4TxEanpu3qgGA==","signatures":[{"sig":"MEYCIQDZpcICwwRocIgFCyFSbLUZhwXXOYp5Hnd3ebjjgDuZqgIhAJ3K68MxvUbtdNHlqpwqYl9po6yZlxK8LleKafD6gbXR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":393074},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"a9094433ad919216e2d67a8b1e4044715a92ecbb","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","demo:build":"vite build --config demo/vite.config.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","shiki":"^4.0.2","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.3.0_1777207217858_0.8180995920084937","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@einhasad-vue/datatable-vue","version":"0.4.0","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.4.0","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"aa04cfd5b071f06c2c22c37adc553ed6c0b006e7","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.4.0.tgz","fileCount":84,"integrity":"sha512-Qv2kdzZ0ILUB85BI3oJRCg3FpXuTPo1n7dW6rtAlxl+dMUCIII1xIosKmFeq9IueCIOq89qVHBeISePsC1sv4A==","signatures":[{"sig":"MEUCIGjCLPfxpgNYz3X1UiRsKgzLn8bA+GCBrFpd9DkN3qHEAiEA/KO2QI9MI/7y/o2vpQKQI0hYgSJnhBcLSK0iwN8EFq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":464375},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"fd1fae8631a8e35ef09a7b2b07214dbdf850c818","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","demo:build":"vite build --config demo/vite.config.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","shiki":"^4.0.2","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.4.0_1777231082119_0.9893195232323477","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@einhasad-vue/datatable-vue","version":"0.4.1","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.4.1","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"7584255b9b5bd8bbda29ff9f5c598814088c152f","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.4.1.tgz","fileCount":73,"integrity":"sha512-QVH4u7uzKKEVGREbrmNcNsZ4RLBhab3rDQC8Mu6ke7Y7lmEH8ORzdTBdvOmdauvIJyn5jyKupSqk0Pk8e7Fp3g==","signatures":[{"sig":"MEUCIE1kPKfrk3KUKXBG64MmID9bCw2W8PFF1Zp2JA6721iTAiEAqddO9CRmqJI7WqQXYoPHS1sWr7YQq9edHyanGlC9oaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451341},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"cc6cf106dc8406faae17ce8498d326c0e0f979aa","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts dist/mocks dist/mockServiceWorker.js","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","demo:build":"vite build --config demo/vite.config.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","shiki":"^4.0.2","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.4.1_1777234178965_0.21521328865779243","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@einhasad-vue/datatable-vue","version":"0.4.2","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.4.2","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"f7c2f7ff727fea028dfb943601c4b85b9961f7b1","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.4.2.tgz","fileCount":73,"integrity":"sha512-1DY8DFMOhjDow8BNMlrvwpS1P0TjQELBTmT2hYjTLG7W5vPKyu3k5j2gENWoTLLhznDsp2nkLAenmizM84t2pw==","signatures":[{"sig":"MEUCIEED3FOI2PyIdzgat63fe8eRC4sHnNp6Zc4HOQbrz28oAiEApVyAFtRwHCjeiifusYruMWfOEH8cHbccMDLeej8Ze7o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":454423},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"bcf8737b948c28236d247dd2576ed3da72df21dd","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts dist/mocks dist/mockServiceWorker.js","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","demo:build":"vite build --config demo/vite.config.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","shiki":"^4.0.2","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.4.2_1777275301887_0.505606075643223","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@einhasad-vue/datatable-vue","version":"0.4.3","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"author":{"name":"Dima Popov"},"license":"MIT","_id":"@einhasad-vue/datatable-vue@0.4.3","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"homepage":"https://github.com/einhasad/vue-datatable#readme","bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"dist":{"shasum":"46816e79bc1632341e7500b4f19f51bd7ff27047","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.4.3.tgz","fileCount":73,"integrity":"sha512-2ruigQmYqSvctzQ5OoErVw4gLhhIzLFUS2DUgs06G4/5f+XV0Gps9kgNNgATZ1urUVyhdr0HxchgGSDVGSEkJQ==","signatures":[{"sig":"MEUCIG5m9JGTX8eTrxBCCYg82DiL9lYgLhTPsZIPJ9cheAZ1AiEA4QWQJU7bLqSUGpQTqGEvGmavkfLR1OVok2fzGtcoHwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":454217},"main":"./dist/grid.umd.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/grid.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/grid.js","require":"./dist/grid.umd.cjs"},"./themes":{"types":"./dist/index.d.ts","import":"./dist/grid.js"},"./style.css":"./dist/style.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./grid-default-styles.css":"./dist/grid-default-styles.css"},"gitHead":"6c409ef237eb6193e2c31250d1593bcf33296466","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","knip":"knip","lint":"eslint . --ext .vue,.ts,.tsx","test":"vitest","build":"vite build && npm run postbuild","prepare":"npm run build","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts dist/mocks dist/mockServiceWorker.js","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","demo:build":"vite build --config demo/vite.config.ts","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"repository":{"url":"git+https://github.com/einhasad/vue-datatable.git","type":"git"},"_npmVersion":"10.9.7","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"msw":"^2.12.14","vue":"^3.4.0","knip":"^6.3.1","vite":"^5.0.0","jsdom":"^27.2.0","shiki":"^4.0.2","eslint":"^9.39.1","vitest":"^3.2.4","vue-tsc":"^2.0.0","happy-dom":"^18.0.1","@vitest/ui":"^3.2.4","fast-check":"^4.6.0","typescript":"^5.3.0","vue-router":"^4.2.0","@types/node":"^20.11.0","@vue/test-utils":"^2.4.6","vite-plugin-dts":"^3.7.0","eslint-plugin-vue":"^10.5.1","typescript-eslint":"^8.46.4","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/datatable-vue_0.4.3_1778853111661_0.8725666263891056","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@einhasad-vue/datatable-vue","version":"0.4.4","description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","author":{"name":"Dima Popov"},"license":"MIT","type":"module","main":"./dist/grid.umd.cjs","module":"./dist/grid.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/grid.js","require":"./dist/grid.umd.cjs","types":"./dist/index.d.ts"},"./style.css":"./dist/style.css","./grid-default-styles.css":"./dist/grid-default-styles.css","./themes/classic.css":"./dist/themes/classic.css","./themes/material.css":"./dist/themes/material.css","./themes":{"import":"./dist/grid.js","types":"./dist/index.d.ts"}},"keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"repository":{"type":"git","url":"git+https://github.com/einhasad/vue-datatable.git"},"bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"homepage":"https://github.com/einhasad/vue-datatable#readme","scripts":{"dev":"vite","demo":"vite --config demo/vite.config.ts","demo:build":"vite build --config demo/vite.config.ts","build":"vite build && npm run postbuild","postbuild":"rm -rf dist/node_modules dist/vite.config.d.ts dist/vite.config.d.ts.map dist/__VLS_types.d.ts dist/mocks dist/mockServiceWorker.js","prepare":"npm run build","test":"vitest","test:coverage":"vitest run --coverage","test:unit":"vitest run","typecheck":"vue-tsc --noEmit","lint":"eslint . --ext .vue,.ts,.tsx","lint:fix":"eslint . --ext .vue,.ts,.tsx --fix","knip":"knip"},"publishConfig":{"access":"public"},"peerDependencies":{"vue":"^3.3.0"},"peerDependenciesMeta":{"vue-router":{"optional":true}},"devDependencies":{"@types/node":"^20.11.0","@vitejs/plugin-vue":"^5.0.0","@vitest/coverage-v8":"^3.2.4","@vitest/ui":"^3.2.4","@vue/eslint-config-typescript":"^14.6.0","@vue/test-utils":"^2.4.6","eslint":"^9.39.1","eslint-plugin-vue":"^10.5.1","fast-check":"^4.6.0","happy-dom":"^18.0.1","jsdom":"^27.2.0","knip":"^6.3.1","msw":"^2.12.14","shiki":"^4.0.2","typescript":"^5.3.0","typescript-eslint":"^8.46.4","vite":"^5.0.0","vite-plugin-dts":"^3.7.0","vitest":"^3.2.4","vue":"^3.4.0","vue-router":"^4.2.0","vue-tsc":"^2.0.0"},"engines":{"node":">=18.0.0"},"_id":"@einhasad-vue/datatable-vue@0.4.4","gitHead":"6603057d8161b7cbbaaa9120b6f2663a13e760d5","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-I9AUfyGvZ1CIhIpvO3xH569FRnwhUQlLWd7Gu0EZjP6DtTQPRhbuwgJR1A4DKAjMEp1d1RvJ2WSibvrhCCECIA==","shasum":"e6b321463b474d4a3c8654ef047b3a01e0d740e1","tarball":"https://registry.npmjs.org/@einhasad-vue/datatable-vue/-/datatable-vue-0.4.4.tgz","fileCount":73,"unpackedSize":456558,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBFzd0+bDUVZP2CXEE/ouvoPlhBwPrtBRsWR1kpy6ijRAiAb/VBBto5hZ8SGwzaweEh+OmwXRFua12tOD3rj3uEhkw=="}]},"_npmUser":{"name":"do-popov","email":"loss.of.loss@gmail.com"},"directories":{},"maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/datatable-vue_0.4.4_1779368880940_0.7087185780199081"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-22T08:38:00.151Z","modified":"2026-05-21T13:08:01.690Z","0.2.0":"2026-04-22T08:38:00.398Z","0.3.0":"2026-04-26T12:40:18.022Z","0.4.0":"2026-04-26T19:18:02.258Z","0.4.1":"2026-04-26T20:09:39.115Z","0.4.2":"2026-04-27T07:35:02.051Z","0.4.3":"2026-05-15T13:51:51.820Z","0.4.4":"2026-05-21T13:08:01.278Z"},"bugs":{"url":"https://github.com/einhasad/vue-datatable/issues"},"author":{"name":"Dima Popov"},"license":"MIT","homepage":"https://github.com/einhasad/vue-datatable#readme","keywords":["vue","vue3","datatable","grid","table","pagination","data-provider","typescript","cursor-pagination","page-pagination"],"repository":{"type":"git","url":"git+https://github.com/einhasad/vue-datatable.git"},"description":"A flexible, configurable grid component library for Vue 3 applications with support for both cursor and page-based pagination, custom data providers, and extensive customization options.","maintainers":[{"name":"do-popov","email":"loss.of.loss@gmail.com"}],"readme":"# @einhasad-vue/datatable-vue\n\n[![npm version](https://img.shields.io/npm/v/@einhasad-vue/datatable-vue.svg?style=flat-square)](https://www.npmjs.com/package/@einhasad-vue/datatable-vue)\n[![CI](https://img.shields.io/github/actions/workflow/status/einhasad/vue-datatable/ci.yml?branch=main&style=flat-square&label=CI)](https://github.com/einhasad/vue-datatable/actions/workflows/ci.yml)\n[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square)](LICENSE)\n[![Vue 3](https://img.shields.io/badge/vue-3.3+-42b883.svg?style=flat-square)](https://vuejs.org/)\n[![TypeScript](https://img.shields.io/badge/typescript-strict-3178c6.svg?style=flat-square)](https://www.typescriptlang.org/)\n\nA flexible, framework-agnostic data table for Vue 3. Pluggable **data providers** (Array, callback / HTTP, Elasticsearch, custom), pluggable **state persistence** (URL, localStorage, hash, in-memory), **dual pagination** modes (cursor / load-more or numbered pages), and a **slot-driven** rendering layer you can replace piece by piece.\n\n📚 **[Documentation & live demos →](https://einhasad.github.io/vue-datatable/)**\n\n**Size:** ~10 KB gzipped (ESM runtime + default styles). Zero transitive dependencies on top of Vue 3.\n\n```bash\nnpm install @einhasad-vue/datatable-vue\n```\n\n```ts\n// main.ts\nimport '@einhasad-vue/datatable-vue/grid-default-styles.css'\n```\n\n---\n\n## Why this lib\n\nA grid is three orthogonal concerns: **how data is fetched**, **how state is persisted**, and **how rows are rendered**. This library lets you compose those independently:\n\n- **DataProvider** — Array, Callback (any HTTP client), Elasticsearch, or your own class. The grid never sees fetch logic.\n- **StateProvider** — InMemory, QueryParams (URL), LocalStorage, or Hash. The grid never sees storage.\n- **Slots & components** — Replace `#row`, `#empty`, `#loader`, `#pagination`, `#searchRow`, or `#table` entirely. The grid is a default renderer, not the only one.\n\nIf the defaults work for you, you ship in 10 lines. If you need Ant Design tables or Elastic queries with custom UI, the same primitives compose into [real-world wrappers](https://einhasad.github.io/vue-datatable/#customizing).\n\n## Quick start\n\nThe smallest working example: an in-memory array and a column definition.\n\n```vue\n<template>\n  <Grid :data-provider=\"provider\" :columns=\"columns\" />\n</template>\n\n<script setup lang=\"ts\">\nimport { Grid, ArrayDataProvider, type Column } from '@einhasad-vue/datatable-vue'\n\nconst provider = new ArrayDataProvider({\n  items: [\n    { id: 1, name: 'Alice', email: 'alice@example.com' },\n    { id: 2, name: 'Bob',   email: 'bob@example.com' }\n  ]\n})\n\nconst columns: Column[] = [\n  { key: 'id',    label: 'ID',    sort: 'id' },\n  { key: 'name',  label: 'Name',  sort: 'name' },\n  { key: 'email', label: 'Email', filter: { name: 'email', type: 'text' } }\n]\n</script>\n```\n\nAdd page-numbered pagination by passing `<PagePagination>` into the `#pagination` slot:\n\n```vue\n<template>\n  <Grid :data-provider=\"provider\" :columns=\"columns\">\n    <template #pagination=\"{ pagination, setPage }\">\n      <PagePagination\n        :current-page=\"pagination.currentPage\"\n        :total-pages=\"pagination.totalPages\"\n        :total-items=\"pagination.totalItems\"\n        :items-per-page=\"pagination.pageSize\"\n        :show-summary=\"true\"\n        @page-change=\"setPage\"\n      />\n    </template>\n  </Grid>\n</template>\n\n<script setup lang=\"ts\">\nimport { Grid, ArrayDataProvider, PagePagination } from '@einhasad-vue/datatable-vue'\n\nconst provider = new ArrayDataProvider({ items: bigList })\nprovider.setOffsetPagination({ page: 1, pageSize: 20 })\n</script>\n```\n\n## Data providers\n\n| Provider | Use when |\n|----------|----------|\n| `ArrayDataProvider` | You have the data already (in-memory array). Handles sort, filter, paginate client-side. |\n| `CallbackDataProvider` | You fetch from an HTTP API. Pass any `fetch`/`axios` callback — the grid stays HTTP-client agnostic. |\n| `ElasticSearchDataProvider` | You query Elasticsearch directly. Includes a default response adapter. |\n| Custom | Implement the `DataProvider<T>` interface. ~8 methods. |\n\n```ts\n// Custom HTTP via CallbackDataProvider\nconst provider = new CallbackDataProvider({\n  load: async ({ searchParams, sortField, sortOrder }) => {\n    const url = new URL('/api/users', location.origin)\n    Object.entries(searchParams ?? {}).forEach(([k, v]) => url.searchParams.set(k, v))\n    if (sortField) url.searchParams.set('sort', `${sortOrder === 'desc' ? '-' : ''}${sortField}`)\n    const res = await fetch(url)\n    const json = await res.json()\n    return { items: json.data, pagination: { totalItems: json.total } }\n  }\n})\n```\n\n## State providers\n\nState (filters, sort, page) is owned by a `StateProvider`, **separate** from the data layer.\n\n| Provider | Persistence |\n|----------|-------------|\n| `InMemoryStateProvider` *(default)* | RAM — lost on refresh. |\n| `QueryParamsStateProvider` | URL query string. Shareable, SEO-friendly, browser back/forward works. |\n| `LocalStorageStateProvider` | `localStorage`. Survives sessions. Not visible in URL. |\n| `HashStateProvider` | URL hash (`#…`). Doesn't conflict with query params. |\n\n```ts\nimport { ArrayDataProvider, QueryParamsStateProvider } from '@einhasad-vue/datatable-vue'\nimport { useRouter } from 'vue-router'\n\nconst provider = new ArrayDataProvider({\n  items: users,\n  stateProvider: new QueryParamsStateProvider({ router: useRouter(), prefix: 'users' })\n})\n// URL becomes ?users-name=John&users-sort=email\n```\n\nRefreshing data is always `await provider.refresh()` — that's the single source of truth. The grid does **not** expose a `refresh()` method on the component instance (since 0.3).\n\n## Customization\n\nAll UI pieces are slots. Replace any of them:\n\n| Slot | Scope | What it does |\n|------|-------|--------------|\n| `#search` | `{ provider, loading }` | Top toolbar / global search |\n| `#table` | `{ items, columns, sortState, onSort, … }` | Replace the entire table renderer |\n| `#searchRow` | `{ columns, stateProvider }` | Per-column filter row |\n| `#row` | `{ items }` | Replace the row-rendering loop |\n| `#expandedRow` | `{ item, depth, rowKey, toggle }` | Custom panel rendered below an expanded row |\n| `#empty` | — | Empty-state UI |\n| `#loader` | — | Loading-state UI |\n| `#pagination` | `{ pagination, setPage }` | Pagination renderer |\n\nWrappers in production (Ant Design, custom Elasticsearch UI) are built on these slots without forking. See the [Customizing example](https://einhasad.github.io/vue-datatable/#customizing).\n\n## Columns\n\n```ts\ninterface Column<T = unknown> {\n  key?: string\n  label?: string | ((items: T[]) => string)\n  sort?: string                                            // sort field key (omit = not sortable)\n  filter?: { name: string, type: 'text' | 'select' | 'number' | 'date', options?: ... }\n  value?: (model: T, index: number) => string              // cell text\n  component?: (model: T, index: number) => ComponentOptions // dynamic cell component\n  show?: (model: T) => boolean                             // per-cell visibility\n  showColumn?: boolean | (() => boolean)                   // column visibility\n  options?: (model: T) => RowOptions                       // cell attrs (class/style/data-*)\n  footer?: (models: T[]) => string                         // footer aggregation\n  action?: (model: T) => void                              // cell click handler\n}\n```\n\nCells can render **dynamic Vue components** via `component`:\n\n```ts\n{\n  key: 'status',\n  component: (row) => ({\n    is: 'span',\n    props: { class: row.active ? 'badge-ok' : 'badge-off' },\n    content: row.active ? 'Active' : 'Inactive'\n  })\n}\n```\n\n…or pass an event handler that fires when the inner element emits:\n\n```ts\n{\n  key: 'edit',\n  component: (row) => ({\n    is: 'button',\n    content: 'Edit',\n    events: { click: () => editUser(row.id) }\n  })\n}\n```\n\n## Expandable rows\n\nTwo complementary modes:\n\n**Homogeneous tree** — children share the parent's schema. Mark a column with `expandToggle: true` to render a chevron + indent. The grid emits `@expand` with the clicked item; the consumer fetches children and reattaches them via `provider.setRows()` (or by mutating the source ref). Expansion state lives in an `InMemoryRowStateProvider` keyed by `:row-key`, so it persists across pagination and filters.\n\n```vue\n<Grid\n  :data-provider=\"provider\"\n  :columns=\"columns\"\n  :row-key=\"(item) => item.id\"\n  children-field=\"children\"\n  @expand=\"handleExpand\"\n/>\n```\n\n**Custom expanded content (`#expandedRow` slot)** — when the expanded panel doesn't share the parent's schema (e.g. an order expanding into a line-items table), render arbitrary content instead. The slot receives `{ item, depth, rowKey, toggle }`.\n\n```vue\n<Grid\n  :data-provider=\"provider\"\n  :columns=\"columns\"\n  :row-key=\"(item) => item.id\"\n  @expand=\"handleExpand\"\n>\n  <template #expandedRow=\"{ item, toggle }\">\n    <OrderLines :order-id=\"item.id\" />\n    <button @click=\"toggle\">Close</button>\n  </template>\n</Grid>\n```\n\nThe two modes are independent and can be combined. Use the homogeneous tree when child rows look like parent rows; use the slot when they don't.\n\n## Theming\n\nOverride CSS custom properties:\n\n```css\n:root {\n  --grid-border-color: #e0e0e0;\n  --grid-header-bg: #f8f9fa;\n  --grid-row-hover-bg: #f5f5f5;\n}\n```\n\nOr write your own classes — the default styles are a thin starting point, not a hard requirement.\n\n## TypeScript\n\nEverything is typed. The `Grid<T>` component takes a generic for your row type, and `Column<T>`, `DataProvider<T>`, etc. flow through:\n\n```ts\nimport type { Column, DataProvider } from '@einhasad-vue/datatable-vue'\n\ninterface User { id: number; name: string; email: string }\n\nconst provider: DataProvider<User> = new ArrayDataProvider<User>({ items: users })\nconst columns: Column<User>[] = [\n  { key: 'id', sort: 'id', value: (u) => String(u.id) }\n]\n```\n\n## Browser support\n\nModern evergreen browsers (Chrome, Firefox, Safari, Edge). Vue 3.3+. ES2020+.\n\n## Contributing\n\nIssues and PRs welcome. The CI workflow runs `typecheck` + `lint` + `test:unit` + `build` on every PR — keep them green.\n\n```bash\nnpm install\nnpm run dev          # lib dev\nnpm run demo         # docs site dev (port 3001)\nnpm test             # unit tests (watch)\nnpm run test:unit    # one-shot\nnpm run lint         # ESLint\nnpm run typecheck    # vue-tsc --noEmit\nnpm run build        # build the lib\nnpm run demo:build   # build the docs site\n```\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}