<template>
    <div class="wrapper">
        <Sidebar/>
        <div class="main">
            <nav class="navbar navbar-expand navbar-light navbar-bg">
                <a class="sidebar-toggle d-flex" @click="toggleSidebar">
                    <i class="hamburger align-self-center"></i>
                </a>
                <div class="navbar-collapse collapse">
                    <ul class="navbar-nav navbar-align">
                        <UserDropdown/>
                    </ul>
                </div>
            </nav>
            <slot></slot>
            <Footer/>
        </div>
    </div>
</template>

<script>
/* global closeAllDropdowns */
import Footer from "@/components/Footer.vue";
import Sidebar from "@/components/Sidebar.vue";
import UserDropdown from "@/components/UserDropdown.vue";

export default {
    name: 'BaseLayout',
    components: {
        UserDropdown,
        Footer,
        Sidebar
    },
    props: {
        hideSearch: {
            type: Boolean,
            required: false,
            default: false
        }
    },
    methods: {
        toggleSidebar() {
            closeAllDropdowns();
            document.getElementById("sidebar").classList.toggle("collapsed");
        },
    },
}
</script>

<style scoped>

.wrapper {
    align-items: stretch;
    display: flex;
    width: 100%;
}

.main {
    display: flex;
    width: 100%;
    min-width: 0;
    min-height: 100vh;
    transition: margin-left .35s ease-in-out, left .35s ease-in-out, margin-right .35s ease-in-out, right .35s ease-in-out;
    flex-direction: column;
    overflow: hidden;
}

.navbar-expand {
    flex-wrap: nowrap;
    justify-content: flex-start;
}

.navbar {
    border-bottom: 0;
    padding: .875rem 1.375rem;
    box-shadow: 0 0 2rem var(--bs-shadow)
}

.navbar-align {
    margin-left: auto;
}

.navbar-bg {
    background: var(--bs-white);
}

.sidebar-toggle {
    cursor: pointer;
    width: 26px;
    height: 26px;
    margin-right: 1rem;
}

.hamburger {
    position: relative;

    &, &:after, &:before {
        cursor: pointer;
        border-radius: 1px;
        height: 3px;
        width: 24px;
        background: var(--bs-gray-700);
        display: block;
        content: "";
        transition: background .1s ease-in-out, color .1s ease-in-out
    }

    &:before {
        top: -7.5px;
        width: 24px;
        position: absolute
    }

    &:after {
        bottom: -7.5px;
        width: 16px;
        position: absolute
    }
}

.sidebar-toggle:hover {
    .hamburger, .hamburger:after, .hamburger:before {
        background: var(--bs-primary);
    }
}

</style>