How to use?
Add the following library Select2 stylesheet and script in your page.
Copy-paste the stylesheet <link> into your <head> to load the CSS.
              
                <link rel="stylesheet" href="../../assets/vendor/select2/dist/css/select2.min.css">
              
            
            Copy-paste the following <script> near the end of your pages under JS Implementing Plugins to enable it.
              
                <script src="../../assets/vendor/select2/dist/js/select2.full.min.js"></script>
              
            
            Copy-paste the following <script> near the end of your pages under JS Front to enable it.
              
                <script src="../../assets/js/hs.select2.js"></script>
              
            
            Copy-paste the init function under JS Plugins Init., before the closing </body> tag, to enable it.
              
                <script>
                  $(document).on('ready', function () {
                    // initialization of select picker
                    $('.js-custom-select').each(function () {
                      var select2 = $.HSCore.components.HSSelect2.init($(this));
                    });
                  });
                </script>
              
            
          Basic example
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity"
                              }'>
                        <option value="1">Bruce Maynard</option>
                        <option value="2">Hollis Clark</option>
                        <option value="3">Lester Howard</option>
                        <option value="4">George Marino</option>
                        <option value="5">Tyler Johnson</option>
                        <option value="6">Jennifer Craig</option>
                        <option value="7">Martha Barnwell</option>
                        <option value="8">Florencia Todd</option>
                        <option value="9">Henry Sloan</option>
                        <option value="10">Abigail Watson</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Placeholder
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity",
                                "placeholder": "Select member"
                              }'>
                        <option label="empty"></option>
                        <option value="1">Bruce Maynard</option>
                        <option value="2">Hollis Clark</option>
                        <option value="3">Lester Howard</option>
                        <option value="4">George Marino</option>
                        <option value="5">Tyler Johnson</option>
                        <option value="6">Jennifer Craig</option>
                        <option value="7">Martha Barnwell</option>
                        <option value="8">Florencia Todd</option>
                        <option value="9">Henry Sloan</option>
                        <option value="10">Abigail Watson</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Custom width
Use dropdownAutoWidth and width props.
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity",
                                "dropdownAutoWidth": true,
                                "width": "auto"
                              }'>
                        <option value="1">6 entries</option>
                        <option value="2">12 entries</option>
                        <option value="3">18 entries</option>
                        <option value="4">24 entries</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Search
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "placeholder": "Select month"
                              }'>
                        <option value="1" selected>Bruce Maynard</option>
                        <option value="2">Hollis Clark</option>
                        <option value="3">Lester Howard</option>
                        <option value="4">George Marino</option>
                        <option value="5">Tyler Johnson</option>
                        <option value="6">Jennifer Craig</option>
                        <option value="7">Martha Barnwell</option>
                        <option value="8">Florencia Todd</option>
                        <option value="9">Henry Sloan</option>
                        <option value="10">Abigail Watson</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Multiple
                    
                      <!-- Select -->
                      <select class="js-custom-select" multiple
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity"
                              }'>
                        <option value="1" selected>Life</option>
                        <option value="2">Custom</option>
                        <option value="3">New</option>
                        <option value="4">Best Saller</option>
                        <option value="5">Language</option>
                        <option value="6">Stream</option>
                        <option value="7">HTML</option>
                        <option value="8">PHP</option>
                        <option value="9">JavaScript</option>
                        <option value="10">Vue.js</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Multiple selection
                    
                      <!-- Select -->
                      <select class="js-custom-select" multiple
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity",
                                "singleMultiple": true,
                                "placeholder": "Select user"
                              }'>
                        <option value="1" selected>Life</option>
                        <option value="2" selected>Custom</option>
                        <option value="3">New</option>
                        <option value="4" selected>Best Saller</option>
                        <option value="5">Language</option>
                        <option value="6">Stream</option>
                        <option value="7" selected>HTML</option>
                        <option value="8">PHP</option>
                        <option value="9">JavaScript</option>
                        <option value="10">Vue.js</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Optgroup
Use <optgroup> tag
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity"
                              }'>
                        <optgroup label="Optgroup 1">
                          <option value="item-1-1">Item 1</option>
                          <option value="item-1-2">Item 2</option>
                        </optgroup>
                        <optgroup label="Optgroup 2">
                          <option value="item-2-1">Item 1</option>
                          <option value="item-2-2">Item 2</option>
                        </optgroup>
                      </select>
                      <!-- End Select -->
                    
                  
                With append
                    
                      <!-- Input Group -->
                      <div class="input-group">
                        <div class="input-group-prepend">
                          <select class="js-custom-select"
                                  data-hs-select2-options='{
                                    "minimumResultsForSearch": "Infinity",
                                    "width": "140px"
                                  }'>
                            <option value="1" selected>All</option>
                            <option value="2">HTML</option>
                            <option value="3">CSS</option>
                            <option value="4">JS</option>
                            <option value="5">PHP</option>
                            <option value="6">Vue.js</option>
                            <option value="7">React</option>
                            <option value="8">Angular</option>
                            <option value="9">Ruby</option>
                            <option value="10">Python</option>
                          </select>
                        </div>
                        <input type="text" class="form-control" placeholder="Search">
                        <div class="input-group-append">
                          <a class="btn btn-primary" href="#">
                            Search
                          </a>
                        </div>
                      </div>
                      <!-- End Input Group -->
                    
                  
                Placeholder with icon/image
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity",
                                "placeholder": "<span class=\"d-flex align-items-center\"><i class=\"far fa-user icon-text mr-2\"></i> Select member</span>"
                              }'>
                        <option label="empty"></option>
                        <option value="1">Bruce Maynard</option>
                        <option value="2">Hollis Clark</option>
                        <option value="3">Lester Howard</option>
                        <option value="4">George Marino</option>
                        <option value="5">Tyler Johnson</option>
                        <option value="6">Jennifer Craig</option>
                        <option value="7">Martha Barnwell</option>
                        <option value="8">Florencia Todd</option>
                        <option value="9">Henry Sloan</option>
                        <option value="10">Abigail Watson</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Dynamic option creation
                    
                      <!-- Select -->
                      <select class="js-custom-select form-control"
                              data-hs-select2-options='{
                                "tags": true
                              }'>
                        <option value="january" selected>Apple</option>
                        <option value="february">Orange</option>
                      </select>
                      <!-- End Select -->
                    
                  
                With images
                    
                      <!-- Select -->
                      <select class="js-custom-select"
                              data-hs-select2-options='{
                                "placeholder": "Select wallet"
                              }'>
                        <option value="1" selected data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img1.jpg" alt="Image description" /><span>Katy Nelson</span></span>'>
                          Katy Nelson
                        </option>
                        <option value="2" data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img2.jpg" alt="Image description" /><span>Maria Williams</span></span>'>
                          Maria Williams
                        </option>
                        <option value="3" data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img4.jpg" alt="Image description" /><span>Karl Marks</span></span>'>
                          Karl Marks
                        </option>
                        <option value="4" data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img8.jpg" alt="Image description" /><span>Adam Brown</span></span>'>
                          Adam Brown
                        </option>
                        <option value="5" data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img11.jpg" alt="Image description" /><span>Sara Pak</span></span>'>
                          Sara Pak
                        </option>
                        <option value="6" data-option-template='<span class="d-flex align-items-center"><img class="avatar-xs rounded-circle mr-2" src="../../assets/img/100x100/img10.jpg" alt="Image description" /><span>Victoria Drizz</span></span>'>
                          Victoria Drizz
                        </option>
                      </select>
                      <!-- End Select -->
                    
                  
                Disabled
                    
                      <!-- Select -->
                      <select class="js-custom-select" disabled
                              data-hs-select2-options='{
                                "minimumResultsForSearch": "Infinity"
                              }'>
                        <option value="1">Bruce Maynard</option>
                        <option value="2">Hollis Clark</option>
                        <option value="3">Lester Howard</option>
                        <option value="4">George Marino</option>
                        <option value="5">Tyler Johnson</option>
                        <option value="6">Jennifer Craig</option>
                        <option value="7">Martha Barnwell</option>
                        <option value="8">Florencia Todd</option>
                        <option value="9">Henry Sloan</option>
                        <option value="10">Abigail Watson</option>
                      </select>
                      <!-- End Select -->
                    
                  
                Modal example
                    
                      <!-- Button Trigger Modal -->
                      <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">
                        Open modal
                      </button>
                      <!-- End Button Trigger Modal -->
                      <!-- Modal -->
                      <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
                        <div class="modal-dialog" role="document">
                          <div class="modal-content">
                            <div class="modal-header">
                              <h5 class="modal-title" id="exampleModalLabel">Modal Title</h5>
                              <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                <i class="la la-times" aria-hidden="true"></i>
                              </button>
                            </div>
                            <div class="modal-body">
                              <!-- Select -->
                              <select class="js-custom-select"
                                      data-hs-select2-options='{
                                        "minimumResultsForSearch": "Infinity"
                                      }'>
                                <option value="1">Bruce Maynard</option>
                                <option value="2">Hollis Clark</option>
                                <option value="3">Lester Howard</option>
                                <option value="4">George Marino</option>
                                <option value="5">Tyler Johnson</option>
                                <option value="6">Jennifer Craig</option>
                                <option value="7">Martha Barnwell</option>
                                <option value="8">Florencia Todd</option>
                                <option value="9">Henry Sloan</option>
                                <option value="10">Abigail Watson</option>
                              </select>
                              <!-- End Select -->
                            </div>
                            <div class="modal-footer">
                              <button type="button" class="btn btn-white" data-dismiss="modal">Close</button>
                              <button type="button" class="btn btn-primary">Continue</button>
                            </div>
                          </div>
                        </div>
                      </div>
                      <!-- End Modal -->
                    
                  
                Extend
By assigning a variable, you can call the standard methods of the plugin:
              
                <script>
                  $(document).on('ready', function () {
                    // initialization of select2
                    $('.js-custom-select').each(function () {
                      var select2 = $.HSCore.components.HSSelect2.init($(this));
                      select2.on('select2:open', () => {
                        alert('Open!')
                      })
                    });
                  });
                </script>
              
            
          Attributes
By assigning a variable, you can call the standard methods of the plugin:
              
                data-hs-select2-options='{
                 ...
              }' - array
              
            
          Methods
Options can be passed via data attributes or JavaScript. For data attributes, append the option name to data-hs-select2-options='{}'. For more detailed or missing attributes/functions, see the official Select2  documentation page.
| Parameters | Description | Default value | 
|---|---|---|
| 
 | Class for select field | custom-select | 
| 
 | Width of input | 100% | 
| 
 | Placeholder for serach input inside container | false | 
| 
 | Placeholder for serach input inside container | false | 
| 
 | Text neasted input with tags for multiple select | false |