bootstrap-italia 2.12.1 → 2.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (380) hide show
  1. package/README.EN.md +1 -1
  2. package/README.md +1 -1
  3. package/dist/bootstrap-italia.esm.js +1 -1
  4. package/dist/css/bootstrap-italia.min.css +9 -1
  5. package/dist/css/bootstrap-italia.min.css.map +1 -1
  6. package/dist/js/bootstrap-italia.bundle.min.js +19 -23
  7. package/dist/js/bootstrap-italia.min.js +18 -2
  8. package/dist/plugins/accept-overlay.js +19 -9
  9. package/dist/plugins/accept-overlay.js.map +1 -1
  10. package/dist/plugins/accordion.js +19 -24
  11. package/dist/plugins/accordion.js.map +1 -1
  12. package/dist/plugins/alert.js +67 -2
  13. package/dist/plugins/alert.js.map +1 -1
  14. package/dist/plugins/{backToTop.js → back-to-top.js} +14 -5
  15. package/dist/plugins/back-to-top.js.map +1 -0
  16. package/dist/plugins/base-component.js +91 -0
  17. package/dist/plugins/base-component.js.map +1 -0
  18. package/dist/plugins/button.js +58 -2
  19. package/dist/plugins/button.js.map +1 -1
  20. package/dist/plugins/carousel-bi.js +19 -9
  21. package/dist/plugins/carousel-bi.js.map +1 -1
  22. package/dist/plugins/carousel.js +445 -2
  23. package/dist/plugins/carousel.js.map +1 -1
  24. package/dist/plugins/collapse.js +273 -2
  25. package/dist/plugins/collapse.js.map +1 -1
  26. package/dist/plugins/cookiebar.js +39 -52
  27. package/dist/plugins/cookiebar.js.map +1 -1
  28. package/dist/plugins/dimmer.js +19 -8
  29. package/dist/plugins/dimmer.js.map +1 -1
  30. package/dist/plugins/dom/data.js +61 -0
  31. package/dist/plugins/dom/data.js.map +1 -0
  32. package/dist/plugins/dom/event-handler.js +296 -0
  33. package/dist/plugins/dom/event-handler.js.map +1 -0
  34. package/dist/plugins/dom/manipulator.js +76 -0
  35. package/dist/plugins/dom/manipulator.js.map +1 -0
  36. package/dist/plugins/dom/selector-engine.js +82 -0
  37. package/dist/plugins/dom/selector-engine.js.map +1 -0
  38. package/dist/plugins/dropdown.js +433 -2
  39. package/dist/plugins/dropdown.js.map +1 -1
  40. package/dist/plugins/fonts-loader.js +9 -1
  41. package/dist/plugins/fonts-loader.js.map +1 -1
  42. package/dist/plugins/form-validate.js +22 -8
  43. package/dist/plugins/form-validate.js.map +1 -1
  44. package/dist/plugins/forward.js +21 -18
  45. package/dist/plugins/forward.js.map +1 -1
  46. package/dist/plugins/header-sticky.js +11 -2
  47. package/dist/plugins/header-sticky.js.map +1 -1
  48. package/dist/plugins/history-back.js +17 -17
  49. package/dist/plugins/history-back.js.map +1 -1
  50. package/dist/plugins/init.js +9 -0
  51. package/dist/plugins/init.js.map +1 -1
  52. package/dist/plugins/input-label.js +14 -3
  53. package/dist/plugins/input-label.js.map +1 -1
  54. package/dist/plugins/input-number.js +13 -4
  55. package/dist/plugins/input-number.js.map +1 -1
  56. package/dist/plugins/input-password.js +48 -37
  57. package/dist/plugins/input-password.js.map +1 -1
  58. package/dist/plugins/input-search-autocomplete.js +9 -11
  59. package/dist/plugins/input-search-autocomplete.js.map +1 -1
  60. package/dist/plugins/input.js +12 -3
  61. package/dist/plugins/input.js.map +1 -1
  62. package/dist/plugins/list.js +23 -12
  63. package/dist/plugins/list.js.map +1 -1
  64. package/dist/plugins/masonry.js +29 -29
  65. package/dist/plugins/masonry.js.map +1 -1
  66. package/dist/plugins/modal.js +358 -2
  67. package/dist/plugins/modal.js.map +1 -1
  68. package/dist/plugins/navbar-collapsible.js +55 -45
  69. package/dist/plugins/navbar-collapsible.js.map +1 -1
  70. package/dist/plugins/navscroll.js +16 -23
  71. package/dist/plugins/navscroll.js.map +1 -1
  72. package/dist/plugins/notification.js +34 -23
  73. package/dist/plugins/notification.js.map +1 -1
  74. package/dist/plugins/offcanvas.js +259 -2
  75. package/dist/plugins/offcanvas.js.map +1 -1
  76. package/dist/plugins/popover.js +76 -2
  77. package/dist/plugins/popover.js.map +1 -1
  78. package/dist/plugins/progress-donut.js +19 -12
  79. package/dist/plugins/progress-donut.js.map +1 -1
  80. package/dist/plugins/scrollspy.js +273 -2
  81. package/dist/plugins/scrollspy.js.map +1 -1
  82. package/dist/plugins/select-autocomplete.js +10 -1
  83. package/dist/plugins/select-autocomplete.js.map +1 -1
  84. package/dist/plugins/sticky.js +21 -18
  85. package/dist/plugins/sticky.js.map +1 -1
  86. package/dist/plugins/tab.js +244 -27
  87. package/dist/plugins/tab.js.map +1 -1
  88. package/dist/plugins/toast.js +203 -2
  89. package/dist/plugins/toast.js.map +1 -1
  90. package/dist/plugins/tooltip.js +602 -2
  91. package/dist/plugins/tooltip.js.map +1 -1
  92. package/dist/plugins/track-focus.js +8 -0
  93. package/dist/plugins/track-focus.js.map +1 -1
  94. package/dist/plugins/transfer.js +11 -16
  95. package/dist/plugins/transfer.js.map +1 -1
  96. package/dist/plugins/upload-dragdrop.js +13 -4
  97. package/dist/plugins/upload-dragdrop.js.map +1 -1
  98. package/dist/plugins/util/backdrop.js +155 -0
  99. package/dist/plugins/util/backdrop.js.map +1 -0
  100. package/dist/plugins/util/component-functions.js +38 -0
  101. package/dist/plugins/util/component-functions.js.map +1 -0
  102. package/dist/plugins/util/config.js +70 -0
  103. package/dist/plugins/util/config.js.map +1 -0
  104. package/dist/plugins/util/cookies.js +8 -0
  105. package/dist/plugins/util/cookies.js.map +1 -1
  106. package/dist/plugins/util/device.js +0 -3
  107. package/dist/plugins/util/device.js.map +1 -1
  108. package/dist/plugins/util/dom.js +8 -0
  109. package/dist/plugins/util/dom.js.map +1 -1
  110. package/dist/plugins/util/focustrap.js +121 -0
  111. package/dist/plugins/util/focustrap.js.map +1 -0
  112. package/dist/plugins/util/index.js +280 -0
  113. package/dist/plugins/util/index.js.map +1 -0
  114. package/dist/plugins/util/observer.js +8 -0
  115. package/dist/plugins/util/observer.js.map +1 -1
  116. package/dist/plugins/util/on-document-scroll.js +20 -9
  117. package/dist/plugins/util/on-document-scroll.js.map +1 -1
  118. package/dist/plugins/util/pageScroll.js +8 -0
  119. package/dist/plugins/util/pageScroll.js.map +1 -1
  120. package/dist/plugins/util/sanitizer.js +115 -0
  121. package/dist/plugins/util/sanitizer.js.map +1 -0
  122. package/dist/plugins/util/scrollbar.js +120 -0
  123. package/dist/plugins/util/scrollbar.js.map +1 -0
  124. package/dist/plugins/util/swipe.js +150 -0
  125. package/dist/plugins/util/swipe.js.map +1 -0
  126. package/dist/plugins/util/template-factory.js +166 -0
  127. package/dist/plugins/util/template-factory.js.map +1 -0
  128. package/dist/plugins/util/tween.js +10 -1
  129. package/dist/plugins/util/tween.js.map +1 -1
  130. package/dist/plugins/util/youtube-video.js +12 -21
  131. package/dist/plugins/util/youtube-video.js.map +1 -1
  132. package/dist/plugins/videoplayer.js +19 -8
  133. package/dist/plugins/videoplayer.js.map +1 -1
  134. package/dist/version.js +10 -3
  135. package/dist/version.js.map +1 -1
  136. package/package.json +6 -7
  137. package/src/js/bootstrap-italia.entry.js +8 -0
  138. package/src/js/bootstrap-italia.esm.js +9 -1
  139. package/src/js/icons.js +8 -0
  140. package/src/js/load-plugin.js +8 -0
  141. package/src/js/plugins/accept-overlay.js +18 -10
  142. package/src/js/plugins/accordion.js +16 -22
  143. package/src/js/plugins/alert.js +66 -2
  144. package/src/js/plugins/{backToTop.js → back-to-top.js} +12 -4
  145. package/src/js/plugins/base-component.js +89 -0
  146. package/src/js/plugins/button.js +57 -2
  147. package/src/js/plugins/carousel-bi.js +18 -9
  148. package/src/js/plugins/carousel.js +444 -2
  149. package/src/js/plugins/collapse.js +272 -2
  150. package/src/js/plugins/cookiebar.js +37 -60
  151. package/src/js/plugins/dimmer.js +18 -8
  152. package/src/js/plugins/dom/data.js +58 -0
  153. package/src/js/plugins/dom/event-handler.js +301 -0
  154. package/src/js/plugins/dom/manipulator.js +75 -0
  155. package/src/js/plugins/dom/selector-engine.js +80 -0
  156. package/src/js/plugins/dropdown.js +432 -2
  157. package/src/js/plugins/fonts-loader.js +9 -1
  158. package/src/js/plugins/form-validate.js +21 -8
  159. package/src/js/plugins/form.js +11 -3
  160. package/src/js/plugins/forward.js +18 -16
  161. package/src/js/plugins/header-sticky.js +10 -2
  162. package/src/js/plugins/history-back.js +14 -14
  163. package/src/js/plugins/init.js +8 -0
  164. package/src/js/plugins/input-label.js +13 -3
  165. package/src/js/plugins/input-number.js +12 -4
  166. package/src/js/plugins/input-password.js +46 -36
  167. package/src/js/plugins/input-search-autocomplete.js +9 -13
  168. package/src/js/plugins/input.js +11 -3
  169. package/src/js/plugins/list.js +22 -12
  170. package/src/js/plugins/masonry.js +26 -27
  171. package/src/js/plugins/modal.js +357 -2
  172. package/src/js/plugins/navbar-collapsible.js +55 -53
  173. package/src/js/plugins/navscroll.js +16 -23
  174. package/src/js/plugins/notification.js +33 -23
  175. package/src/js/plugins/offcanvas.js +258 -2
  176. package/src/js/plugins/popover.js +75 -2
  177. package/src/js/plugins/progress-donut.js +17 -13
  178. package/src/js/plugins/scrollspy.js +272 -2
  179. package/src/js/plugins/select-autocomplete.js +9 -1
  180. package/src/js/plugins/sticky.js +21 -23
  181. package/src/js/plugins/tab.js +243 -27
  182. package/src/js/plugins/toast.js +206 -2
  183. package/src/js/plugins/tooltip.js +601 -2
  184. package/src/js/plugins/track-focus.js +8 -0
  185. package/src/js/plugins/transfer.js +12 -24
  186. package/src/js/plugins/upload-dragdrop.js +12 -4
  187. package/src/js/plugins/util/backdrop.js +153 -0
  188. package/src/js/plugins/util/component-functions.js +36 -0
  189. package/src/js/plugins/util/config.js +68 -0
  190. package/src/js/plugins/util/cookies.js +8 -0
  191. package/src/js/plugins/util/device.js +0 -3
  192. package/src/js/plugins/util/dom.js +8 -0
  193. package/src/js/plugins/util/focustrap.js +119 -0
  194. package/src/js/plugins/util/index.js +317 -0
  195. package/src/js/plugins/util/observer.js +8 -0
  196. package/src/js/plugins/util/on-document-scroll.js +19 -9
  197. package/src/js/plugins/util/pageScroll.js +8 -0
  198. package/src/js/plugins/util/sanitizer.js +112 -0
  199. package/src/js/plugins/util/scrollbar.js +118 -0
  200. package/src/js/plugins/util/swipe.js +148 -0
  201. package/src/js/plugins/util/template-factory.js +164 -0
  202. package/src/js/plugins/util/tween.js +9 -1
  203. package/src/js/plugins/util/youtube-video.js +12 -21
  204. package/src/js/plugins/videoplayer.js +18 -8
  205. package/src/js/version.js +10 -3
  206. package/src/scss/base/_containers.scss +41 -0
  207. package/src/scss/base/_functions.scss +373 -0
  208. package/src/scss/base/_helpers.scss +10 -0
  209. package/src/scss/base/_maps.scss +54 -0
  210. package/src/scss/base/_mixins.scss +44 -0
  211. package/src/scss/base/_reboot.scss +590 -0
  212. package/src/scss/base/_root.scss +73 -0
  213. package/src/scss/base/_transitions.scss +27 -0
  214. package/src/scss/base/_utilities.scss +742 -0
  215. package/src/scss/base/_variables.scss +2123 -0
  216. package/src/scss/base/_version.scss +3 -0
  217. package/src/scss/base/helpers/_clearfix.scss +3 -0
  218. package/src/scss/base/helpers/_color-bg.scss +10 -0
  219. package/src/scss/base/helpers/_colored-links.scss +16 -0
  220. package/src/scss/base/helpers/_position.scss +36 -0
  221. package/src/scss/base/helpers/_ratio.scss +26 -0
  222. package/src/scss/base/helpers/_stacks.scss +15 -0
  223. package/src/scss/base/helpers/_stretched-link.scss +15 -0
  224. package/src/scss/base/helpers/_text-truncation.scss +7 -0
  225. package/src/scss/base/helpers/_visually-hidden.scss +8 -0
  226. package/src/scss/base/helpers/_vr.scss +8 -0
  227. package/src/scss/base/mixins/_alert.scss +15 -0
  228. package/src/scss/base/mixins/_backdrop.scss +18 -0
  229. package/src/scss/base/mixins/_banner.scss +11 -0
  230. package/src/scss/base/mixins/_border-radius.scss +77 -0
  231. package/src/scss/base/mixins/_box-shadow.scss +18 -0
  232. package/src/scss/base/mixins/_breakpoints.scss +127 -0
  233. package/src/scss/base/mixins/_buttons.scss +141 -0
  234. package/src/scss/base/mixins/_caret.scss +64 -0
  235. package/src/scss/base/mixins/_clearfix.scss +9 -0
  236. package/src/scss/base/mixins/_color-scheme.scss +7 -0
  237. package/src/scss/base/mixins/_container.scss +11 -0
  238. package/src/scss/base/mixins/_deprecate.scss +10 -0
  239. package/src/scss/base/mixins/_forms.scss +152 -0
  240. package/src/scss/base/mixins/_gradients.scss +47 -0
  241. package/src/scss/base/mixins/_grid.scss +151 -0
  242. package/src/scss/base/mixins/_image.scss +15 -0
  243. package/src/scss/base/mixins/_list-group.scss +24 -0
  244. package/src/scss/base/mixins/_lists.scss +7 -0
  245. package/src/scss/base/mixins/_pagination.scss +10 -0
  246. package/src/scss/base/mixins/_reset-text.scss +17 -0
  247. package/src/scss/base/mixins/_resize.scss +6 -0
  248. package/src/scss/base/mixins/_table-variants.scss +24 -0
  249. package/src/scss/base/mixins/_text-truncate.scss +8 -0
  250. package/src/scss/base/mixins/_transition.scss +26 -0
  251. package/src/scss/base/mixins/_utilities.scss +96 -0
  252. package/src/scss/base/mixins/_visually-hidden.scss +29 -0
  253. package/src/scss/base/utilities/_api.scss +45 -0
  254. package/src/scss/base/vendor/_rfs.scss +337 -0
  255. package/src/scss/bootstrap-italia.scss +137 -156
  256. package/src/scss/{custom → components}/_accept-overlay.scss +2 -1
  257. package/src/scss/components/_accordion.scss +297 -0
  258. package/src/scss/components/_badge.scss +60 -0
  259. package/src/scss/components/_breadcrumb.scss +95 -0
  260. package/src/scss/components/_button-group.scss +143 -0
  261. package/src/scss/components/_buttons.scss +467 -0
  262. package/src/scss/{custom → components}/_card.scss +228 -0
  263. package/src/scss/{custom → components}/_carousel.scss +225 -3
  264. package/src/scss/components/_dropdown.scss +480 -0
  265. package/src/scss/{custom → components}/_grid.scss +33 -0
  266. package/src/scss/{custom → components}/_gridlist.scss +7 -0
  267. package/src/scss/{custom → components}/_hero.scss +23 -57
  268. package/src/scss/components/_images.scss +48 -0
  269. package/src/scss/{custom → components}/_linklist.scss +0 -1
  270. package/src/scss/components/_list-group.scss +190 -0
  271. package/src/scss/components/_modal.scss +475 -0
  272. package/src/scss/components/_nav.scss +169 -0
  273. package/src/scss/components/_navbar.scss +274 -0
  274. package/src/scss/components/_offcanvas.scss +144 -0
  275. package/src/scss/components/_pagination.scss +108 -0
  276. package/src/scss/components/_placeholders.scss +51 -0
  277. package/src/scss/components/_popover.scss +298 -0
  278. package/src/scss/components/_progress-bars.scss +126 -0
  279. package/src/scss/{custom → components}/_steppers.scss +2 -2
  280. package/src/scss/{custom → components}/_tab.scss +3 -7
  281. package/src/scss/components/_tables.scss +171 -0
  282. package/src/scss/components/_toasts.scss +73 -0
  283. package/src/scss/{custom → components}/_toolbar.scss +19 -12
  284. package/src/scss/components/_tooltip.scss +139 -0
  285. package/src/scss/{custom → components}/_type.scss +92 -0
  286. package/src/scss/forms/_accessible-autocomplete.scss +188 -0
  287. package/src/scss/forms/_floating-labels.scss +75 -0
  288. package/src/scss/forms/_form-check.scss +163 -0
  289. package/src/scss/forms/_form-control.scss +201 -0
  290. package/src/scss/forms/_form-range.scss +95 -0
  291. package/src/scss/{custom → forms}/_form-select.scss +72 -0
  292. package/src/scss/forms/_form-text.scss +11 -0
  293. package/src/scss/{custom → forms}/_forms.scss +8 -12
  294. package/src/scss/forms/_input-group.scss +129 -0
  295. package/src/scss/forms/_labels.scss +36 -0
  296. package/src/scss/forms/_validation.scss +12 -0
  297. package/src/scss/utilities/icons.scss +5 -5
  298. package/types/index.d.ts +4 -1
  299. package/types/plugins/video.ts +33 -0
  300. package/dist/plugins/backToTop.js.map +0 -1
  301. package/src/scss/_functions.scss +0 -38
  302. package/src/scss/_variables.scss +0 -639
  303. package/src/scss/custom/_accessible-autocomplete.scss +0 -30
  304. package/src/scss/custom/_accordion.scss +0 -176
  305. package/src/scss/custom/_badge.scss +0 -29
  306. package/src/scss/custom/_breadcrumb.scss +0 -51
  307. package/src/scss/custom/_buttons.scss +0 -235
  308. package/src/scss/custom/_componente-base.scss +0 -6
  309. package/src/scss/custom/_dropdown.scss +0 -248
  310. package/src/scss/custom/_form-datepicker.scss +0 -604
  311. package/src/scss/custom/_images.scss +0 -10
  312. package/src/scss/custom/_modal.scss +0 -248
  313. package/src/scss/custom/_popover.scss +0 -106
  314. package/src/scss/custom/_progress-bars.scss +0 -70
  315. package/src/scss/custom/_tables.scss +0 -11
  316. package/src/scss/custom/_timepicker.scss +0 -252
  317. package/src/scss/custom/_tooltip.scss +0 -33
  318. package/src/scss/custom/_version.scss +0 -3
  319. package/src/scss/custom/mixins/_buttons.scss +0 -67
  320. package/src/scss/utilities/colors_vars.scss +0 -426
  321. /package/src/scss/{custom → base}/mixins/_text-emphasis.scss +0 -0
  322. /package/src/scss/{custom → components}/_affix.scss +0 -0
  323. /package/src/scss/{custom → components}/_alert.scss +0 -0
  324. /package/src/scss/{custom → components}/_anchor.scss +0 -0
  325. /package/src/scss/{custom → components}/_avatar.scss +0 -0
  326. /package/src/scss/{custom → components}/_back-to-top.scss +0 -0
  327. /package/src/scss/{custom → components}/_bottomnav.scss +0 -0
  328. /package/src/scss/{custom → components}/_calendar.scss +0 -0
  329. /package/src/scss/{custom → components}/_callout.scss +0 -0
  330. /package/src/scss/{custom → components}/_chips.scss +0 -0
  331. /package/src/scss/{custom → components}/_code.scss +0 -0
  332. /package/src/scss/{custom → components}/_cookiebar.scss +0 -0
  333. /package/src/scss/{custom → components}/_dimmer.scss +0 -0
  334. /package/src/scss/{custom → components}/_figcaption.scss +0 -0
  335. /package/src/scss/{custom → components}/_font.scss +0 -0
  336. /package/src/scss/{custom → components}/_footer.scss +0 -0
  337. /package/src/scss/{custom → components}/_forward.scss +0 -0
  338. /package/src/scss/{custom → components}/_header.scss +0 -0
  339. /package/src/scss/{custom → components}/_headercenter.scss +0 -0
  340. /package/src/scss/{custom → components}/_headercentertheme.scss +0 -0
  341. /package/src/scss/{custom → components}/_headernavbar.scss +0 -0
  342. /package/src/scss/{custom → components}/_headernavbartheme.scss +0 -0
  343. /package/src/scss/{custom → components}/_headerslim.scss +0 -0
  344. /package/src/scss/{custom → components}/_headerslimtheme.scss +0 -0
  345. /package/src/scss/{custom → components}/_imgresponsive.scss +0 -0
  346. /package/src/scss/{custom → components}/_list.scss +0 -0
  347. /package/src/scss/{custom → components}/_map.scss +0 -0
  348. /package/src/scss/{custom → components}/_masonry-loader.scss +0 -0
  349. /package/src/scss/{custom → components}/_megamenu.scss +0 -0
  350. /package/src/scss/{custom → components}/_navigation.scss +0 -0
  351. /package/src/scss/{custom → components}/_navigationtheme.scss +0 -0
  352. /package/src/scss/{custom → components}/_navscroll.scss +0 -0
  353. /package/src/scss/{custom → components}/_navscrolltheme.scss +0 -0
  354. /package/src/scss/{custom → components}/_notifications.scss +0 -0
  355. /package/src/scss/{custom → components}/_overlay-panel.scss +0 -0
  356. /package/src/scss/{custom → components}/_page-scroll.scss +0 -0
  357. /package/src/scss/{custom → components}/_pager.scss +0 -0
  358. /package/src/scss/{custom → components}/_point-list.scss +0 -0
  359. /package/src/scss/{custom → components}/_print.scss +0 -0
  360. /package/src/scss/{custom → components}/_progress-donuts.scss +0 -0
  361. /package/src/scss/{custom → components}/_progress-spinners.scss +0 -0
  362. /package/src/scss/{custom → components}/_rating-list.scss +0 -0
  363. /package/src/scss/{custom → components}/_rating.scss +0 -0
  364. /package/src/scss/{custom → components}/_sections.scss +0 -0
  365. /package/src/scss/{custom → components}/_sidebar.scss +0 -0
  366. /package/src/scss/{custom → components}/_sidebarthemes.scss +0 -0
  367. /package/src/scss/{custom → components}/_skiplinks.scss +0 -0
  368. /package/src/scss/{custom → components}/_sticky.scss +0 -0
  369. /package/src/scss/{custom → components}/_thumbnav.scss +0 -0
  370. /package/src/scss/{custom → components}/_timeline.scss +0 -0
  371. /package/src/scss/{custom → components}/_videoplayer.scss +0 -0
  372. /package/src/scss/{custom → forms}/_autocomplete.scss +0 -0
  373. /package/src/scss/{custom → forms}/_form-input-file.scss +0 -0
  374. /package/src/scss/{custom → forms}/_form-input-number.scss +0 -0
  375. /package/src/scss/{custom → forms}/_form-input-upload.scss +0 -0
  376. /package/src/scss/{custom → forms}/_form-password.scss +0 -0
  377. /package/src/scss/{custom → forms}/_form-toggles.scss +0 -0
  378. /package/src/scss/{custom → forms}/_form-transfer.scss +0 -0
  379. /package/src/scss/{custom → forms}/_just-validate.scss +0 -0
  380. /package/types/plugins/{backToTop.d.ts → back-to-top.d.ts} +0 -0
@@ -1,30 +1,158 @@
1
- import BSTab from 'bootstrap/js/src/tab';
2
- import { isDisabled, defineJQueryPlugin, getNextActiveElement } from 'bootstrap/js/src/util/index.js';
3
- import EventHandler from 'bootstrap/js/src/dom/event-handler.js';
4
- import SelectorEngine from 'bootstrap/js/src/dom/selector-engine.js';
1
+ import { isDisabled, getElementFromSelector, getNextActiveElement } from './util/index.js';
2
+ import EventHandler from './dom/event-handler.js';
3
+ import SelectorEngine from './dom/selector-engine.js';
4
+ import BaseComponent from './base-component.js';
5
5
 
6
+ /**
7
+ * --------------------------------------------------------------------------
8
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
9
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
10
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
11
+ * This a fork of Bootstrap: Initial license and original file name below
12
+ * Bootstrap (v5.2.3): tab.js
13
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
14
+ * --------------------------------------------------------------------------
15
+ */
16
+
17
+
18
+ /**
19
+ * Constants
20
+ */
21
+
22
+ const NAME = 'tab';
6
23
  const DATA_KEY = 'bs.tab';
7
24
  const EVENT_KEY = `.${DATA_KEY}`;
8
25
 
26
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
27
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
28
+ const EVENT_SHOW = `show${EVENT_KEY}`;
29
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
9
30
  const EVENT_CLICK_DATA_API = `click${EVENT_KEY}`;
31
+ const EVENT_KEYDOWN = `keydown${EVENT_KEY}`;
10
32
  const EVENT_LOAD_DATA_API = `load${EVENT_KEY}`;
11
33
 
12
34
  const ARROW_LEFT_KEY = 'ArrowLeft';
13
35
  const ARROW_RIGHT_KEY = 'ArrowRight';
14
36
  const ARROW_UP_KEY = 'ArrowUp';
15
37
  const ARROW_DOWN_KEY = 'ArrowDown';
38
+
16
39
  const ENTER_KEY = 'Enter';
17
40
  const SPACE_BAR_KEY = ' ';
18
41
 
19
42
  const CLASS_NAME_ACTIVE = 'active';
43
+ const CLASS_NAME_FADE = 'fade';
44
+ const CLASS_NAME_SHOW = 'show';
45
+ const CLASS_DROPDOWN = 'dropdown';
46
+
47
+ const SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle';
48
+ const SELECTOR_DROPDOWN_MENU = '.dropdown-menu';
49
+ const NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)';
20
50
 
51
+ const SELECTOR_TAB_PANEL = '.list-group, .nav, [role="tablist"]';
52
+ const SELECTOR_OUTER = '.nav-item, .list-group-item';
53
+ const SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role="tab"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`;
21
54
  const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]'; // todo:v6: could be only `tab`
55
+ const SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`;
22
56
 
23
- const SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle="tab"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="pill"], .${CLASS_NAME_ACTIVE}[data-bs-toggle="list"]`;
57
+ /**
58
+ * Class definition
59
+ */
24
60
 
25
- class Tab extends BSTab {
61
+ class Tab extends BaseComponent {
26
62
  constructor(element) {
27
63
  super(element);
64
+ this._parent = this._element.closest(SELECTOR_TAB_PANEL);
65
+
66
+ if (!this._parent) {
67
+ return
68
+ // todo: should Throw exception on v6
69
+ // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)
70
+ }
71
+
72
+ // Set up initial aria attributes
73
+ this._setInitialAttributes(this._parent, this._getChildren());
74
+
75
+ EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event));
76
+ }
77
+
78
+ // Getters
79
+ static get NAME() {
80
+ return NAME
81
+ }
82
+
83
+ // Public
84
+ show() {
85
+ // Shows this elem and deactivate the active sibling if exists
86
+ const innerElem = this._element;
87
+ if (this._elemIsActive(innerElem)) {
88
+ return
89
+ }
90
+
91
+ // Search for active tab on same parent to deactivate it
92
+ const active = this._getActiveElem();
93
+
94
+ const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) : null;
95
+
96
+ const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active });
97
+
98
+ if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {
99
+ return
100
+ }
101
+
102
+ this._deactivate(active, innerElem);
103
+ this._activate(innerElem, active);
104
+ }
105
+
106
+ // Private
107
+ _activate(element, relatedElem) {
108
+ if (!element) {
109
+ return
110
+ }
111
+
112
+ element.classList.add(CLASS_NAME_ACTIVE);
113
+
114
+ this._activate(getElementFromSelector(element)); // Search and activate/show the proper section
115
+
116
+ const complete = () => {
117
+ if (element.getAttribute('role') !== 'tab') {
118
+ element.classList.add(CLASS_NAME_SHOW);
119
+ return
120
+ }
121
+
122
+ element.removeAttribute('tabindex');
123
+ element.setAttribute('aria-selected', true);
124
+ this._toggleDropDown(element, true);
125
+ EventHandler.trigger(element, EVENT_SHOWN, {
126
+ relatedTarget: relatedElem,
127
+ });
128
+ };
129
+
130
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
131
+ }
132
+
133
+ _deactivate(element, relatedElem) {
134
+ if (!element) {
135
+ return
136
+ }
137
+
138
+ element.classList.remove(CLASS_NAME_ACTIVE);
139
+ element.blur();
140
+
141
+ this._deactivate(getElementFromSelector(element)); // Search and deactivate the shown section too
142
+
143
+ const complete = () => {
144
+ if (element.getAttribute('role') !== 'tab') {
145
+ element.classList.remove(CLASS_NAME_SHOW);
146
+ return
147
+ }
148
+
149
+ element.setAttribute('aria-selected', false);
150
+ element.setAttribute('tabindex', '-1');
151
+ this._toggleDropDown(element, false);
152
+ EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem });
153
+ };
154
+
155
+ this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE));
28
156
  }
29
157
 
30
158
  _keydown(event) {
@@ -51,37 +179,126 @@ class Tab extends BSTab {
51
179
  nextActiveElement.focus({ preventScroll: true });
52
180
  }
53
181
  }
54
- }
55
182
 
56
- EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
57
- if (['A', 'AREA'].includes(this.tagName)) {
58
- event.preventDefault();
183
+ _getChildren() {
184
+ // collection of inner elements
185
+ return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)
59
186
  }
60
187
 
61
- if (isDisabled(this)) {
62
- return
188
+ _getActiveElem() {
189
+ return this._getChildren().find((child) => this._elemIsActive(child)) || null
63
190
  }
64
191
 
65
- const t = Tab.getOrCreateInstance(this);
66
- t.dispose();
67
- Tab.getOrCreateInstance(this).show();
68
- });
192
+ _setInitialAttributes(parent, children) {
193
+ this._setAttributeIfNotExists(parent, 'role', 'tablist');
69
194
 
70
- /**
71
- * Initialize on focus
72
- */
73
- EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
74
- for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {
75
- const t = Tab.getOrCreateInstance(element);
76
- t.dispose();
77
- Tab.getOrCreateInstance(element);
195
+ for (const child of children) {
196
+ this._setInitialAttributesOnChild(child);
197
+ }
198
+ }
199
+
200
+ _setInitialAttributesOnChild(child) {
201
+ child = this._getInnerElement(child);
202
+ const isActive = this._elemIsActive(child);
203
+ const outerElem = this._getOuterElement(child);
204
+ child.setAttribute('aria-selected', isActive);
205
+
206
+ if (outerElem !== child) {
207
+ this._setAttributeIfNotExists(outerElem, 'role', 'presentation');
208
+ }
209
+
210
+ if (!isActive) {
211
+ child.setAttribute('tabindex', '-1');
212
+ }
213
+
214
+ this._setAttributeIfNotExists(child, 'role', 'tab');
215
+
216
+ // set attributes to the related panel too
217
+ this._setInitialAttributesOnTargetPanel(child);
218
+ }
219
+
220
+ _setInitialAttributesOnTargetPanel(child) {
221
+ const target = getElementFromSelector(child);
222
+
223
+ if (!target) {
224
+ return
225
+ }
226
+
227
+ this._setAttributeIfNotExists(target, 'role', 'tabpanel');
228
+
229
+ if (child.id) {
230
+ this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`);
231
+ }
78
232
  }
79
- });
233
+
234
+ _toggleDropDown(element, open) {
235
+ const outerElem = this._getOuterElement(element);
236
+ if (!outerElem.classList.contains(CLASS_DROPDOWN)) {
237
+ return
238
+ }
239
+
240
+ const toggle = (selector, className) => {
241
+ const element = SelectorEngine.findOne(selector, outerElem);
242
+ if (element) {
243
+ element.classList.toggle(className, open);
244
+ }
245
+ };
246
+
247
+ toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE);
248
+ toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW);
249
+ outerElem.setAttribute('aria-expanded', open);
250
+ }
251
+
252
+ _setAttributeIfNotExists(element, attribute, value) {
253
+ if (!element.hasAttribute(attribute)) {
254
+ element.setAttribute(attribute, value);
255
+ }
256
+ }
257
+
258
+ _elemIsActive(elem) {
259
+ return elem.classList.contains(CLASS_NAME_ACTIVE)
260
+ }
261
+
262
+ // Try to get the inner element (usually the .nav-link)
263
+ _getInnerElement(elem) {
264
+ return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)
265
+ }
266
+
267
+ // Try to get the outer element (usually the .nav-item)
268
+ _getOuterElement(elem) {
269
+ return elem.closest(SELECTOR_OUTER) || elem
270
+ }
271
+ }
272
+
80
273
  /**
81
- * jQuery
274
+ * Data API implementation
82
275
  */
83
276
 
84
- defineJQueryPlugin(Tab);
277
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
278
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
279
+ if (['A', 'AREA'].includes(this.tagName)) {
280
+ event.preventDefault();
281
+ }
282
+
283
+ if (isDisabled(this)) {
284
+ return
285
+ }
286
+ const t = Tab.getOrCreateInstance(this);
287
+ t.dispose();
288
+ Tab.getOrCreateInstance(this).show();
289
+ });
290
+
291
+ /**
292
+ * Initialize on focus
293
+ */
294
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
295
+ for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {
296
+ const t = Tab.getOrCreateInstance(element);
297
+ t.dispose();
298
+ Tab.getOrCreateInstance(element);
299
+ }
300
+ });
301
+ }
85
302
 
86
303
  export { Tab as default };
87
304
  //# sourceMappingURL=tab.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab.js","sources":["../../src/js/plugins/tab.js"],"sourcesContent":["import { default as BSTab } from 'bootstrap/js/src/tab'\nimport { defineJQueryPlugin, getNextActiveElement, isDisabled } from 'bootstrap/js/src/util/index.js'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler.js'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine.js'\n\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst ENTER_KEY = 'Enter'\nconst SPACE_BAR_KEY = ' '\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\n\nconst SELECTOR_DATA_TOGGLE_ACTIVE = `.${CLASS_NAME_ACTIVE}[data-bs-toggle=\"tab\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"pill\"], .${CLASS_NAME_ACTIVE}[data-bs-toggle=\"list\"]`\n\nclass Tab extends BSTab {\n constructor(element) {\n super(element)\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, ENTER_KEY, SPACE_BAR_KEY].includes(event.key)) {\n return\n }\n\n event.stopPropagation() // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n if (event.key === ENTER_KEY || event.key === SPACE_BAR_KEY) {\n Tab.getOrCreateInstance(event.target).show()\n return\n }\n\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(\n this._getChildren().filter((element) => !isDisabled(element)),\n event.target,\n isNext,\n true\n )\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n }\n }\n}\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const t = Tab.getOrCreateInstance(this)\n t.dispose()\n Tab.getOrCreateInstance(this).show()\n})\n\n/**\n * Initialize on focus\n */\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE_ACTIVE)) {\n const t = Tab.getOrCreateInstance(element)\n t.dispose()\n Tab.getOrCreateInstance(element)\n }\n})\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Tab)\n\nexport default Tab\n"],"names":[],"mappings":";;;;;AAKA,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;;AAE/B,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AAC/C,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;;AAE7C,MAAM,cAAc,GAAG;AACvB,MAAM,eAAe,GAAG;AACxB,MAAM,YAAY,GAAG;AACrB,MAAM,cAAc,GAAG;AACvB,MAAM,SAAS,GAAG;AAClB,MAAM,aAAa,GAAG;;AAEtB,MAAM,iBAAiB,GAAG;;AAE1B,MAAM,oBAAoB,GAAG,2EAA0E;;AAEvG,MAAM,2BAA2B,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,yBAAyB,EAAE,iBAAiB,CAAC,0BAA0B,EAAE,iBAAiB,CAAC,uBAAuB;;AAE5K,MAAM,GAAG,SAAS,KAAK,CAAC;AACxB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,KAAK,CAAC,OAAO;AACjB;;AAEA,EAAE,QAAQ,CAAC,KAAK,EAAE;AAClB,IAAI,IAAI,CAAC,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;AACxH,MAAM;AACN;;AAEA,IAAI,KAAK,CAAC,eAAe,GAAE;AAC3B,IAAI,KAAK,CAAC,cAAc;;AAExB,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,CAAC,GAAG,KAAK,aAAa,EAAE;AAChE,MAAM,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI;AAChD,MAAM;AACN;;AAEA,IAAI,MAAM,MAAM,GAAG,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;AACvE,IAAI,MAAM,iBAAiB,GAAG,oBAAoB;AAClD,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AACnE,MAAM,KAAK,CAAC,MAAM;AAClB,MAAM,MAAM;AACZ,MAAM;AACN;AACA,IAAI,IAAI,iBAAiB,EAAE;AAC3B,MAAM,iBAAiB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE;AACrD;AACA;AACA;;AAEA,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,KAAK,EAAE;AACvF,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC5C,IAAI,KAAK,CAAC,cAAc;AACxB;;AAEA,EAAE,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AACxB,IAAI;AACJ;;AAEA,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,mBAAmB,CAAC,IAAI;AACxC,EAAE,CAAC,CAAC,OAAO;AACX,EAAE,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI;AACpC,CAAC;;AAED;AACA;AACA;AACA,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM;AACnD,EAAE,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,2BAA2B,CAAC,EAAE;AAC1E,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,mBAAmB,CAAC,OAAO;AAC7C,IAAI,CAAC,CAAC,OAAO;AACb,IAAI,GAAG,CAAC,mBAAmB,CAAC,OAAO;AACnC;AACA,CAAC;AACD;AACA;AACA;;AAEA,kBAAkB,CAAC,GAAG;;;;"}
1
+ {"version":3,"file":"tab.js","sources":["../../src/js/plugins/tab.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * This a fork of Bootstrap: Initial license and original file name below\n * Bootstrap (v5.2.3): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getElementFromSelector, getNextActiveElement, isDisabled } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'tab'\nconst DATA_KEY = 'bs.tab'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}`\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\n\nconst ENTER_KEY = 'Enter'\nconst SPACE_BAR_KEY = ' '\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_DROPDOWN = 'dropdown'\n\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\nconst SELECTOR_DROPDOWN_MENU = '.dropdown-menu'\nconst NOT_SELECTOR_DROPDOWN_TOGGLE = ':not(.dropdown-toggle)'\n\nconst SELECTOR_TAB_PANEL = '.list-group, .nav, [role=\"tablist\"]'\nconst SELECTOR_OUTER = '.nav-item, .list-group-item'\nconst SELECTOR_INNER = `.nav-link${NOT_SELECTOR_DROPDOWN_TOGGLE}, .list-group-item${NOT_SELECTOR_DROPDOWN_TOGGLE}, [role=\"tab\"]${NOT_SELECTOR_DROPDOWN_TOGGLE}`\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]' // todo:v6: could be only `tab`\nconst SELECTOR_INNER_ELEM = `${SELECTOR_INNER}, ${SELECTOR_DATA_TOGGLE}`\n\n/**\n * Class definition\n */\n\nclass Tab extends BaseComponent {\n constructor(element) {\n super(element)\n this._parent = this._element.closest(SELECTOR_TAB_PANEL)\n\n if (!this._parent) {\n return\n // todo: should Throw exception on v6\n // throw new TypeError(`${element.outerHTML} has not a valid parent ${SELECTOR_INNER_ELEM}`)\n }\n\n // Set up initial aria attributes\n this._setInitialAttributes(this._parent, this._getChildren())\n\n EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event))\n }\n\n // Getters\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n // Shows this elem and deactivate the active sibling if exists\n const innerElem = this._element\n if (this._elemIsActive(innerElem)) {\n return\n }\n\n // Search for active tab on same parent to deactivate it\n const active = this._getActiveElem()\n\n const hideEvent = active ? EventHandler.trigger(active, EVENT_HIDE, { relatedTarget: innerElem }) : null\n\n const showEvent = EventHandler.trigger(innerElem, EVENT_SHOW, { relatedTarget: active })\n\n if (showEvent.defaultPrevented || (hideEvent && hideEvent.defaultPrevented)) {\n return\n }\n\n this._deactivate(active, innerElem)\n this._activate(innerElem, active)\n }\n\n // Private\n _activate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.add(CLASS_NAME_ACTIVE)\n\n this._activate(getElementFromSelector(element)) // Search and activate/show the proper section\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.add(CLASS_NAME_SHOW)\n return\n }\n\n element.removeAttribute('tabindex')\n element.setAttribute('aria-selected', true)\n this._toggleDropDown(element, true)\n EventHandler.trigger(element, EVENT_SHOWN, {\n relatedTarget: relatedElem,\n })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _deactivate(element, relatedElem) {\n if (!element) {\n return\n }\n\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.blur()\n\n this._deactivate(getElementFromSelector(element)) // Search and deactivate the shown section too\n\n const complete = () => {\n if (element.getAttribute('role') !== 'tab') {\n element.classList.remove(CLASS_NAME_SHOW)\n return\n }\n\n element.setAttribute('aria-selected', false)\n element.setAttribute('tabindex', '-1')\n this._toggleDropDown(element, false)\n EventHandler.trigger(element, EVENT_HIDDEN, { relatedTarget: relatedElem })\n }\n\n this._queueCallback(complete, element, element.classList.contains(CLASS_NAME_FADE))\n }\n\n _keydown(event) {\n if (![ARROW_LEFT_KEY, ARROW_RIGHT_KEY, ARROW_UP_KEY, ARROW_DOWN_KEY, ENTER_KEY, SPACE_BAR_KEY].includes(event.key)) {\n return\n }\n\n event.stopPropagation() // stopPropagation/preventDefault both added to support up/down keys without scrolling the page\n event.preventDefault()\n\n if (event.key === ENTER_KEY || event.key === SPACE_BAR_KEY) {\n Tab.getOrCreateInstance(event.target).show()\n return\n }\n\n const isNext = [ARROW_RIGHT_KEY, ARROW_DOWN_KEY].includes(event.key)\n const nextActiveElement = getNextActiveElement(\n this._getChildren().filter((element) => !isDisabled(element)),\n event.target,\n isNext,\n true\n )\n if (nextActiveElement) {\n nextActiveElement.focus({ preventScroll: true })\n }\n }\n\n _getChildren() {\n // collection of inner elements\n return SelectorEngine.find(SELECTOR_INNER_ELEM, this._parent)\n }\n\n _getActiveElem() {\n return this._getChildren().find((child) => this._elemIsActive(child)) || null\n }\n\n _setInitialAttributes(parent, children) {\n this._setAttributeIfNotExists(parent, 'role', 'tablist')\n\n for (const child of children) {\n this._setInitialAttributesOnChild(child)\n }\n }\n\n _setInitialAttributesOnChild(child) {\n child = this._getInnerElement(child)\n const isActive = this._elemIsActive(child)\n const outerElem = this._getOuterElement(child)\n child.setAttribute('aria-selected', isActive)\n\n if (outerElem !== child) {\n this._setAttributeIfNotExists(outerElem, 'role', 'presentation')\n }\n\n if (!isActive) {\n child.setAttribute('tabindex', '-1')\n }\n\n this._setAttributeIfNotExists(child, 'role', 'tab')\n\n // set attributes to the related panel too\n this._setInitialAttributesOnTargetPanel(child)\n }\n\n _setInitialAttributesOnTargetPanel(child) {\n const target = getElementFromSelector(child)\n\n if (!target) {\n return\n }\n\n this._setAttributeIfNotExists(target, 'role', 'tabpanel')\n\n if (child.id) {\n this._setAttributeIfNotExists(target, 'aria-labelledby', `#${child.id}`)\n }\n }\n\n _toggleDropDown(element, open) {\n const outerElem = this._getOuterElement(element)\n if (!outerElem.classList.contains(CLASS_DROPDOWN)) {\n return\n }\n\n const toggle = (selector, className) => {\n const element = SelectorEngine.findOne(selector, outerElem)\n if (element) {\n element.classList.toggle(className, open)\n }\n }\n\n toggle(SELECTOR_DROPDOWN_TOGGLE, CLASS_NAME_ACTIVE)\n toggle(SELECTOR_DROPDOWN_MENU, CLASS_NAME_SHOW)\n outerElem.setAttribute('aria-expanded', open)\n }\n\n _setAttributeIfNotExists(element, attribute, value) {\n if (!element.hasAttribute(attribute)) {\n element.setAttribute(attribute, value)\n }\n }\n\n _elemIsActive(elem) {\n return elem.classList.contains(CLASS_NAME_ACTIVE)\n }\n\n // Try to get the inner element (usually the .nav-link)\n _getInnerElement(elem) {\n return elem.matches(SELECTOR_INNER_ELEM) ? elem : SelectorEngine.findOne(SELECTOR_INNER_ELEM, elem)\n }\n\n // Try to get the outer element (usually the .nav-item)\n _getOuterElement(elem) {\n return elem.closest(SELECTOR_OUTER) || elem\n }\n}\n\n/**\n * Data API implementation\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n const t = Tab.getOrCreateInstance(this)\n t.dispose()\n Tab.getOrCreateInstance(this).show()\n })\n\n /**\n * Initialize on focus\n */\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const element of SelectorEngine.find(SELECTOR_DATA_TOGGLE)) {\n const t = Tab.getOrCreateInstance(element)\n t.dispose()\n Tab.getOrCreateInstance(element)\n }\n })\n}\n\nexport default Tab\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,207 @@
1
- import BSToast from 'bootstrap/js/src/toast';
1
+ import { reflow } from './util/index.js';
2
+ import EventHandler from './dom/event-handler.js';
3
+ import BaseComponent from './base-component.js';
4
+ import { enableDismissTrigger } from './util/component-functions.js';
2
5
 
3
- class Toast extends BSToast {}
6
+ /**
7
+ * --------------------------------------------------------------------------
8
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
9
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
10
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
11
+ * This a fork of Bootstrap: Initial license and original file name below
12
+ * Bootstrap (v5.2.3): toast.js
13
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
14
+ * --------------------------------------------------------------------------
15
+ */
16
+
17
+
18
+ /**
19
+ * Constants
20
+ */
21
+
22
+ const NAME = 'toast';
23
+ const DATA_KEY = 'bs.toast';
24
+ const EVENT_KEY = `.${DATA_KEY}`;
25
+
26
+ const EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`;
27
+ const EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`;
28
+ const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
29
+ const EVENT_FOCUSOUT = `focusout${EVENT_KEY}`;
30
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
31
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
32
+ const EVENT_SHOW = `show${EVENT_KEY}`;
33
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
34
+
35
+ const CLASS_NAME_FADE = 'fade';
36
+ const CLASS_NAME_HIDE = 'hide'; // @deprecated - kept here only for backwards compatibility
37
+ const CLASS_NAME_SHOW = 'show';
38
+ const CLASS_NAME_SHOWING = 'showing';
39
+
40
+ const DefaultType = {
41
+ animation: 'boolean',
42
+ autohide: 'boolean',
43
+ delay: 'number',
44
+ };
45
+
46
+ const Default = {
47
+ animation: true,
48
+ autohide: true,
49
+ delay: 5000,
50
+ };
51
+
52
+ /**
53
+ * Class definition
54
+ */
55
+
56
+ class Toast extends BaseComponent {
57
+ constructor(element, config) {
58
+ super(element, config);
59
+
60
+ this._timeout = null;
61
+ this._hasMouseInteraction = false;
62
+ this._hasKeyboardInteraction = false;
63
+ this._setListeners();
64
+ }
65
+
66
+ // Getters
67
+ static get Default() {
68
+ return Default
69
+ }
70
+
71
+ static get DefaultType() {
72
+ return DefaultType
73
+ }
74
+
75
+ static get NAME() {
76
+ return NAME
77
+ }
78
+
79
+ // Public
80
+ show() {
81
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW);
82
+
83
+ if (showEvent.defaultPrevented) {
84
+ return
85
+ }
86
+
87
+ this._clearTimeout();
88
+
89
+ if (this._config.animation) {
90
+ this._element.classList.add(CLASS_NAME_FADE);
91
+ }
92
+
93
+ const complete = () => {
94
+ this._element.classList.remove(CLASS_NAME_SHOWING);
95
+ EventHandler.trigger(this._element, EVENT_SHOWN);
96
+
97
+ this._maybeScheduleHide();
98
+ };
99
+
100
+ this._element.classList.remove(CLASS_NAME_HIDE); // @deprecated
101
+ reflow(this._element);
102
+ this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING);
103
+
104
+ this._queueCallback(complete, this._element, this._config.animation);
105
+ }
106
+
107
+ hide() {
108
+ if (!this.isShown()) {
109
+ return
110
+ }
111
+
112
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
113
+
114
+ if (hideEvent.defaultPrevented) {
115
+ return
116
+ }
117
+
118
+ const complete = () => {
119
+ this._element.classList.add(CLASS_NAME_HIDE); // @deprecated
120
+ this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW);
121
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
122
+ };
123
+
124
+ this._element.classList.add(CLASS_NAME_SHOWING);
125
+ this._queueCallback(complete, this._element, this._config.animation);
126
+ }
127
+
128
+ dispose() {
129
+ this._clearTimeout();
130
+
131
+ if (this.isShown()) {
132
+ this._element.classList.remove(CLASS_NAME_SHOW);
133
+ }
134
+
135
+ super.dispose();
136
+ }
137
+
138
+ isShown() {
139
+ return this._element.classList.contains(CLASS_NAME_SHOW)
140
+ }
141
+
142
+ // Private
143
+
144
+ _maybeScheduleHide() {
145
+ if (!this._config.autohide) {
146
+ return
147
+ }
148
+
149
+ if (this._hasMouseInteraction || this._hasKeyboardInteraction) {
150
+ return
151
+ }
152
+
153
+ this._timeout = setTimeout(() => {
154
+ this.hide();
155
+ }, this._config.delay);
156
+ }
157
+
158
+ _onInteraction(event, isInteracting) {
159
+ switch (event.type) {
160
+ case 'mouseover':
161
+ case 'mouseout': {
162
+ this._hasMouseInteraction = isInteracting;
163
+ break
164
+ }
165
+
166
+ case 'focusin':
167
+ case 'focusout': {
168
+ this._hasKeyboardInteraction = isInteracting;
169
+ break
170
+ }
171
+ }
172
+
173
+ if (isInteracting) {
174
+ this._clearTimeout();
175
+ return
176
+ }
177
+
178
+ const nextElement = event.relatedTarget;
179
+ if (this._element === nextElement || this._element.contains(nextElement)) {
180
+ return
181
+ }
182
+
183
+ this._maybeScheduleHide();
184
+ }
185
+
186
+ _setListeners() {
187
+ EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true));
188
+ EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false));
189
+ EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true));
190
+ EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false));
191
+ }
192
+
193
+ _clearTimeout() {
194
+ clearTimeout(this._timeout);
195
+ this._timeout = null;
196
+ }
197
+ }
198
+
199
+ /**
200
+ * Data API implementation
201
+ */
202
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
203
+ enableDismissTrigger(Toast);
204
+ }
4
205
 
5
206
  export { Toast as default };
6
207
  //# sourceMappingURL=toast.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toast.js","sources":["../../src/js/plugins/toast.js"],"sourcesContent":["import { default as BSToast } from 'bootstrap/js/src/toast'\n\nclass Toast extends BSToast {}\n\nexport default Toast\n"],"names":[],"mappings":";;AAEA,MAAM,KAAK,SAAS,OAAO,CAAC;;;;"}
1
+ {"version":3,"file":"toast.js","sources":["../../src/js/plugins/toast.js"],"sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)\n * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS\n * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)\n * This a fork of Bootstrap: Initial license and original file name below\n * Bootstrap (v5.2.3): toast.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { reflow } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'toast'\nconst DATA_KEY = 'bs.toast'\nconst EVENT_KEY = `.${DATA_KEY}`\n\nconst EVENT_MOUSEOVER = `mouseover${EVENT_KEY}`\nconst EVENT_MOUSEOUT = `mouseout${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_FOCUSOUT = `focusout${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_HIDE = 'hide' // @deprecated - kept here only for backwards compatibility\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\n\nconst DefaultType = {\n animation: 'boolean',\n autohide: 'boolean',\n delay: 'number',\n}\n\nconst Default = {\n animation: true,\n autohide: true,\n delay: 5000,\n}\n\n/**\n * Class definition\n */\n\nclass Toast extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._timeout = null\n this._hasMouseInteraction = false\n this._hasKeyboardInteraction = false\n this._setListeners()\n }\n\n // Getters\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get NAME() {\n return NAME\n }\n\n // Public\n show() {\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._clearTimeout()\n\n if (this._config.animation) {\n this._element.classList.add(CLASS_NAME_FADE)\n }\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN)\n\n this._maybeScheduleHide()\n }\n\n this._element.classList.remove(CLASS_NAME_HIDE) // @deprecated\n reflow(this._element)\n this._element.classList.add(CLASS_NAME_SHOW, CLASS_NAME_SHOWING)\n\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n hide() {\n if (!this.isShown()) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const complete = () => {\n this._element.classList.add(CLASS_NAME_HIDE) // @deprecated\n this._element.classList.remove(CLASS_NAME_SHOWING, CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.classList.add(CLASS_NAME_SHOWING)\n this._queueCallback(complete, this._element, this._config.animation)\n }\n\n dispose() {\n this._clearTimeout()\n\n if (this.isShown()) {\n this._element.classList.remove(CLASS_NAME_SHOW)\n }\n\n super.dispose()\n }\n\n isShown() {\n return this._element.classList.contains(CLASS_NAME_SHOW)\n }\n\n // Private\n\n _maybeScheduleHide() {\n if (!this._config.autohide) {\n return\n }\n\n if (this._hasMouseInteraction || this._hasKeyboardInteraction) {\n return\n }\n\n this._timeout = setTimeout(() => {\n this.hide()\n }, this._config.delay)\n }\n\n _onInteraction(event, isInteracting) {\n switch (event.type) {\n case 'mouseover':\n case 'mouseout': {\n this._hasMouseInteraction = isInteracting\n break\n }\n\n case 'focusin':\n case 'focusout': {\n this._hasKeyboardInteraction = isInteracting\n break\n }\n\n default: {\n break\n }\n }\n\n if (isInteracting) {\n this._clearTimeout()\n return\n }\n\n const nextElement = event.relatedTarget\n if (this._element === nextElement || this._element.contains(nextElement)) {\n return\n }\n\n this._maybeScheduleHide()\n }\n\n _setListeners() {\n EventHandler.on(this._element, EVENT_MOUSEOVER, (event) => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_MOUSEOUT, (event) => this._onInteraction(event, false))\n EventHandler.on(this._element, EVENT_FOCUSIN, (event) => this._onInteraction(event, true))\n EventHandler.on(this._element, EVENT_FOCUSOUT, (event) => this._onInteraction(event, false))\n }\n\n _clearTimeout() {\n clearTimeout(this._timeout)\n this._timeout = null\n }\n}\n\n/**\n * Data API implementation\n */\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n enableDismissTrigger(Toast)\n}\n\nexport default Toast\n"],"names":[],"mappings":"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"}