fix:[Sidebar]: fixed bug in iOS (#1152)
This commit is contained in:
		
							
								
								
									
										26
									
								
								src/views/layout/components/Sidebar/FixiOSBug.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								src/views/layout/components/Sidebar/FixiOSBug.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
				
			|||||||
 | 
					export default {
 | 
				
			||||||
 | 
					  computed: {
 | 
				
			||||||
 | 
					    device() {
 | 
				
			||||||
 | 
					      return this.$store.state.app.device
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  mounted() {
 | 
				
			||||||
 | 
					    // In order to fix the click on menu on the ios device will trigger the mouseeleave bug
 | 
				
			||||||
 | 
					    // https://github.com/PanJiaChen/vue-element-admin/issues/1135
 | 
				
			||||||
 | 
					    this.fixBugIniOS()
 | 
				
			||||||
 | 
					  },
 | 
				
			||||||
 | 
					  methods: {
 | 
				
			||||||
 | 
					    fixBugIniOS() {
 | 
				
			||||||
 | 
					      const $submenu = this.$refs.submenu
 | 
				
			||||||
 | 
					      if ($submenu) {
 | 
				
			||||||
 | 
					        const handleMouseleave = $submenu.handleMouseleave
 | 
				
			||||||
 | 
					        $submenu.handleMouseleave = (e) => {
 | 
				
			||||||
 | 
					          if (this.device === 'mobile') {
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					          handleMouseleave(e)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -9,7 +9,7 @@
 | 
				
			|||||||
      </app-link>
 | 
					      </app-link>
 | 
				
			||||||
    </template>
 | 
					    </template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <el-submenu v-else :index="item.name||item.path">
 | 
					    <el-submenu v-else ref="submenu" :index="item.name||item.path">
 | 
				
			||||||
      <template slot="title">
 | 
					      <template slot="title">
 | 
				
			||||||
        <item v-if="item.meta" :icon="item.meta.icon" :title="generateTitle(item.meta.title)" />
 | 
					        <item v-if="item.meta" :icon="item.meta.icon" :title="generateTitle(item.meta.title)" />
 | 
				
			||||||
      </template>
 | 
					      </template>
 | 
				
			||||||
@@ -40,10 +40,12 @@ import { generateTitle } from '@/utils/i18n'
 | 
				
			|||||||
import { validateURL } from '@/utils/validate'
 | 
					import { validateURL } from '@/utils/validate'
 | 
				
			||||||
import Item from './Item'
 | 
					import Item from './Item'
 | 
				
			||||||
import AppLink from './Link'
 | 
					import AppLink from './Link'
 | 
				
			||||||
 | 
					import FixiOSBug from './FixiOSBug'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default {
 | 
					export default {
 | 
				
			||||||
  name: 'SidebarItem',
 | 
					  name: 'SidebarItem',
 | 
				
			||||||
  components: { Item, AppLink },
 | 
					  components: { Item, AppLink },
 | 
				
			||||||
 | 
					  mixins: [FixiOSBug],
 | 
				
			||||||
  props: {
 | 
					  props: {
 | 
				
			||||||
    // route object
 | 
					    // route object
 | 
				
			||||||
    item: {
 | 
					    item: {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user