<template>
    <div class="navbar">
        <hamburger :is-active="sidebar.opened" class="hamburger-container" @toggleClick="toggleSideBar" />

        <breadcrumb class="breadcrumb-container" />

        <div class="right-menu flex align-center">
            <el-dropdown class="avatar-container" trigger="click">
                <div class="avatar-wrapper">
                    <img src="https://pic.rmb.bdstatic.com/bjh/840702eef7eb4f6196853a99323c87cb.png" class="user-avatar" />
                    <i class="el-icon-caret-bottom" />
                </div>
                <el-dropdown-menu slot="dropdown" class="user-dropdown">
                    <router-link to="/">
                        <el-dropdown-item> 主页 </el-dropdown-item>
                    </router-link>
                    <el-dropdown-item @click.native="modPassword">
                        <span style="display: block">修改密码</span>
                    </el-dropdown-item>
                    <el-dropdown-item @click.native="logout">
                        <span style="display: block">退出登录</span>
                    </el-dropdown-item>
                </el-dropdown-menu>
            </el-dropdown>
        </div>
        <mod-password v-if="modPasswordDialog.show" v-model="modPasswordDialog.show"></mod-password>
    </div>
</template>

<script>
import { mapGetters } from 'vuex'
import Breadcrumb from '@/components/Breadcrumb'
import Hamburger from '@/components/Hamburger'
import ModPassword from '@/components/_dialog/modPassword.vue'

export default {
    components: {
        Breadcrumb,
        Hamburger,
        ModPassword
    },
    data() {
        return {
            modPasswordDialog: {
                show: false,
            }
        }
    },
    computed: {
        ...mapGetters([ 'sidebar', 'avatar']),
    },
    methods: {
        toggleSideBar() {
            this.$store.dispatch('app/toggleSideBar')
        },
        modPassword() {
            this.modPasswordDialog.show = true
        },
        async logout() {
            await this.$store.dispatch('user/logout')
            this.$router.push(`/login?redirect=${this.$route.fullPath}`)
        },
        // async modPasswd() {
        //     this.$prompt('请输入新密码', '重置密码', {
        //         confirmButtonText: '确定',
        //         cancelButtonText: '取消',
        //         inputValidator: (value) => {
        //             if (value.replace(/ /g, '').length < 6 ) {
        //                 return false
        //             } else {
        //                 return true
        //             }
        //         },
        //         inputErrorMessage: '至少输入6位'
        //     }).then(async({ value }) => {
        //         const data = await this.$fetch('/resetPassword', {user_password: value})
        //         if(data.status == 0) {
        //             this.$message.success('修改成功，请重新登录')
        //             await this.$store.dispatch('user/logout')
        //             this.$router.push(`/login?redirect=${this.$route.fullPath}`)
        //         }
        //     }).catch(() => {});
        // }
    },
}
</script>

<style lang="scss" scoped>
.navbar {
    height: 50px;
    overflow: hidden;
    position: relative;
    background: #fff;
    box-shadow: 0 1px 4px rgba(0, 21, 41, 0.08);

    .hamburger-container {
        line-height: 46px;
        height: 100%;
        float: left;
        cursor: pointer;
        transition: background 0.3s;
        -webkit-tap-highlight-color: transparent;

        &:hover {
            background: rgba(0, 0, 0, 0.025);
        }
    }

    .breadcrumb-container {
        float: left;
    }

    .right-menu {
        float: right;
        height: 100%;
        line-height: 50px;

        &:focus {
            outline: none;
        }

        .right-menu-item {
            display: inline-block;
            padding: 0 8px;
            height: 100%;
            font-size: 18px;
            color: #5a5e66;
            vertical-align: text-bottom;

            &.hover-effect {
                cursor: pointer;
                transition: background 0.3s;

                &:hover {
                    background: rgba(0, 0, 0, 0.025);
                }
            }
        }

        .avatar-container {
            margin-right: 30px;

            .avatar-wrapper {
                margin-top: 5px;
                position: relative;

                .user-avatar {
                    cursor: pointer;
                    width: 40px;
                    height: 40px;
                    border-radius: 10px;
                }

                .el-icon-caret-bottom {
                    cursor: pointer;
                    position: absolute;
                    right: -20px;
                    top: 25px;
                    font-size: 12px;
                }
            }
        }
    }
}
</style>
