javascripthtmlcssbootstrap-4bootswatch

Bootstrap/Bootswatch Dropdown Tab Does Not Display


I am having an issue implementing a tab with a drop-down nav as demonstrated in the Bootswatch examples. I should note that this does not work on the demo page either for me, but the way it seems to be written implies that it should work.

My end goal is that on one of my tabs I have a drop-down and populate the tab body by the selection made. The other tabs work as expected, but the drop-down doesn't display the expected div contents.

Below is basically the demo code from the Bootswatch page, with some of the fluff pulled out to simplify it.

<!doctype html>
<html lang="en" class="h-100">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title>Title</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/cerulean/bootstrap.min.css">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css">
</head>

<body class="d-flex flex-column h-100">

    <header>
        <nav class="navbar navbar-expand-lg navbar-dark bg-primary">
            <a class="navbar-brand" href="/">Title</a>
            <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarColor01"
                aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">
                <span class="navbar-toggler-icon"></span>
            </button>
            <div class="collapse navbar-collapse" id="navbarColor01">
                <ul class="navbar-nav mr-auto">
                    <li class="nav-item">
                        <a class="nav-link" href="#">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link active" href="#">Settings <span class="sr-only">(current)</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Help</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">About</span></a>
                    </li>
                </ul>
            </div>
        </nav>
    </header>

    <main role="main" class="flex-shrink-0">
        <div class="container" id="settingsapp">

            <div class="page-header" id="banner">
                <h1>Settings</h1>
            </div>
            <ul class="nav nav-tabs">
                <li class="nav-item">
                    <a class="nav-link active" data-toggle="tab" href="#home">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" data-toggle="tab" href="#profile">Profile</a>
                </li>
                <li class="nav-item dropdown">
                    <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button"
                        aria-haspopup="true" aria-expanded="false">Dropdown</a>
                    <div class="dropdown-menu" style="">
                        <a class="dropdown-item" data-toggle="tab" href="#dropdown1">Action</a>
                        <a class="dropdown-item" data-toggle="tab" href="#dropdown2">Another action</a>
                    </div>
                </li>
            </ul>
            <div id="myTabContent" class="tab-content">
                <div class="tab-pane fade show active" id="home">
                    <p>Home tab content.</p>
                </div>
                <div class="tab-pane fade" id="profile">
                    <p>Profile tab content.</p>
                </div>
                <div class="tab-pane fade" id="dropdown1">
                    <p>Dropdown 1 content.</p>
                </div>
                <div class="tab-pane fade" id="dropdown2">
                    <p>Dropdown 2 content.</p>
                </div>
            </div>
        </div>
    </main>

    <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

</body>

</html>

My ability to work with Bootstrap and Bootswatch is limited to finding something which does what I need and then editing it to look as I want, so this is a little out of my depth. I am learning, however, each time.


Solution

  • A collaborator helped me figure this out. I was missing the "data-toggle" argument within the dropdown-menu div:

    <div class="dropdown-menu" style="">
        <a class="dropdown-item" href="#dropdown1">Action</a>
        <a class="dropdown-item" href="#dropdown2">Another action</a>
    </div>
    

    becomes:

    <div class="dropdown-menu" style="">
        <a class="dropdown-item" data-toggle="tab" href="#dropdown1">Action</a>
        <a class="dropdown-item" data-toggle="tab" href="#dropdown2">Another action</a>
    </div>
    

    Now I guess I'll see how I can submit a PR over on Bootswatch since this came off their examples.

    I have edited the question above to include the corrected HTML.