From 5ba8114ccc92a1f47e651419f90d264dfec07431 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 10:00:33 +1100 Subject: [PATCH 01/12] feat: add Gitea Actions workflow for publishing to npm from main and dev branches --- .../{workflows.publishToNpm.yaml => workflows/publishToNpm.yaml} | 1 + 1 file changed, 1 insertion(+) rename .gitea/{workflows.publishToNpm.yaml => workflows/publishToNpm.yaml} (99%) diff --git a/.gitea/workflows.publishToNpm.yaml b/.gitea/workflows/publishToNpm.yaml similarity index 99% rename from .gitea/workflows.publishToNpm.yaml rename to .gitea/workflows/publishToNpm.yaml index 61c704f..08c381e 100644 --- a/.gitea/workflows.publishToNpm.yaml +++ b/.gitea/workflows/publishToNpm.yaml @@ -3,6 +3,7 @@ name: Publish to npm on: push: branches: + - main - dev jobs: -- 2.45.1 From 3a02ecf744686ff29fa2e969b9c94ec02f73f156 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 10:02:08 +1100 Subject: [PATCH 02/12] feat: update package name in Gitea Actions workflow and package.json --- .gitea/workflows/publishToNpm.yaml | 2 +- package.json | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitea/workflows/publishToNpm.yaml b/.gitea/workflows/publishToNpm.yaml index 08c381e..650d390 100644 --- a/.gitea/workflows/publishToNpm.yaml +++ b/.gitea/workflows/publishToNpm.yaml @@ -27,7 +27,7 @@ jobs: id: package_name run: | if [ "${{ gitea.ref }}" == "refs/heads/main" ]; then - echo "PACKAGE_NAME=datenel-react" >> $GITEA_ENV + echo "PACKAGE_NAME=datenel-vue3" >> $GITEA_ENV echo "ACCESS_LEVEL=public" >> $GITEA_ENV elif [ "${{ gitea.ref }}" == "refs/heads/dev" ]; then echo "PACKAGE_NAME=@astrian/datenel-vue3-dev" >> $GITEA_ENV diff --git a/package.json b/package.json index ed2a41e..9e90f39 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,5 @@ { "name": "datenel-vue3", - "private": true, "version": "0.0.0", "type": "module", "scripts": { -- 2.45.1 From 7e25bcf826dabffba03da0166f6c720a6ce3e9c6 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 10:03:20 +1100 Subject: [PATCH 03/12] feat: update package.json to use peerDependencies for Vue and add exports field --- package.json | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 9e90f39..2b54cda 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "build": "vue-tsc -b && vite build", "preview": "vite preview" }, - "dependencies": { - "vue": "^3.5.13" + "peerDependencies": { + "vue": ">=3.5.13" }, "devDependencies": { "@types/node": "^22.13.5", @@ -19,5 +19,14 @@ "typescript": "~5.7.2", "vite": "^6.1.0", "vue-tsc": "^2.2.0" - } + }, + "exports": { + "types": "./dist/src/index.d.ts", + "import": "./dist/index.es.js", + "require": "./dist/index.umd.js", + "default": "./dist/index.es.js" + }, + "main": "dist/index.umd.js", + "module": "dist/index.es.js", + "types": "dist/index.d.ts", } -- 2.45.1 From dc62c0e13a84f5158024a9f48c14fe1cb9a50917 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 10:13:21 +1100 Subject: [PATCH 04/12] feat: update package.json to include peerDependencies for Vue and adjust exports paths --- .gitignore | 3 +++ package-lock.json | 14 ++++++++++---- package.json | 19 ++++++++++++------- 3 files changed, 25 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index a547bf3..17aba3b 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ dist-ssr *.njsproj *.sln *.sw? + +dist +dist_types diff --git a/package-lock.json b/package-lock.json index 3dfc3d6..921ce6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,9 +7,6 @@ "": { "name": "datenel-vue3", "version": "0.0.0", - "dependencies": { - "vue": "^3.5.13" - }, "devDependencies": { "@types/node": "^22.13.5", "@vitejs/plugin-vue": "^5.2.1", @@ -19,6 +16,9 @@ "typescript": "~5.7.2", "vite": "^6.1.0", "vue-tsc": "^2.2.0" + }, + "peerDependencies": { + "vue": ">=3.5.13" } }, "node_modules/@babel/helper-string-parser": { @@ -922,6 +922,7 @@ "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", "license": "MIT", + "peer": true, "dependencies": { "@vue/shared": "3.5.13" } @@ -931,6 +932,7 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.13", "@vue/shared": "3.5.13" @@ -941,6 +943,7 @@ "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", "license": "MIT", + "peer": true, "dependencies": { "@vue/reactivity": "3.5.13", "@vue/runtime-core": "3.5.13", @@ -953,6 +956,7 @@ "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-ssr": "3.5.13", "@vue/shared": "3.5.13" @@ -1028,7 +1032,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/de-indent": { "version": "1.0.2", @@ -1830,6 +1835,7 @@ "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", "license": "MIT", + "peer": true, "dependencies": { "@vue/compiler-dom": "3.5.13", "@vue/compiler-sfc": "3.5.13", diff --git a/package.json b/package.json index 2b54cda..7b5046a 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "scripts": { "dev": "vite", "build": "vue-tsc -b && vite build", + "prepare": "npm run build", "preview": "vite preview" }, "peerDependencies": { @@ -21,12 +22,16 @@ "vue-tsc": "^2.2.0" }, "exports": { - "types": "./dist/src/index.d.ts", - "import": "./dist/index.es.js", - "require": "./dist/index.umd.js", - "default": "./dist/index.es.js" + "types": "./dist_types/src/index.js", + "import": "./dist/datenel-vue3.js", + "require": "./dist/datenel-vue3.umd.cjs", + "default": "./dist/datenel-vue3.umd.cjs" }, - "main": "dist/index.umd.js", - "module": "dist/index.es.js", - "types": "dist/index.d.ts", + "main": "dist/datenel-vue3.umd.cjs", + "module": "dist/datenel-vue3.js", + "types": "dist_types/src/index.js", + "files": [ + "dist", + "dist_types" + ] } -- 2.45.1 From 593ef1b2e825993955dc089c3cf7a734ecbcef56 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 10:18:57 +1100 Subject: [PATCH 05/12] feat: update package.json and tsconfig.app.json to correct type definitions and enable declaration file generation --- package.json | 4 ++-- tsconfig.app.json | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 7b5046a..1ecb6b9 100644 --- a/package.json +++ b/package.json @@ -22,14 +22,14 @@ "vue-tsc": "^2.2.0" }, "exports": { - "types": "./dist_types/src/index.js", + "types": "./dist_types/src/index.d.ts", "import": "./dist/datenel-vue3.js", "require": "./dist/datenel-vue3.umd.cjs", "default": "./dist/datenel-vue3.umd.cjs" }, "main": "dist/datenel-vue3.umd.cjs", "module": "dist/datenel-vue3.js", - "types": "dist_types/src/index.js", + "types": "dist_types/src/index.d.ts", "files": [ "dist", "dist_types" diff --git a/tsconfig.app.json b/tsconfig.app.json index df2685c..d27b36e 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -13,7 +13,9 @@ "resolveJsonModule": true, "esModuleInterop": true, "lib": ["esnext", "DOM", "dom.iterable", "scripthost"], - "skipLibCheck": true + "skipLibCheck": true, + "declaration": true, + "emitDeclarationOnly": true, }, "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "playground/**/*.ts", "playground/**/*.d.ts", "playground/**/*.tsx", "playground/**/*.vue"] } \ No newline at end of file -- 2.45.1 From 8232a1af3f628073d6708e6e1c509375ae828da8 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 13:05:39 +1100 Subject: [PATCH 06/12] feat: add vite-plugin-libcss to package.json and update configuration --- package-lock.json | 14 ++++++++++++++ package.json | 1 + vite.config.ts | 3 ++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index 921ce6e..aef5dd3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "sass-embedded": "^1.85.0", "typescript": "~5.7.2", "vite": "^6.1.0", + "vite-plugin-libcss": "^1.1.1", "vue-tsc": "^2.2.0" }, "peerDependencies": { @@ -1823,6 +1824,19 @@ } } }, + "node_modules/vite-plugin-libcss": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/vite-plugin-libcss/-/vite-plugin-libcss-1.1.1.tgz", + "integrity": "sha512-WAk6U9iYWMbcu7cdw4wACpVebZiLHMyyE9KTcBzzkTt1cnXj3a7loIoIGNblx+xMb9quPpO3iRbNTOnIFDzgmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^9.0.1" + }, + "peerDependencies": { + "vite": "*" + } + }, "node_modules/vscode-uri": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", diff --git a/package.json b/package.json index 1ecb6b9..50e179a 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "sass-embedded": "^1.85.0", "typescript": "~5.7.2", "vite": "^6.1.0", + "vite-plugin-libcss": "^1.1.1", "vue-tsc": "^2.2.0" }, "exports": { diff --git a/vite.config.ts b/vite.config.ts index 2f72f1e..810a715 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,10 +1,11 @@ import { defineConfig } from 'vite' import { fileURLToPath, URL } from 'node:url' import vue from '@vitejs/plugin-vue' +import libCss from 'vite-plugin-libcss' // https://vite.dev/config/ export default defineConfig(({ mode }) => ({ - plugins: [vue()], + plugins: [vue(), libCss()], build: { lib: { entry: fileURLToPath(new URL('src/index.ts', import.meta.url)), -- 2.45.1 From d94d3a76f1c4634af1403150cc5dd0810aed9ae0 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 16:40:45 +1100 Subject: [PATCH 07/12] feat: implement SingleWeekPicker component and update App.vue to use it --- playground/App.vue | 7 +- src/components/SingleWeekPicker.vue | 211 ++++++++++++++++++++++++++++ src/index.ts | 3 +- src/utils/calculateWeekNum.ts | 1 - 4 files changed, 216 insertions(+), 6 deletions(-) create mode 100644 src/components/SingleWeekPicker.vue diff --git a/playground/App.vue b/playground/App.vue index 7811519..4091c72 100644 --- a/playground/App.vue +++ b/playground/App.vue @@ -1,14 +1,13 @@ diff --git a/src/components/SingleWeekPicker.vue b/src/components/SingleWeekPicker.vue new file mode 100644 index 0000000..63eea6f --- /dev/null +++ b/src/components/SingleWeekPicker.vue @@ -0,0 +1,211 @@ + + + + + \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 6be0d3d..642d542 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1 +1,2 @@ -export { default as SingleDatePicker } from './components/SingleDatePicker.vue' \ No newline at end of file +export { default as SingleDatePicker } from './components/SingleDatePicker.vue' +export { default as SingleWeekPicker } from './components/SingleWeekPicker.vue' \ No newline at end of file diff --git a/src/utils/calculateWeekNum.ts b/src/utils/calculateWeekNum.ts index 35e5428..034708a 100644 --- a/src/utils/calculateWeekNum.ts +++ b/src/utils/calculateWeekNum.ts @@ -5,7 +5,6 @@ export default (date: Date): { weekYear: number, weekNum: number } => { tempDate.setDate(tempDate.getDate() + 4 - (tempDate.getDay() || 7)) const forthDay = new Date(tempDate.getFullYear(), 0, 4) - console.log(forthDay) forthDay.setDate(forthDay.getDate() + 4 - (forthDay.getDay() || 7)) const diffInDays = Math.floor((tempDate.getTime() - forthDay.getTime()) / (24 * 60 * 60 * 1000)) -- 2.45.1 From edde3a7c8c0dd74885f3f18801c219bcf8d03359 Mon Sep 17 00:00:00 2001 From: Astrian Zheng Date: Tue, 25 Feb 2025 16:47:28 +1100 Subject: [PATCH 08/12] feat: enhance SingleWeekPicker with year adjustment and accessibility improvements --- src/components/SingleWeekPicker.vue | 73 +++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 10 deletions(-) diff --git a/src/components/SingleWeekPicker.vue b/src/components/SingleWeekPicker.vue index 63eea6f..d37dd2f 100644 --- a/src/components/SingleWeekPicker.vue +++ b/src/components/SingleWeekPicker.vue @@ -147,11 +147,56 @@ function selectWeek(weekYear: number, weekNum: number) { emit('update:modelValue', { weekYear, weekNum }) } +function changeYear(event: Event) { + const target = event.target as HTMLInputElement + const year = parseInt(target.value) + if (year) currentYear.value = year +} + +function adjustYear() { + if (currentYear.value < 100) currentYear.value = parseInt(`20${currentYear.value}`) +} +