preview.ts 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. // Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. import '@shared/initializer/translatableMarker'
  3. import initializeGlobalComponents from '@shared/initializer/globalComponents'
  4. import '@shared/styles/main.css'
  5. import { i18n } from '@shared/i18n'
  6. import { app } from '@storybook/vue3'
  7. import 'virtual:svg-icons-register' // eslint-disable-line import/no-unresolved
  8. import initializeStore from '@shared/stores'
  9. import initializeForm, { getFormPlugins } from '@shared/form'
  10. import type { ImportGlobEagerOutput } from '@shared/types/utils'
  11. import type { FormKitPlugin } from '@formkit/core'
  12. import getMobileCoreClasses from '@mobile/form/theme/global/getCoreClasses'
  13. import { createRouter, createWebHashHistory, type Router } from 'vue-router'
  14. import type {
  15. FormFieldTypeImportModules,
  16. FormThemeExtension,
  17. } from '@shared/types/form'
  18. // Adds the translations to storybook.
  19. app.config.globalProperties.i18n = i18n
  20. app.config.globalProperties.$t = i18n.t.bind(i18n)
  21. // Initialize the needed core components and plugins.
  22. initializeGlobalComponents(app)
  23. initializeStore(app)
  24. // Initialize the FormKit plugin with the needed fields and internal FormKit plugins.
  25. const mobilePluginModules: ImportGlobEagerOutput<FormKitPlugin> =
  26. import.meta.globEager('../app/frontend/apps/mobile/form/plugins/global/*.ts')
  27. const mobileFieldModules: ImportGlobEagerOutput<FormFieldTypeImportModules> =
  28. import.meta.globEager(
  29. '../app/frontend/apps/mobile/components/Form/fields/**/index.ts',
  30. )
  31. const themeExtensionModules: ImportGlobEagerOutput<FormThemeExtension> =
  32. import.meta.globEager(
  33. '../app/frontend/apps/mobile/form/theme/global/extensions/*.ts',
  34. )
  35. const plugins = getFormPlugins(mobilePluginModules)
  36. const appTheme = {
  37. coreClasses: getMobileCoreClasses,
  38. extensions: themeExtensionModules,
  39. }
  40. initializeForm(app, undefined, mobileFieldModules, plugins, appTheme)
  41. const router: Router = createRouter({
  42. history: createWebHashHistory(),
  43. routes: [],
  44. })
  45. app.use(router)
  46. export default {
  47. actions: { argTypesRegex: '^on[A-Z].*' },
  48. controls: {
  49. matchers: {
  50. color: /(background|color)$/i,
  51. date: /Date$/,
  52. },
  53. },
  54. }