index.html 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. <!doctype html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1">
  6. <link rel="icon" href="favicon.ico">
  7. <link rel="stylesheet" href="https://unpkg.com/bootstrap@5.0.2/dist/css/bootstrap.min.css">
  8. <link rel="stylesheet" href="css/dselect.css">
  9. <title>dselect - Dropdown select box for bootstrap 5</title>
  10. </head>
  11. <body class="bg-light">
  12. <div class="container my-5" style="max-width: calc(360px + 1rem)">
  13. <div class="card card-body border-0 shadow-sm">
  14. <div class="d-flex align-items-center gap-1">
  15. <svg width="36" height="36" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="#0d6efd">
  16. <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z" />
  17. </svg>
  18. <h1>dselect</h1>
  19. </div>
  20. <p class="text-secondary">Dropdown select box for bootstrap 5</p>
  21. <p>
  22. <a href="https://github.com/jarstone/dselect" target="_blank" class="link-secondary text-decoration-none d-flex align-items-center gap-1">
  23. <svg viewBox="0 0 24 24" width="21" height="21" stroke="currentColor" stroke-width="2" fill="none" stroke-linecap="round" stroke-linejoin="round" class="css-i6dzq1"><path d="M9 19c-5 1.5-5-2.5-7-3m14 6v-3.87a3.37 3.37 0 0 0-.94-2.61c3.14-.35 6.44-1.54 6.44-7A5.44 5.44 0 0 0 20 4.77 5.07 5.07 0 0 0 19.91 1S18.73.65 16 2.48a13.38 13.38 0 0 0-7 0C6.27.65 5.09 1 5.09 1A5.07 5.07 0 0 0 5 4.77a5.44 5.44 0 0 0-1.5 3.78c0 5.42 3.3 6.61 6.44 7A3.37 3.37 0 0 0 9 18.13V22"></path></svg>
  24. Github
  25. </a>
  26. </p>
  27. <div style="max-width: 360px" class="my-4 d-flex flex-column gap-5">
  28. <div>
  29. <h6>Basic</h6>
  30. <select class="form-select" id="example-basic">
  31. <option value="chrome">Chrome</option>
  32. <option value="firefox">Firefox</option>
  33. <option value="safari">Safari</option>
  34. <option value="edge">Edge</option>
  35. <option value="opera">Opera</option>
  36. <option value="brave">Brave</option>
  37. </select>
  38. </div>
  39. <div>
  40. <h6>With placeholder</h6>
  41. <select class="form-select" id="example-placeholder">
  42. <option value="">Choose browser</option>
  43. <option value="chrome">Chrome</option>
  44. <option value="firefox">Firefox</option>
  45. <option value="safari">Safari</option>
  46. <option value="edge">Edge</option>
  47. <option value="opera">Opera</option>
  48. <option value="brave">Brave</option>
  49. </select>
  50. </div>
  51. <div>
  52. <h6>Multiple</h6>
  53. <select class="form-select" id="example-multiple" multiple>
  54. <option value="">Choose browser</option>
  55. <option value="chrome" selected>Chrome</option>
  56. <option value="firefox" selected>Firefox</option>
  57. <option value="safari" selected>Safari</option>
  58. <option value="edge">Edge</option>
  59. <option value="opera">Opera</option>
  60. <option value="brave">Brave</option>
  61. </select>
  62. </div>
  63. <div>
  64. <h6>Search</h6>
  65. <select class="form-select" id="example-search">
  66. <option value="">Choose browser</option>
  67. <option value="chrome">Chrome</option>
  68. <option value="firefox">Firefox</option>
  69. <option value="safari">Safari</option>
  70. <option value="edge">Edge</option>
  71. <option value="opera">Opera</option>
  72. <option value="brave">Brave</option>
  73. </select>
  74. </div>
  75. <div>
  76. <h6>Creatable</h6>
  77. <select class="form-select" id="example-creatable">
  78. <option value="">Choose or add browser</option>
  79. <option value="chrome">Chrome</option>
  80. <option value="firefox">Firefox</option>
  81. <option value="safari">Safari</option>
  82. </select>
  83. </div>
  84. <div>
  85. <h6>Clearable</h6>
  86. <select class="form-select" id="example-clearable">
  87. <option value="">Choose browser</option>
  88. <option value="chrome" selected>Chrome</option>
  89. <option value="firefox">Firefox</option>
  90. <option value="safari">Safari</option>
  91. <option value="edge">Edge</option>
  92. <option value="opera">Opera</option>
  93. <option value="brave">Brave</option>
  94. </select>
  95. </div>
  96. <div class="d-flex flex-column gap-1">
  97. <h6>Sizing</h6>
  98. <select class="form-select" id="example-sizing-sm">
  99. <option value="">Choose browser</option>
  100. <option value="chrome">Chrome</option>
  101. <option value="firefox">Firefox</option>
  102. <option value="safari">Safari</option>
  103. <option value="edge">Edge</option>
  104. <option value="opera">Opera</option>
  105. <option value="brave">Brave</option>
  106. </select>
  107. <select class="form-select" id="example-sizing-default">
  108. <option value="">Choose browser</option>
  109. <option value="chrome">Chrome</option>
  110. <option value="firefox">Firefox</option>
  111. <option value="safari">Safari</option>
  112. <option value="edge">Edge</option>
  113. <option value="opera">Opera</option>
  114. <option value="brave">Brave</option>
  115. </select>
  116. <select class="form-select" id="example-sizing-lg">
  117. <option value="">Choose browser</option>
  118. <option value="chrome">Chrome</option>
  119. <option value="firefox">Firefox</option>
  120. <option value="safari">Safari</option>
  121. <option value="edge">Edge</option>
  122. <option value="opera">Opera</option>
  123. <option value="brave">Brave</option>
  124. </select>
  125. </div>
  126. <div>
  127. <h6>Validation</h6>
  128. <form class="needs-validation d-flex flex-column gap-3" novalidate>
  129. <div>
  130. <select class="form-select dselect" data-dselect-clearable="true" required>
  131. <option value="">Choose browser</option>
  132. <option value="chrome">Chrome</option>
  133. <option value="firefox">Firefox</option>
  134. <option value="safari">Safari</option>
  135. <option value="edge">Edge</option>
  136. <option value="opera">Opera</option>
  137. <option value="brave">Brave</option>
  138. </select>
  139. <div class="invalid-feedback">This field is required.</div>
  140. <div class="valid-feedback">Good choice.</div>
  141. </div>
  142. <div>
  143. <select class="form-select dselect" multiple required>
  144. <option value="">Choose browser</option>
  145. <option value="chrome">Chrome</option>
  146. <option value="firefox">Firefox</option>
  147. <option value="safari">Safari</option>
  148. <option value="edge">Edge</option>
  149. <option value="opera">Opera</option>
  150. <option value="brave">Brave</option>
  151. </select>
  152. <div class="invalid-feedback">This field is required.</div>
  153. <div class="valid-feedback">Good choice.</div>
  154. </div>
  155. <button class="btn btn-primary" type="submit">Submit</button>
  156. </form>
  157. </div>
  158. </div>
  159. </div>
  160. </div>
  161. <script src="https://unpkg.com/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"></script>
  162. <script src="js/dselect.js"></script>
  163. <script>
  164. // basic
  165. dselect(document.querySelector('#example-basic'))
  166. // placeholder
  167. dselect(document.querySelector('#example-placeholder'))
  168. // multiple
  169. dselect(document.querySelector('#example-multiple'))
  170. // search
  171. dselect(document.querySelector('#example-search'), {
  172. search: true
  173. })
  174. // creatable
  175. dselect(document.querySelector('#example-creatable'), {
  176. search: true,
  177. creatable: true
  178. })
  179. // clearable
  180. dselect(document.querySelector('#example-clearable'), {
  181. clearable: true
  182. })
  183. // Sizing
  184. dselect(document.querySelector('#example-sizing-sm'), {
  185. size: 'sm'
  186. })
  187. dselect(document.querySelector('#example-sizing-default'))
  188. dselect(document.querySelector('#example-sizing-lg'), {
  189. size: 'lg'
  190. })
  191. // Validation
  192. // Enable dselect on all '.dselect'
  193. for (const el of document.querySelectorAll('.dselect')) {
  194. dselect(el)
  195. }
  196. // Example starter JavaScript for disabling form submissions if there are invalid fields
  197. void (function() {
  198. document.querySelectorAll('.needs-validation').forEach(form => {
  199. form.addEventListener('submit', event => {
  200. if (!form.checkValidity()) {
  201. event.preventDefault()
  202. event.stopPropagation()
  203. }
  204. form.classList.add('was-validated')
  205. })
  206. })
  207. })()
  208. </script>
  209. </body>
  210. </html>