Compare commits

..

5 Commits

Author SHA1 Message Date
Benjamin Canac
9b17c66b6c chore(package): put back types field 2025-05-01 19:19:07 +02:00
Vitor Camarotto
8dfdd63ce3 fix(Calendar): add place-items-center to grid row (#4034) 2025-05-01 19:02:06 +02:00
renovate[bot]
e6369a6746 chore(deps): update devdependency vite to v6.3.4 [security] (v3) (#4037)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-05-01 18:49:10 +02:00
Eugen Istoc
a4f3f6d531 feat(useOverlay): add isOpen method to check overlay state (#4041) 2025-05-01 18:48:41 +02:00
Sandro Circi
c5bdec0f64 fix(templates): put back args to watch in dev (#4033) 2025-05-01 18:47:03 +02:00
11 changed files with 2860 additions and 1199 deletions

View File

@@ -11,7 +11,7 @@ export default defineBuildConfig({
delimiters: ['', ''],
values: {
// Used in development to import directly from theme
'const isUiDev = true': 'const isUiDev = false'
'process.argv.includes(\'--uiDev\')': 'false'
}
}
},

View File

@@ -13,7 +13,9 @@ const modal = overlay.create(LazyModalExample, {
})
async function open() {
const shouldIncrement = await modal.open()
const instance = modal.open()
const shouldIncrement = await instance.result
if (shouldIncrement) {
count.value++

View File

@@ -13,7 +13,9 @@ const slideover = overlay.create(LazySlideoverExample, {
})
async function open() {
const shouldIncrement = await slideover.open()
const instance = slideover.open()
const shouldIncrement = await instance.result
if (shouldIncrement) {
count.value++

View File

@@ -66,6 +66,13 @@ Update an overlay using its `id`
Removes the overlay from the DOM using its `id`
- Parameters:
- `id`: The identifier of the overlay
### `isOpen(id: symbol): boolean`
Checks if an overlay its open using its `id`
- Parameters:
- `id`: The identifier of the overlay

View File

@@ -86,6 +86,7 @@
},
"style": "./dist/runtime/index.css",
"main": "./dist/module.mjs",
"types": "./dist/types.d.mts",
"files": [
".nuxt/ui",
".nuxt/ui.css",
@@ -96,12 +97,12 @@
"scripts": {
"build": "nuxt-module-build build",
"prepack": "pnpm build",
"dev": "nuxi dev playground",
"dev": "nuxi dev playground --uiDev",
"dev:build": "nuxi build playground",
"dev:vue": "vite playground-vue",
"dev:vue": "vite playground-vue -- --uiDev",
"dev:vue:build": "vite build playground-vue",
"dev:prepare": "nuxt-module-build build --stub && nuxt-module-build prepare && nuxi prepare playground && nuxi prepare docs && vite build playground-vue",
"docs": "nuxi dev docs",
"docs": "nuxi dev docs --uiDev",
"docs:build": "nuxi build docs",
"docs:prepare": "nuxt-component-meta docs",
"lint": "eslint .",

3245
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@@ -122,6 +122,12 @@ function _useOverlay() {
return overlay
}
const isOpen = (id: symbol): boolean => {
const overlay = getOverlay(id)
return overlay.isOpen
}
return {
overlays,
open,
@@ -129,7 +135,8 @@ function _useOverlay() {
closeAll,
create,
patch,
unMount
unMount,
isOpen
}
}

View File

@@ -1,5 +1,6 @@
import { fileURLToPath } from 'node:url'
import { kebabCase } from 'scule'
import { addTemplate, addTypeTemplate, updateTemplates } from '@nuxt/kit'
import { addTemplate, addTypeTemplate } from '@nuxt/kit'
import type { Nuxt, NuxtTemplate, NuxtTypeTemplate } from '@nuxt/schema'
import type { Resolver } from '@nuxt/kit'
import type { ModuleOptions } from './module'
@@ -49,6 +50,19 @@ export function getTemplates(options: ModuleOptions, uiConfig: Record<string, an
})
}
// For local development, import directly from theme
if (process.argv.includes('--uiDev')) {
const templatePath = fileURLToPath(new URL(`./theme/${kebabCase(component)}`, import.meta.url))
return [
`import template from ${JSON.stringify(templatePath)}`,
...generateVariantDeclarations(variants),
`const result = typeof template === 'function' ? (template as Function)(${JSON.stringify(options, null, 2)}) : template`,
`const theme = ${json}`,
`export default result as typeof theme`
].join('\n\n')
}
// For production build
return [
...generateVariantDeclarations(variants),
`export default ${json}`
@@ -182,7 +196,6 @@ export {}
export function addTemplates(options: ModuleOptions, nuxt: Nuxt, resolve: Resolver['resolve']) {
const templates = getTemplates(options, nuxt.options.appConfig.ui)
for (const template of templates) {
if (template.filename!.endsWith('.d.ts')) {
addTypeTemplate(template as NuxtTypeTemplate)
@@ -191,28 +204,6 @@ export function addTemplates(options: ModuleOptions, nuxt: Nuxt, resolve: Resolv
}
}
// For local module development, watch changes in themes
const isUiDev = true
if (isUiDev) {
nuxt.options.watch.push(resolve('./theme'))
nuxt.hook('builder:watch', async (event, path) => {
await updateTemplates({
filter: (template) => {
if (template.filename.startsWith('ui/') && template.filename !== 'ui/index.ts') {
const templatePath = template.filename.replace(/^ui/, 'src/theme')
if (path.endsWith(templatePath)) {
console.log(`[nuxt-ui] template ${templatePath} changed`)
return true
}
}
return false
}
})
})
}
nuxt.hook('prepare:types', ({ references }) => {
references.push({ path: resolve('./runtime/types/app.config.d.ts') })
})

View File

@@ -7,7 +7,7 @@ export default (options: Required<ModuleOptions>) => ({
body: 'flex flex-col space-y-4 pt-4 sm:flex-row sm:space-x-4 sm:space-y-0',
heading: 'text-center font-medium truncate mx-auto',
grid: 'w-full border-collapse select-none space-y-1 focus:outline-none',
gridRow: 'grid grid-cols-7',
gridRow: 'grid grid-cols-7 place-items-center',
gridWeekDaysRow: 'mb-1 grid w-full grid-cols-7',
gridBody: 'grid',
headCell: 'rounded-md',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff