Open In App

Primer CSS Select menu

Improve
Improve
Like Article
Like
Save
Share
Report

Primer CSS is a free open-source CSS framework built on principles that establish the foundation for basic design elements including spacing, typeface, and color. Our patterns will be consistent and compatible as a result of this method. Its CSS approach is influenced by object-oriented CSS concepts, functional CSS, and BEM architecture. It’s incredibly adaptable and reusable. It was created with the help of the GitHub design system. Primer CSS is self-explanatory and transparent. 

In this article, we will be knowing in detail about the Select Menu in Primer CSS. Primer CSS Select menu is used to make different types of menus. It also provides us with a lot of functionalities like adjusting the layout, selecting the menu, adding a header and footer, adding a divider, using a filter, etc. 

Primer CSS Select Menu:

  • SelectMenu: This class is used to specify which container will have the whole menu which means the modal, items, etc.
  • SelectMenu-modal: This class is used to specify the div which will be the modal for the select menu.
  • SelectMenu-list: This class specifies the list which will hold all the items for the select menu. In this list, we can add avatars, icons, multiple lines of text, heading, etc. 
  • SelectMenu-item: It is used the specify all the options of the basic select menu.
  • SelectMenu-icon: This class specifies the icon which will be shown in front of the item which will be selected. It will be shown when the aria-checked will have the value true.
  • SelectMenu-list–borderless: Adding this class defines that the items of the menu will not have any borders around them. 

Syntax:

<div class="SelectMenu right-[0-12] SelectMenu--hasFilter">
    <div class="SelectMenu-modal">
      <div class="SelectMenu-list SelectMenu-list--borderless">
        <button class="SelectMenu-item">...</button>
        <div class="SelectMenu-divider">...</div>
        <button class="SelectMenu-item">...</button>
         <svg class="SelectMenu-icon SelectMenu-icon--check"></svg>
            ...
            <button class="SelectMenu-message">...</button>
      </div>
    </div>
     <footer class="SelectMenu-footer">...</footer>
</div>

Right-aligned Select Menu: The main important step to having a right-aligned menu is to make the whole container holding the select menu a flex container. 

  • right-[0-12]: This class is used to push the whole select menu to the right. The value of scale 0-12 is used to specify the amount of distance of the menu from the right boundary of the window. 

Primer CSS does not give us the functionality which we can use to change the aria-checked attribute dynamically. For that, we can use some client-side scripting language and add the functionality which will change the value to toggle the visibility of the icon before the item of the menu whenever the item will be clicked on. 

The disabled attribute can be added to the buttons of the select menu which will define that button in the menu is disabled and cannot be used. 

For anchor tags, the value of the aria-disabled is given as true to keep it disabled

Example 1: The code below demonstrates the usage of the Selected State of the Select Menu. 

HTML




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0">
          
    <link href=
"https://unpkg.com/@primer/css@^19.0.0/dist/primer.css" 
          rel="stylesheet" />  
    <script src=
    </script>
    <title>Primer CSS Select menu</title>
</head>
<body>
    <div class="m-4">
        <h1 class="color-fg-success"> GeeksforGeeks </h1>
        <h3>Primer CSS Select menu</h3>
        <br/> 
    </div>
    <details class="details-reset details-overlay m-5" open>
        <summary class="btn" aria-haspopup="true">
          Choose the topic
        </summary>
        <div class="SelectMenu">
            <div class="SelectMenu-modal">
                <div class="SelectMenu-list">
                  <button class="SelectMenu-item" role="menuitemcheckbox" 
                          aria-checked="true">
                    <img src=
                         class="SelectMenu-icon SelectMenu-icon--check" alt="">
                    DSA
                  </button>
                  <button class="SelectMenu-item" role="menuitemcheckbox">
                    <svg width="16" height="16"></svg>
                    Algorithms
                  </button>
                  <button class="SelectMenu-item" role="menuitemcheckbox" 
                          aria-checked="true">
                    <img src=
                         class="SelectMenu-icon SelectMenu-icon--check" alt="">
                    Interview Preparation
                  </button>
                  <button class="SelectMenu-item" role="menuitemcheckbox">
                    <svg width="16" height="16"></svg>
                    Topic-wise Preparation
                  </button>
                  <button class="SelectMenu-item" role="menuitemcheckbox">
                    <svg width="16" height="16"></svg>
                    Competetive Programming
                  </button>
                </div>
             </div>
        </div>
    </details>
</body>
</html>


Output:

 

Example 2: This code below demonstrates the usage of the message, disabled state, and divider

HTML




<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible"
          content="IE=edge">
    <meta name="viewport" 
          content="width=device-width, initial-scale=1.0">
          
    <link href=
"https://unpkg.com/@primer/css@^19.0.0/dist/primer.css" 
          rel="stylesheet" />  
    <script src=
    </script>
</head>
<body>
    <div class="m-4">
        <h1 class="color-fg-success"> GeeksforGeeks </h1>
        <h3>Primer CSS Select menu</h3>
        <br/> 
    </div>
    <details class="details-reset details-overlay m-5" open>
        <summary class="btn" aria-haspopup="true">
          Choose the topic
        </summary>
        <div class="SelectMenu">
            <div class="SelectMenu-modal">
                <div class="SelectMenu-list">
                    <button class="SelectMenu-message 
                                   color-fg-danger border-0">
                       Unavailable options are disabled
                    </button>
                    <button class="SelectMenu-item" 
                            role="menuitemcheckbox" 
                              aria-checked="true">
                       DSA
                    </button>
                    <button class="SelectMenu-item"
                            role="menuitemcheckbox">
                       Algorithms
                    </button>
                    <button class="SelectMenu-item" 
                            role="menuitemcheckbox" 
                            aria-checked="true" 
                            aria-disabled="true">
                       Interview Preparation
                    </button>
                    <button class="SelectMenu-item"
                            role="menuitemcheckbox">
                       Topic-wise Preparation
                    </button>
                    <button class="SelectMenu-item"
                            role="menuitemcheckbox">
                       Competetive Programming
                    </button>
                    <div class="SelectMenu-divider">
                       Languages
                    </div>
                    <button class="SelectMenu-item"
                            role="menuitemcheckbox" >
                        C++
                    </button>
                    <button class="SelectMenu-item" 
                            role="menuitemcheckbox">
                        Java
                    </button>
                    <button class="SelectMenu-item" 
                            role="menuitemcheckbox" 
                            aria-disabled="true">
                        Python
                    </button>
                </div>
            </div>
        </div>
    </details>
</body>
</html>


Output:

 



Last Updated : 07 Mar, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads