开始使用
安装此包,导入共享样式和预设,然后在应用启动时注册一次插件。
安装
pnpm add @chillet/m3-vue注册插件
import { createApp } from 'vue';
import { M3VuePlugin } from '@chillet/m3-vue';
import App from './App.vue';
import '@chillet/m3-vue/style.css';
import { defaultPreset } from '@chillet/m3-vue/presets/default';
const app = createApp(App);
app.use(M3VuePlugin, { preset: defaultPreset });
app.mount('#app');注册后,v-tooltip、v-dropdown、v-dropdown-menu 和 v-context-menu 可全局使用。使用插件的 locale 和 messages 选项配置本地化。
使用组件
<script setup lang="ts">
import { Button } from '@chillet/m3-vue';
</script>
<template>
<Button leading-icon="favorite">按钮</Button>
</template>选择紧凑预设或进行定制
如需完整的紧凑界面,请从 @chillet/m3-vue/presets/compact 导入 compact 并将其作为 preset 传入。它会应用紧凑排版、密度 -2 和协调一致的组件尺寸,无需逐个配置组件。
compact 使用外部字段标签。请在表单布局中安排可见标签;若字段没有可见标签,请提供无障碍名称。详见字段布局。
挂载 OverlayHost
使用程序化 showDialog() 或 showSnackbar() 时,请在应用根部附近渲染一个 OverlayHost。在后代组件中,于 setup 期间调用 const { showDialog, showSnackbar } = useOverlays(),之后使用 showDialog(options) 或 showSnackbar(options)。在组件外部,使用 createOverlayService(host) 绑定函数。host 会让这些浮层保留在应用的 Vue 上下文中,同时原生 dialog 和 popover 元素仍使用浏览器顶层。
<script setup lang="ts">
import { OverlayHost, createOverlayHost, provideOverlayHost } from '@chillet/m3-vue';
const overlays = provideOverlayHost(createOverlayHost());
</script>
<template>
<OverlayHost :host="overlays" />
<!-- 应用内容 -->
</template>如果只在模板中声明式渲染 Dialog 和 Snackbar,则无需使用 OverlayHost。M3VuePlugin 不会自动插入宿主,因为这样会创建单独的 Vue 渲染根或修改使用方应用的根组件。
只挂载一个宿主。缺少宿主时,程序化浮层函数会拒绝执行;宿主卸载时,待处理的调用也会被拒绝。
自动导入
如果使用 unplugin-vue-components,请搭配 M3VueResolver。
import Components from 'unplugin-vue-components/vite';
import { M3VueResolver } from '@chillet/m3-vue';
export default defineConfig({
plugins: [
Components({
resolvers: [M3VueResolver()],
}),
],
});