@shopware-ag/meteor-component-library
Version:
The meteor component library is a Vue component library developed by Shopware. It is based on the [Meteor Design System](https://shopware.design/).
85 lines (77 loc) • 2.52 kB
text/typescript
import type { StoryObj } from "@storybook/vue3";
import MtFloatingUi, { type MtFloatingUiProps } from "./mt-floating-ui.vue";
import MtButton from "../../form/mt-button/mt-button.vue";
import MtNumberField from "../../form/mt-number-field/mt-number-field.vue";
import { ref } from "vue";
import type { SlottedMeta } from "@/_internal/story-helper";
export type MtFloatingUiMeta = SlottedMeta<typeof MtFloatingUi, "default" | "trigger" | "close">;
const meta: MtFloatingUiMeta = {
title: "Components/mt-floating-ui",
component: MtFloatingUi,
args: {
showArrow: true,
offset: 6,
matchReferenceWidth: false,
},
render: (args: MtFloatingUiProps) => ({
components: {
MtFloatingUi,
MtButton,
MtNumberField,
},
setup() {
const isOpened = ref(false);
const width = ref("120");
const height = ref("120");
const toggleFloatingUi = () => {
isOpened.value = !isOpened.value;
};
return {
args,
isOpened,
width,
height,
toggleFloatingUi,
};
},
template: `
<div>
<mt-floating-ui
v-bind="args"
:is-opened="isOpened"
@close="isOpened = false"
>
<template #trigger>
<mt-button variant="secondary" @click="toggleFloatingUi">
Toggle floating UI
</mt-button>
</template>
<div style="padding: 16px; width: 320px; border-radius: var(--border-radius-m, 8px);
border: 1px solid var(--color-border-secondary-default, #E2E3E9);
background: var(--color-elevation-surface-raised, #FFF);
box-shadow: 0 6px 24px -8px var(--color-elevation-shadow-default, rgba(16, 16, 19, 0.10));">
<strong style="display: block; margin-bottom: 10px;">Adjust size</strong>
<div style="display: flex; gap: 12px; margin-bottom: 10px;">
<mt-number-field
v-model="width"
label="Width"
size="small"
number-type="int"
/>
<mt-number-field
v-model="height"
label="Height"
size="small"
number-type="int"
/>
</div>
<mt-button size="small" variant="primary">Apply</mt-button>
</div>
</mt-floating-ui>
</div>
`,
}),
};
export default meta;
export type MtFloatingUiStory = StoryObj<MtFloatingUiMeta>;
export const Default: MtFloatingUiStory = {};