102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Vue
		
	
	
| <docs>
 | ||
| ---
 | ||
| order: 5
 | ||
| title:
 | ||
|   zh-CN: 自定义触发器
 | ||
|   en-US: Custom trigger
 | ||
| ---
 | ||
| 
 | ||
| ## zh-CN
 | ||
| 
 | ||
| 要使用自定义触发器,可以设置 `:trigger="null"` 来隐藏默认设定。
 | ||
| 
 | ||
| ## en-US
 | ||
| 
 | ||
| If you want to use a customized trigger, you can hide the default one by setting `:trigger="null"`.
 | ||
| 
 | ||
| </docs>
 | ||
| <template>
 | ||
|   <a-layout>
 | ||
|     <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible>
 | ||
|       <div class="logo" />
 | ||
|       <a-menu v-model:selectedKeys="selectedKeys" theme="dark" mode="inline">
 | ||
|         <a-menu-item key="1">
 | ||
|           <user-outlined />
 | ||
|           <span>nav 1</span>
 | ||
|         </a-menu-item>
 | ||
|         <a-menu-item key="2">
 | ||
|           <video-camera-outlined />
 | ||
|           <span>nav 2</span>
 | ||
|         </a-menu-item>
 | ||
|         <a-menu-item key="3">
 | ||
|           <upload-outlined />
 | ||
|           <span>nav 3</span>
 | ||
|         </a-menu-item>
 | ||
|       </a-menu>
 | ||
|     </a-layout-sider>
 | ||
|     <a-layout>
 | ||
|       <a-layout-header style="background: #fff; padding: 0">
 | ||
|         <menu-unfold-outlined
 | ||
|           v-if="collapsed"
 | ||
|           class="trigger"
 | ||
|           @click="() => (collapsed = !collapsed)"
 | ||
|         />
 | ||
|         <menu-fold-outlined v-else class="trigger" @click="() => (collapsed = !collapsed)" />
 | ||
|       </a-layout-header>
 | ||
|       <a-layout-content
 | ||
|         :style="{ margin: '24px 16px', padding: '24px', background: '#fff', minHeight: '280px' }"
 | ||
|       >
 | ||
|         Content
 | ||
|       </a-layout-content>
 | ||
|     </a-layout>
 | ||
|   </a-layout>
 | ||
| </template>
 | ||
| <script lang="ts">
 | ||
| import {
 | ||
|   UserOutlined,
 | ||
|   VideoCameraOutlined,
 | ||
|   UploadOutlined,
 | ||
|   MenuUnfoldOutlined,
 | ||
|   MenuFoldOutlined,
 | ||
| } from '@ant-design/icons-vue';
 | ||
| import { defineComponent, ref } from 'vue';
 | ||
| export default defineComponent({
 | ||
|   components: {
 | ||
|     UserOutlined,
 | ||
|     VideoCameraOutlined,
 | ||
|     UploadOutlined,
 | ||
|     MenuUnfoldOutlined,
 | ||
|     MenuFoldOutlined,
 | ||
|   },
 | ||
|   setup() {
 | ||
|     return {
 | ||
|       selectedKeys: ref<string[]>(['1']),
 | ||
|       collapsed: ref<boolean>(false),
 | ||
|     };
 | ||
|   },
 | ||
| });
 | ||
| </script>
 | ||
| <style>
 | ||
| #components-layout-demo-custom-trigger .trigger {
 | ||
|   font-size: 18px;
 | ||
|   line-height: 64px;
 | ||
|   padding: 0 24px;
 | ||
|   cursor: pointer;
 | ||
|   transition: color 0.3s;
 | ||
| }
 | ||
| 
 | ||
| #components-layout-demo-custom-trigger .trigger:hover {
 | ||
|   color: #1890ff;
 | ||
| }
 | ||
| 
 | ||
| #components-layout-demo-custom-trigger .logo {
 | ||
|   height: 32px;
 | ||
|   background: rgba(255, 255, 255, 0.3);
 | ||
|   margin: 16px;
 | ||
| }
 | ||
| 
 | ||
| .site-layout .site-layout-background {
 | ||
|   background: #fff;
 | ||
| }
 | ||
| </style>
 |