From 90bdbc168d4f7b264aa05f7224b5ffa2c2977492 Mon Sep 17 00:00:00 2001 From: HarshilPatel007 Date: Sat, 1 Mar 2025 16:54:02 +0530 Subject: [PATCH 1/9] docs: Add vue grouping example --- examples/vue/grouping/.gitignore | 24 ++ examples/vue/grouping/README.md | 6 + examples/vue/grouping/env.d.ts | 1 + examples/vue/grouping/index.html | 14 + examples/vue/grouping/package.json | 22 ++ examples/vue/grouping/public/favicon.ico | Bin 0 -> 4286 bytes examples/vue/grouping/src/App.vue | 353 +++++++++++++++++++++++ examples/vue/grouping/src/env.d.ts | 8 + examples/vue/grouping/src/index.css | 50 ++++ examples/vue/grouping/src/main.ts | 4 + examples/vue/grouping/tsconfig.json | 24 ++ examples/vue/grouping/vite.config.ts | 7 + 12 files changed, 513 insertions(+) create mode 100644 examples/vue/grouping/.gitignore create mode 100644 examples/vue/grouping/README.md create mode 100644 examples/vue/grouping/env.d.ts create mode 100644 examples/vue/grouping/index.html create mode 100644 examples/vue/grouping/package.json create mode 100644 examples/vue/grouping/public/favicon.ico create mode 100644 examples/vue/grouping/src/App.vue create mode 100644 examples/vue/grouping/src/env.d.ts create mode 100644 examples/vue/grouping/src/index.css create mode 100644 examples/vue/grouping/src/main.ts create mode 100644 examples/vue/grouping/tsconfig.json create mode 100644 examples/vue/grouping/vite.config.ts diff --git a/examples/vue/grouping/.gitignore b/examples/vue/grouping/.gitignore new file mode 100644 index 0000000000..a547bf36d8 --- /dev/null +++ b/examples/vue/grouping/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/examples/vue/grouping/README.md b/examples/vue/grouping/README.md new file mode 100644 index 0000000000..3ac3f1a9b4 --- /dev/null +++ b/examples/vue/grouping/README.md @@ -0,0 +1,6 @@ +# Example + +To run this example: + +- `npm install` or `yarn` +- `npm run dev` or `yarn dev` diff --git a/examples/vue/grouping/env.d.ts b/examples/vue/grouping/env.d.ts new file mode 100644 index 0000000000..11f02fe2a0 --- /dev/null +++ b/examples/vue/grouping/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/vue/grouping/index.html b/examples/vue/grouping/index.html new file mode 100644 index 0000000000..e160e46247 --- /dev/null +++ b/examples/vue/grouping/index.html @@ -0,0 +1,14 @@ + + + + + + + Vite App + + + +
+ + + diff --git a/examples/vue/grouping/package.json b/examples/vue/grouping/package.json new file mode 100644 index 0000000000..87070de512 --- /dev/null +++ b/examples/vue/grouping/package.json @@ -0,0 +1,22 @@ +{ + "name": "tanstack-table-example-vue-grouping-rows", + "private": true, + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "test:types": "vue-tsc" + }, + "dependencies": { + "@tanstack/vue-table": "^8.21.2", + "vue": "^3.4.31" + }, + "devDependencies": { + "@types/node": "^20.14.9", + "@vitejs/plugin-vue": "^5.0.5", + "typescript": "5.4.5", + "vite": "^5.3.2", + "vue-tsc": "^2.0.22" + } +} diff --git a/examples/vue/grouping/public/favicon.ico b/examples/vue/grouping/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/examples/vue/grouping/src/App.vue b/examples/vue/grouping/src/App.vue new file mode 100644 index 0000000000..b4a9a96d40 --- /dev/null +++ b/examples/vue/grouping/src/App.vue @@ -0,0 +1,353 @@ + + + + + diff --git a/examples/vue/grouping/src/env.d.ts b/examples/vue/grouping/src/env.d.ts new file mode 100644 index 0000000000..aafef9509d --- /dev/null +++ b/examples/vue/grouping/src/env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module '*.vue' { + import type { DefineComponent } from 'vue' + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any> + export default component +} diff --git a/examples/vue/grouping/src/index.css b/examples/vue/grouping/src/index.css new file mode 100644 index 0000000000..f243855583 --- /dev/null +++ b/examples/vue/grouping/src/index.css @@ -0,0 +1,50 @@ +html { + font-family: sans-serif; + font-size: 14px; +} + +table { + border-collapse: collapse; + border-spacing: 0; + font-family: arial, sans-serif; + table-layout: fixed; +} + +thead { + background: lightgray; +} + +tr { + border-bottom: 1px solid lightgray; +} + +th { + border-bottom: 1px solid lightgray; + border-right: 1px solid lightgray; + padding: 2px 4px; + text-align: left; +} + +td { + padding: 6px; +} + +.container { + border: 1px solid lightgray; + margin: 1rem auto; +} + +.cursor-pointer { + cursor: pointer; +} + +.select-none { + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.text-left { + text-align: left; +} diff --git a/examples/vue/grouping/src/main.ts b/examples/vue/grouping/src/main.ts new file mode 100644 index 0000000000..01433bca2a --- /dev/null +++ b/examples/vue/grouping/src/main.ts @@ -0,0 +1,4 @@ +import { createApp } from 'vue' +import App from './App.vue' + +createApp(App).mount('#app') diff --git a/examples/vue/grouping/tsconfig.json b/examples/vue/grouping/tsconfig.json new file mode 100644 index 0000000000..0b8e08b465 --- /dev/null +++ b/examples/vue/grouping/tsconfig.json @@ -0,0 +1,24 @@ +{ + "compilerOptions": { + "target": "ES2020", + "useDefineForClassFields": true, + "module": "ESNext", + "lib": ["ES2020", "DOM", "DOM.Iterable"], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "preserve", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] +} diff --git a/examples/vue/grouping/vite.config.ts b/examples/vue/grouping/vite.config.ts new file mode 100644 index 0000000000..05c17402a4 --- /dev/null +++ b/examples/vue/grouping/vite.config.ts @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import vue from '@vitejs/plugin-vue' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], +}) From bbe693e25f9d1ae639f68469ad2f8fd6066ff5ec Mon Sep 17 00:00:00 2001 From: HarshilPatel007 Date: Sat, 1 Mar 2025 16:56:53 +0530 Subject: [PATCH 2/9] docs: add link to navigate grouping example --- docs/config.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/config.json b/docs/config.json index 80dba7960b..19d268775f 100644 --- a/docs/config.json +++ b/docs/config.json @@ -760,6 +760,10 @@ { "to": "framework/vue/examples/virtualized-rows", "label": "Virtualized Rows" + }, + { + "to": "framework/vue/examples/grouping", + "label": "Grouping" } ] }, From 3a8fcafdc7916bfbe92d6cdc1eca2201271a5377 Mon Sep 17 00:00:00 2001 From: HarshilPatel007 Date: Sun, 2 Mar 2025 13:02:49 +0530 Subject: [PATCH 3/9] chore: update pnpm-lock.json --- pnpm-lock.yaml | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 87e5485e45..dcf84370cc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3228,6 +3228,31 @@ importers: specifier: ^2.0.22 version: 2.0.29(typescript@5.4.5) + examples/vue/grouping: + dependencies: + '@tanstack/vue-table': + specifier: ^8.21.2 + version: link:../../../packages/vue-table + vue: + specifier: ^3.4.31 + version: 3.5.13(typescript@5.4.5) + devDependencies: + '@types/node': + specifier: ^20.14.9 + version: 20.14.9 + '@vitejs/plugin-vue': + specifier: ^5.0.5 + version: 5.2.1(vite@5.4.11(@types/node@20.14.9)(less@4.2.0)(sass@1.77.6)(terser@5.31.1))(vue@3.5.13(typescript@5.4.5)) + typescript: + specifier: 5.4.5 + version: 5.4.5 + vite: + specifier: ^5.3.2 + version: 5.4.11(@types/node@20.14.9)(less@4.2.0)(sass@1.77.6)(terser@5.31.1) + vue-tsc: + specifier: ^2.0.22 + version: 2.2.0(typescript@5.4.5) + examples/vue/pagination: dependencies: '@faker-js/faker': @@ -3413,10 +3438,10 @@ importers: devDependencies: '@analogjs/vite-plugin-angular': specifier: ^1.11.0 - version: 1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/node@20.14.9)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)) + version: 1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)) '@analogjs/vitest-angular': specifier: ^1.11.0 - version: 1.11.0(@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/node@20.14.9)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)))(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(less@4.2.0)(sass@1.77.6)(terser@5.31.1)) + version: 1.11.0(@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)))(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(less@4.2.0)(sass@1.77.6)(terser@5.31.1)) '@angular/core': specifier: ^17.3.9 version: 17.3.11(rxjs@7.8.1)(zone.js@0.14.7) @@ -10871,16 +10896,16 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - '@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/node@20.14.9)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5))': + '@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5))': dependencies: ts-morph: 21.0.1 vfile: 6.0.3 optionalDependencies: '@angular-devkit/build-angular': 17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5) - '@analogjs/vitest-angular@1.11.0(@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/node@20.14.9)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)))(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(less@4.2.0)(sass@1.77.6)(terser@5.31.1))': + '@analogjs/vitest-angular@1.11.0(@analogjs/vite-plugin-angular@1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)))(vitest@1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(less@4.2.0)(sass@1.77.6)(terser@5.31.1))': dependencies: - '@analogjs/vite-plugin-angular': 1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/node@20.14.9)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)) + '@analogjs/vite-plugin-angular': 1.11.0(@angular-devkit/build-angular@17.3.8(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(@types/express@4.17.21)(@types/node@20.14.9)(chokidar@3.6.0)(karma@6.4.3)(ng-packagr@17.3.0(@angular/compiler-cli@17.3.11(@angular/compiler@17.3.11(@angular/core@17.3.11(rxjs@7.8.1)(zone.js@0.14.7)))(typescript@5.4.5))(tslib@2.6.3)(typescript@5.4.5))(typescript@5.4.5)) vitest: 1.6.0(@types/node@20.14.9)(jsdom@24.1.0)(less@4.2.0)(sass@1.77.6)(terser@5.31.1) '@angular-devkit/architect@0.1703.8(chokidar@3.6.0)': From af1ab77e801abe3db0b013f9b9fd444f4d421677 Mon Sep 17 00:00:00 2001 From: HarshilPatel007 Date: Sun, 2 Mar 2025 13:03:37 +0530 Subject: [PATCH 4/9] chore: remove unused CSS file --- examples/vue/grouping/src/index.css | 50 ----------------------------- 1 file changed, 50 deletions(-) delete mode 100644 examples/vue/grouping/src/index.css diff --git a/examples/vue/grouping/src/index.css b/examples/vue/grouping/src/index.css deleted file mode 100644 index f243855583..0000000000 --- a/examples/vue/grouping/src/index.css +++ /dev/null @@ -1,50 +0,0 @@ -html { - font-family: sans-serif; - font-size: 14px; -} - -table { - border-collapse: collapse; - border-spacing: 0; - font-family: arial, sans-serif; - table-layout: fixed; -} - -thead { - background: lightgray; -} - -tr { - border-bottom: 1px solid lightgray; -} - -th { - border-bottom: 1px solid lightgray; - border-right: 1px solid lightgray; - padding: 2px 4px; - text-align: left; -} - -td { - padding: 6px; -} - -.container { - border: 1px solid lightgray; - margin: 1rem auto; -} - -.cursor-pointer { - cursor: pointer; -} - -.select-none { - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.text-left { - text-align: left; -} From f386291cb00fa3719f61dfb0dca51bc46619f730 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 07:41:58 +0000 Subject: [PATCH 5/9] ci: apply automated fixes --- examples/vue/grouping/src/App.vue | 60 ++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/examples/vue/grouping/src/App.vue b/examples/vue/grouping/src/App.vue index b4a9a96d40..fda70c590f 100644 --- a/examples/vue/grouping/src/App.vue +++ b/examples/vue/grouping/src/App.vue @@ -1,14 +1,13 @@
diff --git a/examples/vue/grouping/src/App.vue b/examples/vue/grouping/src/App.vue index ce24dfd8a6..cec2b82770 100644 --- a/examples/vue/grouping/src/App.vue +++ b/examples/vue/grouping/src/App.vue @@ -131,15 +131,6 @@ const table = useVueTable({ }, }) -// Toggle row expanded state -const toggleRowExpanded = (id: string): void => { - const currentExpanded = expanded.value as Record - expanded.value = { - ...currentExpanded, - [id]: !currentExpanded[id], - } -} - // Group by status const groupByStatus = (): void => { grouping.value = ['status'] @@ -211,7 +202,7 @@ const clearGrouping = (): void => {