bootstrap-italia 2.12.1 → 2.13.0

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/components/_accordion.scss +297 -0
  257. package/src/scss/components/_badge.scss +60 -0
  258. package/src/scss/components/_breadcrumb.scss +95 -0
  259. package/src/scss/components/_button-group.scss +143 -0
  260. package/src/scss/components/_buttons.scss +467 -0
  261. package/src/scss/{custom → components}/_card.scss +228 -0
  262. package/src/scss/{custom → components}/_carousel.scss +225 -3
  263. package/src/scss/components/_dropdown.scss +480 -0
  264. package/src/scss/{custom → components}/_grid.scss +33 -0
  265. package/src/scss/{custom → components}/_gridlist.scss +7 -0
  266. package/src/scss/{custom → components}/_hero.scss +23 -57
  267. package/src/scss/components/_images.scss +48 -0
  268. package/src/scss/{custom → components}/_linklist.scss +0 -1
  269. package/src/scss/components/_list-group.scss +190 -0
  270. package/src/scss/components/_modal.scss +475 -0
  271. package/src/scss/components/_nav.scss +169 -0
  272. package/src/scss/components/_navbar.scss +273 -0
  273. package/src/scss/components/_offcanvas.scss +144 -0
  274. package/src/scss/components/_pagination.scss +108 -0
  275. package/src/scss/components/_placeholders.scss +51 -0
  276. package/src/scss/components/_popover.scss +298 -0
  277. package/src/scss/components/_progress-bars.scss +126 -0
  278. package/src/scss/{custom → components}/_steppers.scss +2 -2
  279. package/src/scss/{custom → components}/_tab.scss +3 -7
  280. package/src/scss/components/_tables.scss +171 -0
  281. package/src/scss/components/_toasts.scss +73 -0
  282. package/src/scss/{custom → components}/_toolbar.scss +19 -12
  283. package/src/scss/components/_tooltip.scss +139 -0
  284. package/src/scss/{custom → components}/_type.scss +92 -0
  285. package/src/scss/forms/_accessible-autocomplete.scss +188 -0
  286. package/src/scss/forms/_floating-labels.scss +75 -0
  287. package/src/scss/forms/_form-check.scss +175 -0
  288. package/src/scss/forms/_form-control.scss +201 -0
  289. package/src/scss/forms/_form-range.scss +95 -0
  290. package/src/scss/{custom → forms}/_form-select.scss +72 -0
  291. package/src/scss/forms/_form-text.scss +11 -0
  292. package/src/scss/{custom → forms}/_forms.scss +8 -12
  293. package/src/scss/forms/_input-group.scss +129 -0
  294. package/src/scss/forms/_labels.scss +36 -0
  295. package/src/scss/forms/_validation.scss +12 -0
  296. package/src/scss/utilities/icons.scss +5 -5
  297. package/types/index.d.ts +4 -1
  298. package/types/plugins/video.ts +33 -0
  299. package/dist/plugins/backToTop.js.map +0 -1
  300. package/src/scss/_functions.scss +0 -38
  301. package/src/scss/_variables.scss +0 -639
  302. package/src/scss/custom/_accessible-autocomplete.scss +0 -30
  303. package/src/scss/custom/_accordion.scss +0 -176
  304. package/src/scss/custom/_badge.scss +0 -29
  305. package/src/scss/custom/_breadcrumb.scss +0 -51
  306. package/src/scss/custom/_buttons.scss +0 -235
  307. package/src/scss/custom/_componente-base.scss +0 -6
  308. package/src/scss/custom/_dropdown.scss +0 -248
  309. package/src/scss/custom/_form-datepicker.scss +0 -604
  310. package/src/scss/custom/_images.scss +0 -10
  311. package/src/scss/custom/_modal.scss +0 -248
  312. package/src/scss/custom/_popover.scss +0 -106
  313. package/src/scss/custom/_progress-bars.scss +0 -70
  314. package/src/scss/custom/_tables.scss +0 -11
  315. package/src/scss/custom/_timepicker.scss +0 -252
  316. package/src/scss/custom/_tooltip.scss +0 -33
  317. package/src/scss/custom/_version.scss +0 -3
  318. package/src/scss/custom/mixins/_buttons.scss +0 -67
  319. package/src/scss/utilities/colors_vars.scss +0 -426
  320. /package/src/scss/{custom → base}/mixins/_text-emphasis.scss +0 -0
  321. /package/src/scss/{custom → components}/_accept-overlay.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,23 +1,17 @@
1
- import BaseComponent from 'bootstrap/js/src/base-component.js';
2
- import EventHandler from 'bootstrap/js/src/dom/event-handler';
3
- import SelectorEngine from 'bootstrap/js/src/dom/selector-engine';
4
- import Manipulator from 'bootstrap/js/src/dom/manipulator';
1
+ import BaseComponent from './base-component.js';
2
+ import EventHandler from './dom/event-handler.js';
3
+ import SelectorEngine from './dom/selector-engine.js';
4
+ import Manipulator from './dom/manipulator.js';
5
5
  import onDocumentScroll from './util/on-document-scroll.js';
6
6
  import NavBarCollapsible from './navbar-collapsible.js';
7
7
  import { documentScrollTo } from './util/tween.js';
8
8
 
9
9
  const NAME = 'navscroll';
10
- //const DATA_KEY = 'bs.navscroll'
11
- //const EVENT_KEY = `.${DATA_KEY}`
12
- //const DATA_API_KEY = '.data-api'
13
-
14
- //const EVENT_SCROLL = `scroll${EVENT_KEY}`
15
10
 
16
11
  const CLASS_NAME_ACTIVE = 'active';
17
12
 
18
13
  const SELECTOR_NAVSCROLL = '[data-bs-navscroll]'; //'.it-navscroll-wrapper'
19
14
  const SELECTOR_LIST = 'ul.link-list';
20
- //const SELECTOR_ITEM = '.nav-item'
21
15
  const SELECTOR_LINK_CONTAINER = 'li.nav-link, li.nav-item';
22
16
  const SELECTOR_LINK = 'a.nav-link';
23
17
  const SELECTOR_LINK_ACTIVE = `${SELECTOR_LINK}.${CLASS_NAME_ACTIVE}`;
@@ -61,11 +55,9 @@ class NavScroll extends BaseComponent {
61
55
  }
62
56
 
63
57
  dispose() {
64
- //EventHandler.off(window, EVENT_SCROLL, this._onScroll)
65
58
  if (this._scrollCb) {
66
59
  this._scrollCb.dispose();
67
60
  }
68
-
69
61
  super.dispose();
70
62
  }
71
63
 
@@ -80,8 +72,6 @@ class NavScroll extends BaseComponent {
80
72
  }
81
73
 
82
74
  _bindEvents() {
83
- //EventHandler.on(window, EVENT_SCROLL, this._onScroll)
84
-
85
75
  this._scrollCb = onDocumentScroll(() => this._onScroll());
86
76
 
87
77
  if (this._collapsible) {
@@ -100,11 +90,12 @@ class NavScroll extends BaseComponent {
100
90
  }
101
91
  });
102
92
  });
103
-
104
- EventHandler.on(window, 'load', () => {
105
- //if page is already scrolled
106
- setTimeout(() => this._onScroll(), 150);
107
- });
93
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
94
+ EventHandler.on(window, 'load', () => {
95
+ //if page is already scrolled
96
+ setTimeout(() => this._onScroll(), 150);
97
+ });
98
+ }
108
99
  }
109
100
 
110
101
  _onCollapseOpened() {
@@ -244,10 +235,12 @@ class NavScroll extends BaseComponent {
244
235
  * ------------------------------------------------------------------------
245
236
  */
246
237
 
247
- const navs = SelectorEngine.find(SELECTOR_NAVSCROLL);
248
- navs.map((nav) => {
249
- NavScroll.getOrCreateInstance(nav);
250
- });
238
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
239
+ const navs = SelectorEngine.find(SELECTOR_NAVSCROLL);
240
+ navs.map((nav) => {
241
+ NavScroll.getOrCreateInstance(nav);
242
+ });
243
+ }
251
244
 
252
245
  export { NavScroll as default };
253
246
  //# sourceMappingURL=navscroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navscroll.js","sources":["../../src/js/plugins/navscroll.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\n\nimport onDocumentScroll from './util/on-document-scroll'\nimport NavBarCollapsible from './navbar-collapsible'\n\nimport { documentScrollTo } from './util/tween'\n\nconst NAME = 'navscroll'\n//const DATA_KEY = 'bs.navscroll'\n//const EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\n\n//const EVENT_SCROLL = `scroll${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_NAVSCROLL = '[data-bs-navscroll]' //'.it-navscroll-wrapper'\nconst SELECTOR_LIST = 'ul.link-list'\n//const SELECTOR_ITEM = '.nav-item'\nconst SELECTOR_LINK_CONTAINER = 'li.nav-link, li.nav-item'\nconst SELECTOR_LINK = 'a.nav-link'\nconst SELECTOR_LINK_ACTIVE = `${SELECTOR_LINK}.${CLASS_NAME_ACTIVE}`\nconst SELECTOR_LINK_CLICKABLE = `${SELECTOR_LINK}[href^=\"#\"]`\nconst SELECTOR_CONTAINER = '.it-page-sections-container'\nconst SELECTOR_PAGE_SECTION = '.it-page-section'\nconst SELECTOR_TOGGLER = '.custom-navbar-toggler'\nconst SELECTOR_TOGGLER_ICON = '.it-list'\nconst SELECTOR_COLLAPSIBLE = '.navbar-collapsable'\nconst SELECTOR_PROGRESS_BAR = '.it-navscroll-progressbar'\n\nconst Default = {\n scrollPadding: 10,\n duration: 800,\n easing: 'easeInOutSine',\n}\nclass NavScroll extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._togglerElement = SelectorEngine.findOne(SELECTOR_TOGGLER, this._element)\n this._sectionContainer = SelectorEngine.findOne(SELECTOR_CONTAINER)\n this._collapsible = this._getCollapsible()\n this._isCollapseOpened = false\n this._callbackQueue = []\n this._scrollCb = null\n\n this._bindEvents()\n }\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n setScrollPadding(scrollPadding) {\n this._config.scrollPadding = scrollPadding\n }\n\n dispose() {\n //EventHandler.off(window, EVENT_SCROLL, this._onScroll)\n if (this._scrollCb) {\n this._scrollCb.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n //EventHandler.on(window, EVENT_SCROLL, this._onScroll)\n\n this._scrollCb = onDocumentScroll(() => this._onScroll())\n\n if (this._collapsible) {\n EventHandler.on(this._collapsible._element, 'shown.bs.navbarcollapsible', () => this._onCollapseOpened())\n EventHandler.on(this._collapsible._element, 'hidden.bs.navbarcollapsible', () => this._onCollapseClosed())\n }\n\n SelectorEngine.find(SELECTOR_LINK_CLICKABLE, this._element).forEach((link) => {\n link.addEventListener('click', () => {\n const scrollHash = () => this._scrollToHash(link.hash)\n if (this._isCollapseOpened) {\n this._callbackQueue.push(scrollHash)\n this._collapsible.hide()\n } else {\n scrollHash()\n }\n })\n })\n\n EventHandler.on(window, 'load', () => {\n //if page is already scrolled\n setTimeout(() => this._onScroll(), 150)\n })\n }\n\n _onCollapseOpened() {\n this._isCollapseOpened = true\n }\n _onCollapseClosed() {\n while (this._callbackQueue.length > 0) {\n const cb = this._callbackQueue.shift()\n if (typeof cb === 'function') {\n cb()\n }\n }\n this._isCollapseOpened = false\n }\n\n _getParentLinks(element) {\n const parents = []\n let parentContainer = element.closest(SELECTOR_LIST)\n let parentContainerPrev = null\n let exit = false\n while (parentContainer && !exit) {\n const parentLinkContainer = parentContainer.closest(SELECTOR_LINK_CONTAINER)\n if (parentLinkContainer) {\n const link = parentLinkContainer.querySelector(SELECTOR_LINK)\n if (link) {\n parents.push(link)\n }\n }\n parentContainerPrev = parentContainer\n parentContainer = (parentContainer.parentElement || parentContainer).closest(SELECTOR_LIST) //avoid self select of closest\n if (parentContainer === parentContainerPrev) {\n exit = true\n }\n }\n return parents\n }\n\n _decorateToggler(text) {\n if (this._togglerElement) {\n const icon = SelectorEngine.findOne(SELECTOR_TOGGLER_ICON, this._togglerElement)\n this._togglerElement.innerText = ''\n this._togglerElement.textContent = ''\n this._togglerElement.append(icon)\n this._togglerElement.append(text)\n }\n }\n\n _scrollToHash(hash) {\n const target = SelectorEngine.findOne(hash, this._sectionContainer)\n if (target) {\n documentScrollTo(target.offsetTop - this._getScrollPadding(), {\n duration: this._config.duration,\n easing: this._config.easing,\n /*complete: () => {\n },*/\n })\n\n if (history.pushState) {\n history.pushState(null, null, hash)\n } else {\n location.hash = hash\n }\n }\n }\n\n _updateProgress(content) {\n if (!content) {\n return\n }\n const progressBars = SelectorEngine.find(SELECTOR_PROGRESS_BAR)\n if (progressBars) {\n const offset = Math.abs(content.getBoundingClientRect().top)\n const height = content.getBoundingClientRect().height\n const scrollAmount = (offset / height) * 100\n const scrollValue = Math.min(100, Math.max(0, scrollAmount))\n\n progressBars.forEach((progressBar) => {\n if (content.getBoundingClientRect().top <= 0) {\n progressBar.style.width = scrollValue + '%'\n progressBar.setAttribute('aria-valuenow', scrollValue)\n } else {\n progressBar.style.width = 0 + '%'\n progressBar.setAttribute('aria-valuenow', 0)\n }\n })\n }\n }\n\n _onScroll() {\n const sectionsContainerTop = this._sectionContainer ? this._sectionContainer.offsetTop : 0\n if (typeof document === 'undefined') {\n return\n }\n const scrollDistance = document.scrollingElement.scrollTop - sectionsContainerTop\n\n const navItems = SelectorEngine.find(SELECTOR_LINK, this._element)\n\n const scrollPadding = this._getScrollPadding()\n\n SelectorEngine.find(SELECTOR_PAGE_SECTION).forEach((pageSec, idx) => {\n if (pageSec.offsetTop - sectionsContainerTop <= scrollDistance + scrollPadding) {\n SelectorEngine.find(SELECTOR_LINK_ACTIVE, this._element).forEach((link) => {\n link.classList.remove(CLASS_NAME_ACTIVE)\n })\n if (idx < navItems.length) {\n const currActive = navItems[idx]\n this._getParentLinks(currActive).forEach((parentLink) => {\n parentLink.classList.add(CLASS_NAME_ACTIVE)\n })\n currActive.classList.add(CLASS_NAME_ACTIVE)\n this._decorateToggler(currActive.innerText)\n }\n }\n })\n this._updateProgress(this._sectionContainer)\n }\n\n _getCollapsible() {\n const coll = SelectorEngine.findOne(SELECTOR_COLLAPSIBLE, this._element)\n if (coll) {\n return NavBarCollapsible.getOrCreateInstance(coll)\n }\n return null\n }\n\n _getScrollPadding() {\n if (typeof this._config.scrollPadding === 'function') {\n return this._config.scrollPadding()\n }\n return this._config.scrollPadding\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst navs = SelectorEngine.find(SELECTOR_NAVSCROLL)\nnavs.map((nav) => {\n NavScroll.getOrCreateInstance(nav)\n})\n\nexport default NavScroll\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navscroll.js","sources":["../../src/js/plugins/navscroll.js"],"sourcesContent":["import BaseComponent from './base-component.js'\n\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\n\nimport onDocumentScroll from './util/on-document-scroll'\nimport NavBarCollapsible from './navbar-collapsible'\n\nimport { documentScrollTo } from './util/tween'\n\nconst NAME = 'navscroll'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_NAVSCROLL = '[data-bs-navscroll]' //'.it-navscroll-wrapper'\nconst SELECTOR_LIST = 'ul.link-list'\nconst SELECTOR_LINK_CONTAINER = 'li.nav-link, li.nav-item'\nconst SELECTOR_LINK = 'a.nav-link'\nconst SELECTOR_LINK_ACTIVE = `${SELECTOR_LINK}.${CLASS_NAME_ACTIVE}`\nconst SELECTOR_LINK_CLICKABLE = `${SELECTOR_LINK}[href^=\"#\"]`\nconst SELECTOR_CONTAINER = '.it-page-sections-container'\nconst SELECTOR_PAGE_SECTION = '.it-page-section'\nconst SELECTOR_TOGGLER = '.custom-navbar-toggler'\nconst SELECTOR_TOGGLER_ICON = '.it-list'\nconst SELECTOR_COLLAPSIBLE = '.navbar-collapsable'\nconst SELECTOR_PROGRESS_BAR = '.it-navscroll-progressbar'\n\nconst Default = {\n scrollPadding: 10,\n duration: 800,\n easing: 'easeInOutSine',\n}\nclass NavScroll extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._togglerElement = SelectorEngine.findOne(SELECTOR_TOGGLER, this._element)\n this._sectionContainer = SelectorEngine.findOne(SELECTOR_CONTAINER)\n this._collapsible = this._getCollapsible()\n this._isCollapseOpened = false\n this._callbackQueue = []\n this._scrollCb = null\n\n this._bindEvents()\n }\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n setScrollPadding(scrollPadding) {\n this._config.scrollPadding = scrollPadding\n }\n\n dispose() {\n if (this._scrollCb) {\n this._scrollCb.dispose()\n }\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n this._scrollCb = onDocumentScroll(() => this._onScroll())\n\n if (this._collapsible) {\n EventHandler.on(this._collapsible._element, 'shown.bs.navbarcollapsible', () => this._onCollapseOpened())\n EventHandler.on(this._collapsible._element, 'hidden.bs.navbarcollapsible', () => this._onCollapseClosed())\n }\n\n SelectorEngine.find(SELECTOR_LINK_CLICKABLE, this._element).forEach((link) => {\n link.addEventListener('click', () => {\n const scrollHash = () => this._scrollToHash(link.hash)\n if (this._isCollapseOpened) {\n this._callbackQueue.push(scrollHash)\n this._collapsible.hide()\n } else {\n scrollHash()\n }\n })\n })\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n EventHandler.on(window, 'load', () => {\n //if page is already scrolled\n setTimeout(() => this._onScroll(), 150)\n })\n }\n }\n\n _onCollapseOpened() {\n this._isCollapseOpened = true\n }\n _onCollapseClosed() {\n while (this._callbackQueue.length > 0) {\n const cb = this._callbackQueue.shift()\n if (typeof cb === 'function') {\n cb()\n }\n }\n this._isCollapseOpened = false\n }\n\n _getParentLinks(element) {\n const parents = []\n let parentContainer = element.closest(SELECTOR_LIST)\n let parentContainerPrev = null\n let exit = false\n while (parentContainer && !exit) {\n const parentLinkContainer = parentContainer.closest(SELECTOR_LINK_CONTAINER)\n if (parentLinkContainer) {\n const link = parentLinkContainer.querySelector(SELECTOR_LINK)\n if (link) {\n parents.push(link)\n }\n }\n parentContainerPrev = parentContainer\n parentContainer = (parentContainer.parentElement || parentContainer).closest(SELECTOR_LIST) //avoid self select of closest\n if (parentContainer === parentContainerPrev) {\n exit = true\n }\n }\n return parents\n }\n\n _decorateToggler(text) {\n if (this._togglerElement) {\n const icon = SelectorEngine.findOne(SELECTOR_TOGGLER_ICON, this._togglerElement)\n this._togglerElement.innerText = ''\n this._togglerElement.textContent = ''\n this._togglerElement.append(icon)\n this._togglerElement.append(text)\n }\n }\n\n _scrollToHash(hash) {\n const target = SelectorEngine.findOne(hash, this._sectionContainer)\n if (target) {\n documentScrollTo(target.offsetTop - this._getScrollPadding(), {\n duration: this._config.duration,\n easing: this._config.easing,\n /*complete: () => {\n },*/\n })\n\n if (history.pushState) {\n history.pushState(null, null, hash)\n } else {\n location.hash = hash\n }\n }\n }\n\n _updateProgress(content) {\n if (!content) {\n return\n }\n const progressBars = SelectorEngine.find(SELECTOR_PROGRESS_BAR)\n if (progressBars) {\n const offset = Math.abs(content.getBoundingClientRect().top)\n const height = content.getBoundingClientRect().height\n const scrollAmount = (offset / height) * 100\n const scrollValue = Math.min(100, Math.max(0, scrollAmount))\n\n progressBars.forEach((progressBar) => {\n if (content.getBoundingClientRect().top <= 0) {\n progressBar.style.width = scrollValue + '%'\n progressBar.setAttribute('aria-valuenow', scrollValue)\n } else {\n progressBar.style.width = 0 + '%'\n progressBar.setAttribute('aria-valuenow', 0)\n }\n })\n }\n }\n\n _onScroll() {\n const sectionsContainerTop = this._sectionContainer ? this._sectionContainer.offsetTop : 0\n if (typeof document === 'undefined') {\n return\n }\n const scrollDistance = document.scrollingElement.scrollTop - sectionsContainerTop\n\n const navItems = SelectorEngine.find(SELECTOR_LINK, this._element)\n\n const scrollPadding = this._getScrollPadding()\n\n SelectorEngine.find(SELECTOR_PAGE_SECTION).forEach((pageSec, idx) => {\n if (pageSec.offsetTop - sectionsContainerTop <= scrollDistance + scrollPadding) {\n SelectorEngine.find(SELECTOR_LINK_ACTIVE, this._element).forEach((link) => {\n link.classList.remove(CLASS_NAME_ACTIVE)\n })\n if (idx < navItems.length) {\n const currActive = navItems[idx]\n this._getParentLinks(currActive).forEach((parentLink) => {\n parentLink.classList.add(CLASS_NAME_ACTIVE)\n })\n currActive.classList.add(CLASS_NAME_ACTIVE)\n this._decorateToggler(currActive.innerText)\n }\n }\n })\n this._updateProgress(this._sectionContainer)\n }\n\n _getCollapsible() {\n const coll = SelectorEngine.findOne(SELECTOR_COLLAPSIBLE, this._element)\n if (coll) {\n return NavBarCollapsible.getOrCreateInstance(coll)\n }\n return null\n }\n\n _getScrollPadding() {\n if (typeof this._config.scrollPadding === 'function') {\n return this._config.scrollPadding()\n }\n return this._config.scrollPadding\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const navs = SelectorEngine.find(SELECTOR_NAVSCROLL)\n navs.map((nav) => {\n NavScroll.getOrCreateInstance(nav)\n })\n}\n\nexport default NavScroll\n"],"names":[],"mappings":"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"}
@@ -1,8 +1,17 @@
1
- import BaseComponent from 'bootstrap/js/src/base-component.js';
2
- import { getElementFromSelector, isVisible, reflow } from 'bootstrap/js/src/util';
3
- import Manipulator from 'bootstrap/js/src/dom/manipulator';
4
- import EventHandler from 'bootstrap/js/src/dom/event-handler';
5
- import { enableDismissTrigger } from 'bootstrap/js/src/util/component-functions';
1
+ import BaseComponent from './base-component.js';
2
+ import { getElementFromSelector, isVisible, reflow } from './util/index.js';
3
+ import Manipulator from './dom/manipulator.js';
4
+ import EventHandler from './dom/event-handler.js';
5
+ import { enableDismissTrigger } from './util/component-functions.js';
6
+
7
+ /**
8
+ * --------------------------------------------------------------------------
9
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
10
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
11
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
12
+ * --------------------------------------------------------------------------
13
+ */
14
+
6
15
 
7
16
  const NAME = 'notification';
8
17
  const DATA_KEY = 'bs.notification';
@@ -155,32 +164,34 @@ class Notification extends BaseComponent {
155
164
  * ------------------------------------------------------------------------
156
165
  */
157
166
 
158
- EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
159
- const target = getElementFromSelector(this);
160
-
161
- if (['A', 'AREA'].includes(this.tagName)) {
162
- event.preventDefault();
163
- }
167
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
168
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
169
+ const target = getElementFromSelector(this);
164
170
 
165
- EventHandler.one(target, EVENT_SHOW, (showEvent) => {
166
- if (showEvent.defaultPrevented) {
167
- // only register focus restorer if modal will actually get shown
168
- return
171
+ if (['A', 'AREA'].includes(this.tagName)) {
172
+ event.preventDefault();
169
173
  }
170
174
 
171
- EventHandler.one(target, EVENT_HIDDEN, () => {
172
- if (isVisible(this)) {
173
- this.focus();
175
+ EventHandler.one(target, EVENT_SHOW, (showEvent) => {
176
+ if (showEvent.defaultPrevented) {
177
+ // only register focus restorer if modal will actually get shown
178
+ return
174
179
  }
180
+
181
+ EventHandler.one(target, EVENT_HIDDEN, () => {
182
+ if (isVisible(this)) {
183
+ this.focus();
184
+ }
185
+ });
175
186
  });
176
- });
177
187
 
178
- const data = Notification.getOrCreateInstance(target);
188
+ const data = Notification.getOrCreateInstance(target);
179
189
 
180
- data.toggle(this);
181
- });
190
+ data.toggle(this);
191
+ });
182
192
 
183
- enableDismissTrigger(Notification);
193
+ enableDismissTrigger(Notification);
194
+ }
184
195
 
185
196
  export { Notification as default };
186
197
  //# sourceMappingURL=notification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sources":["../../src/js/plugins/notification.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\nimport { getElementFromSelector, isVisible, reflow } from 'bootstrap/js/src/util'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport { enableDismissTrigger } from 'bootstrap/js/src/util/component-functions'\n\nconst NAME = 'notification'\nconst DATA_KEY = 'bs.notification'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\n\nconst Default = {\n timeout: 0,\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst ATTRIBUTE_TIMEOUT = 'data-bs-timeout'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"notification\"]'\n\n/**\n * toggle per attivazione\n * attrib per timeout (assegnabili al toggler o al componente, vince sempre il toggler)\n * gestione chiusura (dismissable)\n * la classe si riferisce all'elemento notification, con options, metodi open(timeout) e close (che deve gestire il timeout)\n **/\n\nclass Notification extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._isShown = this._element.classList.contains(CLASS_NAME_SHOW)\n this._isTransitioning = false\n this._toId = null\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show(timeout, relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const timeoutVal = timeout || this._getElementTimeout(relatedTarget)\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._showElement(timeoutVal)\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideElement(), this._element, isAnimated)\n }\n\n toggle(relatedTarget) {\n this._isShown ? this.hide() : this.show(null, relatedTarget)\n }\n\n //Private\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _showElement(timeout) {\n const isAnimated = this._isAnimated()\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n //this._element.setAttribute('aria-modal', true)\n //this._element.setAttribute('role', 'dialog')\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n this._isTransitioning = false\n if (timeout) {\n this._setTimeout(timeout, () => this.hide())\n }\n }\n\n this._queueCallback(transitionComplete, this._element, isAnimated)\n }\n\n _hideElement() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _getElementTimeout(relatedTarget) {\n const relTimeout = relatedTarget ? parseInt(relatedTarget.getAttribute(ATTRIBUTE_TIMEOUT)) : null\n return relTimeout > 0 ? relTimeout : this._config.timeout\n }\n\n _setTimeout(duration, callback) {\n this._clearTimeout()\n setTimeout(callback, duration)\n }\n _clearTimeout() {\n if (this._toId) {\n clearTimeout(this._toId)\n this._toId = null\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, (showEvent) => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const data = Notification.getOrCreateInstance(target)\n\n data.toggle(this)\n})\n\nenableDismissTrigger(Notification)\n\nexport default Notification\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification.js","sources":["../../src/js/plugins/notification.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 * --------------------------------------------------------------------------\n */\n\nimport BaseComponent from './base-component.js'\nimport { getElementFromSelector, isVisible, reflow } from './util/index'\nimport Manipulator from './dom/manipulator'\nimport EventHandler from './dom/event-handler'\nimport { enableDismissTrigger } from './util/component-functions'\n\nconst NAME = 'notification'\nconst DATA_KEY = 'bs.notification'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\n\nconst Default = {\n timeout: 0,\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst ATTRIBUTE_TIMEOUT = 'data-bs-timeout'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"notification\"]'\n\n/**\n * toggle per attivazione\n * attrib per timeout (assegnabili al toggler o al componente, vince sempre il toggler)\n * gestione chiusura (dismissable)\n * la classe si riferisce all'elemento notification, con options, metodi open(timeout) e close (che deve gestire il timeout)\n **/\n\nclass Notification extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._isShown = this._element.classList.contains(CLASS_NAME_SHOW)\n this._isTransitioning = false\n this._toId = null\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show(timeout, relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n const timeoutVal = timeout || this._getElementTimeout(relatedTarget)\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._showElement(timeoutVal)\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideElement(), this._element, isAnimated)\n }\n\n toggle(relatedTarget) {\n this._isShown ? this.hide() : this.show(null, relatedTarget)\n }\n\n //Private\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _showElement(timeout) {\n const isAnimated = this._isAnimated()\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n //this._element.setAttribute('aria-modal', true)\n //this._element.setAttribute('role', 'dialog')\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n this._isTransitioning = false\n if (timeout) {\n this._setTimeout(timeout, () => this.hide())\n }\n }\n\n this._queueCallback(transitionComplete, this._element, isAnimated)\n }\n\n _hideElement() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n }\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _getElementTimeout(relatedTarget) {\n const relTimeout = relatedTarget ? parseInt(relatedTarget.getAttribute(ATTRIBUTE_TIMEOUT)) : null\n return relTimeout > 0 ? relTimeout : this._config.timeout\n }\n\n _setTimeout(duration, callback) {\n this._clearTimeout()\n setTimeout(callback, duration)\n }\n _clearTimeout() {\n if (this._toId) {\n clearTimeout(this._toId)\n this._toId = null\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, (showEvent) => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n const data = Notification.getOrCreateInstance(target)\n\n data.toggle(this)\n })\n\n enableDismissTrigger(Notification)\n}\n\nexport default Notification\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,263 @@
1
- import BSOffcanvas from 'bootstrap/js/src/offcanvas';
1
+ import { getElementFromSelector, isDisabled, isVisible } from './util/index.js';
2
+ import ScrollBarHelper from './util/scrollbar.js';
3
+ import EventHandler from './dom/event-handler.js';
4
+ import BaseComponent from './base-component.js';
5
+ import SelectorEngine from './dom/selector-engine.js';
6
+ import Backdrop from './util/backdrop.js';
7
+ import FocusTrap from './util/focustrap.js';
8
+ import { enableDismissTrigger } from './util/component-functions.js';
2
9
 
3
- class Offcanvas extends BSOffcanvas {}
10
+ /**
11
+ * --------------------------------------------------------------------------
12
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
13
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
14
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
15
+ * This a fork of Bootstrap: Initial license and original file name below
16
+ * Bootstrap (v5.2.3): offcanvas.js
17
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
18
+ * --------------------------------------------------------------------------
19
+ */
20
+
21
+
22
+ /**
23
+ * Constants
24
+ */
25
+
26
+ const NAME = 'offcanvas';
27
+ const DATA_KEY = 'bs.offcanvas';
28
+ const EVENT_KEY = `.${DATA_KEY}`;
29
+ const DATA_API_KEY = '.data-api';
30
+ const EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`;
31
+ const ESCAPE_KEY = 'Escape';
32
+
33
+ const CLASS_NAME_SHOW = 'show';
34
+ const CLASS_NAME_SHOWING = 'showing';
35
+ const CLASS_NAME_HIDING = 'hiding';
36
+ const CLASS_NAME_BACKDROP = 'offcanvas-backdrop';
37
+ const OPEN_SELECTOR = '.offcanvas.show';
38
+
39
+ const EVENT_SHOW = `show${EVENT_KEY}`;
40
+ const EVENT_SHOWN = `shown${EVENT_KEY}`;
41
+ const EVENT_HIDE = `hide${EVENT_KEY}`;
42
+ const EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`;
43
+ const EVENT_HIDDEN = `hidden${EVENT_KEY}`;
44
+ const EVENT_RESIZE = `resize${EVENT_KEY}`;
45
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
46
+ const EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`;
47
+
48
+ const SELECTOR_DATA_TOGGLE = '[data-bs-toggle="offcanvas"]';
49
+
50
+ const Default = {
51
+ backdrop: true,
52
+ keyboard: true,
53
+ scroll: false,
54
+ };
55
+
56
+ const DefaultType = {
57
+ backdrop: '(boolean|string)',
58
+ keyboard: 'boolean',
59
+ scroll: 'boolean',
60
+ };
61
+
62
+ /**
63
+ * Class definition
64
+ */
65
+
66
+ class Offcanvas extends BaseComponent {
67
+ constructor(element, config) {
68
+ super(element, config);
69
+
70
+ this._isShown = false;
71
+ this._backdrop = this._initializeBackDrop();
72
+ this._focustrap = this._initializeFocusTrap();
73
+ this._addEventListeners();
74
+ }
75
+
76
+ // Getters
77
+ static get Default() {
78
+ return Default
79
+ }
80
+
81
+ static get DefaultType() {
82
+ return DefaultType
83
+ }
84
+
85
+ static get NAME() {
86
+ return NAME
87
+ }
88
+
89
+ // Public
90
+ toggle(relatedTarget) {
91
+ return this._isShown ? this.hide() : this.show(relatedTarget)
92
+ }
93
+
94
+ show(relatedTarget) {
95
+ if (this._isShown) {
96
+ return
97
+ }
98
+
99
+ const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget });
100
+
101
+ if (showEvent.defaultPrevented) {
102
+ return
103
+ }
104
+
105
+ this._isShown = true;
106
+ this._backdrop.show();
107
+
108
+ if (!this._config.scroll) {
109
+ new ScrollBarHelper().hide();
110
+ }
111
+
112
+ this._element.setAttribute('aria-modal', true);
113
+ this._element.setAttribute('role', 'dialog');
114
+ this._element.classList.add(CLASS_NAME_SHOWING);
115
+
116
+ const completeCallBack = () => {
117
+ if (!this._config.scroll || this._config.backdrop) {
118
+ this._focustrap.activate();
119
+ }
120
+
121
+ this._element.classList.add(CLASS_NAME_SHOW);
122
+ this._element.classList.remove(CLASS_NAME_SHOWING);
123
+ EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget });
124
+ };
125
+
126
+ this._queueCallback(completeCallBack, this._element, true);
127
+ }
128
+
129
+ hide() {
130
+ if (!this._isShown) {
131
+ return
132
+ }
133
+
134
+ const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE);
135
+
136
+ if (hideEvent.defaultPrevented) {
137
+ return
138
+ }
139
+
140
+ this._focustrap.deactivate();
141
+ this._element.blur();
142
+ this._isShown = false;
143
+ this._element.classList.add(CLASS_NAME_HIDING);
144
+ this._backdrop.hide();
145
+
146
+ const completeCallback = () => {
147
+ this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING);
148
+ this._element.removeAttribute('aria-modal');
149
+ this._element.removeAttribute('role');
150
+
151
+ if (!this._config.scroll) {
152
+ new ScrollBarHelper().reset();
153
+ }
154
+
155
+ EventHandler.trigger(this._element, EVENT_HIDDEN);
156
+ };
157
+
158
+ this._queueCallback(completeCallback, this._element, true);
159
+ }
160
+
161
+ dispose() {
162
+ this._backdrop.dispose();
163
+ this._focustrap.deactivate();
164
+ super.dispose();
165
+ }
166
+
167
+ // Private
168
+ _initializeBackDrop() {
169
+ const clickCallback = () => {
170
+ if (this._config.backdrop === 'static') {
171
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
172
+ return
173
+ }
174
+
175
+ this.hide();
176
+ };
177
+
178
+ // 'static' option will be translated to true, and booleans will keep their value
179
+ const isVisible = Boolean(this._config.backdrop);
180
+
181
+ return new Backdrop({
182
+ className: CLASS_NAME_BACKDROP,
183
+ isVisible,
184
+ isAnimated: true,
185
+ rootElement: this._element.parentNode,
186
+ clickCallback: isVisible ? clickCallback : null,
187
+ })
188
+ }
189
+
190
+ _initializeFocusTrap() {
191
+ return new FocusTrap({
192
+ trapElement: this._element,
193
+ })
194
+ }
195
+
196
+ _addEventListeners() {
197
+ EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {
198
+ if (event.key !== ESCAPE_KEY) {
199
+ return
200
+ }
201
+
202
+ if (!this._config.keyboard) {
203
+ EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);
204
+ return
205
+ }
206
+
207
+ this.hide();
208
+ });
209
+ }
210
+ }
211
+
212
+ /**
213
+ * Data API implementation
214
+ */
215
+
216
+ if (typeof window !== 'undefined' && typeof document !== 'undefined') {
217
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
218
+ const target = getElementFromSelector(this);
219
+
220
+ if (['A', 'AREA'].includes(this.tagName)) {
221
+ event.preventDefault();
222
+ }
223
+
224
+ if (isDisabled(this)) {
225
+ return
226
+ }
227
+
228
+ EventHandler.one(target, EVENT_HIDDEN, () => {
229
+ // focus on trigger when it is closed
230
+ if (isVisible(this)) {
231
+ this.focus();
232
+ }
233
+ });
234
+
235
+ // avoid conflict when clicking a toggler of an offcanvas, while another is open
236
+ const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);
237
+ if (alreadyOpen && alreadyOpen !== target) {
238
+ Offcanvas.getInstance(alreadyOpen).hide();
239
+ }
240
+
241
+ const data = Offcanvas.getOrCreateInstance(target);
242
+ data.toggle(this);
243
+ });
244
+
245
+ EventHandler.on(window, EVENT_LOAD_DATA_API, () => {
246
+ for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {
247
+ Offcanvas.getOrCreateInstance(selector).show();
248
+ }
249
+ });
250
+
251
+ EventHandler.on(window, EVENT_RESIZE, () => {
252
+ for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {
253
+ if (getComputedStyle(element).position !== 'fixed') {
254
+ Offcanvas.getOrCreateInstance(element).hide();
255
+ }
256
+ }
257
+ });
258
+
259
+ enableDismissTrigger(Offcanvas);
260
+ }
4
261
 
5
262
  export { Offcanvas as default };
6
263
  //# sourceMappingURL=offcanvas.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"offcanvas.js","sources":["../../src/js/plugins/offcanvas.js"],"sourcesContent":["import { default as BSOffcanvas } from 'bootstrap/js/src/offcanvas'\n\nclass Offcanvas extends BSOffcanvas {}\n\nexport default Offcanvas\n"],"names":[],"mappings":";;AAEA,MAAM,SAAS,SAAS,WAAW,CAAC;;;;"}
1
+ {"version":3,"file":"offcanvas.js","sources":["../../src/js/plugins/offcanvas.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): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getElementFromSelector, isDisabled, isVisible } from './util/index'\nimport ScrollBarHelper from './util/scrollbar'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Backdrop from './util/backdrop'\nimport FocusTrap from './util/focustrap'\nimport { enableDismissTrigger } from './util/component-functions'\n\n/**\n * Constants\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_SHOWING = 'showing'\nconst CLASS_NAME_HIDING = 'hiding'\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop'\nconst OPEN_SELECTOR = '.offcanvas.show'\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false,\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean',\n}\n\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._isShown = false\n this._backdrop = this._initializeBackDrop()\n this._focustrap = this._initializeFocusTrap()\n this._addEventListeners()\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 toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._backdrop.show()\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide()\n }\n\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOWING)\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate()\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n this._element.classList.remove(CLASS_NAME_SHOWING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n }\n\n this._queueCallback(completeCallBack, this._element, true)\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 this._focustrap.deactivate()\n this._element.blur()\n this._isShown = false\n this._element.classList.add(CLASS_NAME_HIDING)\n this._backdrop.hide()\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW, CLASS_NAME_HIDING)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._queueCallback(completeCallback, this._element, true)\n }\n\n dispose() {\n this._backdrop.dispose()\n this._focustrap.deactivate()\n super.dispose()\n }\n\n // Private\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n }\n\n // 'static' option will be translated to true, and booleans will keep their value\n const isVisible = Boolean(this._config.backdrop)\n\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null,\n })\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element,\n })\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, (event) => {\n if (event.key !== ESCAPE_KEY) {\n return\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n return\n }\n\n this.hide()\n })\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 const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR)\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide()\n }\n\n const data = Offcanvas.getOrCreateInstance(target)\n data.toggle(this)\n })\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show()\n }\n })\n\n EventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide()\n }\n }\n })\n\n enableDismissTrigger(Offcanvas)\n}\n\nexport default Offcanvas\n"],"names":[],"mappings":";;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAWA;AACA;AACA;;AAEA,MAAM,IAAI,GAAG;AACb,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC/B,MAAM,YAAY,GAAG;AACrB,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;AAC5D,MAAM,UAAU,GAAG;;AAEnB,MAAM,eAAe,GAAG;AACxB,MAAM,kBAAkB,GAAG;AAC3B,MAAM,iBAAiB,GAAG;AAC1B,MAAM,mBAAmB,GAAG;AAC5B,MAAM,aAAa,GAAG;;AAEtB,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;AACpC,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;AACpC,MAAM,oBAAoB,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC;AACvD,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AACxC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;AACxC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;AAC9D,MAAM,qBAAqB,GAAG,CAAC,eAAe,EAAE,SAAS,CAAC;;AAE1D,MAAM,oBAAoB,GAAG;;AAE7B,MAAM,OAAO,GAAG;AAChB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,QAAQ,EAAE,IAAI;AAChB,EAAE,MAAM,EAAE,KAAK;AACf;;AAEA,MAAM,WAAW,GAAG;AACpB,EAAE,QAAQ,EAAE,kBAAkB;AAC9B,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,MAAM,EAAE,SAAS;AACnB;;AAEA;AACA;AACA;;AAEA,MAAM,SAAS,SAAS,aAAa,CAAC;AACtC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM;;AAEzB,IAAI,IAAI,CAAC,QAAQ,GAAG;AACpB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB;AAC7C,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB;AAC/C,IAAI,IAAI,CAAC,kBAAkB;AAC3B;;AAEA;AACA,EAAE,WAAW,OAAO,GAAG;AACvB,IAAI,OAAO;AACX;;AAEA,EAAE,WAAW,WAAW,GAAG;AAC3B,IAAI,OAAO;AACX;;AAEA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO;AACX;;AAEA;AACA,EAAE,MAAM,CAAC,aAAa,EAAE;AACxB,IAAI,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa;AAChE;;AAEA,EAAE,IAAI,CAAC,aAAa,EAAE;AACtB,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACvB,MAAM;AACN;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE;;AAEvF,IAAI,IAAI,SAAS,CAAC,gBAAgB,EAAE;AACpC,MAAM;AACN;;AAEA,IAAI,IAAI,CAAC,QAAQ,GAAG;AACpB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;;AAEvB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAC9B,MAAM,IAAI,eAAe,EAAE,CAAC,IAAI;AAChC;;AAEA,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI;AACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ;AAC/C,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,kBAAkB;;AAElD,IAAI,MAAM,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzD,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ;AAChC;;AAEA,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe;AACjD,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB;AACvD,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,aAAa,EAAE;AACxE;;AAEA,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;AAC7D;;AAEA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACxB,MAAM;AACN;;AAEA,IAAI,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU;;AAEpE,IAAI,IAAI,SAAS,CAAC,gBAAgB,EAAE;AACpC,MAAM;AACN;;AAEA,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU;AAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI;AACtB,IAAI,IAAI,CAAC,QAAQ,GAAG;AACpB,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB;AACjD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;;AAEvB,IAAI,MAAM,gBAAgB,GAAG,MAAM;AACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAE,iBAAiB;AACvE,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY;AAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM;;AAE1C,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AAChC,QAAQ,IAAI,eAAe,EAAE,CAAC,KAAK;AACnC;;AAEA,MAAM,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY;AACtD;;AAEA,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI;AAC7D;;AAEA,EAAE,OAAO,GAAG;AACZ,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO;AAC1B,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU;AAC9B,IAAI,KAAK,CAAC,OAAO;AACjB;;AAEA;AACA,EAAE,mBAAmB,GAAG;AACxB,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;AAC9C,QAAQ,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB;AAChE,QAAQ;AACR;;AAEA,MAAM,IAAI,CAAC,IAAI;AACf;;AAEA;AACA,IAAI,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;;AAEnD,IAAI,OAAO,IAAI,QAAQ,CAAC;AACxB,MAAM,SAAS,EAAE,mBAAmB;AACpC,MAAM,SAAS;AACf,MAAM,UAAU,EAAE,IAAI;AACtB,MAAM,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;AAC3C,MAAM,aAAa,EAAE,SAAS,GAAG,aAAa,GAAG,IAAI;AACrD,KAAK;AACL;;AAEA,EAAE,oBAAoB,GAAG;AACzB,IAAI,OAAO,IAAI,SAAS,CAAC;AACzB,MAAM,WAAW,EAAE,IAAI,CAAC,QAAQ;AAChC,KAAK;AACL;;AAEA,EAAE,kBAAkB,GAAG;AACvB,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAC,KAAK,KAAK;AACrE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,EAAE;AACpC,QAAQ;AACR;;AAEA,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AAClC,QAAQ,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB;AAChE,QAAQ;AACR;;AAEA,MAAM,IAAI,CAAC,IAAI;AACf,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACtE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,UAAU,KAAK,EAAE;AACzF,IAAI,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI;;AAE9C,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC9C,MAAM,KAAK,CAAC,cAAc;AAC1B;;AAEA,IAAI,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;AAC1B,MAAM;AACN;;AAEA,IAAI,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM;AACjD;AACA,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE;AAC3B,QAAQ,IAAI,CAAC,KAAK;AAClB;AACA,KAAK;;AAEL;AACA,IAAI,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa;AAC5D,IAAI,IAAI,WAAW,IAAI,WAAW,KAAK,MAAM,EAAE;AAC/C,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,IAAI;AAC7C;;AAEA,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM;AACrD,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI;AACpB,GAAG;;AAEH,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM;AACrD,IAAI,KAAK,MAAM,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;AAC/D,MAAM,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,IAAI;AAClD;AACA,GAAG;;AAEH,EAAE,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM;AAC9C,IAAI,KAAK,MAAM,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,8CAA8C,CAAC,EAAE;AAC/F,MAAM,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,EAAE;AAC1D,QAAQ,SAAS,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,IAAI;AACnD;AACA;AACA,GAAG;;AAEH,EAAE,oBAAoB,CAAC,SAAS;AAChC;;;;"}
@@ -1,6 +1,80 @@
1
- import BSPopover from 'bootstrap/js/src/popover';
1
+ import Tooltip from './tooltip.js';
2
2
 
3
- class Popover extends BSPopover {}
3
+ /**
4
+ * --------------------------------------------------------------------------
5
+ * Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
6
+ * Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
7
+ * Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
8
+ * This a fork of Bootstrap: Initial license and original file name below
9
+ * Bootstrap (v5.2.3): popover.js
10
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
11
+ * --------------------------------------------------------------------------
12
+ */
13
+
14
+
15
+ /**
16
+ * Constants
17
+ */
18
+
19
+ const NAME = 'popover';
20
+
21
+ const SELECTOR_TITLE = '.popover-header';
22
+ const SELECTOR_CONTENT = '.popover-body';
23
+
24
+ const Default = {
25
+ ...Tooltip.Default,
26
+ content: '',
27
+ offset: [0, 8],
28
+ placement: 'right',
29
+ template:
30
+ '<div class="popover" role="tooltip">' +
31
+ '<div class="popover-arrow"></div>' +
32
+ '<h3 class="popover-header"></h3>' +
33
+ '<div class="popover-body"></div>' +
34
+ '</div>',
35
+ trigger: 'click',
36
+ };
37
+
38
+ const DefaultType = {
39
+ ...Tooltip.DefaultType,
40
+ content: '(null|string|element|function)',
41
+ };
42
+
43
+ /**
44
+ * Class definition
45
+ */
46
+
47
+ class Popover extends Tooltip {
48
+ // Getters
49
+ static get Default() {
50
+ return Default
51
+ }
52
+
53
+ static get DefaultType() {
54
+ return DefaultType
55
+ }
56
+
57
+ static get NAME() {
58
+ return NAME
59
+ }
60
+
61
+ // Overrides
62
+ _isWithContent() {
63
+ return this._getTitle() || this._getContent()
64
+ }
65
+
66
+ // Private
67
+ _getContentForTemplate() {
68
+ return {
69
+ [SELECTOR_TITLE]: this._getTitle(),
70
+ [SELECTOR_CONTENT]: this._getContent(),
71
+ }
72
+ }
73
+
74
+ _getContent() {
75
+ return this._resolvePossibleFunction(this._config.content)
76
+ }
77
+ }
4
78
 
5
79
  export { Popover as default };
6
80
  //# sourceMappingURL=popover.js.map