From bc3f18ae87153e5455e68363d6b14f60719e2468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wolfgang=20Hu=C3=9F?= Date: Wed, 20 Mar 2024 19:43:50 +0100 Subject: [PATCH] Implement import of all SVG icons as assets in new frontend --- frontend/renderer/plugins/vuetify.ts | 24 ++++++++++++++++++++++-- frontend/src/assets/icons/index.ts | 21 +++++++++++++++++++++ 2 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 frontend/src/assets/icons/index.ts diff --git a/frontend/renderer/plugins/vuetify.ts b/frontend/renderer/plugins/vuetify.ts index 21e20d429..bbcd70974 100644 --- a/frontend/renderer/plugins/vuetify.ts +++ b/frontend/renderer/plugins/vuetify.ts @@ -7,14 +7,34 @@ import { createVuetify, IconAliases } from 'vuetify' import { aliases } from 'vuetify/iconsets/mdi-svg' import { createVueI18nAdapter } from 'vuetify/locale/adapters/vue-i18n' +import CustomIcons from '#assets/icons' import CustomIcon from '#assets/icons/svgComponents/glass.vue' +console.log('aliases: ', aliases) +console.log('CustomIcons.glass: ', CustomIcons.glass.default) +console.log('CustomIcon: ', CustomIcon) + const aliasesCustom: IconAliases = { ...aliases, - // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment - glass: CustomIcon, + // glass: CustomIcon, + glass: CustomIcons.glass.default as never, + // ...CustomIcons, } +// CustomIcons.forEach((component) => { +// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +// aliasesCustom[component.iconName] = component.mod +// }) + +// for (const component in CustomIcons) { +// // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment +// aliasesCustom[component.iconName] = component.mod +// } +// Object.entries(CustomIcons).forEach(([key, module]) => { +// // aliasesCustom[key] = module as IconValue +// aliasesCustom = { ...aliasesCustom, [key]: module } +// }) + // eslint-disable-next-line @typescript-eslint/no-explicit-any export default (i18n: I18n, NonNullable, string, false>) => createVuetify({ diff --git a/frontend/src/assets/icons/index.ts b/frontend/src/assets/icons/index.ts new file mode 100644 index 000000000..41aa28e1c --- /dev/null +++ b/frontend/src/assets/icons/index.ts @@ -0,0 +1,21 @@ +// see https://vitejs.dev/guide/features.html#glob-import +const iconsModule = import.meta.glob('./svgComponents/' + '*.vue', { + eager: true, +}) + +// Wolle console.log('iconsModule: ', iconsModule) + +type Module = { + default: object +} +const icons: Record = {} + +Object.entries(iconsModule).forEach(([key, module]) => { + const iconName: string = key.split('/').slice(-1)[0].replace('.vue', '') + // eslint-disable-next-line security/detect-object-injection + icons[iconName] = module as Module +}) + +// Wolle console.log('icons: ', icons) + +export default icons