Back to Storybook

Decorator With Reactive Globals

docs/_snippets/decorator-with-reactive-globals.md

10.3.61.2 KB
Original Source
js
import { computed } from 'vue';

export default {
  decorators: [
    (story, { globals }) => {
      return {
        components: { story },
        setup() {
          const greeting = computed(() => (globals?.locale === 'en' ? 'Hello!' : '¡Hola!'));

          return { greeting, globals };
        },
        template: `
          <div :lang={{globals?.locale || 'en'}}>
            <p>Greeting: {{greeting}}</p>
            <story />
          </div>
        `,
      };
    },
  ],
};
ts
import { computed } from 'vue';
import type { Preview } from '@storybook/vue3-vite';

const preview: Preview = {
  decorators: [
    (story, { globals }) => {
      return {
        components: { story },
        setup() {
          const greeting = computed(() => (globals?.locale === 'en' ? 'Hello!' : '¡Hola!'));

          return { greeting, globals };
        },
        template: `
          <div :lang={{globals?.locale || 'en'}}>
            <p>Greeting: {{greeting}}</p>
            <story />
          </div>
        `,
      };
    },
  ],
};

export default preview;