change the defual sidebar with SfSidebar in Blazor Web App .Net8

Hello,

I have created Blazor Web App using Syncfusion extension template (24.2.3) with these configurations

Version: .Net8

Theme: Bootstrap v5

Authentication: Individual Accounts

Interactivity type: Server

Interactivity location: Per page/component

I have old project version (21.2.6) with Syncfusion sidebar and it is working perfectly so i want to get the same functionality in my new project

So, I replace this code from MainLayout.razor

<div class="page">
<div class="sidebar">
    <NavMenu />
</div>
<main>
    <div class="top-row px-4">
    <CultureSwitcher/>
    </div>

    <article class="content px-4">
        @Body
    </article>
</main>
</div>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a rel='nofollow' href="" class="reload">Reload</a>
<a class="dismiss">🗙</a>
</div>

With this code from my old project

<SfSidebar ID="Sidebar" Type="SidebarType.Push" Width="300px" DockSize="65px" EnableDock="true" @ref="Sidebar" @bind-IsOpen="SidebarToggle">
    <div class="sidebar" style="position:fixed;z-index:1200">
        <div class="topnav navbar navbar-dark">
            <button class="navbar-toggler" @onclick="ToggleNavMenu" />
        </div>
        <div @onmouseover="MouseIn" @onmouseout="MouseOut">
            <NavMenu />
        </div>
    </div>
</SfSidebar>

<div class="main">
    <div class="top-row px-4" style="z-index:1111;padding-top:0px">
       
    </div>

    <div class="content px-4">
        @Body
    </div>
</div>
@code
{
    SfSidebar Sidebar;
    public bool SidebarToggle = false;
    public bool SidebarToggleFixed = false;
    public void ToggleNavMenu()
    {
        SidebarToggle = !SidebarToggle;
        SidebarToggleFixed = !SidebarToggleFixed;
    }
    public async Task MouseIn(Microsoft.AspNetCore.Components.Web.MouseEventArgs args)
    {
        var isSidebar = await JS.InvokeAsync<bool>("isSidebar", args.ClientX, args.ClientY);
        if (!SidebarToggle && isSidebar)
        {
            SidebarToggle = true;
        }
    }
    public async Task MouseOut(Microsoft.AspNetCore.Components.Web.MouseEventArgs args)
    {
        var isSidebar = await JS.InvokeAsync<bool>("isSidebar", args.ClientX, args.ClientY);
        if (SidebarToggle && !isSidebar)
        {
            if (!SidebarToggleFixed)
            {
                SidebarToggle = false;
            }
        }
    }
}

this is the css code

.sidebar {
    width: 300px;
    min-width: 300px;
}

.navbar-toggler {
    display: inline-block;
    border: none;
    width: 24px;
    height: 24px;
    margin-left: 30px;
    background-image: url('images/ToggleButton.png');
    background-color: #05163C;
    transform: scale(0.75);
    transform-origin: left;
    color: #ffffff;
}


/* Content area styles */
.title {
    font-size: 20px;
}

/* Sidebar styles */
.e-sidebar .e-icons::before {
    font-size: 25px;
}

.e-sidebar:hover .e-open {
    display: inline-block;
}

.e-sidebar:hover .e-close {
    display: none;
}
/* dockbar icon Style */
.e-sidebar .home::before {
    content: '\e102';
}

.e-sidebar .profile::before {
    content: '\e10c';
}

.e-sidebar .info::before {
    content: '\e11b';
}

.e-sidebar .settings::before {
    content: '\e10b';
}

.e-sidebar .expand::before,
.e-sidebar.e-right.e-open .expand::before {
    content: '\e10f';
}

.e-sidebar.e-open .expand::before,
.e-sidebar.e-right .expand::before {
    content: '\e10e';
}

/* end of dockbar icon Style */

.e-sidebar.e-dock.e-close span.e-text {
    display: none;
}

.e-sidebar.e-dock.e-close .navbar-toggler {
    margin-left: 21px;
}

.e-sidebar.e-dock.e-close .nav.flex-column {
    margin-left: -8px;
}

.e-sidebar.e-dock.e-close .displayText {
    display: none;
}

.e-sidebar.e-dock.e-close .nav-item.px-3 {
    width: 80px;
}

.e-sidebar.e-dock.e-close .separator {
    border: 1px solid #FFFFFF;
    opacity: 0.14;
    width: 45px;
    margin: 1rem;
    margin-top: 0px;
    margin-left: 0.5rem;
}

.e-sidebar.e-dock.e-close .oi.oi-home {
    margin-left: -1px;
}

.e-sidebar.e-dock.e-close .syncfusion-blazor-icons {
    margin-left: -1px;
}

.e-sidebar.e-dock.e-open span.e-text {
    display: inline-block;
}

.e-sidebar li {
    list-style-type: none;
    cursor: pointer;
}

.e-sidebar ul {
    padding: 0px;
}


.e-sidebar span.e-icons {
    color: #c0c2c5;
    line-height: 2
}

.e-open .e-icons {
    margin-right: 16px;
}

.e-open .e-text {
    overflow: hidden;
    font-size: 15px;
}

.sidebar-item {
    text-align: center;
    border-bottom: 1px #e5e5e58a solid;
}

.e-sidebar.e-open .sidebar-item {
    text-align: left;
    padding-left: 15px;
    color: #c0c2c5;
}

.e-sidebar {
    background: #2d323e;
    overflow: hidden;
}

@@font-face {
    font-family: 'e-icons';
    src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAAKAIAAAwAgT1MvMjciQ6oAAAEoAAAAVmNtYXBH1Ec8AAABsAAAAHJnbHlmKcXfOQAAAkAAAAg4aGVhZBLt+DYAAADQAAAANmhoZWEHogNsAAAArAAAACRobXR4LvgAAAAAAYAAAAAwbG9jYQukCgIAAAIkAAAAGm1heHABGQEOAAABCAAAACBuYW1lR4040wAACngAAAJtcG9zdEFgIbwAAAzoAAAArAABAAADUv9qAFoEAAAA//UD8wABAAAAAAAAAAAAAAAAAAAADAABAAAAAQAAlbrm7l8PPPUACwPoAAAAANfuWa8AAAAA1+5ZrwAAAAAD8wPzAAAACAACAAAAAAAAAAEAAAAMAQIAAwAAAAAAAgAAAAoACgAAAP8AAAAAAAAAAQPqAZAABQAAAnoCvAAAAIwCegK8AAAB4AAxAQIAAAIABQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUGZFZABA4QLhkANS/2oAWgPzAJYAAAABAAAAAAAABAAAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAA+gAAAPoAAAD6AAAAAAAAgAAAAMAAAAUAAMAAQAAABQABABeAAAADgAIAAIABuEC4QnhD+ES4RvhkP//AADhAuEJ4QvhEuEa4ZD//wAAAAAAAAAAAAAAAAABAA4ADgAOABYAFgAYAAAAAQACAAYABAADAAgABwAKAAkABQALAAAAAAAAAB4AQABaAQYB5gJkAnoCjgKwA8oEHAAAAAIAAAAAA+oDlQAEAAoAAAEFESERCQEVCQE1AgcBZv0mAXQB5P4c/g4Cw/D+lwFpAcP+s24BTf6qbgAAAAEAAAAAA+oD6gALAAATCQEXCQEHCQEnCQF4AYgBiGP+eAGIY/54/nhjAYj+eAPr/ngBiGP+eP54YwGI/nhjAYgBiAAAAwAAAAAD6gOkAAMABwALAAA3IRUhESEVIREhFSEVA9b8KgPW/CoD1vwq6I0B64wB640AAAEAAAAAA+oD4QCaAAABMx8aHQEPDjEPAh8bIT8bNS8SPxsCAA0aGhgMDAsLCwoKCgkJCQgHBwYGBgUEBAMCAgECAwUFBggICQoLCwwMDg0GAgEBAgIDBAMIBiIdHh0cHBoZFhUSEAcFBgQDAwEB/CoBAQMDBAUGBw8SFRYYGhsbHB0cHwsJBQQEAwIBAQMEDg0NDAsLCQkJBwYGBAMCAQEBAgIDBAQFBQYGBwgICAkJCgoKCwsLDAwMGRoD4gMEBwQFBQYGBwgICAkKCgsLDAwNDQ4ODxAQEBEWFxYWFhYVFRQUExIRERAOFxMLCggIBgYFBgQMDAwNDg4QDxERERIJCQkKCQkJFRQJCQoJCQgJEhERERAPDw4NDQsMBwgFBgYICQkKDAwODw8RERMTExUUFhUWFxYWFxEQEBAPDg4NDQwMCwsKCgkICAgHBgYFBQQEBQQAAAAAAwAAAAAD8wPzAEEAZQDFAAABMx8FFREzHwYdAg8GIS8GPQI/BjM1KwEvBT0CPwUzNzMfBR0CDwUrAi8FPQI/BTMnDw8fFz8XLxcPBgI+BQQDAwMCAT8EBAMDAwIBAQIDAwMEBP7cBAQDAwMCAQECAwMDBAQ/PwQEAwMDAgEBAgMDAwQE0AUEAwMDAgEBAgMDAwQFfAUEAwMDAgEBAgMDAwQFvRsbGRcWFRMREA4LCQgFAwEBAwUHCgsOEBETFRYXGRocHR4eHyAgISIiISAgHx4eHRsbGRcWFRMREA4LCQgFAwEBAwUHCgsOEBETFRYXGRsbHR4eHyAgISIiISAgHx4eAqYBAgIDBAQE/rMBAQEDAwQEBGgEBAQDAgIBAQEBAgIDBAQEaAQEBAMDAQEB0AECAwMDBAVoBAQDAwMCAeUBAgIEAwQEaAUEAwMDAgEBAgMDAwQFaAQEAwQCAgElERMVFhcZGhwdHh4fICAhIiIhICAfHh4dGxsZFxYVExEQDgsJCAUDAQEDBQcKCw4QERMVFhcZGxsdHh4fICAhIiIhICAfHh4dHBoZFxYVExEQDgsKBwUDAQEDBQcKCw4AAAIAAAAAA9MD6QALAE8AAAEOAQcuASc+ATceAQEHBgcnJgYPAQYWHwEGFBcHDgEfAR4BPwEWHwEeATsBMjY/ATY3FxY2PwE2Ji8BNjQnNz4BLwEuAQ8BJi8BLgErASIGApsBY0tKYwICY0pLY/7WEy4nfAkRBWQEAwdqAwNqBwMEZAURCXwnLhMBDgnICg4BEy4mfQkRBGQFAwhpAwNpCAMFZAQSCH0mLhMBDgrICQ4B9UpjAgJjSkpjAgJjAZWEFB4yBAYIrggSBlIYMhhSBhIIrggFAzIfE4QJDAwJhBQeMgQGCK4IEgZSGDIYUgYSCK4IBQMyHxOECQwMAAEAAAAAAwED6gAFAAAJAicJAQEbAef+FhoBzf4zA+v+Ff4VHwHMAc0AAAAAAQAAAAADAQPqAAUAAAEXCQEHAQLlHf4zAc0a/hYD6x7+M/40HwHrAAEAAAAAA/MD8wALAAATCQEXCQE3CQEnCQENAY7+cmQBjwGPZP5yAY5k/nH+cQOP/nH+cWQBjv5yZAGPAY9k/nEBjwAAAwAAAAAD8wPzAEAAgQEBAAAlDw4rAS8dPQE/DgUVDw4BPw47AR8dBRUfHTsBPx09AS8dKwEPHQL1DQ0ODg4PDw8QEBAQERERERUUFBQTExITEREREBAPDw0ODAwLCwkJCAcGBgQEAgIBAgIEAwUFBgYHBwkICQoCygECAgQDBQUGBgcHCQgJCv3QDQ0ODg4PDw8QEBAQERERERUUFBQTExITEREREBAPDw0ODAwLCwkJCAcGBgQEAgL8fgIDBQUHCAkKCwwNDg8PERESExQUFRYWFhgXGBkZGRoaGRkZGBcYFhYWFRQUExIREQ8PDg0MCwoJCAcFBQMCAgMFBQcICQoLDA0ODw8RERITFBQVFhYWGBcYGRkZGhoZGRkYFxgWFhYVFBQTEhERDw8ODQwLCgkIBwUFAwLFCgkICQcHBgYFBQMEAgIBAgIEBAYGBwgJCQsLDAwODQ8PEBARERETEhMTFBQUFREREREQEBAQDw8PDg4ODQ31ERERERAQEBAPDw8ODg4NDQIwCgkICQcHBgYFBQMEAgIBAgIEBAYGBwgJCQsLDAwODQ8PEBARERETEhMTFBQUFRoZGRkYFxgWFhYVFBQTEhERDw8ODQwLCgkIBwUFAwICAwUFBwgJCgsMDQ4PDxEREhMUFBUWFhYYFxgZGRkaGhkZGRgXGBYWFhUUFBMSEREPDw4NDAsKCQgHBQUDAgIDBQUHCAkKCwwNDg8PERESExQUFRYWFhgXGBkZGQAAAQAAAAAD6gPqAEMAABMhHw8RDw8hLw8RPw6aAswNDgwMDAsKCggIBwUFAwIBAQIDBQUHCAgKCgsMDAwODf00DQ4MDAwLCgoICAcFBQMCAQECAwUFBwgICgoLDAwMDgPrAQIDBQUHCAgKCgsLDA0NDv00Dg0NDAsLCgoICAcFBQMCAQECAwUFBwgICgoLCwwNDQ4CzA4NDQwLCwoKCAgHBQUDAgAAABIA3gABAAAAAAAAAAEAAAABAAAAAAABAA0AAQABAAAAAAACAAcADgABAAAAAAADAA0AFQABAAAAAAAEAA0AIgABAAAAAAAFAAsALwABAAAAAAAGAA0AOgABAAAAAAAKACwARwABAAAAAAALABIAcwADAAEECQAAAAIAhQADAAEECQABABoAhwADAAEECQACAA4AoQADAAEECQADABoArwADAAEECQAEABoAyQADAAEECQAFABYA4wADAAEECQAGABoA+QADAAEECQAKAFgBEwADAAEECQALACQBayBlLWljb25zLW1ldHJvUmVndWxhcmUtaWNvbnMtbWV0cm9lLWljb25zLW1ldHJvVmVyc2lvbiAxLjBlLWljb25zLW1ldHJvRm9udCBnZW5lcmF0ZWQgdXNpbmcgU3luY2Z1c2lvbiBNZXRybyBTdHVkaW93d3cuc3luY2Z1c2lvbi5jb20AIABlAC0AaQBjAG8AbgBzAC0AbQBlAHQAcgBvAFIAZQBnAHUAbABhAHIAZQAtAGkAYwBvAG4AcwAtAG0AZQB0AHIAbwBlAC0AaQBjAG8AbgBzAC0AbQBlAHQAcgBvAFYAZQByAHMAaQBvAG4AIAAxAC4AMABlAC0AaQBjAG8AbgBzAC0AbQBlAHQAcgBvAEYAbwBuAHQAIABnAGUAbgBlAHIAYQB0AGUAZAAgAHUAcwBpAG4AZwAgAFMAeQBuAGMAZgB1AHMAaQBvAG4AIABNAGUAdAByAG8AIABTAHQAdQBkAGkAbwB3AHcAdwAuAHMAeQBuAGMAZgB1AHMAaQBvAG4ALgBjAG8AbQAAAAACAAAAAAAAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwBAgEDAQQBBQEGAQcBCAEJAQoBCwEMAQ0AB2hvbWUtMDELQ2xvc2UtaWNvbnMHbWVudS0wMQR1c2VyB0JUX2luZm8PU2V0dGluZ19BbmRyb2lkDWNoZXZyb24tcmlnaHQMY2hldnJvbi1sZWZ0CE1UX0NsZWFyDE1UX0p1bmttYWlscwRzdG9wAAA=) format('truetype');
    font-weight: normal;
    font-style: normal;
}

And I added this script to App.razor page

<body>
    <Routes />
    <script>
        function isSidebar(x, y) {
            var sidebarEle = document.elementFromPoint(x, y);
            return (sidebarEle && sidebarEle.closest('.sidebar') != null) ? true : false;
        }
    </script>
    <script src="_framework/blazor.web.js"></script>
</body>

But after run the application the sidebar does not appear at all

Thank you very much in advance


5 Replies

JA Jafar Ali Shahulhameed Syncfusion Team February 17, 2024 05:11 AM UTC

Hi Mahfoud,


Based on the shared details we can understand that you are trying to utilize Syncfusion Sidebar component. We have prepared the aligning with your requirements with the details you have mentioned.


We have attached the sample for your reference.


Sample: Attached as zip folder


Regards,

Jafar


Attachment: SidebarAuthentication_1_ee216212.zip


MB Mahfoud Bouabdallah February 17, 2024 02:32 PM UTC

Hello Jafar,

I appreciate your response. However, my actual requirement is to utilize the sidebar in a .Net 8 Blazor Web App, specifically with version 24.2.3 or later.

One of the most important features is auto-collapse.

Also, I found this thread Sidebar Not Showing in .Net8 Template Studio Project that discusses the same issue that I am experiencing

Sorry for the inconvenience.



JA Jafar Ali Shahulhameed Syncfusion Team February 19, 2024 01:01 PM UTC

Hi Mahfoud,


Sorry for the inconveniences,


We have prepared the sample according to your requirements with the sample code you have provided.


We have also attached the sample for your reference,


Sample: Attached as zip file


Kindly check out the shared details and get back to us if you need further assistance.


Regards,

Jafar


Attachment: Sidebar_Authentication_f659bf0b.zip


MB Mahfoud Bouabdallah February 20, 2024 07:41 AM UTC

Hello Jafar,

Upon evaluating the sample, everything functions as expected with the exception of the authentication pages. These pages undergo an automatic refreshment. Kindly refer to the attached video for more details.

Note: I have updated the packages to the latest version 24.2.7.


Attachment: Syncfusion_Sidebar_Authentication_Issue_cf4b2e60.zip



JA Jafar Ali Shahulhameed Syncfusion Team February 21, 2024 07:48 AM UTC

Hi Mahfoud,


We can understand that you are facing the persistent browser reloading issue while clicking the authentication pages. We would like to inform that it is an issue in the Blazor platform we have already raised the query regarding this.


The Sidebar component renders correctly while retaining all functionalities when we declared inside MainLayout.razor component and defining render mode type as "Interactive Server" in the Routes.razor component.


However, this impacts authentication-type applications, leading to a persistent browser reloading issue. We have escalated this concern on Dot Net GitHub. You can find more details through the link below.


GitHub : https://github.com/dotnet/aspnetcore/issues/52686


Regards,

Jafar


Loader.
Up arrow icon