From 88e88f4d09959868e32359735f95de2a86b5df68 Mon Sep 17 00:00:00 2001 From: Kikuo Emoto Date: Wed, 9 Oct 2024 09:24:30 +0900 Subject: [PATCH 1/4] feat(lib): rewrite Datetimepicker in TS Rewrites `Datetimepicker` in the `src/components/datetimepicker` folder in TypeScript: - `modelValue` allow `null` - Replaces `isNaN(date)` with `isNaN(date.valueOf())` which should produce an equivalent result - Introduces new types: - `DatetimeFormatter`: type of the `datetimeFormatter` prop - `DatetimeParser`: type of the `datetimeParser` prop - `DatetimeCreator`: type of the `datetimeCreator` prop Here is a tip for TypeScript migration: - Register Buefy components with "direct" names rather than the `name` fields so that they are type-checked --- .../datetimepicker/Datetimepicker.vue | 129 ++++++++++-------- .../datetimepicker/{index.js => index.ts} | 3 +- 2 files changed, 74 insertions(+), 58 deletions(-) rename packages/buefy-next/src/components/datetimepicker/{index.js => index.ts} (82%) diff --git a/packages/buefy-next/src/components/datetimepicker/Datetimepicker.vue b/packages/buefy-next/src/components/datetimepicker/Datetimepicker.vue index 07df86145..04b7b6cb9 100644 --- a/packages/buefy-next/src/components/datetimepicker/Datetimepicker.vue +++ b/packages/buefy-next/src/components/datetimepicker/Datetimepicker.vue @@ -94,28 +94,38 @@ /> - diff --git a/packages/buefy-next/src/components/datetimepicker/index.js b/packages/buefy-next/src/components/datetimepicker/index.ts similarity index 82% rename from packages/buefy-next/src/components/datetimepicker/index.js rename to packages/buefy-next/src/components/datetimepicker/index.ts index c06b245cc..35a91a80f 100644 --- a/packages/buefy-next/src/components/datetimepicker/index.js +++ b/packages/buefy-next/src/components/datetimepicker/index.ts @@ -1,9 +1,10 @@ +import type { App } from 'vue' import Datetimepicker from './Datetimepicker.vue' import { registerComponent } from '../../utils/plugins' const Plugin = { - install(Vue) { + install(Vue: App) { registerComponent(Vue, Datetimepicker) } } From 5e9285521240e0a8ff221a3028366bb608784be4 Mon Sep 17 00:00:00 2001 From: Kikuo Emoto Date: Wed, 9 Oct 2024 09:44:56 +0900 Subject: [PATCH 2/4] test(lib): rewrites Datetimepicker.spec in TS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rewrites the spec for `Datetimepicker` in the `src/components/datetimepicker` folder in TypeScript. All the changes are straightforward. Here are a tip for Jest → Vitest migration: - Import the spec building blocks from the `vitest` package --- .../{Datetimepicker.spec.js => Datetimepicker.spec.ts} | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) rename packages/buefy-next/src/components/datetimepicker/{Datetimepicker.spec.js => Datetimepicker.spec.ts} (96%) diff --git a/packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.js b/packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.ts similarity index 96% rename from packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.js rename to packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.ts index 0dd9f1270..6461e21bc 100644 --- a/packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.js +++ b/packages/buefy-next/src/components/datetimepicker/Datetimepicker.spec.ts @@ -1,7 +1,9 @@ +import { beforeEach, describe, expect, it } from 'vitest' import { shallowMount, mount } from '@vue/test-utils' -import Datetimepicker from '@components/datetimepicker/Datetimepicker' +import type { VueWrapper } from '@vue/test-utils' +import Datetimepicker from '@components/datetimepicker/Datetimepicker.vue' -let wrapper +let wrapper: VueWrapper> describe('Datetimepicker', () => { beforeEach(() => { From 324a31ee23e31bfbe5c7f7c556ba4eb502fca52f Mon Sep 17 00:00:00 2001 From: Kikuo Emoto Date: Wed, 9 Oct 2024 09:46:59 +0900 Subject: [PATCH 3/4] chore(lib): bundle datetimepicker in TS `rollup.config.mjs` removes "datetimepicker" from `JS_COMPONENTS`. --- packages/buefy-next/rollup.config.mjs | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/buefy-next/rollup.config.mjs b/packages/buefy-next/rollup.config.mjs index e9a95badd..162a1e098 100644 --- a/packages/buefy-next/rollup.config.mjs +++ b/packages/buefy-next/rollup.config.mjs @@ -30,7 +30,6 @@ const components = fs ) const JS_COMPONENTS = [ - 'datetimepicker', ] const entries = { From cbb17fcf966a867d8bc3000998849f563cd3b5db Mon Sep 17 00:00:00 2001 From: Kikuo Emoto Date: Wed, 9 Oct 2024 09:48:21 +0900 Subject: [PATCH 4/4] feat(docs): rewrite datetimepicker docs in TS Rewrites the documentation for `Datetimepicker` in the `src/pages/components/datetimepicker` folder in TypeScript. In `examples/ExEditable.vue`: - Adds a missing field `enableSeconds` to `data`, which is `false` anyway Other changes are straightforward. Here is a tip for TypeScript migration: - Explicitly import and register components so that they are type checked. Note that no type-checking is performed for globally registered components. --- .../datetimepicker/Datetimepicker.vue | 29 ++++++++++++------- .../{datetimepicker.js => datetimepicker.ts} | 0 .../datetimepicker/examples/ExEditable.vue | 17 ++++++++--- .../datetimepicker/examples/ExFooter.vue | 16 +++++++--- .../datetimepicker/examples/ExGranularity.vue | 15 +++++++--- .../datetimepicker/examples/ExInline.vue | 10 +++++-- .../datetimepicker/examples/ExRange.vue | 13 +++++++-- .../datetimepicker/examples/ExSimple.vue | 17 ++++++++--- 8 files changed, 85 insertions(+), 32 deletions(-) rename packages/docs/src/pages/components/datetimepicker/api/{datetimepicker.js => datetimepicker.ts} (100%) diff --git a/packages/docs/src/pages/components/datetimepicker/Datetimepicker.vue b/packages/docs/src/pages/components/datetimepicker/Datetimepicker.vue index 7504d16f4..903b9e819 100644 --- a/packages/docs/src/pages/components/datetimepicker/Datetimepicker.vue +++ b/packages/docs/src/pages/components/datetimepicker/Datetimepicker.vue @@ -26,29 +26,38 @@ - diff --git a/packages/docs/src/pages/components/datetimepicker/api/datetimepicker.js b/packages/docs/src/pages/components/datetimepicker/api/datetimepicker.ts similarity index 100% rename from packages/docs/src/pages/components/datetimepicker/api/datetimepicker.js rename to packages/docs/src/pages/components/datetimepicker/api/datetimepicker.ts diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExEditable.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExEditable.vue index 081c34906..f134ccf5f 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExEditable.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExEditable.vue @@ -32,11 +32,20 @@ - diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExFooter.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExFooter.vue index c57a4ac38..59cc5ce39 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExFooter.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExFooter.vue @@ -23,12 +23,20 @@ - diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExGranularity.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExGranularity.vue index f78ff8cf4..4c4707110 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExGranularity.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExGranularity.vue @@ -8,8 +8,15 @@ - \ No newline at end of file +}) + diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExInline.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExInline.vue index 856c17076..676bd06dd 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExInline.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExInline.vue @@ -2,12 +2,16 @@ - diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExRange.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExRange.vue index 72e0f7d48..d1a6a43d9 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExRange.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExRange.vue @@ -8,8 +8,15 @@ - diff --git a/packages/docs/src/pages/components/datetimepicker/examples/ExSimple.vue b/packages/docs/src/pages/components/datetimepicker/examples/ExSimple.vue index 60f71eea2..2a6b00107 100644 --- a/packages/docs/src/pages/components/datetimepicker/examples/ExSimple.vue +++ b/packages/docs/src/pages/components/datetimepicker/examples/ExSimple.vue @@ -64,11 +64,20 @@ -