From e801ca7b655220d8a6fce386926960627eaed4df Mon Sep 17 00:00:00 2001 From: mikemikimike <13286568797@163.com> Date: Sat, 22 Aug 2026 23:16:01 +0800 Subject: [PATCH 1/3] fix(date): support string adapter --- packages/vuetify-nuxt-module/src/types.ts | 2 +- .../src/vite/vuetify-date-configuration-plugin.ts | 8 ++++++++ .../test/date-configuration-plugin.test.ts | 13 +++++++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/packages/vuetify-nuxt-module/src/types.ts b/packages/vuetify-nuxt-module/src/types.ts index 03e8465..c1bcb5f 100644 --- a/packages/vuetify-nuxt-module/src/types.ts +++ b/packages/vuetify-nuxt-module/src/types.ts @@ -1,6 +1,6 @@ import type { LocaleOptions, RtlOptions, VuetifyOptions } from 'vuetify' -export type DateAdapter = 'vuetify' | 'date-fns' | 'moment' | 'luxon' | 'dayjs' | 'js-joda' | 'date-fns-jalali' | 'jalaali' | 'hijri' | 'custom' +export type DateAdapter = 'vuetify' | 'string' | 'date-fns' | 'moment' | 'luxon' | 'dayjs' | 'js-joda' | 'date-fns-jalali' | 'jalaali' | 'hijri' | 'custom' /** * Date configuration. diff --git a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts index 2a14647..76fc3f5 100644 --- a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts +++ b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts @@ -71,6 +71,10 @@ export function dateConfiguration() { return `options.adapter = new Adapter({ locale: ${dateFnsLocale} })` } + if (ctx.dateAdapter === 'string') { + return 'options.adapter = new StringDateAdapter(options)' + } + return 'options.adapter = Adapter' } @@ -83,6 +87,10 @@ export function dateConfiguration() { return 'import { VuetifyDateAdapter } from \'vuetify/labs/date/adapters/vuetify\'' } + if (ctx.dateAdapter === 'string') { + return 'import { StringDateAdapter } from \'vuetify/labs/date/adapters/string\'' + } + const imports = [`import Adapter from '@date-io/${ctx.dateAdapter}'`] if (ctx.dateAdapter === 'date-fns') { imports.push(`import { ${dateFnsLocale} } from 'date-fns/locale'`) diff --git a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts index fee42ac..aa6a0f1 100644 --- a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts +++ b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts @@ -53,3 +53,16 @@ describe('vuetifyDateConfigurationPlugin date-fns locale', () => { expect(ctx.logger.warn).toHaveBeenCalledExactlyOnceWith(expect.stringContaining('(unset)')) }) }) + +describe('vuetifyDateConfigurationPlugin string adapter', () => { + it('imports and configures Vuetify StringDateAdapter', async () => { + const ctx = makeCtx('en') + ctx.dateAdapter = 'string' + ctx.vuetifyOptions.date.adapter = 'string' + + const code = await loadModule(ctx) + + expect(code).toContain('import { StringDateAdapter } from \'vuetify/labs/date/adapters/string\'') + expect(code).toContain('options.adapter = new StringDateAdapter(options)') + }) +}) From 2735384e623f862580c89356b685986fb4745af8 Mon Sep 17 00:00:00 2001 From: mikemikimike <13286568797@163.com> Date: Sat, 22 Aug 2026 23:31:43 +0800 Subject: [PATCH 2/3] fix(date): guard string adapter compatibility --- .../src/vite/vuetify-date-configuration-plugin.ts | 4 ++++ .../test/date-configuration-plugin.test.ts | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts index 76fc3f5..b88a017 100644 --- a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts +++ b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts @@ -32,6 +32,10 @@ export function dateConfiguration() { ` } + if (ctx.dateAdapter === 'string' && !ctx.vuetifyGte('3.9.0')) { + throw new Error('[vuetify-nuxt-module] The "string" date adapter requires Vuetify 3.9.0 or newer.') + } + const { adapter: _adapter, ...newDateOptions } = ctx.vuetifyOptions.date ?? {} let dateFnsLocale: string | undefined diff --git a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts index aa6a0f1..6a1f751 100644 --- a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts +++ b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts @@ -65,4 +65,13 @@ describe('vuetifyDateConfigurationPlugin string adapter', () => { expect(code).toContain('import { StringDateAdapter } from \'vuetify/labs/date/adapters/string\'') expect(code).toContain('options.adapter = new StringDateAdapter(options)') }) + + it('rejects Vuetify versions without StringDateAdapter', async () => { + const ctx = makeCtx('en') + ctx.dateAdapter = 'string' + ctx.vuetifyOptions.date.adapter = 'string' + ctx.vuetifyGte = (version: string) => version !== '3.9.0' + + await expect(loadModule(ctx)).rejects.toThrow('requires Vuetify 3.9.0 or newer') + }) }) From 8a2d04dae5cdbffc4714c6a2596e9277c8982b35 Mon Sep 17 00:00:00 2001 From: mikemikimike <13286568797@163.com> Date: Mon, 24 Aug 2026 07:39:28 +0800 Subject: [PATCH 3/3] fix(date): use stable string adapter export --- .../src/vite/vuetify-date-configuration-plugin.ts | 4 ++-- .../test/date-configuration-plugin.test.ts | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts index b88a017..53f80fe 100644 --- a/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts +++ b/packages/vuetify-nuxt-module/src/vite/vuetify-date-configuration-plugin.ts @@ -76,7 +76,7 @@ export function dateConfiguration() { } if (ctx.dateAdapter === 'string') { - return 'options.adapter = new StringDateAdapter(options)' + return 'options.adapter = StringDateAdapter' } return 'options.adapter = Adapter' @@ -92,7 +92,7 @@ export function dateConfiguration() { } if (ctx.dateAdapter === 'string') { - return 'import { StringDateAdapter } from \'vuetify/labs/date/adapters/string\'' + return 'import { StringDateAdapter } from \'vuetify/date/adapters/string\'' } const imports = [`import Adapter from '@date-io/${ctx.dateAdapter}'`] diff --git a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts index 6a1f751..8b1449d 100644 --- a/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts +++ b/packages/vuetify-nuxt-module/test/date-configuration-plugin.test.ts @@ -62,8 +62,8 @@ describe('vuetifyDateConfigurationPlugin string adapter', () => { const code = await loadModule(ctx) - expect(code).toContain('import { StringDateAdapter } from \'vuetify/labs/date/adapters/string\'') - expect(code).toContain('options.adapter = new StringDateAdapter(options)') + expect(code).toContain('import { StringDateAdapter } from \'vuetify/date/adapters/string\'') + expect(code).toContain('options.adapter = StringDateAdapter') }) it('rejects Vuetify versions without StringDateAdapter', async () => {