jekyll-rubin-collab-theme 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (389) hide show
  1. checksums.yaml +4 -4
  2. data/_third_party/mdb-ui-kit/.gitignore +1 -0
  3. data/_third_party/mdb-ui-kit/LICENSE +21 -0
  4. data/_third_party/mdb-ui-kit/README.md +551 -0
  5. data/_third_party/mdb-ui-kit/README.txt +8 -0
  6. data/_third_party/mdb-ui-kit/css/mdb.dark.min.css +23 -0
  7. data/_third_party/mdb-ui-kit/css/mdb.dark.min.css.map +1 -0
  8. data/_third_party/mdb-ui-kit/css/mdb.dark.rtl.min.css +10 -0
  9. data/_third_party/mdb-ui-kit/css/mdb.dark.rtl.min.css.map +1 -0
  10. data/_third_party/mdb-ui-kit/css/mdb.min.css +40 -0
  11. data/_third_party/mdb-ui-kit/css/mdb.min.css.map +1 -0
  12. data/_third_party/mdb-ui-kit/css/mdb.rtl.min.css +10 -0
  13. data/_third_party/mdb-ui-kit/css/mdb.rtl.min.css.map +1 -0
  14. data/_third_party/mdb-ui-kit/img/mdb-favicon.ico +0 -0
  15. data/_third_party/mdb-ui-kit/index.html +52 -0
  16. data/_third_party/mdb-ui-kit/js/mdb.min.js +20 -0
  17. data/_third_party/mdb-ui-kit/js/mdb.min.js.map +1 -0
  18. data/_third_party/mdb-ui-kit/license.txt +153 -0
  19. data/_third_party/mdb-ui-kit/package.json +9 -0
  20. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/alert.js +112 -0
  21. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/alert.js.map +1 -0
  22. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/base-component.js +113 -0
  23. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/base-component.js.map +1 -0
  24. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/button.js +91 -0
  25. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/button.js.map +1 -0
  26. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/carousel.js +515 -0
  27. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/carousel.js.map +1 -0
  28. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/collapse.js +341 -0
  29. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/collapse.js.map +1 -0
  30. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/data.js +73 -0
  31. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/data.js.map +1 -0
  32. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/event-handler.js +346 -0
  33. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/event-handler.js.map +1 -0
  34. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/manipulator.js +89 -0
  35. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/manipulator.js.map +1 -0
  36. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/selector-engine.js +101 -0
  37. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dom/selector-engine.js.map +1 -0
  38. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dropdown.js +556 -0
  39. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/dropdown.js.map +1 -0
  40. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/modal.js +452 -0
  41. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/modal.js.map +1 -0
  42. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/offcanvas.js +344 -0
  43. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/offcanvas.js.map +1 -0
  44. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/popover.js +108 -0
  45. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/popover.js.map +1 -0
  46. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/scrollspy.js +340 -0
  47. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/scrollspy.js.map +1 -0
  48. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tab.js +355 -0
  49. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tab.js.map +1 -0
  50. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/toast.js +256 -0
  51. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/toast.js.map +1 -0
  52. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tooltip.js +749 -0
  53. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/tooltip.js.map +1 -0
  54. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/backdrop.js +169 -0
  55. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/backdrop.js.map +1 -0
  56. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/component-functions.js +59 -0
  57. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/component-functions.js.map +1 -0
  58. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/config.js +90 -0
  59. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/config.js.map +1 -0
  60. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/focustrap.js +139 -0
  61. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/focustrap.js.map +1 -0
  62. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/index.js +350 -0
  63. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/index.js.map +1 -0
  64. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/sanitizer.js +142 -0
  65. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/sanitizer.js.map +1 -0
  66. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/scrollbar.js +157 -0
  67. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/scrollbar.js.map +1 -0
  68. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/swipe.js +173 -0
  69. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/swipe.js.map +1 -0
  70. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/template-factory.js +193 -0
  71. data/_third_party/mdb-ui-kit/src/js/bootstrap/dist/util/template-factory.js.map +1 -0
  72. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/alert.js +87 -0
  73. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/base-component.js +87 -0
  74. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/button.js +72 -0
  75. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/carousel.js +482 -0
  76. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/collapse.js +308 -0
  77. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/data.js +59 -0
  78. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/event-handler.js +333 -0
  79. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/manipulator.js +73 -0
  80. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dom/selector-engine.js +85 -0
  81. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/dropdown.js +477 -0
  82. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/modal.js +379 -0
  83. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/offcanvas.js +278 -0
  84. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/popover.js +98 -0
  85. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/scrollspy.js +312 -0
  86. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/tab.js +320 -0
  87. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/toast.js +225 -0
  88. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/tooltip.js +657 -0
  89. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/backdrop.js +149 -0
  90. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/component-functions.js +32 -0
  91. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/config.js +66 -0
  92. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/focustrap.js +119 -0
  93. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/index.js +342 -0
  94. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/sanitizer.js +122 -0
  95. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/scrollbar.js +126 -0
  96. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/swipe.js +148 -0
  97. data/_third_party/mdb-ui-kit/src/js/bootstrap/mdb-prefix/util/template-factory.js +162 -0
  98. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/alert.js +87 -0
  99. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/base-component.js +87 -0
  100. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/button.js +72 -0
  101. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/carousel.js +482 -0
  102. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/collapse.js +308 -0
  103. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/data.js +59 -0
  104. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/event-handler.js +333 -0
  105. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/manipulator.js +73 -0
  106. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dom/selector-engine.js +85 -0
  107. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/dropdown.js +477 -0
  108. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/modal.js +377 -0
  109. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/offcanvas.js +278 -0
  110. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/popover.js +98 -0
  111. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/scrollspy.js +301 -0
  112. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/tab.js +320 -0
  113. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/toast.js +225 -0
  114. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/tooltip.js +657 -0
  115. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/backdrop.js +149 -0
  116. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/component-functions.js +32 -0
  117. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/config.js +66 -0
  118. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/focustrap.js +119 -0
  119. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/index.js +342 -0
  120. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/sanitizer.js +122 -0
  121. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/scrollbar.js +126 -0
  122. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/swipe.js +148 -0
  123. data/_third_party/mdb-ui-kit/src/js/bootstrap/src/util/template-factory.js +162 -0
  124. data/_third_party/mdb-ui-kit/src/js/free/alert.js +95 -0
  125. data/_third_party/mdb-ui-kit/src/js/free/button.js +258 -0
  126. data/_third_party/mdb-ui-kit/src/js/free/carousel.js +107 -0
  127. data/_third_party/mdb-ui-kit/src/js/free/collapse.js +115 -0
  128. data/_third_party/mdb-ui-kit/src/js/free/dropdown.js +277 -0
  129. data/_third_party/mdb-ui-kit/src/js/free/input.js +443 -0
  130. data/_third_party/mdb-ui-kit/src/js/free/modal.js +129 -0
  131. data/_third_party/mdb-ui-kit/src/js/free/popover.js +126 -0
  132. data/_third_party/mdb-ui-kit/src/js/free/range.js +162 -0
  133. data/_third_party/mdb-ui-kit/src/js/free/ripple.js +463 -0
  134. data/_third_party/mdb-ui-kit/src/js/free/scrollspy.js +166 -0
  135. data/_third_party/mdb-ui-kit/src/js/free/tab.js +170 -0
  136. data/_third_party/mdb-ui-kit/src/js/free/toast.js +116 -0
  137. data/_third_party/mdb-ui-kit/src/js/free/tooltip.js +126 -0
  138. data/_third_party/mdb-ui-kit/src/js/mdb/dom/data.js +67 -0
  139. data/_third_party/mdb-ui-kit/src/js/mdb/dom/event-handler.js +355 -0
  140. data/_third_party/mdb-ui-kit/src/js/mdb/dom/manipulator.js +118 -0
  141. data/_third_party/mdb-ui-kit/src/js/mdb/dom/selector-engine.js +84 -0
  142. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/click-rail.js +30 -0
  143. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/drag-thumb.js +98 -0
  144. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/keyboard.js +147 -0
  145. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/mouse-wheel.js +158 -0
  146. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/handlers/touch.js +212 -0
  147. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/index.js +236 -0
  148. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/class-names.js +47 -0
  149. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/css.js +16 -0
  150. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/dom.js +36 -0
  151. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/event-manager.js +78 -0
  152. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/lib/util.js +39 -0
  153. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/process-scroll-diff.js +65 -0
  154. data/_third_party/mdb-ui-kit/src/js/mdb/perfect-scrollbar/update-geometry.js +154 -0
  155. data/_third_party/mdb-ui-kit/src/js/mdb/util/focusTrap.js +97 -0
  156. data/_third_party/mdb-ui-kit/src/js/mdb/util/index.js +242 -0
  157. data/_third_party/mdb-ui-kit/src/js/mdb/util/keycodes.js +40 -0
  158. data/_third_party/mdb-ui-kit/src/js/mdb/util/sanitizer.js +130 -0
  159. data/_third_party/mdb-ui-kit/src/js/mdb/util/scrollbar.js +83 -0
  160. data/_third_party/mdb-ui-kit/src/js/mdb/util/stack.js +105 -0
  161. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/index.js +47 -0
  162. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/swipe.js +81 -0
  163. data/_third_party/mdb-ui-kit/src/js/mdb/util/touch/touchUtil.js +24 -0
  164. data/_third_party/mdb-ui-kit/src/js/mdb.free.js +36 -0
  165. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_accordion.scss +153 -0
  166. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_alert.scss +69 -0
  167. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_badge.scss +38 -0
  168. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_breadcrumb.scss +43 -0
  169. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_button-group.scss +143 -0
  170. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_buttons.scss +214 -0
  171. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_card.scss +248 -0
  172. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_carousel.scss +231 -0
  173. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_close.scss +40 -0
  174. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_containers.scss +41 -0
  175. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_dropdown.scss +247 -0
  176. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_forms.scss +9 -0
  177. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_functions.scss +355 -0
  178. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_grid.scss +32 -0
  179. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_helpers.scss +10 -0
  180. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_images.scss +41 -0
  181. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_list-group.scss +198 -0
  182. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_maps.scss +54 -0
  183. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_mixins.scss +43 -0
  184. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_modal.scss +247 -0
  185. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_nav.scss +173 -0
  186. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_navbar.scss +274 -0
  187. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_offcanvas.scss +153 -0
  188. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_pagination.scss +118 -0
  189. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_placeholders.scss +56 -0
  190. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_popover.scss +210 -0
  191. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_progress.scss +61 -0
  192. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_reboot.scss +590 -0
  193. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_root.scss +73 -0
  194. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_spinners.scss +88 -0
  195. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_tables.scss +161 -0
  196. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_toasts.scss +78 -0
  197. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_tooltip.scss +126 -0
  198. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_transitions.scss +27 -0
  199. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_type.scss +104 -0
  200. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_utilities.scss +747 -0
  201. data/_third_party/mdb-ui-kit/src/scss/bootstrap/_variables.scss +1631 -0
  202. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-grid.scss +64 -0
  203. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-reboot.scss +9 -0
  204. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap-utilities.scss +18 -0
  205. data/_third_party/mdb-ui-kit/src/scss/bootstrap/bootstrap.scss +50 -0
  206. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_floating-labels.scss +75 -0
  207. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-check.scss +176 -0
  208. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-control.scss +198 -0
  209. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-range.scss +95 -0
  210. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-select.scss +75 -0
  211. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_form-text.scss +11 -0
  212. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_input-group.scss +135 -0
  213. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_labels.scss +36 -0
  214. data/_third_party/mdb-ui-kit/src/scss/bootstrap/forms/_validation.scss +12 -0
  215. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_clearfix.scss +3 -0
  216. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_color-bg.scss +11 -0
  217. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_colored-links.scss +16 -0
  218. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_position.scss +36 -0
  219. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_ratio.scss +26 -0
  220. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_stacks.scss +15 -0
  221. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_stretched-link.scss +15 -0
  222. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_text-truncation.scss +7 -0
  223. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_visually-hidden.scss +8 -0
  224. data/_third_party/mdb-ui-kit/src/scss/bootstrap/helpers/_vr.scss +8 -0
  225. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_alert.scss +15 -0
  226. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_backdrop.scss +18 -0
  227. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_banner.scss +8 -0
  228. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_border-radius.scss +77 -0
  229. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_box-shadow.scss +18 -0
  230. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_breakpoints.scss +131 -0
  231. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_buttons.scss +90 -0
  232. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_caret.scss +64 -0
  233. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_clearfix.scss +9 -0
  234. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_color-scheme.scss +7 -0
  235. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_container.scss +15 -0
  236. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_deprecate.scss +10 -0
  237. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_forms.scss +153 -0
  238. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_gradients.scss +80 -0
  239. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_grid.scss +169 -0
  240. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_image.scss +16 -0
  241. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_list-group.scss +24 -0
  242. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_lists.scss +7 -0
  243. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_pagination.scss +10 -0
  244. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_reset-text.scss +17 -0
  245. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_resize.scss +6 -0
  246. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_table-variants.scss +24 -0
  247. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_text-truncate.scss +8 -0
  248. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_transition.scss +26 -0
  249. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_utilities.scss +112 -0
  250. data/_third_party/mdb-ui-kit/src/scss/bootstrap/mixins/_visually-hidden.scss +29 -0
  251. data/_third_party/mdb-ui-kit/src/scss/bootstrap/utilities/_api.scss +49 -0
  252. data/_third_party/mdb-ui-kit/src/scss/bootstrap/vendor/_rfs.scss +351 -0
  253. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_accordion.scss +153 -0
  254. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_alert.scss +69 -0
  255. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_badge.scss +38 -0
  256. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_breadcrumb.scss +43 -0
  257. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_button-group.scss +143 -0
  258. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_buttons.scss +214 -0
  259. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_card.scss +248 -0
  260. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_carousel.scss +231 -0
  261. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_close.scss +40 -0
  262. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_containers.scss +41 -0
  263. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_dropdown.scss +247 -0
  264. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_forms.scss +9 -0
  265. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_functions.scss +355 -0
  266. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_grid.scss +32 -0
  267. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_helpers.scss +10 -0
  268. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_images.scss +41 -0
  269. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_list-group.scss +198 -0
  270. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_maps.scss +54 -0
  271. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_mixins.scss +43 -0
  272. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_modal.scss +247 -0
  273. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_nav.scss +173 -0
  274. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_navbar.scss +274 -0
  275. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_offcanvas.scss +153 -0
  276. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_pagination.scss +118 -0
  277. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_placeholders.scss +56 -0
  278. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_popover.scss +210 -0
  279. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_progress.scss +61 -0
  280. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_reboot.scss +590 -0
  281. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_root.scss +73 -0
  282. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_spinners.scss +88 -0
  283. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_tables.scss +161 -0
  284. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_toasts.scss +78 -0
  285. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_tooltip.scss +126 -0
  286. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_transitions.scss +27 -0
  287. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_type.scss +104 -0
  288. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_utilities.scss +747 -0
  289. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/_variables.scss +1631 -0
  290. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-grid.scss +64 -0
  291. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-reboot.scss +9 -0
  292. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap-utilities.scss +18 -0
  293. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/bootstrap.scss +50 -0
  294. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_floating-labels.scss +75 -0
  295. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-check.scss +176 -0
  296. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-control.scss +198 -0
  297. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-range.scss +95 -0
  298. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-select.scss +75 -0
  299. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_form-text.scss +11 -0
  300. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_input-group.scss +135 -0
  301. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_labels.scss +36 -0
  302. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/forms/_validation.scss +12 -0
  303. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_clearfix.scss +3 -0
  304. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_color-bg.scss +11 -0
  305. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_colored-links.scss +16 -0
  306. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_position.scss +36 -0
  307. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_ratio.scss +26 -0
  308. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_stacks.scss +15 -0
  309. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_stretched-link.scss +15 -0
  310. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_text-truncation.scss +7 -0
  311. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_visually-hidden.scss +8 -0
  312. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/helpers/_vr.scss +8 -0
  313. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_alert.scss +15 -0
  314. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_backdrop.scss +18 -0
  315. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_banner.scss +8 -0
  316. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_border-radius.scss +77 -0
  317. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_box-shadow.scss +18 -0
  318. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_breakpoints.scss +131 -0
  319. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_buttons.scss +90 -0
  320. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_caret.scss +64 -0
  321. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_clearfix.scss +9 -0
  322. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_color-scheme.scss +7 -0
  323. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_container.scss +15 -0
  324. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_deprecate.scss +10 -0
  325. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_forms.scss +153 -0
  326. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_gradients.scss +80 -0
  327. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_grid.scss +169 -0
  328. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_image.scss +15 -0
  329. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_list-group.scss +24 -0
  330. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_lists.scss +7 -0
  331. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_pagination.scss +10 -0
  332. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_reset-text.scss +17 -0
  333. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_resize.scss +6 -0
  334. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_table-variants.scss +24 -0
  335. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_text-truncate.scss +8 -0
  336. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_transition.scss +26 -0
  337. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_utilities.scss +112 -0
  338. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/mixins/_visually-hidden.scss +29 -0
  339. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/utilities/_api.scss +49 -0
  340. data/_third_party/mdb-ui-kit/src/scss/bootstrap-rtl-fix/vendor/_rfs.scss +351 -0
  341. data/_third_party/mdb-ui-kit/src/scss/custom/_styles.scss +1 -0
  342. data/_third_party/mdb-ui-kit/src/scss/custom/_variables.scss +1 -0
  343. data/_third_party/mdb-ui-kit/src/scss/free/_accordion.scss +52 -0
  344. data/_third_party/mdb-ui-kit/src/scss/free/_alert.scss +39 -0
  345. data/_third_party/mdb-ui-kit/src/scss/free/_badge.scss +51 -0
  346. data/_third_party/mdb-ui-kit/src/scss/free/_breadcrumb.scss +35 -0
  347. data/_third_party/mdb-ui-kit/src/scss/free/_button-group.scss +100 -0
  348. data/_third_party/mdb-ui-kit/src/scss/free/_buttons.scss +609 -0
  349. data/_third_party/mdb-ui-kit/src/scss/free/_card.scss +53 -0
  350. data/_third_party/mdb-ui-kit/src/scss/free/_carousel.scss +31 -0
  351. data/_third_party/mdb-ui-kit/src/scss/free/_close.scss +10 -0
  352. data/_third_party/mdb-ui-kit/src/scss/free/_colors.scss +11 -0
  353. data/_third_party/mdb-ui-kit/src/scss/free/_deprecated.scss +32 -0
  354. data/_third_party/mdb-ui-kit/src/scss/free/_dropdown.scss +148 -0
  355. data/_third_party/mdb-ui-kit/src/scss/free/_flag.scss +1046 -0
  356. data/_third_party/mdb-ui-kit/src/scss/free/_functions.scss +18 -0
  357. data/_third_party/mdb-ui-kit/src/scss/free/_images.scss +87 -0
  358. data/_third_party/mdb-ui-kit/src/scss/free/_list-group.scss +68 -0
  359. data/_third_party/mdb-ui-kit/src/scss/free/_mixins.scss +8 -0
  360. data/_third_party/mdb-ui-kit/src/scss/free/_modal.scss +12 -0
  361. data/_third_party/mdb-ui-kit/src/scss/free/_nav.scss +100 -0
  362. data/_third_party/mdb-ui-kit/src/scss/free/_navbar.scss +50 -0
  363. data/_third_party/mdb-ui-kit/src/scss/free/_pagination.scss +99 -0
  364. data/_third_party/mdb-ui-kit/src/scss/free/_popover.scss +18 -0
  365. data/_third_party/mdb-ui-kit/src/scss/free/_progress.scss +6 -0
  366. data/_third_party/mdb-ui-kit/src/scss/free/_range.scss +58 -0
  367. data/_third_party/mdb-ui-kit/src/scss/free/_reboot.scss +66 -0
  368. data/_third_party/mdb-ui-kit/src/scss/free/_ripple.scss +51 -0
  369. data/_third_party/mdb-ui-kit/src/scss/free/_root.scss +8 -0
  370. data/_third_party/mdb-ui-kit/src/scss/free/_scrollspy.scss +49 -0
  371. data/_third_party/mdb-ui-kit/src/scss/free/_shadows.scss +1 -0
  372. data/_third_party/mdb-ui-kit/src/scss/free/_tables.scss +45 -0
  373. data/_third_party/mdb-ui-kit/src/scss/free/_toasts.scss +52 -0
  374. data/_third_party/mdb-ui-kit/src/scss/free/_tooltip.scss +17 -0
  375. data/_third_party/mdb-ui-kit/src/scss/free/_type.scss +27 -0
  376. data/_third_party/mdb-ui-kit/src/scss/free/_utilities.scss +216 -0
  377. data/_third_party/mdb-ui-kit/src/scss/free/_variables.scss +1875 -0
  378. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-check.scss +262 -0
  379. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-control.scss +244 -0
  380. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-file.scss +12 -0
  381. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-range.scss +48 -0
  382. data/_third_party/mdb-ui-kit/src/scss/free/forms/_form-select.scss +19 -0
  383. data/_third_party/mdb-ui-kit/src/scss/free/forms/_input-group.scss +127 -0
  384. data/_third_party/mdb-ui-kit/src/scss/free/forms/_validation.scss +266 -0
  385. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_buttons.scss +60 -0
  386. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_ripple.scss +28 -0
  387. data/_third_party/mdb-ui-kit/src/scss/free/mixins/_table-variants.scss +9 -0
  388. data/_third_party/mdb-ui-kit/src/scss/mdb.free.scss +103 -0
  389. metadata +388 -1
@@ -0,0 +1,73 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.2.3): dom/manipulator.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ function normalizeData(value) {
9
+ if (value === 'true') {
10
+ return true;
11
+ }
12
+
13
+ if (value === 'false') {
14
+ return false;
15
+ }
16
+
17
+ if (value === Number(value).toString()) {
18
+ return Number(value);
19
+ }
20
+
21
+ if (value === '' || value === 'null') {
22
+ return null;
23
+ }
24
+
25
+ if (typeof value !== 'string') {
26
+ return value;
27
+ }
28
+
29
+ try {
30
+ return JSON.parse(decodeURIComponent(value));
31
+ } catch {
32
+ return value;
33
+ }
34
+ }
35
+
36
+ function normalizeDataKey(key) {
37
+ return key.replace(/[A-Z]/g, (chr) => `-${chr.toLowerCase()}`);
38
+ }
39
+
40
+ const Manipulator = {
41
+ setDataAttribute(element, key, value) {
42
+ element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);
43
+ },
44
+
45
+ removeDataAttribute(element, key) {
46
+ element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);
47
+ },
48
+
49
+ getDataAttributes(element) {
50
+ if (!element) {
51
+ return {};
52
+ }
53
+
54
+ const attributes = {};
55
+ const bsKeys = Object.keys(element.dataset).filter(
56
+ (key) => key.startsWith('bs') && !key.startsWith('bsConfig')
57
+ );
58
+
59
+ for (const key of bsKeys) {
60
+ let pureKey = key.replace(/^bs/, '');
61
+ pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);
62
+ attributes[pureKey] = normalizeData(element.dataset[key]);
63
+ }
64
+
65
+ return attributes;
66
+ },
67
+
68
+ getDataAttribute(element, key) {
69
+ return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));
70
+ },
71
+ };
72
+
73
+ export default Manipulator;
@@ -0,0 +1,85 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.2.3): dom/selector-engine.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import { isDisabled, isVisible } from '../util/index';
9
+
10
+ /**
11
+ * Constants
12
+ */
13
+
14
+ const SelectorEngine = {
15
+ find(selector, element = document.documentElement) {
16
+ return [].concat(...Element.prototype.querySelectorAll.call(element, selector));
17
+ },
18
+
19
+ findOne(selector, element = document.documentElement) {
20
+ return Element.prototype.querySelector.call(element, selector);
21
+ },
22
+
23
+ children(element, selector) {
24
+ return [].concat(...element.children).filter((child) => child.matches(selector));
25
+ },
26
+
27
+ parents(element, selector) {
28
+ const parents = [];
29
+ let ancestor = element.parentNode.closest(selector);
30
+
31
+ while (ancestor) {
32
+ parents.push(ancestor);
33
+ ancestor = ancestor.parentNode.closest(selector);
34
+ }
35
+
36
+ return parents;
37
+ },
38
+
39
+ prev(element, selector) {
40
+ let previous = element.previousElementSibling;
41
+
42
+ while (previous) {
43
+ if (previous.matches(selector)) {
44
+ return [previous];
45
+ }
46
+
47
+ previous = previous.previousElementSibling;
48
+ }
49
+
50
+ return [];
51
+ },
52
+ // TODO: this is now unused; remove later along with prev()
53
+ next(element, selector) {
54
+ let next = element.nextElementSibling;
55
+
56
+ while (next) {
57
+ if (next.matches(selector)) {
58
+ return [next];
59
+ }
60
+
61
+ next = next.nextElementSibling;
62
+ }
63
+
64
+ return [];
65
+ },
66
+
67
+ focusableChildren(element) {
68
+ const focusables = [
69
+ 'a',
70
+ 'button',
71
+ 'input',
72
+ 'textarea',
73
+ 'select',
74
+ 'details',
75
+ '[tabindex]',
76
+ '[contenteditable="true"]',
77
+ ]
78
+ .map((selector) => `${selector}:not([tabindex^="-"])`)
79
+ .join(',');
80
+
81
+ return this.find(focusables, element).filter((el) => !isDisabled(el) && isVisible(el));
82
+ },
83
+ };
84
+
85
+ export default SelectorEngine;
@@ -0,0 +1,477 @@
1
+ /**
2
+ * --------------------------------------------------------------------------
3
+ * Bootstrap (v5.2.3): dropdown.js
4
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
+ * --------------------------------------------------------------------------
6
+ */
7
+
8
+ import * as Popper from '@popperjs/core';
9
+ import {
10
+ defineJQueryPlugin,
11
+ getElement,
12
+ getNextActiveElement,
13
+ isDisabled,
14
+ isElement,
15
+ isRTL,
16
+ isVisible,
17
+ noop,
18
+ } from './util/index';
19
+ import EventHandler from './dom/event-handler';
20
+ import Manipulator from './dom/manipulator';
21
+ import SelectorEngine from './dom/selector-engine';
22
+ import BaseComponent from './base-component';
23
+
24
+ /**
25
+ * Constants
26
+ */
27
+
28
+ const NAME = 'dropdown';
29
+ const DATA_KEY = 'bs.dropdown';
30
+ const EVENT_KEY = `.${DATA_KEY}`;
31
+ const DATA_API_KEY = '.data-api';
32
+
33
+ const ESCAPE_KEY = 'Escape';
34
+ const TAB_KEY = 'Tab';
35
+ const ARROW_UP_KEY = 'ArrowUp';
36
+ const ARROW_DOWN_KEY = 'ArrowDown';
37
+ const RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button
38
+
39
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
40
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
41
+ const EVENT_SHOW = `show${EVENT_KEY}`;
42
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
43
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
44
+ const EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`;
45
+ const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
46
+
47
+ const CLASS_NAME_SHOW = 'show';
48
+ const CLASS_NAME_DROPUP = 'dropup';
49
+ const CLASS_NAME_DROPEND = 'dropend';
50
+ const CLASS_NAME_DROPSTART = 'dropstart';
51
+ const CLASS_NAME_DROPUP_CENTER = 'dropup-center';
52
+ const CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';
53
+
54
+ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)';
55
+ const SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE}.${CLASS_NAME_SHOW}`;
56
+ const SELECTOR_MENU = '.dropdown-menu';
57
+ const SELECTOR_NAVBAR = '.navbar';
58
+ const SELECTOR_NAVBAR_NAV = '.navbar-nav';
59
+ const SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';
60
+
61
+ const PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';
62
+ const PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';
63
+ const PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';
64
+ const PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';
65
+ const PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';
66
+ const PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';
67
+ const PLACEMENT_TOPCENTER = 'top';
68
+ const PLACEMENT_BOTTOMCENTER = 'bottom';
69
+
70
+ const Default = {
71
+ autoClose: true,
72
+ boundary: 'clippingParents',
73
+ display: 'dynamic',
74
+ offset: [0, 2],
75
+ popperConfig: null,
76
+ reference: 'toggle',
77
+ };
78
+
79
+ const DefaultType = {
80
+ autoClose: '(boolean|string)',
81
+ boundary: '(string|element)',
82
+ display: 'string',
83
+ offset: '(array|string|function)',
84
+ popperConfig: '(null|object|function)',
85
+ reference: '(string|element|object)',
86
+ };
87
+
88
+ /**
89
+ * Class definition
90
+ */
91
+
92
+ class Dropdown extends BaseComponent {
93
+ constructor(element, config) {
94
+ super(element, config);
95
+
96
+ this._popper = null;
97
+ this._parent = this._element.parentNode; // dropdown wrapper
98
+ // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
99
+ this._menu =
100
+ SelectorEngine.next(this._element, SELECTOR_MENU)[0] ||
101
+ SelectorEngine.prev(this._element, SELECTOR_MENU)[0] ||
102
+ SelectorEngine.findOne(SELECTOR_MENU, this._parent);
103
+ this._inNavbar = this._detectNavbar();
104
+ }
105
+
106
+ // Getters
107
+ static get Default() {
108
+ return Default;
109
+ }
110
+
111
+ static get DefaultType() {
112
+ return DefaultType;
113
+ }
114
+
115
+ static get NAME() {
116
+ return NAME;
117
+ }
118
+
119
+ // Public
120
+ toggle() {
121
+ return this._isShown() ? this.hide() : this.show();
122
+ }
123
+
124
+ show() {
125
+ if (isDisabled(this._element) || this._isShown()) {
126
+ return;
127
+ }
128
+
129
+ const relatedTarget = {
130
+ relatedTarget: this._element,
131
+ };
132
+
133
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget);
134
+
135
+ if (showEvent.defaultPrevented) {
136
+ return;
137
+ }
138
+
139
+ this._createPopper();
140
+
141
+ // If this is a touch-enabled device we add extra
142
+ // empty mouseover listeners to the body's immediate children;
143
+ // only needed because of broken event delegation on iOS
144
+ // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
145
+ if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {
146
+ for (const element of [].concat(...document.body.children)) {
147
+ EventHandler.on(element, 'mouseover', noop);
148
+ }
149
+ }
150
+
151
+ this._element.focus();
152
+ this._element.setAttribute('aria-expanded', true);
153
+
154
+ this._menu.classList.add(CLASS_NAME_SHOW);
155
+ this._element.classList.add(CLASS_NAME_SHOW);
156
+ EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget);
157
+ }
158
+
159
+ hide() {
160
+ if (isDisabled(this._element) || !this._isShown()) {
161
+ return;
162
+ }
163
+
164
+ const relatedTarget = {
165
+ relatedTarget: this._element,
166
+ };
167
+
168
+ this._completeHide(relatedTarget);
169
+ }
170
+
171
+ dispose() {
172
+ if (this._popper) {
173
+ this._popper.destroy();
174
+ }
175
+
176
+ super.dispose();
177
+ }
178
+
179
+ update() {
180
+ this._inNavbar = this._detectNavbar();
181
+ if (this._popper) {
182
+ this._popper.update();
183
+ }
184
+ }
185
+
186
+ // Private
187
+ _completeHide(relatedTarget) {
188
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget);
189
+ if (hideEvent.defaultPrevented) {
190
+ return;
191
+ }
192
+
193
+ // If this is a touch-enabled device we remove the extra
194
+ // empty mouseover listeners we added for iOS support
195
+ if ('ontouchstart' in document.documentElement) {
196
+ for (const element of [].concat(...document.body.children)) {
197
+ EventHandler.off(element, 'mouseover', noop);
198
+ }
199
+ }
200
+
201
+ if (this._popper) {
202
+ this._popper.destroy();
203
+ }
204
+
205
+ this._menu.classList.remove(CLASS_NAME_SHOW);
206
+ this._element.classList.remove(CLASS_NAME_SHOW);
207
+ this._element.setAttribute('aria-expanded', 'false');
208
+ Manipulator.removeDataAttribute(this._menu, 'popper');
209
+ EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget);
210
+ }
211
+
212
+ _getConfig(config) {
213
+ config = super._getConfig(config);
214
+
215
+ if (
216
+ typeof config.reference === 'object' &&
217
+ !isElement(config.reference) &&
218
+ typeof config.reference.getBoundingClientRect !== 'function'
219
+ ) {
220
+ // Popper virtual elements require a getBoundingClientRect method
221
+ throw new TypeError(
222
+ `${NAME.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`
223
+ );
224
+ }
225
+
226
+ return config;
227
+ }
228
+
229
+ _createPopper() {
230
+ if (typeof Popper === 'undefined') {
231
+ throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
232
+ }
233
+
234
+ let referenceElement = this._element;
235
+
236
+ if (this._config.reference === 'parent') {
237
+ referenceElement = this._parent;
238
+ } else if (isElement(this._config.reference)) {
239
+ referenceElement = getElement(this._config.reference);
240
+ } else if (typeof this._config.reference === 'object') {
241
+ referenceElement = this._config.reference;
242
+ }
243
+
244
+ const popperConfig = this._getPopperConfig();
245
+ this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);
246
+ }
247
+
248
+ _isShown() {
249
+ return this._menu.classList.contains(CLASS_NAME_SHOW);
250
+ }
251
+
252
+ _getPlacement() {
253
+ const parentDropdown = this._parent;
254
+
255
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {
256
+ return PLACEMENT_RIGHT;
257
+ }
258
+
259
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {
260
+ return PLACEMENT_LEFT;
261
+ }
262
+
263
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {
264
+ return PLACEMENT_TOPCENTER;
265
+ }
266
+
267
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {
268
+ return PLACEMENT_BOTTOMCENTER;
269
+ }
270
+
271
+ // We need to trim the value because custom properties can also include spaces
272
+ const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';
273
+
274
+ if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {
275
+ return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;
276
+ }
277
+
278
+ return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;
279
+ }
280
+
281
+ _detectNavbar() {
282
+ return this._element.closest(SELECTOR_NAVBAR) !== null;
283
+ }
284
+
285
+ _getOffset() {
286
+ const { offset } = this._config;
287
+
288
+ if (typeof offset === 'string') {
289
+ return offset.split(',').map((value) => Number.parseInt(value, 10));
290
+ }
291
+
292
+ if (typeof offset === 'function') {
293
+ return (popperData) => offset(popperData, this._element);
294
+ }
295
+
296
+ return offset;
297
+ }
298
+
299
+ _getPopperConfig() {
300
+ const defaultBsPopperConfig = {
301
+ placement: this._getPlacement(),
302
+ modifiers: [
303
+ {
304
+ name: 'preventOverflow',
305
+ options: {
306
+ boundary: this._config.boundary,
307
+ },
308
+ },
309
+ {
310
+ name: 'offset',
311
+ options: {
312
+ offset: this._getOffset(),
313
+ },
314
+ },
315
+ ],
316
+ };
317
+
318
+ // Disable Popper if we have a static display or Dropdown is in Navbar
319
+ if (this._inNavbar || this._config.display === 'static') {
320
+ Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove
321
+ defaultBsPopperConfig.modifiers = [
322
+ {
323
+ name: 'applyStyles',
324
+ enabled: false,
325
+ },
326
+ ];
327
+ }
328
+
329
+ return {
330
+ ...defaultBsPopperConfig,
331
+ ...(typeof this._config.popperConfig === 'function'
332
+ ? this._config.popperConfig(defaultBsPopperConfig)
333
+ : this._config.popperConfig),
334
+ };
335
+ }
336
+
337
+ _selectMenuItem({ key, target }) {
338
+ const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter((element) =>
339
+ isVisible(element)
340
+ );
341
+
342
+ if (!items.length) {
343
+ return;
344
+ }
345
+
346
+ // if target isn't included in items (e.g. when expanding the dropdown)
347
+ // allow cycling to get the last item in case key equals ARROW_UP_KEY
348
+ getNextActiveElement(items, target, key === ARROW_DOWN_KEY, !items.includes(target)).focus();
349
+ }
350
+
351
+ // Static
352
+ static jQueryInterface(config) {
353
+ return this.each(function () {
354
+ const data = Dropdown.getOrCreateInstance(this, config);
355
+
356
+ if (typeof config !== 'string') {
357
+ return;
358
+ }
359
+
360
+ if (typeof data[config] === 'undefined') {
361
+ throw new TypeError(`No method named "${config}"`);
362
+ }
363
+
364
+ data[config]();
365
+ });
366
+ }
367
+
368
+ static clearMenus(event) {
369
+ if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {
370
+ return;
371
+ }
372
+
373
+ const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);
374
+
375
+ for (const toggle of openToggles) {
376
+ const context = Dropdown.getInstance(toggle);
377
+ if (!context || context._config.autoClose === false) {
378
+ continue;
379
+ }
380
+
381
+ const composedPath = event.composedPath();
382
+ const isMenuTarget = composedPath.includes(context._menu);
383
+ if (
384
+ composedPath.includes(context._element) ||
385
+ (context._config.autoClose === 'inside' && !isMenuTarget) ||
386
+ (context._config.autoClose === 'outside' && isMenuTarget)
387
+ ) {
388
+ continue;
389
+ }
390
+
391
+ // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu
392
+ if (
393
+ context._menu.contains(event.target) &&
394
+ ((event.type === 'keyup' && event.key === TAB_KEY) ||
395
+ /input|select|option|textarea|form/i.test(event.target.tagName))
396
+ ) {
397
+ continue;
398
+ }
399
+
400
+ const relatedTarget = { relatedTarget: context._element };
401
+
402
+ if (event.type === 'click') {
403
+ relatedTarget.clickEvent = event;
404
+ }
405
+
406
+ context._completeHide(relatedTarget);
407
+ }
408
+ }
409
+
410
+ static dataApiKeydownHandler(event) {
411
+ // If not an UP | DOWN | ESCAPE key => not a dropdown command
412
+ // If input/textarea && if key is other than ESCAPE => not a dropdown command
413
+
414
+ const isInput = /input|textarea/i.test(event.target.tagName);
415
+ const isEscapeEvent = event.key === ESCAPE_KEY;
416
+ const isUpOrDownEvent = [ARROW_UP_KEY, ARROW_DOWN_KEY].includes(event.key);
417
+
418
+ if (!isUpOrDownEvent && !isEscapeEvent) {
419
+ return;
420
+ }
421
+
422
+ if (isInput && !isEscapeEvent) {
423
+ return;
424
+ }
425
+
426
+ event.preventDefault();
427
+
428
+ // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/
429
+ const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE)
430
+ ? this
431
+ : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0] ||
432
+ SelectorEngine.next(this, SELECTOR_DATA_TOGGLE)[0] ||
433
+ SelectorEngine.findOne(SELECTOR_DATA_TOGGLE, event.delegateTarget.parentNode);
434
+
435
+ const instance = Dropdown.getOrCreateInstance(getToggleButton);
436
+
437
+ if (isUpOrDownEvent) {
438
+ event.stopPropagation();
439
+ instance.show();
440
+ instance._selectMenuItem(event);
441
+ return;
442
+ }
443
+
444
+ if (instance._isShown()) {
445
+ // else is escape and we check if it is shown
446
+ event.stopPropagation();
447
+ instance.hide();
448
+ getToggleButton.focus();
449
+ }
450
+ }
451
+ }
452
+
453
+ /**
454
+ * Data API implementation
455
+ */
456
+
457
+ EventHandler.on(
458
+ document,
459
+ EVENT_KEYDOWN_DATA_API,
460
+ SELECTOR_DATA_TOGGLE,
461
+ Dropdown.dataApiKeydownHandler
462
+ );
463
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);
464
+ EventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus);
465
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);
466
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
467
+ event.preventDefault();
468
+ Dropdown.getOrCreateInstance(this).toggle();
469
+ });
470
+
471
+ /**
472
+ * jQuery
473
+ */
474
+
475
+ defineJQueryPlugin(Dropdown);
476
+
477
+ export default Dropdown;