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.
- package/README.EN.md +1 -1
- package/README.md +1 -1
- package/dist/bootstrap-italia.esm.js +1 -1
- package/dist/css/bootstrap-italia.min.css +9 -1
- package/dist/css/bootstrap-italia.min.css.map +1 -1
- package/dist/js/bootstrap-italia.bundle.min.js +19 -23
- package/dist/js/bootstrap-italia.min.js +18 -2
- package/dist/plugins/accept-overlay.js +19 -9
- package/dist/plugins/accept-overlay.js.map +1 -1
- package/dist/plugins/accordion.js +19 -24
- package/dist/plugins/accordion.js.map +1 -1
- package/dist/plugins/alert.js +67 -2
- package/dist/plugins/alert.js.map +1 -1
- package/dist/plugins/{backToTop.js → back-to-top.js} +14 -5
- package/dist/plugins/back-to-top.js.map +1 -0
- package/dist/plugins/base-component.js +91 -0
- package/dist/plugins/base-component.js.map +1 -0
- package/dist/plugins/button.js +58 -2
- package/dist/plugins/button.js.map +1 -1
- package/dist/plugins/carousel-bi.js +19 -9
- package/dist/plugins/carousel-bi.js.map +1 -1
- package/dist/plugins/carousel.js +445 -2
- package/dist/plugins/carousel.js.map +1 -1
- package/dist/plugins/collapse.js +273 -2
- package/dist/plugins/collapse.js.map +1 -1
- package/dist/plugins/cookiebar.js +39 -52
- package/dist/plugins/cookiebar.js.map +1 -1
- package/dist/plugins/dimmer.js +19 -8
- package/dist/plugins/dimmer.js.map +1 -1
- package/dist/plugins/dom/data.js +61 -0
- package/dist/plugins/dom/data.js.map +1 -0
- package/dist/plugins/dom/event-handler.js +296 -0
- package/dist/plugins/dom/event-handler.js.map +1 -0
- package/dist/plugins/dom/manipulator.js +76 -0
- package/dist/plugins/dom/manipulator.js.map +1 -0
- package/dist/plugins/dom/selector-engine.js +82 -0
- package/dist/plugins/dom/selector-engine.js.map +1 -0
- package/dist/plugins/dropdown.js +433 -2
- package/dist/plugins/dropdown.js.map +1 -1
- package/dist/plugins/fonts-loader.js +9 -1
- package/dist/plugins/fonts-loader.js.map +1 -1
- package/dist/plugins/form-validate.js +22 -8
- package/dist/plugins/form-validate.js.map +1 -1
- package/dist/plugins/forward.js +21 -18
- package/dist/plugins/forward.js.map +1 -1
- package/dist/plugins/header-sticky.js +11 -2
- package/dist/plugins/header-sticky.js.map +1 -1
- package/dist/plugins/history-back.js +17 -17
- package/dist/plugins/history-back.js.map +1 -1
- package/dist/plugins/init.js +9 -0
- package/dist/plugins/init.js.map +1 -1
- package/dist/plugins/input-label.js +14 -3
- package/dist/plugins/input-label.js.map +1 -1
- package/dist/plugins/input-number.js +13 -4
- package/dist/plugins/input-number.js.map +1 -1
- package/dist/plugins/input-password.js +48 -37
- package/dist/plugins/input-password.js.map +1 -1
- package/dist/plugins/input-search-autocomplete.js +9 -11
- package/dist/plugins/input-search-autocomplete.js.map +1 -1
- package/dist/plugins/input.js +12 -3
- package/dist/plugins/input.js.map +1 -1
- package/dist/plugins/list.js +23 -12
- package/dist/plugins/list.js.map +1 -1
- package/dist/plugins/masonry.js +29 -29
- package/dist/plugins/masonry.js.map +1 -1
- package/dist/plugins/modal.js +358 -2
- package/dist/plugins/modal.js.map +1 -1
- package/dist/plugins/navbar-collapsible.js +55 -45
- package/dist/plugins/navbar-collapsible.js.map +1 -1
- package/dist/plugins/navscroll.js +16 -23
- package/dist/plugins/navscroll.js.map +1 -1
- package/dist/plugins/notification.js +34 -23
- package/dist/plugins/notification.js.map +1 -1
- package/dist/plugins/offcanvas.js +259 -2
- package/dist/plugins/offcanvas.js.map +1 -1
- package/dist/plugins/popover.js +76 -2
- package/dist/plugins/popover.js.map +1 -1
- package/dist/plugins/progress-donut.js +19 -12
- package/dist/plugins/progress-donut.js.map +1 -1
- package/dist/plugins/scrollspy.js +273 -2
- package/dist/plugins/scrollspy.js.map +1 -1
- package/dist/plugins/select-autocomplete.js +10 -1
- package/dist/plugins/select-autocomplete.js.map +1 -1
- package/dist/plugins/sticky.js +21 -18
- package/dist/plugins/sticky.js.map +1 -1
- package/dist/plugins/tab.js +244 -27
- package/dist/plugins/tab.js.map +1 -1
- package/dist/plugins/toast.js +203 -2
- package/dist/plugins/toast.js.map +1 -1
- package/dist/plugins/tooltip.js +602 -2
- package/dist/plugins/tooltip.js.map +1 -1
- package/dist/plugins/track-focus.js +8 -0
- package/dist/plugins/track-focus.js.map +1 -1
- package/dist/plugins/transfer.js +11 -16
- package/dist/plugins/transfer.js.map +1 -1
- package/dist/plugins/upload-dragdrop.js +13 -4
- package/dist/plugins/upload-dragdrop.js.map +1 -1
- package/dist/plugins/util/backdrop.js +155 -0
- package/dist/plugins/util/backdrop.js.map +1 -0
- package/dist/plugins/util/component-functions.js +38 -0
- package/dist/plugins/util/component-functions.js.map +1 -0
- package/dist/plugins/util/config.js +70 -0
- package/dist/plugins/util/config.js.map +1 -0
- package/dist/plugins/util/cookies.js +8 -0
- package/dist/plugins/util/cookies.js.map +1 -1
- package/dist/plugins/util/device.js +0 -3
- package/dist/plugins/util/device.js.map +1 -1
- package/dist/plugins/util/dom.js +8 -0
- package/dist/plugins/util/dom.js.map +1 -1
- package/dist/plugins/util/focustrap.js +121 -0
- package/dist/plugins/util/focustrap.js.map +1 -0
- package/dist/plugins/util/index.js +280 -0
- package/dist/plugins/util/index.js.map +1 -0
- package/dist/plugins/util/observer.js +8 -0
- package/dist/plugins/util/observer.js.map +1 -1
- package/dist/plugins/util/on-document-scroll.js +20 -9
- package/dist/plugins/util/on-document-scroll.js.map +1 -1
- package/dist/plugins/util/pageScroll.js +8 -0
- package/dist/plugins/util/pageScroll.js.map +1 -1
- package/dist/plugins/util/sanitizer.js +115 -0
- package/dist/plugins/util/sanitizer.js.map +1 -0
- package/dist/plugins/util/scrollbar.js +120 -0
- package/dist/plugins/util/scrollbar.js.map +1 -0
- package/dist/plugins/util/swipe.js +150 -0
- package/dist/plugins/util/swipe.js.map +1 -0
- package/dist/plugins/util/template-factory.js +166 -0
- package/dist/plugins/util/template-factory.js.map +1 -0
- package/dist/plugins/util/tween.js +10 -1
- package/dist/plugins/util/tween.js.map +1 -1
- package/dist/plugins/util/youtube-video.js +12 -21
- package/dist/plugins/util/youtube-video.js.map +1 -1
- package/dist/plugins/videoplayer.js +19 -8
- package/dist/plugins/videoplayer.js.map +1 -1
- package/dist/version.js +10 -3
- package/dist/version.js.map +1 -1
- package/package.json +6 -7
- package/src/js/bootstrap-italia.entry.js +8 -0
- package/src/js/bootstrap-italia.esm.js +9 -1
- package/src/js/icons.js +8 -0
- package/src/js/load-plugin.js +8 -0
- package/src/js/plugins/accept-overlay.js +18 -10
- package/src/js/plugins/accordion.js +16 -22
- package/src/js/plugins/alert.js +66 -2
- package/src/js/plugins/{backToTop.js → back-to-top.js} +12 -4
- package/src/js/plugins/base-component.js +89 -0
- package/src/js/plugins/button.js +57 -2
- package/src/js/plugins/carousel-bi.js +18 -9
- package/src/js/plugins/carousel.js +444 -2
- package/src/js/plugins/collapse.js +272 -2
- package/src/js/plugins/cookiebar.js +37 -60
- package/src/js/plugins/dimmer.js +18 -8
- package/src/js/plugins/dom/data.js +58 -0
- package/src/js/plugins/dom/event-handler.js +301 -0
- package/src/js/plugins/dom/manipulator.js +75 -0
- package/src/js/plugins/dom/selector-engine.js +80 -0
- package/src/js/plugins/dropdown.js +432 -2
- package/src/js/plugins/fonts-loader.js +9 -1
- package/src/js/plugins/form-validate.js +21 -8
- package/src/js/plugins/form.js +11 -3
- package/src/js/plugins/forward.js +18 -16
- package/src/js/plugins/header-sticky.js +10 -2
- package/src/js/plugins/history-back.js +14 -14
- package/src/js/plugins/init.js +8 -0
- package/src/js/plugins/input-label.js +13 -3
- package/src/js/plugins/input-number.js +12 -4
- package/src/js/plugins/input-password.js +46 -36
- package/src/js/plugins/input-search-autocomplete.js +9 -13
- package/src/js/plugins/input.js +11 -3
- package/src/js/plugins/list.js +22 -12
- package/src/js/plugins/masonry.js +26 -27
- package/src/js/plugins/modal.js +357 -2
- package/src/js/plugins/navbar-collapsible.js +55 -53
- package/src/js/plugins/navscroll.js +16 -23
- package/src/js/plugins/notification.js +33 -23
- package/src/js/plugins/offcanvas.js +258 -2
- package/src/js/plugins/popover.js +75 -2
- package/src/js/plugins/progress-donut.js +17 -13
- package/src/js/plugins/scrollspy.js +272 -2
- package/src/js/plugins/select-autocomplete.js +9 -1
- package/src/js/plugins/sticky.js +21 -23
- package/src/js/plugins/tab.js +243 -27
- package/src/js/plugins/toast.js +206 -2
- package/src/js/plugins/tooltip.js +601 -2
- package/src/js/plugins/track-focus.js +8 -0
- package/src/js/plugins/transfer.js +12 -24
- package/src/js/plugins/upload-dragdrop.js +12 -4
- package/src/js/plugins/util/backdrop.js +153 -0
- package/src/js/plugins/util/component-functions.js +36 -0
- package/src/js/plugins/util/config.js +68 -0
- package/src/js/plugins/util/cookies.js +8 -0
- package/src/js/plugins/util/device.js +0 -3
- package/src/js/plugins/util/dom.js +8 -0
- package/src/js/plugins/util/focustrap.js +119 -0
- package/src/js/plugins/util/index.js +317 -0
- package/src/js/plugins/util/observer.js +8 -0
- package/src/js/plugins/util/on-document-scroll.js +19 -9
- package/src/js/plugins/util/pageScroll.js +8 -0
- package/src/js/plugins/util/sanitizer.js +112 -0
- package/src/js/plugins/util/scrollbar.js +118 -0
- package/src/js/plugins/util/swipe.js +148 -0
- package/src/js/plugins/util/template-factory.js +164 -0
- package/src/js/plugins/util/tween.js +9 -1
- package/src/js/plugins/util/youtube-video.js +12 -21
- package/src/js/plugins/videoplayer.js +18 -8
- package/src/js/version.js +10 -3
- package/src/scss/base/_containers.scss +41 -0
- package/src/scss/base/_functions.scss +373 -0
- package/src/scss/base/_helpers.scss +10 -0
- package/src/scss/base/_maps.scss +54 -0
- package/src/scss/base/_mixins.scss +44 -0
- package/src/scss/base/_reboot.scss +590 -0
- package/src/scss/base/_root.scss +73 -0
- package/src/scss/base/_transitions.scss +27 -0
- package/src/scss/base/_utilities.scss +742 -0
- package/src/scss/base/_variables.scss +2123 -0
- package/src/scss/base/_version.scss +3 -0
- package/src/scss/base/helpers/_clearfix.scss +3 -0
- package/src/scss/base/helpers/_color-bg.scss +10 -0
- package/src/scss/base/helpers/_colored-links.scss +16 -0
- package/src/scss/base/helpers/_position.scss +36 -0
- package/src/scss/base/helpers/_ratio.scss +26 -0
- package/src/scss/base/helpers/_stacks.scss +15 -0
- package/src/scss/base/helpers/_stretched-link.scss +15 -0
- package/src/scss/base/helpers/_text-truncation.scss +7 -0
- package/src/scss/base/helpers/_visually-hidden.scss +8 -0
- package/src/scss/base/helpers/_vr.scss +8 -0
- package/src/scss/base/mixins/_alert.scss +15 -0
- package/src/scss/base/mixins/_backdrop.scss +18 -0
- package/src/scss/base/mixins/_banner.scss +11 -0
- package/src/scss/base/mixins/_border-radius.scss +77 -0
- package/src/scss/base/mixins/_box-shadow.scss +18 -0
- package/src/scss/base/mixins/_breakpoints.scss +127 -0
- package/src/scss/base/mixins/_buttons.scss +141 -0
- package/src/scss/base/mixins/_caret.scss +64 -0
- package/src/scss/base/mixins/_clearfix.scss +9 -0
- package/src/scss/base/mixins/_color-scheme.scss +7 -0
- package/src/scss/base/mixins/_container.scss +11 -0
- package/src/scss/base/mixins/_deprecate.scss +10 -0
- package/src/scss/base/mixins/_forms.scss +152 -0
- package/src/scss/base/mixins/_gradients.scss +47 -0
- package/src/scss/base/mixins/_grid.scss +151 -0
- package/src/scss/base/mixins/_image.scss +15 -0
- package/src/scss/base/mixins/_list-group.scss +24 -0
- package/src/scss/base/mixins/_lists.scss +7 -0
- package/src/scss/base/mixins/_pagination.scss +10 -0
- package/src/scss/base/mixins/_reset-text.scss +17 -0
- package/src/scss/base/mixins/_resize.scss +6 -0
- package/src/scss/base/mixins/_table-variants.scss +24 -0
- package/src/scss/base/mixins/_text-truncate.scss +8 -0
- package/src/scss/base/mixins/_transition.scss +26 -0
- package/src/scss/base/mixins/_utilities.scss +96 -0
- package/src/scss/base/mixins/_visually-hidden.scss +29 -0
- package/src/scss/base/utilities/_api.scss +45 -0
- package/src/scss/base/vendor/_rfs.scss +337 -0
- package/src/scss/bootstrap-italia.scss +137 -156
- package/src/scss/components/_accordion.scss +297 -0
- package/src/scss/components/_badge.scss +60 -0
- package/src/scss/components/_breadcrumb.scss +95 -0
- package/src/scss/components/_button-group.scss +143 -0
- package/src/scss/components/_buttons.scss +467 -0
- package/src/scss/{custom → components}/_card.scss +228 -0
- package/src/scss/{custom → components}/_carousel.scss +225 -3
- package/src/scss/components/_dropdown.scss +480 -0
- package/src/scss/{custom → components}/_grid.scss +33 -0
- package/src/scss/{custom → components}/_gridlist.scss +7 -0
- package/src/scss/{custom → components}/_hero.scss +23 -57
- package/src/scss/components/_images.scss +48 -0
- package/src/scss/{custom → components}/_linklist.scss +0 -1
- package/src/scss/components/_list-group.scss +190 -0
- package/src/scss/components/_modal.scss +475 -0
- package/src/scss/components/_nav.scss +169 -0
- package/src/scss/components/_navbar.scss +273 -0
- package/src/scss/components/_offcanvas.scss +144 -0
- package/src/scss/components/_pagination.scss +108 -0
- package/src/scss/components/_placeholders.scss +51 -0
- package/src/scss/components/_popover.scss +298 -0
- package/src/scss/components/_progress-bars.scss +126 -0
- package/src/scss/{custom → components}/_steppers.scss +2 -2
- package/src/scss/{custom → components}/_tab.scss +3 -7
- package/src/scss/components/_tables.scss +171 -0
- package/src/scss/components/_toasts.scss +73 -0
- package/src/scss/{custom → components}/_toolbar.scss +19 -12
- package/src/scss/components/_tooltip.scss +139 -0
- package/src/scss/{custom → components}/_type.scss +92 -0
- package/src/scss/forms/_accessible-autocomplete.scss +188 -0
- package/src/scss/forms/_floating-labels.scss +75 -0
- package/src/scss/forms/_form-check.scss +175 -0
- package/src/scss/forms/_form-control.scss +201 -0
- package/src/scss/forms/_form-range.scss +95 -0
- package/src/scss/{custom → forms}/_form-select.scss +72 -0
- package/src/scss/forms/_form-text.scss +11 -0
- package/src/scss/{custom → forms}/_forms.scss +8 -12
- package/src/scss/forms/_input-group.scss +129 -0
- package/src/scss/forms/_labels.scss +36 -0
- package/src/scss/forms/_validation.scss +12 -0
- package/src/scss/utilities/icons.scss +5 -5
- package/types/index.d.ts +4 -1
- package/types/plugins/video.ts +33 -0
- package/dist/plugins/backToTop.js.map +0 -1
- package/src/scss/_functions.scss +0 -38
- package/src/scss/_variables.scss +0 -639
- package/src/scss/custom/_accessible-autocomplete.scss +0 -30
- package/src/scss/custom/_accordion.scss +0 -176
- package/src/scss/custom/_badge.scss +0 -29
- package/src/scss/custom/_breadcrumb.scss +0 -51
- package/src/scss/custom/_buttons.scss +0 -235
- package/src/scss/custom/_componente-base.scss +0 -6
- package/src/scss/custom/_dropdown.scss +0 -248
- package/src/scss/custom/_form-datepicker.scss +0 -604
- package/src/scss/custom/_images.scss +0 -10
- package/src/scss/custom/_modal.scss +0 -248
- package/src/scss/custom/_popover.scss +0 -106
- package/src/scss/custom/_progress-bars.scss +0 -70
- package/src/scss/custom/_tables.scss +0 -11
- package/src/scss/custom/_timepicker.scss +0 -252
- package/src/scss/custom/_tooltip.scss +0 -33
- package/src/scss/custom/_version.scss +0 -3
- package/src/scss/custom/mixins/_buttons.scss +0 -67
- package/src/scss/utilities/colors_vars.scss +0 -426
- /package/src/scss/{custom → base}/mixins/_text-emphasis.scss +0 -0
- /package/src/scss/{custom → components}/_accept-overlay.scss +0 -0
- /package/src/scss/{custom → components}/_affix.scss +0 -0
- /package/src/scss/{custom → components}/_alert.scss +0 -0
- /package/src/scss/{custom → components}/_anchor.scss +0 -0
- /package/src/scss/{custom → components}/_avatar.scss +0 -0
- /package/src/scss/{custom → components}/_back-to-top.scss +0 -0
- /package/src/scss/{custom → components}/_bottomnav.scss +0 -0
- /package/src/scss/{custom → components}/_calendar.scss +0 -0
- /package/src/scss/{custom → components}/_callout.scss +0 -0
- /package/src/scss/{custom → components}/_chips.scss +0 -0
- /package/src/scss/{custom → components}/_code.scss +0 -0
- /package/src/scss/{custom → components}/_cookiebar.scss +0 -0
- /package/src/scss/{custom → components}/_dimmer.scss +0 -0
- /package/src/scss/{custom → components}/_figcaption.scss +0 -0
- /package/src/scss/{custom → components}/_font.scss +0 -0
- /package/src/scss/{custom → components}/_footer.scss +0 -0
- /package/src/scss/{custom → components}/_forward.scss +0 -0
- /package/src/scss/{custom → components}/_header.scss +0 -0
- /package/src/scss/{custom → components}/_headercenter.scss +0 -0
- /package/src/scss/{custom → components}/_headercentertheme.scss +0 -0
- /package/src/scss/{custom → components}/_headernavbar.scss +0 -0
- /package/src/scss/{custom → components}/_headernavbartheme.scss +0 -0
- /package/src/scss/{custom → components}/_headerslim.scss +0 -0
- /package/src/scss/{custom → components}/_headerslimtheme.scss +0 -0
- /package/src/scss/{custom → components}/_imgresponsive.scss +0 -0
- /package/src/scss/{custom → components}/_list.scss +0 -0
- /package/src/scss/{custom → components}/_map.scss +0 -0
- /package/src/scss/{custom → components}/_masonry-loader.scss +0 -0
- /package/src/scss/{custom → components}/_megamenu.scss +0 -0
- /package/src/scss/{custom → components}/_navigation.scss +0 -0
- /package/src/scss/{custom → components}/_navigationtheme.scss +0 -0
- /package/src/scss/{custom → components}/_navscroll.scss +0 -0
- /package/src/scss/{custom → components}/_navscrolltheme.scss +0 -0
- /package/src/scss/{custom → components}/_notifications.scss +0 -0
- /package/src/scss/{custom → components}/_overlay-panel.scss +0 -0
- /package/src/scss/{custom → components}/_page-scroll.scss +0 -0
- /package/src/scss/{custom → components}/_pager.scss +0 -0
- /package/src/scss/{custom → components}/_point-list.scss +0 -0
- /package/src/scss/{custom → components}/_print.scss +0 -0
- /package/src/scss/{custom → components}/_progress-donuts.scss +0 -0
- /package/src/scss/{custom → components}/_progress-spinners.scss +0 -0
- /package/src/scss/{custom → components}/_rating-list.scss +0 -0
- /package/src/scss/{custom → components}/_rating.scss +0 -0
- /package/src/scss/{custom → components}/_sections.scss +0 -0
- /package/src/scss/{custom → components}/_sidebar.scss +0 -0
- /package/src/scss/{custom → components}/_sidebarthemes.scss +0 -0
- /package/src/scss/{custom → components}/_skiplinks.scss +0 -0
- /package/src/scss/{custom → components}/_sticky.scss +0 -0
- /package/src/scss/{custom → components}/_thumbnav.scss +0 -0
- /package/src/scss/{custom → components}/_timeline.scss +0 -0
- /package/src/scss/{custom → components}/_videoplayer.scss +0 -0
- /package/src/scss/{custom → forms}/_autocomplete.scss +0 -0
- /package/src/scss/{custom → forms}/_form-input-file.scss +0 -0
- /package/src/scss/{custom → forms}/_form-input-number.scss +0 -0
- /package/src/scss/{custom → forms}/_form-input-upload.scss +0 -0
- /package/src/scss/{custom → forms}/_form-password.scss +0 -0
- /package/src/scss/{custom → forms}/_form-toggles.scss +0 -0
- /package/src/scss/{custom → forms}/_form-transfer.scss +0 -0
- /package/src/scss/{custom → forms}/_just-validate.scss +0 -0
- /package/types/plugins/{backToTop.d.ts → back-to-top.d.ts} +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import EventHandler from '../dom/event-handler.js';
|
|
2
|
+
import SelectorEngine from '../dom/selector-engine.js';
|
|
3
|
+
import Config from './config.js';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* --------------------------------------------------------------------------
|
|
7
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
8
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
9
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
10
|
+
* This a fork of Bootstrap: Initial license and original file name below
|
|
11
|
+
* Bootstrap (v5.2.3): util/focustrap.js
|
|
12
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
13
|
+
* --------------------------------------------------------------------------
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Constants
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
const NAME = 'focustrap';
|
|
22
|
+
const DATA_KEY = 'bs.focustrap';
|
|
23
|
+
const EVENT_KEY = `.${DATA_KEY}`;
|
|
24
|
+
const EVENT_FOCUSIN = `focusin${EVENT_KEY}`;
|
|
25
|
+
const EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`;
|
|
26
|
+
|
|
27
|
+
const TAB_KEY = 'Tab';
|
|
28
|
+
const TAB_NAV_FORWARD = 'forward';
|
|
29
|
+
const TAB_NAV_BACKWARD = 'backward';
|
|
30
|
+
|
|
31
|
+
const Default = {
|
|
32
|
+
autofocus: true,
|
|
33
|
+
trapElement: null, // The element to trap focus inside of
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const DefaultType = {
|
|
37
|
+
autofocus: 'boolean',
|
|
38
|
+
trapElement: 'element',
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Class definition
|
|
43
|
+
*/
|
|
44
|
+
|
|
45
|
+
class FocusTrap extends Config {
|
|
46
|
+
constructor(config) {
|
|
47
|
+
super();
|
|
48
|
+
this._config = this._getConfig(config);
|
|
49
|
+
this._isActive = false;
|
|
50
|
+
this._lastTabNavDirection = null;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Getters
|
|
54
|
+
static get Default() {
|
|
55
|
+
return Default
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static get DefaultType() {
|
|
59
|
+
return DefaultType
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
static get NAME() {
|
|
63
|
+
return NAME
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Public
|
|
67
|
+
activate() {
|
|
68
|
+
if (this._isActive) {
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
if (this._config.autofocus) {
|
|
73
|
+
this._config.trapElement.focus();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
EventHandler.off(document, EVENT_KEY); // guard against infinite focus loop
|
|
77
|
+
EventHandler.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event));
|
|
78
|
+
EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event));
|
|
79
|
+
|
|
80
|
+
this._isActive = true;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
deactivate() {
|
|
84
|
+
if (!this._isActive) {
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
this._isActive = false;
|
|
89
|
+
EventHandler.off(document, EVENT_KEY);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Private
|
|
93
|
+
_handleFocusin(event) {
|
|
94
|
+
const { trapElement } = this._config;
|
|
95
|
+
|
|
96
|
+
if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {
|
|
97
|
+
return
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const elements = SelectorEngine.focusableChildren(trapElement);
|
|
101
|
+
|
|
102
|
+
if (elements.length === 0) {
|
|
103
|
+
trapElement.focus();
|
|
104
|
+
} else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {
|
|
105
|
+
elements[elements.length - 1].focus();
|
|
106
|
+
} else {
|
|
107
|
+
elements[0].focus();
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
_handleKeydown(event) {
|
|
112
|
+
if (event.key !== TAB_KEY) {
|
|
113
|
+
return
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export { FocusTrap as default };
|
|
121
|
+
//# sourceMappingURL=focustrap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focustrap.js","sources":["../../../src/js/plugins/util/focustrap.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): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport SelectorEngine from '../dom/selector-engine'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'focustrap'\nconst DATA_KEY = 'bs.focustrap'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY}`\n\nconst TAB_KEY = 'Tab'\nconst TAB_NAV_FORWARD = 'forward'\nconst TAB_NAV_BACKWARD = 'backward'\n\nconst Default = {\n autofocus: true,\n trapElement: null, // The element to trap focus inside of\n}\n\nconst DefaultType = {\n autofocus: 'boolean',\n trapElement: 'element',\n}\n\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isActive = false\n this._lastTabNavDirection = null\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 activate() {\n if (this._isActive) {\n return\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus()\n }\n\n EventHandler.off(document, EVENT_KEY) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, (event) => this._handleFocusin(event))\n EventHandler.on(document, EVENT_KEYDOWN_TAB, (event) => this._handleKeydown(event))\n\n this._isActive = true\n }\n\n deactivate() {\n if (!this._isActive) {\n return\n }\n\n this._isActive = false\n EventHandler.off(document, EVENT_KEY)\n }\n\n // Private\n _handleFocusin(event) {\n const { trapElement } = this._config\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement)\n\n if (elements.length === 0) {\n trapElement.focus()\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus()\n } else {\n elements[0].focus()\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD\n }\n}\n\nexport default FocusTrap\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
4
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
5
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
6
|
+
* This a fork of Bootstrap: Initial license and original file name below
|
|
7
|
+
* Bootstrap (v5.2.3): util/index.js
|
|
8
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
9
|
+
* --------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
const MAX_UID = 1_000_000;
|
|
13
|
+
const MILLISECONDS_MULTIPLIER = 1000;
|
|
14
|
+
const TRANSITION_END = 'transitionend';
|
|
15
|
+
|
|
16
|
+
// Shout-out Angus Croll (https://goo.gl/pxwQGp)
|
|
17
|
+
const toType = (object) => {
|
|
18
|
+
if (object === null || object === undefined) {
|
|
19
|
+
return `${object}`
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return Object.prototype.toString
|
|
23
|
+
.call(object)
|
|
24
|
+
.match(/\s([a-z]+)/i)[1]
|
|
25
|
+
.toLowerCase()
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Public Util API
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
const getUID = (prefix) => {
|
|
33
|
+
do {
|
|
34
|
+
prefix += Math.floor(Math.random() * MAX_UID);
|
|
35
|
+
} while (document.getElementById(prefix))
|
|
36
|
+
|
|
37
|
+
return prefix
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const getSelector = (element) => {
|
|
41
|
+
let selector = element.getAttribute('data-bs-target');
|
|
42
|
+
|
|
43
|
+
if (!selector || selector === '#') {
|
|
44
|
+
let hrefAttribute = element.getAttribute('href');
|
|
45
|
+
|
|
46
|
+
// The only valid content that could double as a selector are IDs or classes,
|
|
47
|
+
// so everything starting with `#` or `.`. If a "real" URL is used as the selector,
|
|
48
|
+
// `document.querySelector` will rightfully complain it is invalid.
|
|
49
|
+
// See https://github.com/twbs/bootstrap/issues/32273
|
|
50
|
+
if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {
|
|
51
|
+
return null
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Just in case some CMS puts out a full URL with the anchor appended
|
|
55
|
+
if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {
|
|
56
|
+
hrefAttribute = `#${hrefAttribute.split('#')[1]}`;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return selector
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const getSelectorFromElement = (element) => {
|
|
66
|
+
const selector = getSelector(element);
|
|
67
|
+
|
|
68
|
+
if (selector) {
|
|
69
|
+
return document.querySelector(selector) ? selector : null
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return null
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
const getElementFromSelector = (element) => {
|
|
76
|
+
const selector = getSelector(element);
|
|
77
|
+
|
|
78
|
+
return selector ? document.querySelector(selector) : null
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
const getTransitionDurationFromElement = (element) => {
|
|
82
|
+
if (!element) {
|
|
83
|
+
return 0
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Get transition-duration of the element
|
|
87
|
+
let { transitionDuration, transitionDelay } = window.getComputedStyle(element);
|
|
88
|
+
|
|
89
|
+
const floatTransitionDuration = Number.parseFloat(transitionDuration);
|
|
90
|
+
const floatTransitionDelay = Number.parseFloat(transitionDelay);
|
|
91
|
+
|
|
92
|
+
// Return 0 if element or transition duration is not found
|
|
93
|
+
if (!floatTransitionDuration && !floatTransitionDelay) {
|
|
94
|
+
return 0
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// If multiple durations are defined, take the first
|
|
98
|
+
transitionDuration = transitionDuration.split(',')[0];
|
|
99
|
+
transitionDelay = transitionDelay.split(',')[0];
|
|
100
|
+
|
|
101
|
+
return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
const triggerTransitionEnd = (element) => {
|
|
105
|
+
element.dispatchEvent(new Event(TRANSITION_END));
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
const isElement = (object) => {
|
|
109
|
+
if (!object || typeof object !== 'object') {
|
|
110
|
+
return false
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
return typeof object.nodeType !== 'undefined'
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
const getElement = (object) => {
|
|
117
|
+
if (isElement(object)) {
|
|
118
|
+
return object
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (typeof object === 'string' && object.length > 0) {
|
|
122
|
+
return document.querySelector(object)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return null
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
const isVisible = (element) => {
|
|
129
|
+
if (!isElement(element) || element.getClientRects().length === 0) {
|
|
130
|
+
return false
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible';
|
|
134
|
+
// Handle `details` element as its content may falsie appear visible when it is closed
|
|
135
|
+
const closedDetails = element.closest('details:not([open])');
|
|
136
|
+
|
|
137
|
+
if (!closedDetails) {
|
|
138
|
+
return elementIsVisible
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
if (closedDetails !== element) {
|
|
142
|
+
const summary = element.closest('summary');
|
|
143
|
+
if (summary && summary.parentNode !== closedDetails) {
|
|
144
|
+
return false
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
if (summary === null) {
|
|
148
|
+
return false
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
return elementIsVisible
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
const isDisabled = (element) => {
|
|
156
|
+
if (!element || element.nodeType !== Node.ELEMENT_NODE) {
|
|
157
|
+
return true
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
if (element.classList.contains('disabled')) {
|
|
161
|
+
return true
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (typeof element.disabled !== 'undefined') {
|
|
165
|
+
return element.disabled
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
const findShadowRoot = (element) => {
|
|
172
|
+
if (!document.documentElement.attachShadow) {
|
|
173
|
+
return null
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Can find the shadow root otherwise it'll return the document
|
|
177
|
+
if (typeof element.getRootNode === 'function') {
|
|
178
|
+
const root = element.getRootNode();
|
|
179
|
+
return root instanceof ShadowRoot ? root : null
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
if (element instanceof ShadowRoot) {
|
|
183
|
+
return element
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// when we don't find a shadow root
|
|
187
|
+
if (!element.parentNode) {
|
|
188
|
+
return null
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return findShadowRoot(element.parentNode)
|
|
192
|
+
};
|
|
193
|
+
|
|
194
|
+
const noop = () => {};
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Trick to restart an element's animation
|
|
198
|
+
*
|
|
199
|
+
* @param {HTMLElement} element
|
|
200
|
+
* @return void
|
|
201
|
+
*
|
|
202
|
+
* @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
|
|
203
|
+
*/
|
|
204
|
+
const reflow = (element) => {
|
|
205
|
+
element.offsetHeight;
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
const isRTL = () => {
|
|
209
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
210
|
+
return document.documentElement.dir === 'rtl'
|
|
211
|
+
} else {
|
|
212
|
+
return false
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
const execute = (callback) => {
|
|
217
|
+
if (typeof callback === 'function') {
|
|
218
|
+
callback();
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
const executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {
|
|
223
|
+
if (!waitForTransition) {
|
|
224
|
+
execute(callback);
|
|
225
|
+
return
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
const durationPadding = 5;
|
|
229
|
+
const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;
|
|
230
|
+
|
|
231
|
+
let called = false;
|
|
232
|
+
|
|
233
|
+
const handler = ({ target }) => {
|
|
234
|
+
if (target !== transitionElement) {
|
|
235
|
+
return
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
called = true;
|
|
239
|
+
transitionElement.removeEventListener(TRANSITION_END, handler);
|
|
240
|
+
execute(callback);
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
transitionElement.addEventListener(TRANSITION_END, handler);
|
|
244
|
+
setTimeout(() => {
|
|
245
|
+
if (!called) {
|
|
246
|
+
triggerTransitionEnd(transitionElement);
|
|
247
|
+
}
|
|
248
|
+
}, emulatedDuration);
|
|
249
|
+
};
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Return the previous/next element of a list.
|
|
253
|
+
*
|
|
254
|
+
* @param {array} list The list of elements
|
|
255
|
+
* @param activeElement The active element
|
|
256
|
+
* @param shouldGetNext Choose to get next or previous element
|
|
257
|
+
* @param isCycleAllowed
|
|
258
|
+
* @return {Element|elem} The proper element
|
|
259
|
+
*/
|
|
260
|
+
const getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {
|
|
261
|
+
const listLength = list.length;
|
|
262
|
+
let index = list.indexOf(activeElement);
|
|
263
|
+
|
|
264
|
+
// if the element does not exist in the list return an element
|
|
265
|
+
// depending on the direction and if cycle is allowed
|
|
266
|
+
if (index === -1) {
|
|
267
|
+
return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
index += shouldGetNext ? 1 : -1;
|
|
271
|
+
|
|
272
|
+
if (isCycleAllowed) {
|
|
273
|
+
index = (index + listLength) % listLength;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return list[Math.max(0, Math.min(index, listLength - 1))]
|
|
277
|
+
};
|
|
278
|
+
|
|
279
|
+
export { execute, executeAfterTransition, findShadowRoot, getElement, getElementFromSelector, getNextActiveElement, getSelectorFromElement, getTransitionDurationFromElement, getUID, isDisabled, isElement, isRTL, isVisible, noop, reflow, toType, triggerTransitionEnd };
|
|
280
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/js/plugins/util/index.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): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1_000_000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shout-out Angus Croll (https://goo.gl/pxwQGp)\nconst toType = (object) => {\n if (object === null || object === undefined) {\n return `${object}`\n }\n\n return Object.prototype.toString\n .call(object)\n .match(/\\s([a-z]+)/i)[1]\n .toLowerCase()\n}\n\n/**\n * Public Util API\n */\n\nconst getUID = (prefix) => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = (element) => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttribute || (!hrefAttribute.includes('#') && !hrefAttribute.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = (element) => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = (element) => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = (element) => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = (element) => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = (object) => {\n if (!object || typeof object !== 'object') {\n return false\n }\n\n return typeof object.nodeType !== 'undefined'\n}\n\nconst getElement = (object) => {\n if (isElement(object)) {\n return object\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object)\n }\n\n return null\n}\n\nconst isVisible = (element) => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'\n // Handle `details` element as its content may falsie appear visible when it is closed\n const closedDetails = element.closest('details:not([open])')\n\n if (!closedDetails) {\n return elementIsVisible\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary')\n if (summary && summary.parentNode !== closedDetails) {\n return false\n }\n\n if (summary === null) {\n return false\n }\n }\n\n return elementIsVisible\n}\n\nconst isDisabled = (element) => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = (element) => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => {}\n\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\nconst reflow = (element) => {\n element.offsetHeight\n}\n\nconst DOMContentLoadedCallbacks = []\n\nconst onDOMContentLoaded = (callback) => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback()\n }\n })\n }\n\n DOMContentLoadedCallbacks.push(callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return document.documentElement.dir === 'rtl'\n } else {\n return false\n }\n}\n\nconst execute = (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n}\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback)\n return\n }\n\n const durationPadding = 5\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding\n\n let called = false\n\n const handler = ({ target }) => {\n if (target !== transitionElement) {\n return\n }\n\n called = true\n transitionElement.removeEventListener(TRANSITION_END, handler)\n execute(callback)\n }\n\n transitionElement.addEventListener(TRANSITION_END, handler)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement)\n }\n }, emulatedDuration)\n}\n\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length\n let index = list.indexOf(activeElement)\n\n // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0]\n }\n\n index += shouldGetNext ? 1 : -1\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))]\n}\n\nexport {\n execute,\n executeAfterTransition,\n findShadowRoot,\n getElement,\n getElementFromSelector,\n getNextActiveElement,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n getUID,\n isDisabled,\n isElement,\n isRTL,\n isVisible,\n noop,\n onDOMContentLoaded,\n reflow,\n triggerTransitionEnd,\n toType,\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
4
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
5
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
6
|
+
* --------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
/**
|
|
2
10
|
* Mutation CSS Class Observer Object
|
|
3
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.js"],"sourcesContent":["/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n if (typeof this.classAddedCallback === 'function') {\n this.classAddedCallback()\n }\n } else if (typeof this.classRemovedCallback === 'function') {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n //public\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true, subtree: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n this._callbackExec(node)\n })\n mutation.removedNodes.forEach((node) => {\n this._callbackExec(node, true)\n })\n }\n }\n }\n\n //private\n _callbackExec(node, actionRemove) {\n const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null\n const callback =\n actionRemove && typeof this.contentRemovedCallback === 'function'\n ? this.contentRemovedCallback\n : typeof this.contentAddedCallback === 'function'\n ? this.contentAddedCallback\n : null\n if (foundNodes && callback) {\n foundNodes.forEach((node) => callback(node))\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.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\n/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n if (typeof this.classAddedCallback === 'function') {\n this.classAddedCallback()\n }\n } else if (typeof this.classRemovedCallback === 'function') {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n //public\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true, subtree: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n this._callbackExec(node)\n })\n mutation.removedNodes.forEach((node) => {\n this._callbackExec(node, true)\n })\n }\n }\n }\n\n //private\n _callbackExec(node, actionRemove) {\n const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null\n const callback =\n actionRemove && typeof this.contentRemovedCallback === 'function'\n ? this.contentRemovedCallback\n : typeof this.contentAddedCallback === 'function'\n ? this.contentAddedCallback\n : null\n if (foundNodes && callback) {\n foundNodes.forEach((node) => callback(node))\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { v4 } from 'uuid';
|
|
2
2
|
|
|
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
|
+
* --------------------------------------------------------------------------
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
|
|
3
12
|
let ticking = false;
|
|
4
13
|
let callbacks = [];
|
|
5
14
|
|
|
@@ -29,15 +38,17 @@ const onDocumentScroll = (callback) => {
|
|
|
29
38
|
return
|
|
30
39
|
}
|
|
31
40
|
if (!callbacks.length) {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
42
|
+
document.addEventListener('scroll', (evt) => {
|
|
43
|
+
if (!ticking) {
|
|
44
|
+
window.requestAnimationFrame(() => {
|
|
45
|
+
callbacks.forEach((cbObj) => cbObj.cb._execute(evt));
|
|
46
|
+
ticking = false;
|
|
47
|
+
});
|
|
48
|
+
ticking = true;
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
41
52
|
}
|
|
42
53
|
|
|
43
54
|
if (typeof callback === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"on-document-scroll.js","sources":["../../../src/js/plugins/util/on-document-scroll.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"on-document-scroll.js","sources":["../../../src/js/plugins/util/on-document-scroll.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 { v4 as uuidv4 } from 'uuid'\n\nlet ticking = false\nlet callbacks = []\n\nclass ScrollCallback {\n constructor(id, callback) {\n this.id = id\n this._callback = callback\n }\n\n //Public\n dispose() {\n removeCallBack(this.id)\n }\n\n //Private\n _execute(data) {\n this._callback(data)\n }\n}\n\nconst removeCallBack = (id) => {\n callbacks = callbacks.filter((cb) => cb.id !== id)\n}\n\nconst onDocumentScroll = (callback) => {\n if (typeof document === 'undefined') {\n return\n }\n if (!callbacks.length) {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n document.addEventListener('scroll', (evt) => {\n if (!ticking) {\n window.requestAnimationFrame(() => {\n callbacks.forEach((cbObj) => cbObj.cb._execute(evt))\n ticking = false\n })\n ticking = true\n }\n })\n }\n }\n\n if (typeof callback === 'function') {\n const newCb = new ScrollCallback(uuidv4(), callback)\n callbacks.push({\n id: newCb.id,\n cb: newCb,\n })\n return newCb\n }\n\n console.error('[onDocumentScroll] the provided data has to be of type function')\n return null\n}\n\nexport default onDocumentScroll\n"],"names":["uuidv4"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAIA,IAAI,OAAO,GAAG;AACd,IAAI,SAAS,GAAG;;AAEhB,MAAM,cAAc,CAAC;AACrB,EAAE,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC5B,IAAI,IAAI,CAAC,EAAE,GAAG;AACd,IAAI,IAAI,CAAC,SAAS,GAAG;AACrB;;AAEA;AACA,EAAE,OAAO,GAAG;AACZ,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;AAC1B;;AAEA;AACA,EAAE,QAAQ,CAAC,IAAI,EAAE;AACjB,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI;AACvB;AACA;;AAEA,MAAM,cAAc,GAAG,CAAC,EAAE,KAAK;AAC/B,EAAE,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE;AACnD;;AAEK,MAAC,gBAAgB,GAAG,CAAC,QAAQ,KAAK;AACvC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzB,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC1E,MAAM,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,GAAG,KAAK;AACnD,QAAQ,IAAI,CAAC,OAAO,EAAE;AACtB,UAAU,MAAM,CAAC,qBAAqB,CAAC,MAAM;AAC7C,YAAY,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC;AAC/D,YAAY,OAAO,GAAG;AACtB,WAAW;AACX,UAAU,OAAO,GAAG;AACpB;AACA,OAAO;AACP;AACA;;AAEA,EAAE,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;AACtC,IAAI,MAAM,KAAK,GAAG,IAAI,cAAc,CAACA,EAAM,EAAE,EAAE,QAAQ;AACvD,IAAI,SAAS,CAAC,IAAI,CAAC;AACnB,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE;AAClB,MAAM,EAAE,EAAE,KAAK;AACf,KAAK;AACL,IAAI,OAAO;AACX;;AAEA,EAAE,OAAO,CAAC,KAAK,CAAC,iEAAiE;AACjF,EAAE,OAAO;AACT;;;;"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* --------------------------------------------------------------------------
|
|
3
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
4
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
5
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
6
|
+
* --------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
|
|
1
9
|
/**
|
|
2
10
|
* Prevents page scroll
|
|
3
11
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pageScroll.js","sources":["../../../src/js/plugins/util/pageScroll.js"],"sourcesContent":["/**\n * Prevents page scroll\n */\n\nconst CLASS_SCROLL_DISABLED = 'pagescroll-scroll-disabled'\n\nlet disabled = false\nlet currentScrollPos = typeof document === 'undefined' ? 0 : document.scrollingElement.scrollTop\nconst htmlContainer = typeof document === 'undefined' ? null : document.querySelector('html')\n\nexport function disablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = true\n currentScrollPos = document.scrollingElement.scrollTop\n htmlContainer.classList.add(CLASS_SCROLL_DISABLED)\n}\n\nexport function enablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = false\n htmlContainer.classList.remove(CLASS_SCROLL_DISABLED)\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('scroll', () => {\n if (disabled) {\n document.scrollingElement.scrollTop = currentScrollPos\n }\n })\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;;AAEA,MAAM,qBAAqB,GAAG;;AAE9B,IAAI,QAAQ,GAAG;AACf,IAAI,gBAAgB,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AACvF,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM;;AAErF,SAAS,iBAAiB,GAAG;AACpC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB;AACnD;;AAEO,SAAS,gBAAgB,GAAG;AACnC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB;AACtD;;AAEA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACrC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAC5C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG;AAC5C;AACA,GAAG;AACH;;;;"}
|
|
1
|
+
{"version":3,"file":"pageScroll.js","sources":["../../../src/js/plugins/util/pageScroll.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\n/**\n * Prevents page scroll\n */\n\nconst CLASS_SCROLL_DISABLED = 'pagescroll-scroll-disabled'\n\nlet disabled = false\nlet currentScrollPos = typeof document === 'undefined' ? 0 : document.scrollingElement.scrollTop\nconst htmlContainer = typeof document === 'undefined' ? null : document.querySelector('html')\n\nexport function disablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = true\n currentScrollPos = document.scrollingElement.scrollTop\n htmlContainer.classList.add(CLASS_SCROLL_DISABLED)\n}\n\nexport function enablePageScroll() {\n if (typeof document === 'undefined') {\n return\n }\n disabled = false\n htmlContainer.classList.remove(CLASS_SCROLL_DISABLED)\n}\n\nif (typeof document !== 'undefined') {\n document.addEventListener('scroll', () => {\n if (disabled) {\n document.scrollingElement.scrollTop = currentScrollPos\n }\n })\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,MAAM,qBAAqB,GAAG;;AAE9B,IAAI,QAAQ,GAAG;AACf,IAAI,gBAAgB,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AACvF,MAAM,aAAa,GAAG,OAAO,QAAQ,KAAK,WAAW,GAAG,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM;;AAErF,SAAS,iBAAiB,GAAG;AACpC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,gBAAgB,GAAG,QAAQ,CAAC,gBAAgB,CAAC;AAC/C,EAAE,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,qBAAqB;AACnD;;AAEO,SAAS,gBAAgB,GAAG;AACnC,EAAE,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACvC,IAAI;AACJ;AACA,EAAE,QAAQ,GAAG;AACb,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,qBAAqB;AACtD;;AAEA,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACrC,EAAE,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAC5C,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,GAAG;AAC5C;AACA,GAAG;AACH;;;;"}
|