bootstrap-italia 2.12.1 → 2.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/{custom → components}/_accept-overlay.scss +2 -1
- 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 +274 -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 +163 -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}/_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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"track-focus.js","sources":["../../src/js/plugins/track-focus.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"track-focus.js","sources":["../../src/js/plugins/track-focus.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\nconst DATA_MOUSE_FOCUS = 'data-focus-mouse'\nconst CLASS_NAME_MOUSE_FOCUS = 'focus--mouse'\n\nclass TrackFocus {\n constructor() {\n this._usingMouse = false\n\n this._bindEvents()\n }\n\n // Public\n\n // Private\n _bindEvents() {\n if (typeof document === 'undefined') {\n return\n }\n const events = ['keydown', 'mousedown']\n events.forEach((evtName) => {\n document.addEventListener(evtName, (evt) => {\n this._usingMouse = evt.type === 'mousedown'\n })\n })\n document.addEventListener('focusin', (evt) => {\n if (this._usingMouse) {\n if (evt.target) {\n evt.target.classList.add(CLASS_NAME_MOUSE_FOCUS)\n evt.target.setAttribute(DATA_MOUSE_FOCUS, true)\n }\n }\n })\n document.addEventListener('focusout', (evt) => {\n if (evt.target) {\n evt.target.classList.remove(CLASS_NAME_MOUSE_FOCUS)\n evt.target.setAttribute(DATA_MOUSE_FOCUS, false)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nnew TrackFocus()\n\nexport default TrackFocus\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,gBAAgB,GAAG;AACzB,MAAM,sBAAsB,GAAG;;AAE/B,MAAM,UAAU,CAAC;AACjB,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,WAAW,GAAG;;AAEvB,IAAI,IAAI,CAAC,WAAW;AACpB;;AAEA;;AAEA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACzC,MAAM;AACN;AACA,IAAI,MAAM,MAAM,GAAG,CAAC,SAAS,EAAE,WAAW;AAC1C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAChC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,KAAK;AAClD,QAAQ,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,KAAK;AACxC,OAAO;AACP,KAAK;AACL,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,GAAG,KAAK;AAClD,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;AAC5B,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE;AACxB,UAAU,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB;AACzD,UAAU,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,IAAI;AACxD;AACA;AACA,KAAK;AACL,IAAI,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,GAAG,KAAK;AACnD,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;AACtB,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB;AAC1D,QAAQ,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK;AACvD;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,UAAU;;;;"}
|
package/dist/plugins/transfer.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
import BaseComponent from '
|
|
2
|
-
import EventHandler from '
|
|
3
|
-
import SelectorEngine from '
|
|
4
|
-
|
|
5
|
-
//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';
|
|
6
4
|
|
|
7
5
|
const NAME = 'transfer';
|
|
8
6
|
const DATA_KEY = 'bs.transfer';
|
|
@@ -11,7 +9,6 @@ const DATA_API_KEY = '.data-api';
|
|
|
11
9
|
|
|
12
10
|
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
13
11
|
const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
|
|
14
|
-
//const EVENT_SCROLL = `scroll${EVENT_KEY}`
|
|
15
12
|
const EVENT_CLICK = `click${EVENT_KEY}`;
|
|
16
13
|
|
|
17
14
|
const CLASS_NAME_ACTIVE = 'active';
|
|
@@ -252,16 +249,14 @@ class Transfer extends BaseComponent {
|
|
|
252
249
|
* ------------------------------------------------------------------------
|
|
253
250
|
*/
|
|
254
251
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
EventHandler.on(document,
|
|
260
|
-
|
|
261
|
-
});
|
|
262
|
-
|
|
263
|
-
Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK));
|
|
264
|
-
});
|
|
252
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
253
|
+
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {
|
|
254
|
+
Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK));
|
|
255
|
+
});
|
|
256
|
+
EventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {
|
|
257
|
+
Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK));
|
|
258
|
+
});
|
|
259
|
+
}
|
|
265
260
|
|
|
266
261
|
export { Transfer as default };
|
|
267
262
|
//# sourceMappingURL=transfer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transfer.js","sources":["../../src/js/plugins/transfer.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\n/*import {\n //defineJQueryPlugin,\n //getElementFromSelector,\n //isVisible,\n //reflow,\n //typeCheckConfig,\n getSelectorFromElement, //in base al bs-target\n} from 'bootstrap/js/src/util'*/\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\n//import Manipulator from 'bootstrap/js/src/dom/manipulator'\n\nconst NAME = 'transfer'\nconst DATA_KEY = 'bs.transfer'\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_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n//const EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SOURCE = 'source'\nconst CLASS_NAME_SEMICHECKED = 'semi-checked'\n\nconst SELECTOR_BLOCK = '[data-bs-transfer]' //'.it-transfer-block'\nconst SELECTOR_BTN_TRANS = 'a.transfer'\nconst SELECTOR_BTN_TRANS_BACK = 'a.backtransfer'\nconst SELECTOR_BTN_RESET = 'a.reset'\nconst SELECTOR_HEAD = '.transfer-header'\nconst SELECTOR_HEAD_INPUT = '.transfer-header input'\nconst SELECTOR_HEAD_LABEL = '.transfer-header span.num'\nconst SELECTOR_LIST_INPUT = '.transfer-group input'\nconst SELECTOR_TRANS_WRAPPER = '.it-transfer-wrapper'\nconst SELECTOR_TRANS_GROUP = '.transfer-group'\nconst SELECTOR_SOURCE = `${SELECTOR_TRANS_WRAPPER}.source`\nconst SELECTOR_TARGET = `${SELECTOR_TRANS_WRAPPER}.target`\nconst SELECTOR_FORM_CHECK = '.form-check'\n\nclass Transfer extends BaseComponent {\n constructor(element) {\n super(element)\n\n this._addBtnElement = SelectorEngine.findOne(SELECTOR_BTN_TRANS, this._element)\n this._invBtnElement = SelectorEngine.findOne(SELECTOR_BTN_TRANS_BACK, this._element)\n this._resetBtnElement = SelectorEngine.findOne(SELECTOR_BTN_RESET, this._element)\n this._listDefault = {\n source: SelectorEngine.find(SELECTOR_SOURCE + ' ' + SELECTOR_TRANS_GROUP + ' ' + SELECTOR_FORM_CHECK, this._element),\n target: SelectorEngine.find(SELECTOR_TARGET + ' ' + SELECTOR_TRANS_GROUP + ' ' + SELECTOR_FORM_CHECK, this._element),\n }\n\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n\n _bindEvents() {\n SelectorEngine.find(SELECTOR_HEAD_INPUT, this._element).forEach((input) => {\n EventHandler.on(input, EVENT_CLICK, () => {\n this._checkListHeader(input.closest(SELECTOR_TRANS_WRAPPER))\n })\n })\n SelectorEngine.find(SELECTOR_LIST_INPUT, this._element).forEach((input) => {\n EventHandler.on(input, EVENT_CLICK, () => {\n this._checkList(input.closest(SELECTOR_TRANS_WRAPPER))\n })\n })\n\n EventHandler.on(this._addBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n // disattivo il pulsante corrente\n this._disableElement(this._addBtnElement)\n this._addItems()\n })\n EventHandler.on(this._invBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n // disattivo il pulsante corrente\n this._disableElement(this._invBtnElement)\n this._addItems(true)\n })\n\n EventHandler.on(this._resetBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n\n this._disableElement(this._addBtnElement)\n this._disableElement(this._invBtnElement)\n this._disableElement(this._resetBtnElement)\n\n this._resetAll()\n })\n }\n\n _disableElement(element) {\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.setAttribute('disabled', 'disabled')\n element.setAttribute('aria-disabled', 'true')\n }\n\n _enableElement(element) {\n element.classList.add(CLASS_NAME_ACTIVE)\n element.removeAttribute('disabled')\n element.removeAttribute('aria-disabled')\n }\n\n _getScopeData(scope) {\n return {\n scope,\n list: SelectorEngine.find(SELECTOR_LIST_INPUT, scope),\n listChecked: SelectorEngine.find(SELECTOR_LIST_INPUT + ':checked', scope),\n head: SelectorEngine.findOne(SELECTOR_HEAD, scope),\n inputHead: SelectorEngine.findOne(SELECTOR_HEAD_INPUT, scope),\n labelNumHead: SelectorEngine.findOne(SELECTOR_HEAD_LABEL, scope),\n group: SelectorEngine.findOne(SELECTOR_TRANS_GROUP, scope),\n }\n }\n\n _checkList(scopeElControl) {\n const scopeData = this._getScopeData(scopeElControl)\n\n if (scopeData.listChecked.length == 0) {\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = true\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._disableElement(this._addBtnElement)\n } else {\n this._disableElement(this._invBtnElement)\n }\n } else {\n if (scopeData.listChecked.length == scopeData.list.length) {\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = true\n } else {\n scopeData.inputHead.classList.add(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = false\n }\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._enableElement(this._addBtnElement)\n } else {\n this._enableElement(this._invBtnElement)\n }\n }\n }\n\n _checkListHeader(scopeElControl) {\n const scopeData = this._getScopeData(scopeElControl)\n\n if (scopeData.listChecked.length > 0) {\n scopeData.list.forEach((item) => {\n item.checked = false\n })\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = false\n\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._disableElement(this._addBtnElement)\n } else {\n this._disableElement(this._invBtnElement)\n }\n } else {\n scopeData.list.forEach((item) => {\n item.checked = true\n })\n // controllo quale pulsante centrale attivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._enableElement(this._addBtnElement)\n } else {\n this._enableElement(this._invBtnElement)\n }\n }\n }\n\n _addItems(inverse) {\n const sourceData = this._getScopeData(SelectorEngine.findOne(inverse ? SELECTOR_TARGET : SELECTOR_SOURCE, this._element))\n const targetData = this._getScopeData(SelectorEngine.findOne(inverse ? SELECTOR_SOURCE : SELECTOR_TARGET, this._element))\n\n const sourceItems = sourceData.listChecked //sourceControl.find('.transfer-group input:checked')\n //const sourceItemsBlock = SelectorEngine.findOne('.form-check', sourceData.head) //sourceData.head('.form-check')\n const sourceHeadInput = sourceData.inputHead //sourceControl.find('.transfer-header input')\n const sourceHeadLabel = sourceData.labelNumHead //sourceControl.find('.transfer-header span.num')\n const sourceItemsQty = sourceItems.length\n const sourceTotalQty = sourceData.list.length\n\n const targetDiv = targetData.group\n const targetQty = targetData.list.length + sourceItemsQty\n const targetHeadLabel = targetData.labelNumHead\n const targetHeadInput = targetData.inputHead\n\n // ciclo di aggiunta\n sourceItems.forEach((item) => {\n const wrapper = item.closest(SELECTOR_FORM_CHECK)\n wrapper.remove()\n targetDiv.appendChild(wrapper)\n item.checked = false\n })\n\n // update label\n const totalSource = sourceTotalQty - sourceItemsQty\n const totalTarget = targetQty\n\n sourceHeadLabel.innerText = totalSource\n targetHeadLabel.innerText = totalTarget\n\n // disattivazione header input se non ci sono più elementi\n if (totalSource == 0) {\n sourceHeadInput.setAttribute('disabled', true)\n }\n if (totalTarget > 0) {\n targetHeadInput.removeAttribute('disabled')\n }\n\n // ripristino stato iniziale input header\n sourceHeadInput.classList.remove(CLASS_NAME_SEMICHECKED)\n sourceHeadInput.checked = false\n\n // attivo il pulsante di reset\n this._enableElement(this._resetBtnElement)\n }\n\n _resetAll() {\n const blocks = {\n source: this._getScopeData(SelectorEngine.findOne(SELECTOR_SOURCE, this._element)),\n target: this._getScopeData(SelectorEngine.findOne(SELECTOR_TARGET, this._element)),\n }\n\n Object.keys(blocks).forEach((key) => {\n blocks[key].list.forEach((item) => item.closest(SELECTOR_FORM_CHECK).remove())\n })\n\n Object.keys(blocks).forEach((key) => {\n this._listDefault[key].forEach((item) => {\n item.checked = false\n blocks[key].group.appendChild(item)\n })\n blocks[key].labelNumHead.innerText = this._listDefault[key].length\n\n blocks[key].inputHead.removeAttribute('disabled')\n blocks[key].inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n blocks[key].inputHead.checked = false\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n/*SelectorEngine.find(SELECTOR_BLOCK).forEach((block) => {\n Transfer.getOrCreateInstance(block)\n})*/\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {\n Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK))\n})\nEventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {\n Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK))\n})\n\nexport default Transfer\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transfer.js","sources":["../../src/js/plugins/transfer.js"],"sourcesContent":["import BaseComponent from './base-component.js'\n\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nconst NAME = 'transfer'\nconst DATA_KEY = 'bs.transfer'\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_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SOURCE = 'source'\nconst CLASS_NAME_SEMICHECKED = 'semi-checked'\n\nconst SELECTOR_BLOCK = '[data-bs-transfer]' //'.it-transfer-block'\nconst SELECTOR_BTN_TRANS = 'a.transfer'\nconst SELECTOR_BTN_TRANS_BACK = 'a.backtransfer'\nconst SELECTOR_BTN_RESET = 'a.reset'\nconst SELECTOR_HEAD = '.transfer-header'\nconst SELECTOR_HEAD_INPUT = '.transfer-header input'\nconst SELECTOR_HEAD_LABEL = '.transfer-header span.num'\nconst SELECTOR_LIST_INPUT = '.transfer-group input'\nconst SELECTOR_TRANS_WRAPPER = '.it-transfer-wrapper'\nconst SELECTOR_TRANS_GROUP = '.transfer-group'\nconst SELECTOR_SOURCE = `${SELECTOR_TRANS_WRAPPER}.source`\nconst SELECTOR_TARGET = `${SELECTOR_TRANS_WRAPPER}.target`\nconst SELECTOR_FORM_CHECK = '.form-check'\n\nclass Transfer extends BaseComponent {\n constructor(element) {\n super(element)\n\n this._addBtnElement = SelectorEngine.findOne(SELECTOR_BTN_TRANS, this._element)\n this._invBtnElement = SelectorEngine.findOne(SELECTOR_BTN_TRANS_BACK, this._element)\n this._resetBtnElement = SelectorEngine.findOne(SELECTOR_BTN_RESET, this._element)\n this._listDefault = {\n source: SelectorEngine.find(SELECTOR_SOURCE + ' ' + SELECTOR_TRANS_GROUP + ' ' + SELECTOR_FORM_CHECK, this._element),\n target: SelectorEngine.find(SELECTOR_TARGET + ' ' + SELECTOR_TRANS_GROUP + ' ' + SELECTOR_FORM_CHECK, this._element),\n }\n\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n\n _bindEvents() {\n SelectorEngine.find(SELECTOR_HEAD_INPUT, this._element).forEach((input) => {\n EventHandler.on(input, EVENT_CLICK, () => {\n this._checkListHeader(input.closest(SELECTOR_TRANS_WRAPPER))\n })\n })\n SelectorEngine.find(SELECTOR_LIST_INPUT, this._element).forEach((input) => {\n EventHandler.on(input, EVENT_CLICK, () => {\n this._checkList(input.closest(SELECTOR_TRANS_WRAPPER))\n })\n })\n\n EventHandler.on(this._addBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n // disattivo il pulsante corrente\n this._disableElement(this._addBtnElement)\n this._addItems()\n })\n EventHandler.on(this._invBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n // disattivo il pulsante corrente\n this._disableElement(this._invBtnElement)\n this._addItems(true)\n })\n\n EventHandler.on(this._resetBtnElement, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n\n this._disableElement(this._addBtnElement)\n this._disableElement(this._invBtnElement)\n this._disableElement(this._resetBtnElement)\n\n this._resetAll()\n })\n }\n\n _disableElement(element) {\n element.classList.remove(CLASS_NAME_ACTIVE)\n element.setAttribute('disabled', 'disabled')\n element.setAttribute('aria-disabled', 'true')\n }\n\n _enableElement(element) {\n element.classList.add(CLASS_NAME_ACTIVE)\n element.removeAttribute('disabled')\n element.removeAttribute('aria-disabled')\n }\n\n _getScopeData(scope) {\n return {\n scope,\n list: SelectorEngine.find(SELECTOR_LIST_INPUT, scope),\n listChecked: SelectorEngine.find(SELECTOR_LIST_INPUT + ':checked', scope),\n head: SelectorEngine.findOne(SELECTOR_HEAD, scope),\n inputHead: SelectorEngine.findOne(SELECTOR_HEAD_INPUT, scope),\n labelNumHead: SelectorEngine.findOne(SELECTOR_HEAD_LABEL, scope),\n group: SelectorEngine.findOne(SELECTOR_TRANS_GROUP, scope),\n }\n }\n\n _checkList(scopeElControl) {\n const scopeData = this._getScopeData(scopeElControl)\n\n if (scopeData.listChecked.length == 0) {\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = true\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._disableElement(this._addBtnElement)\n } else {\n this._disableElement(this._invBtnElement)\n }\n } else {\n if (scopeData.listChecked.length == scopeData.list.length) {\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = true\n } else {\n scopeData.inputHead.classList.add(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = false\n }\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._enableElement(this._addBtnElement)\n } else {\n this._enableElement(this._invBtnElement)\n }\n }\n }\n\n _checkListHeader(scopeElControl) {\n const scopeData = this._getScopeData(scopeElControl)\n\n if (scopeData.listChecked.length > 0) {\n scopeData.list.forEach((item) => {\n item.checked = false\n })\n scopeData.inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n scopeData.inputHead.checked = false\n\n // controllo quale pulsante centrale disattivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._disableElement(this._addBtnElement)\n } else {\n this._disableElement(this._invBtnElement)\n }\n } else {\n scopeData.list.forEach((item) => {\n item.checked = true\n })\n // controllo quale pulsante centrale attivare\n if (scopeElControl.classList.contains(CLASS_NAME_SOURCE)) {\n this._enableElement(this._addBtnElement)\n } else {\n this._enableElement(this._invBtnElement)\n }\n }\n }\n\n _addItems(inverse) {\n const sourceData = this._getScopeData(SelectorEngine.findOne(inverse ? SELECTOR_TARGET : SELECTOR_SOURCE, this._element))\n const targetData = this._getScopeData(SelectorEngine.findOne(inverse ? SELECTOR_SOURCE : SELECTOR_TARGET, this._element))\n\n const sourceItems = sourceData.listChecked //sourceControl.find('.transfer-group input:checked')\n //const sourceItemsBlock = SelectorEngine.findOne('.form-check', sourceData.head) //sourceData.head('.form-check')\n const sourceHeadInput = sourceData.inputHead //sourceControl.find('.transfer-header input')\n const sourceHeadLabel = sourceData.labelNumHead //sourceControl.find('.transfer-header span.num')\n const sourceItemsQty = sourceItems.length\n const sourceTotalQty = sourceData.list.length\n\n const targetDiv = targetData.group\n const targetQty = targetData.list.length + sourceItemsQty\n const targetHeadLabel = targetData.labelNumHead\n const targetHeadInput = targetData.inputHead\n\n // ciclo di aggiunta\n sourceItems.forEach((item) => {\n const wrapper = item.closest(SELECTOR_FORM_CHECK)\n wrapper.remove()\n targetDiv.appendChild(wrapper)\n item.checked = false\n })\n\n // update label\n const totalSource = sourceTotalQty - sourceItemsQty\n const totalTarget = targetQty\n\n sourceHeadLabel.innerText = totalSource\n targetHeadLabel.innerText = totalTarget\n\n // disattivazione header input se non ci sono più elementi\n if (totalSource == 0) {\n sourceHeadInput.setAttribute('disabled', true)\n }\n if (totalTarget > 0) {\n targetHeadInput.removeAttribute('disabled')\n }\n\n // ripristino stato iniziale input header\n sourceHeadInput.classList.remove(CLASS_NAME_SEMICHECKED)\n sourceHeadInput.checked = false\n\n // attivo il pulsante di reset\n this._enableElement(this._resetBtnElement)\n }\n\n _resetAll() {\n const blocks = {\n source: this._getScopeData(SelectorEngine.findOne(SELECTOR_SOURCE, this._element)),\n target: this._getScopeData(SelectorEngine.findOne(SELECTOR_TARGET, this._element)),\n }\n\n Object.keys(blocks).forEach((key) => {\n blocks[key].list.forEach((item) => item.closest(SELECTOR_FORM_CHECK).remove())\n })\n\n Object.keys(blocks).forEach((key) => {\n this._listDefault[key].forEach((item) => {\n item.checked = false\n blocks[key].group.appendChild(item)\n })\n blocks[key].labelNumHead.innerText = this._listDefault[key].length\n\n blocks[key].inputHead.removeAttribute('disabled')\n blocks[key].inputHead.classList.remove(CLASS_NAME_SEMICHECKED)\n blocks[key].inputHead.checked = false\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_BLOCK + ' .form-check label', function () {\n Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK))\n })\n EventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {\n Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK))\n })\n}\n\nexport default Transfer\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
import BaseComponent from '
|
|
2
|
-
import EventHandler from '
|
|
3
|
-
import SelectorEngine from '
|
|
1
|
+
import BaseComponent from './base-component.js';
|
|
2
|
+
import EventHandler from './dom/event-handler.js';
|
|
3
|
+
import SelectorEngine from './dom/selector-engine.js';
|
|
4
4
|
import ProgressDonut from './progress-donut.js';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* --------------------------------------------------------------------------
|
|
8
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
9
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
10
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
11
|
+
* --------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
|
|
6
15
|
const NAME = 'upload';
|
|
7
16
|
const DATA_KEY = 'bs.upload';
|
|
8
17
|
const EVENT_KEY = `.${DATA_KEY}`;
|
|
@@ -132,7 +141,7 @@ const createInput = (element) => {
|
|
|
132
141
|
return null
|
|
133
142
|
};
|
|
134
143
|
|
|
135
|
-
if (typeof document !== 'undefined') {
|
|
144
|
+
if (typeof window !== 'undefined' && typeof document !== 'undefined') {
|
|
136
145
|
document.addEventListener('dragenter', function (evt) {
|
|
137
146
|
createInput(evt.target);
|
|
138
147
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload-dragdrop.js","sources":["../../src/js/plugins/upload-dragdrop.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"upload-dragdrop.js","sources":["../../src/js/plugins/upload-dragdrop.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'\n\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nimport ProgressDonut from './progress-donut'\n\nconst NAME = 'upload'\nconst DATA_KEY = 'bs.upload'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst EVENT_DRAG = `drag`\nconst EVENT_DRAG_START = `dragstart`\nconst EVENT_DRAG_END = `dragend`\nconst EVENT_DRAG_OVER = `dragover`\nconst EVENT_DRAG_ENTER = `dragenter`\nconst EVENT_DRAG_LEAVE = `dragleave`\nconst EVENT_DROP = `drop`\n\nconst CLASS_NAME_SUCCESS = 'success'\nconst CLASS_NAME_DRAGOVER = 'dragover'\nconst CLASS_NAME_LOADING = 'loading'\n\nconst SELECTOR_FORM = '[data-bs-upload-dragdrop]'\nconst SELECTOR_DONUT = '[data-bs-progress-donut]'\n\nclass UploadDragDrop extends BaseComponent {\n constructor(element) {\n super(element)\n\n const donutElement = SelectorEngine.findOne(SELECTOR_DONUT, this._element)\n if (donutElement) {\n this._donut = ProgressDonut.getOrCreateInstance(donutElement)\n }\n\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n progress(value) {\n this._donut.set(value)\n }\n\n start() {\n this.reset()\n this._element.classList.add(CLASS_NAME_LOADING)\n }\n\n success() {\n this._element.classList.remove(CLASS_NAME_LOADING)\n this._element.classList.add(CLASS_NAME_SUCCESS)\n }\n\n reset() {\n this._element.classList.remove(CLASS_NAME_LOADING)\n this._element.classList.remove(CLASS_NAME_SUCCESS)\n this._donut.set(0)\n }\n\n dispose() {\n this._donut.dispose()\n\n super.dispose()\n }\n\n // Private\n _bindEvents() {\n EventHandler.on(this._element, EVENT_DRAG, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DRAG_START, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DRAG_END, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DRAG_OVER, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DRAG_ENTER, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DRAG_LEAVE, (evt) => this._preventEvent(evt))\n EventHandler.on(this._element, EVENT_DROP, (evt) => this._preventEvent(evt))\n\n EventHandler.on(this._element, EVENT_DRAG_OVER, () => this._dropIn())\n EventHandler.on(this._element, EVENT_DRAG_ENTER, () => this._dropIn())\n EventHandler.on(this._element, EVENT_DRAG_LEAVE, () => this._dropOut())\n EventHandler.on(this._element, EVENT_DRAG_END, () => this._dropOut())\n EventHandler.on(this._element, EVENT_DROP, () => this._dropOut())\n\n EventHandler.on(this._element, EVENT_DROP, () => this._drop())\n }\n _preventEvent(evt) {\n evt.preventDefault()\n evt.stopPropagation()\n }\n\n _dropIn() {\n if (!this._isSuccess()) {\n this._element.classList.add(CLASS_NAME_DRAGOVER)\n }\n }\n _dropOut() {\n if (!this._isSuccess()) {\n this._element.classList.remove(CLASS_NAME_DRAGOVER)\n }\n }\n _drop() {\n if (!this._isSuccess()) {\n this.start()\n }\n }\n\n _isSuccess() {\n return this._element.classList.contains(CLASS_NAME_SUCCESS)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n/*SelectorEngine.find(SELECTOR_FORM).forEach((form) => {\n UploadDragDrop.getOrCreateInstance(form)\n})*/\n\nconst createInput = (element) => {\n let found = element.matches && element.matches(SELECTOR_FORM) ? element : element.closest ? element.closest(SELECTOR_FORM) : null\n if (found) {\n UploadDragDrop.getOrCreateInstance(found)\n }\n return null\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n document.addEventListener('dragenter', function (evt) {\n createInput(evt.target)\n })\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM + ' label', function () {\n createInput(this)\n })\n}\n\nexport default UploadDragDrop\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import EventHandler from '../dom/event-handler.js';
|
|
2
|
+
import { execute, reflow, getElement, executeAfterTransition } from './index.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/backdrop.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 = 'backdrop';
|
|
22
|
+
const CLASS_NAME_FADE = 'fade';
|
|
23
|
+
const CLASS_NAME_SHOW = 'show';
|
|
24
|
+
const EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`;
|
|
25
|
+
|
|
26
|
+
const Default = {
|
|
27
|
+
className: 'modal-backdrop',
|
|
28
|
+
clickCallback: null,
|
|
29
|
+
isAnimated: false,
|
|
30
|
+
isVisible: true, // if false, we use the backdrop helper without adding any element to the dom
|
|
31
|
+
rootElement: 'body', // give the choice to place backdrop under different elements
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const DefaultType = {
|
|
35
|
+
className: 'string',
|
|
36
|
+
clickCallback: '(function|null)',
|
|
37
|
+
isAnimated: 'boolean',
|
|
38
|
+
isVisible: 'boolean',
|
|
39
|
+
rootElement: '(element|string)',
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Class definition
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
class Backdrop extends Config {
|
|
47
|
+
constructor(config) {
|
|
48
|
+
super();
|
|
49
|
+
this._config = this._getConfig(config);
|
|
50
|
+
this._isAppended = false;
|
|
51
|
+
this._element = null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Getters
|
|
55
|
+
static get Default() {
|
|
56
|
+
return Default
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
static get DefaultType() {
|
|
60
|
+
return DefaultType
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static get NAME() {
|
|
64
|
+
return NAME
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Public
|
|
68
|
+
show(callback) {
|
|
69
|
+
if (!this._config.isVisible) {
|
|
70
|
+
execute(callback);
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
this._append();
|
|
75
|
+
|
|
76
|
+
const element = this._getElement();
|
|
77
|
+
if (this._config.isAnimated) {
|
|
78
|
+
reflow(element);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
element.classList.add(CLASS_NAME_SHOW);
|
|
82
|
+
|
|
83
|
+
this._emulateAnimation(() => {
|
|
84
|
+
execute(callback);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
hide(callback) {
|
|
89
|
+
if (!this._config.isVisible) {
|
|
90
|
+
execute(callback);
|
|
91
|
+
return
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
this._getElement().classList.remove(CLASS_NAME_SHOW);
|
|
95
|
+
|
|
96
|
+
this._emulateAnimation(() => {
|
|
97
|
+
this.dispose();
|
|
98
|
+
execute(callback);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
dispose() {
|
|
103
|
+
if (!this._isAppended) {
|
|
104
|
+
return
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
EventHandler.off(this._element, EVENT_MOUSEDOWN);
|
|
108
|
+
|
|
109
|
+
this._element.remove();
|
|
110
|
+
this._isAppended = false;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Private
|
|
114
|
+
_getElement() {
|
|
115
|
+
if (!this._element) {
|
|
116
|
+
const backdrop = document.createElement('div');
|
|
117
|
+
backdrop.className = this._config.className;
|
|
118
|
+
if (this._config.isAnimated) {
|
|
119
|
+
backdrop.classList.add(CLASS_NAME_FADE);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
this._element = backdrop;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return this._element
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
_configAfterMerge(config) {
|
|
129
|
+
// use getElement() with the default "body" to get a fresh Element on each instantiation
|
|
130
|
+
config.rootElement = getElement(config.rootElement);
|
|
131
|
+
return config
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
_append() {
|
|
135
|
+
if (this._isAppended) {
|
|
136
|
+
return
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
const element = this._getElement();
|
|
140
|
+
this._config.rootElement.append(element);
|
|
141
|
+
|
|
142
|
+
EventHandler.on(element, EVENT_MOUSEDOWN, () => {
|
|
143
|
+
execute(this._config.clickCallback);
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
this._isAppended = true;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
_emulateAnimation(callback) {
|
|
150
|
+
executeAfterTransition(callback, this._getElement(), this._config.isAnimated);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
export { Backdrop as default };
|
|
155
|
+
//# sourceMappingURL=backdrop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backdrop.js","sources":["../../../src/js/plugins/util/backdrop.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/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { execute, executeAfterTransition, getElement, reflow } from './index'\nimport Config from './config'\n\n/**\n * Constants\n */\n\nconst NAME = 'backdrop'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME}`\n\nconst Default = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true, // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body', // give the choice to place backdrop under different elements\n}\n\nconst DefaultType = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)',\n}\n\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super()\n this._config = this._getConfig(config)\n this._isAppended = false\n this._element = 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 show(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._append()\n\n const element = this._getElement()\n if (this._config.isAnimated) {\n reflow(element)\n }\n\n element.classList.add(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n execute(callback)\n })\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback)\n return\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW)\n\n this._emulateAnimation(() => {\n this.dispose()\n execute(callback)\n })\n }\n\n dispose() {\n if (!this._isAppended) {\n return\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN)\n\n this._element.remove()\n this._isAppended = false\n }\n\n // Private\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div')\n backdrop.className = this._config.className\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n this._element = backdrop\n }\n\n return this._element\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement)\n return config\n }\n\n _append() {\n if (this._isAppended) {\n return\n }\n\n const element = this._getElement()\n this._config.rootElement.append(element)\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback)\n })\n\n this._isAppended = true\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated)\n }\n}\n\nexport default Backdrop\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import EventHandler from '../dom/event-handler.js';
|
|
2
|
+
import { isDisabled, getElementFromSelector } from './index.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* --------------------------------------------------------------------------
|
|
6
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
7
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
8
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
9
|
+
* This a fork of Bootstrap: Initial license and original file name below
|
|
10
|
+
* Bootstrap (v5.2.3): util/component-functions.js
|
|
11
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
12
|
+
* --------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
const enableDismissTrigger = (component, method = 'hide') => {
|
|
17
|
+
const clickEvent = `click.dismiss${component.EVENT_KEY}`;
|
|
18
|
+
const name = component.NAME;
|
|
19
|
+
|
|
20
|
+
EventHandler.on(document, clickEvent, `[data-bs-dismiss="${name}"]`, function (event) {
|
|
21
|
+
if (['A', 'AREA'].includes(this.tagName)) {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
if (isDisabled(this)) {
|
|
26
|
+
return
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const target = getElementFromSelector(this) || this.closest(`.${name}`);
|
|
30
|
+
const instance = component.getOrCreateInstance(target);
|
|
31
|
+
|
|
32
|
+
// Method argument is left, for Alert and only, as it doesn't implement the 'hide' method
|
|
33
|
+
instance[method]();
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export { enableDismissTrigger };
|
|
38
|
+
//# sourceMappingURL=component-functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-functions.js","sources":["../../../src/js/plugins/util/component-functions.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/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport EventHandler from '../dom/event-handler'\nimport { getElementFromSelector, isDisabled } from './index'\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`\n const name = component.NAME\n\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`)\n const instance = component.getOrCreateInstance(target)\n\n // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n instance[method]()\n })\n}\n\nexport { enableDismissTrigger }\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAKK,MAAC,oBAAoB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,KAAK;AAC7D,EAAE,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC;AACzD,EAAE,MAAM,IAAI,GAAG,SAAS,CAAC;;AAEzB,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,KAAK,EAAE;AACxF,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,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1E,IAAI,MAAM,QAAQ,GAAG,SAAS,CAAC,mBAAmB,CAAC,MAAM;;AAEzD;AACA,IAAI,QAAQ,CAAC,MAAM,CAAC;AACpB,GAAG;AACH;;;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { isElement, toType } from './index.js';
|
|
2
|
+
import Manipulator from '../dom/manipulator.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* --------------------------------------------------------------------------
|
|
6
|
+
* Bootstrap Italia (https://italia.github.io/bootstrap-italia/)
|
|
7
|
+
* Authors: https://github.com/italia/bootstrap-italia/blob/main/AUTHORS
|
|
8
|
+
* Licensed under BSD-3-Clause license (https://github.com/italia/bootstrap-italia/blob/main/LICENSE)
|
|
9
|
+
* This a fork of Bootstrap: Initial license and original file name below
|
|
10
|
+
* Bootstrap (v5.2.3): util/config.js
|
|
11
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
|
12
|
+
* --------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Class definition
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
class Config {
|
|
21
|
+
// Getters
|
|
22
|
+
static get Default() {
|
|
23
|
+
return {}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static get DefaultType() {
|
|
27
|
+
return {}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static get NAME() {
|
|
31
|
+
throw new Error('You have to implement the static method "NAME", for each component!')
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
_getConfig(config) {
|
|
35
|
+
config = this._mergeConfigObj(config);
|
|
36
|
+
config = this._configAfterMerge(config);
|
|
37
|
+
this._typeCheckConfig(config);
|
|
38
|
+
return config
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
_configAfterMerge(config) {
|
|
42
|
+
return config
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
_mergeConfigObj(config, element) {
|
|
46
|
+
const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
...this.constructor.Default,
|
|
50
|
+
...(typeof jsonConfig === 'object' ? jsonConfig : {}),
|
|
51
|
+
...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),
|
|
52
|
+
...(typeof config === 'object' ? config : {}),
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
_typeCheckConfig(config, configTypes = this.constructor.DefaultType) {
|
|
57
|
+
for (const property of Object.keys(configTypes)) {
|
|
58
|
+
const expectedTypes = configTypes[property];
|
|
59
|
+
const value = config[property];
|
|
60
|
+
const valueType = isElement(value) ? 'element' : toType(value);
|
|
61
|
+
|
|
62
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
|
63
|
+
throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${property}" provided type "${valueType}" but expected type "${expectedTypes}".`)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export { Config as default };
|
|
70
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/js/plugins/util/config.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/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { isElement, toType } from './index'\nimport Manipulator from '../dom/manipulator'\n\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {}\n }\n\n static get DefaultType() {\n return {}\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!')\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config)\n config = this._configAfterMerge(config)\n this._typeCheckConfig(config)\n return config\n }\n\n _configAfterMerge(config) {\n return config\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {} // try to parse\n\n return {\n ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {}),\n }\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`)\n }\n }\n }\n}\n\nexport default Config\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAKA;AACA;AACA;;AAEA,MAAM,MAAM,CAAC;AACb;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,MAAM,IAAI,KAAK,CAAC,qEAAqE;AACzF;;AAEA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM;AACxC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM;AAC1C,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM;AAChC,IAAI,OAAO;AACX;;AAEA,EAAE,iBAAiB,CAAC,MAAM,EAAE;AAC5B,IAAI,OAAO;AACX;;AAEA,EAAE,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE;AACnC,IAAI,MAAM,UAAU,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,GAAE;;AAEhG,IAAI,OAAO;AACX,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO;AACjC,MAAM,IAAI,OAAO,UAAU,KAAK,QAAQ,GAAG,UAAU,GAAG,EAAE,CAAC;AAC3D,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,WAAW,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAC3E,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACnD;AACA;;AAEA,EAAE,gBAAgB,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;AACvE,IAAI,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AACrD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ;AAChD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ;AACnC,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,GAAG,MAAM,CAAC,KAAK;;AAEnE,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACtD,QAAQ,MAAM,IAAI,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,iBAAiB,EAAE,SAAS,CAAC,qBAAqB,EAAE,aAAa,CAAC,EAAE,CAAC;AAC7J;AACA;AACA;AACA;;;;"}
|
|
@@ -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
|
const preferencesMap = { ck3: {} };
|
|
2
10
|
|
|
3
11
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookies.js","sources":["../../../src/js/plugins/util/cookies.js"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"cookies.js","sources":["../../../src/js/plugins/util/cookies.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\nconst preferencesMap = { ck3: {} }\n\n/*\n Possible choices:\n false => Accept once\n true => Accept always\n*/\nconst rememberChoice = (service, remember) => {\n preferencesMap.ck3[service] = remember\n localStorage.setItem('bs-ck3', JSON.stringify(preferencesMap.ck3))\n}\n\nconst isChoiceRemembered = (service) => {\n preferencesMap.ck3 = JSON.parse(localStorage.getItem('bs-ck3') || '{}')\n return preferencesMap.ck3[service] || false\n}\n\nconst clearAllRememberedChoices = () => {\n localStorage.removeItem('bs-ck3')\n}\n\nconst cookies = {\n rememberChoice,\n isChoiceRemembered,\n clearAllRememberedChoices,\n}\n\nexport { cookies }\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE;;AAEhC;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9C,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG;AAChC,EAAE,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC;AACnE;;AAEA,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK;AACxC,EAAE,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI;AACxE,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI;AACxC;;AAEA,MAAM,yBAAyB,GAAG,MAAM;AACxC,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ;AAClC;;AAEK,MAAC,OAAO,GAAG;AAChB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,yBAAyB;AAC3B;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","sources":["../../../src/js/plugins/util/device.js"],"sourcesContent":["const MEDIA_MOBILE = '(max-width: 991px)'\n
|
|
1
|
+
{"version":3,"file":"device.js","sources":["../../../src/js/plugins/util/device.js"],"sourcesContent":["const MEDIA_MOBILE = '(max-width: 991px)'\n\nconst isScreenMobile = () => {\n if (typeof window !== 'undefined') {\n return window.matchMedia(MEDIA_MOBILE).matches\n }\n}\n\nexport { isScreenMobile }\n"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG;;AAEhB,MAAC,cAAc,GAAG,MAAM;AAC7B,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACrC,IAAI,OAAO,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;AAC3C;AACA;;;;"}
|
package/dist/plugins/util/dom.js
CHANGED
|
@@ -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
|
* get the element index in a array of elements
|
|
3
11
|
* @param {Object} target - the target element to find
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sources":["../../../src/js/plugins/util/dom.js"],"sourcesContent":["/**\n * get the element index in a array of elements\n * @param {Object} target - the target element to find\n * @param {array} list - the elements list\n * @returns {int} the element index\n */\nexport const getElementIndex = (target, list) => {\n let foundIdx = null\n list.forEach((element, idx) => {\n if (element === target) {\n foundIdx = idx\n }\n })\n return foundIdx\n}\n\n/**\n * set focus on a simbling\n * @param {*} currentElement - the current focused element\n * @param {*} simblings - list of simblings\n * @param {Object} config - isDirectionTop, isLimit, loop\n */\nexport const focusSimbling = (currentElement, simblings, config) => {\n config = {\n isDirectionTop: false,\n isLimit: false,\n loop: false,\n ...(typeof config === 'object' ? config : {}),\n }\n const currIdx = getElementIndex(currentElement, simblings)\n\n let found = null\n if (config.isLimit && config.isDirectionTop && currIdx > 0) {\n //get first element\n found = simblings[0]\n } else if (config.isLimit && currIdx < simblings.length - 1) {\n //get last element\n found = simblings[simblings.length - 1]\n } else if (config.isDirectionTop) {\n //get prev element\n if (!config.loop && currIdx === 0) {\n return\n }\n found = simblings[currIdx === 0 ? simblings.length - 1 : currIdx - 1]\n } else {\n //get next element\n if (!config.loop && currIdx === simblings.length - 1) {\n return\n }\n found = simblings[currIdx === simblings.length - 1 ? 0 : currIdx + 1]\n }\n\n if (found) {\n found.focus()\n }\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACjD,EAAE,IAAI,QAAQ,GAAG;AACjB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK;AACjC,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE;AAC5B,MAAM,QAAQ,GAAG;AACjB;AACA,GAAG;AACH,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,KAAK;AACpE,EAAE,MAAM,GAAG;AACX,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACjD;AACA,EAAE,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,EAAE,SAAS;;AAE3D,EAAE,IAAI,KAAK,GAAG;AACd,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,GAAG,CAAC,EAAE;AAC9D;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC;AACvB,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/D;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AAC1C,GAAG,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACpC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvC,MAAM;AACN;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACxE,GAAG,MAAM;AACT;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,MAAM;AACN;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACxE;;AAEA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,KAAK,CAAC,KAAK;AACf;AACA;;;;"}
|
|
1
|
+
{"version":3,"file":"dom.js","sources":["../../../src/js/plugins/util/dom.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 * get the element index in a array of elements\n * @param {Object} target - the target element to find\n * @param {array} list - the elements list\n * @returns {int} the element index\n */\nexport const getElementIndex = (target, list) => {\n let foundIdx = null\n list.forEach((element, idx) => {\n if (element === target) {\n foundIdx = idx\n }\n })\n return foundIdx\n}\n\n/**\n * set focus on a simbling\n * @param {*} currentElement - the current focused element\n * @param {*} simblings - list of simblings\n * @param {Object} config - isDirectionTop, isLimit, loop\n */\nexport const focusSimbling = (currentElement, simblings, config) => {\n config = {\n isDirectionTop: false,\n isLimit: false,\n loop: false,\n ...(typeof config === 'object' ? config : {}),\n }\n const currIdx = getElementIndex(currentElement, simblings)\n\n let found = null\n if (config.isLimit && config.isDirectionTop && currIdx > 0) {\n //get first element\n found = simblings[0]\n } else if (config.isLimit && currIdx < simblings.length - 1) {\n //get last element\n found = simblings[simblings.length - 1]\n } else if (config.isDirectionTop) {\n //get prev element\n if (!config.loop && currIdx === 0) {\n return\n }\n found = simblings[currIdx === 0 ? simblings.length - 1 : currIdx - 1]\n } else {\n //get next element\n if (!config.loop && currIdx === simblings.length - 1) {\n return\n }\n found = simblings[currIdx === simblings.length - 1 ? 0 : currIdx + 1]\n }\n\n if (found) {\n found.focus()\n }\n}\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,eAAe,GAAG,CAAC,MAAM,EAAE,IAAI,KAAK;AACjD,EAAE,IAAI,QAAQ,GAAG;AACjB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK;AACjC,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE;AAC5B,MAAM,QAAQ,GAAG;AACjB;AACA,GAAG;AACH,EAAE,OAAO;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;AACY,MAAC,aAAa,GAAG,CAAC,cAAc,EAAE,SAAS,EAAE,MAAM,KAAK;AACpE,EAAE,MAAM,GAAG;AACX,IAAI,cAAc,EAAE,KAAK;AACzB,IAAI,OAAO,EAAE,KAAK;AAClB,IAAI,IAAI,EAAE,KAAK;AACf,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACjD;AACA,EAAE,MAAM,OAAO,GAAG,eAAe,CAAC,cAAc,EAAE,SAAS;;AAE3D,EAAE,IAAI,KAAK,GAAG;AACd,EAAE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,cAAc,IAAI,OAAO,GAAG,CAAC,EAAE;AAC9D;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,CAAC;AACvB,GAAG,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/D;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;AAC1C,GAAG,MAAM,IAAI,MAAM,CAAC,cAAc,EAAE;AACpC;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,CAAC,EAAE;AACvC,MAAM;AACN;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,KAAK,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACxE,GAAG,MAAM;AACT;AACA,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AAC1D,MAAM;AACN;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,OAAO,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC;AACxE;;AAEA,EAAE,IAAI,KAAK,EAAE;AACb,IAAI,KAAK,CAAC,KAAK;AACf;AACA;;;;"}
|