Skip to content

Commit

Permalink
fix: load configuration correctly (#219)
Browse files Browse the repository at this point in the history
* fix: load configuration properly

* chore: extract dedupe icons to a function
  • Loading branch information
userquin authored Apr 22, 2024
1 parent 8536dc1 commit 4c7c9ef
Showing 1 changed file with 38 additions and 5 deletions.
43 changes: 38 additions & 5 deletions src/utils/layers.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { Nuxt } from '@nuxt/schema'
import defu from 'defu'
import type { InlineModuleOptions, VuetifyModuleOptions } from '../types'
import type { FontIconSet, IconFontName, InlineModuleOptions, VuetifyModuleOptions } from '../types'
import { loadVuetifyConfiguration } from './config'

/**
Expand Down Expand Up @@ -54,19 +54,52 @@ export async function mergeVuetifyModules(options: VuetifyModuleOptions, nuxt: N
})

if (moduleOptions.length > 1) {
const [base, ...rest] = moduleOptions
// reverse to allow override configuration from app: fix #218
const [base, ...rest] = moduleOptions.reverse()
// modules are reversed, so the last one has the highest priority (app)
const configuration = <InlineModuleOptions>defu(base, ...rest)
// dedupe icons sets: fix #217
dedupeIcons(configuration, moduleOptions)
return {
configuration: <InlineModuleOptions>defu(base, ...rest),
configuration,
vuetifyConfigurationFilesToWatch,
}
}
else {
return {
configuration: <InlineModuleOptions>{
configuration: {
moduleOptions: options.moduleOptions,
vuetifyOptions: resolvedOptions.config,
},
} satisfies InlineModuleOptions,
vuetifyConfigurationFilesToWatch,
}
}
}

// dedupe icons sets: fix #217
function dedupeIcons(configuration: InlineModuleOptions, moduleOptions: InlineModuleOptions[]) {
const vuetifyOptions = configuration.vuetifyOptions
if (vuetifyOptions.icons) {
if (vuetifyOptions.icons.sets) {
const sets = new Map<string, FontIconSet>()
// modules are reversed, so the last one has the highest priority (app)
for (const { vuetifyOptions } of moduleOptions) {
if (vuetifyOptions.icons && vuetifyOptions.icons.sets) {
const mSets = vuetifyOptions.icons.sets
if (typeof mSets === 'string') {
sets.set(mSets, { name: mSets as IconFontName })
}
else {
for (const set of mSets) {
if (typeof set === 'string')
sets.set(set, { name: set as IconFontName })
else
sets.set(set.name, set)
}
}
}
}
vuetifyOptions.icons.sets = Array.from(sets.values())
}
}
}

0 comments on commit 4c7c9ef

Please sign in to comment.