bootstrap-italia 2.13.3 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +6 -0
  2. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/bootstrap-italia.esm.js +1 -2
  4. package/dist/bootstrap-italia.esm.js.map +1 -1
  5. package/dist/css/bootstrap-italia.min.css +1 -1
  6. package/dist/css/bootstrap-italia.min.css.map +1 -1
  7. package/dist/js/bootstrap-italia.bundle.min.js +14 -8
  8. package/dist/js/bootstrap-italia.min.js +4 -4
  9. package/dist/plugins/back-to-top.js +0 -6
  10. package/dist/plugins/back-to-top.js.map +1 -1
  11. package/dist/plugins/button.js +3 -3
  12. package/dist/plugins/button.js.map +1 -1
  13. package/dist/plugins/carousel.js +183 -402
  14. package/dist/plugins/carousel.js.map +1 -1
  15. package/dist/plugins/forward.js.map +1 -1
  16. package/dist/plugins/header-sticky.js +1 -7
  17. package/dist/plugins/header-sticky.js.map +1 -1
  18. package/dist/plugins/input-label.js +5 -1
  19. package/dist/plugins/input-label.js.map +1 -1
  20. package/dist/plugins/input-number.js +5 -7
  21. package/dist/plugins/input-number.js.map +1 -1
  22. package/dist/plugins/masonry.js +8 -1
  23. package/dist/plugins/masonry.js.map +1 -1
  24. package/dist/plugins/select-autocomplete.js +66 -17
  25. package/dist/plugins/select-autocomplete.js.map +1 -1
  26. package/dist/plugins/tooltip.js +10 -0
  27. package/dist/plugins/tooltip.js.map +1 -1
  28. package/dist/plugins/track-focus.js +0 -6
  29. package/dist/plugins/track-focus.js.map +1 -1
  30. package/dist/plugins/util/pageScroll.js +1 -1
  31. package/dist/plugins/util/pageScroll.js.map +1 -1
  32. package/dist/plugins/util/youtube-video.js +1 -2
  33. package/dist/plugins/util/youtube-video.js.map +1 -1
  34. package/dist/plugins/vendor/accessible-autocomplete.js +9 -0
  35. package/dist/plugins/vendor/accessible-autocomplete.js.map +1 -0
  36. package/dist/svg/sprites.svg +1 -1
  37. package/dist/version.js +1 -1
  38. package/dist/version.js.map +1 -1
  39. package/package.json +2 -3
  40. package/src/js/bootstrap-italia.entry.js +0 -2
  41. package/src/js/bootstrap-italia.esm.js +1 -2
  42. package/src/js/icons.js +9 -0
  43. package/src/js/plugins/back-to-top.js +0 -6
  44. package/src/js/plugins/button.js +3 -3
  45. package/src/js/plugins/carousel.js +184 -402
  46. package/src/js/plugins/forward.js +0 -1
  47. package/src/js/plugins/header-sticky.js +1 -7
  48. package/src/js/plugins/input-label.js +5 -1
  49. package/src/js/plugins/input-number.js +5 -7
  50. package/src/js/plugins/masonry.js +8 -1
  51. package/src/js/plugins/select-autocomplete.js +67 -17
  52. package/src/js/plugins/tooltip.js +10 -0
  53. package/src/js/plugins/track-focus.js +0 -6
  54. package/src/js/plugins/util/pageScroll.js +1 -1
  55. package/src/js/plugins/util/youtube-video.js +1 -2
  56. package/src/js/plugins/vendor/accessible-autocomplete.js +1 -0
  57. package/src/js/version.js +1 -1
  58. package/src/scss/base/_variables.scss +1 -1
  59. package/src/scss/base/_version.scss +1 -1
  60. package/src/scss/components/_buttons.scss +3 -3
  61. package/src/scss/components/_carousel.scss +7 -235
  62. package/src/scss/components/_navigation.scss +1 -1
  63. package/src/scss/components/_tab.scss +4 -4
  64. package/src/scss/forms/_accessible-autocomplete.scss +0 -19
  65. package/src/scss/forms/_form-input-number.scss +1 -1
  66. package/src/scss/forms/_form-input-upload.scss +1 -1
  67. package/src/scss/forms/_form-toggles.scss +1 -1
  68. package/src/scss/forms/_forms.scss +2 -1
  69. package/src/scss/forms/_just-validate.scss +4 -4
  70. package/src/scss/utilities/focus.scss +26 -16
  71. package/src/svg/it-bluesky.svg +4 -0
  72. package/src/svg/it-car.svg +4 -0
  73. package/src/svg/it-cart.svg +5 -0
  74. package/src/svg/it-file-docx.svg +12 -0
  75. package/src/svg/it-file-image.svg +5 -0
  76. package/src/svg/it-file-signed.svg +16 -0
  77. package/src/svg/it-file-xlsx.svg +11 -0
  78. package/src/svg/it-sign.svg +8 -0
  79. package/src/svg/it-spotify.svg +4 -0
  80. package/types/index.d.ts +0 -2
  81. package/types/plugins/carousel.d.ts +42 -2
  82. package/dist/plugins/carousel-bi.js +0 -226
  83. package/dist/plugins/carousel-bi.js.map +0 -1
  84. package/dist/plugins/util/swipe.js +0 -150
  85. package/dist/plugins/util/swipe.js.map +0 -1
  86. package/src/js/plugins/carousel-bi.js +0 -225
  87. package/types/plugins/carousel-bi.d.ts +0 -57
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","sources":["../../src/js/plugins/carousel.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): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getElementFromSelector, getNextActiveElement, isRTL, isVisible, reflow, triggerTransitionEnd } from './util/index'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport Swipe from './util/swipe'\nimport BaseComponent from './base-component'\n\n/**\n * Constants\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY]: DIRECTION_LEFT,\n}\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true,\n}\n\nconst DefaultType = {\n interval: '(number|boolean)', // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean',\n}\n\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config)\n\n this._interval = null\n this._activeElement = null\n this._isSliding = false\n this.touchTimeout = null\n this._swipeHelper = null\n\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._addEventListeners()\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle()\n }\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 next() {\n this._slide(ORDER_NEXT)\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n this._slide(ORDER_PREV)\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element)\n }\n\n this._clearInterval()\n }\n\n cycle() {\n this._clearInterval()\n this._updateInterval()\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval)\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle())\n return\n }\n\n this.cycle()\n }\n\n to(index) {\n const items = this._getItems()\n if (index > items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n const activeIndex = this._getItemIndex(this._getActive())\n if (activeIndex === index) {\n return\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV\n\n this._slide(order, items[index])\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose()\n }\n\n super.dispose()\n }\n\n // Private\n _configAfterMerge(config) {\n config.defaultInterval = config.interval\n return config\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, (event) => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, () => this.pause())\n EventHandler.on(this._element, EVENT_MOUSELEAVE, () => this._maybeEnableCycle())\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, (event) => event.preventDefault())\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return\n }\n\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack,\n }\n\n this._swipeHelper = new Swipe(this._element, swipeConfig)\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n const direction = KEY_TO_DIRECTION[event.key]\n if (direction) {\n event.preventDefault()\n this._slide(this._directionToOrder(direction))\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element)\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement)\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE)\n newActiveIndicator.setAttribute('aria-current', 'true')\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive()\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n this._config.interval = elementInterval || this._config.defaultInterval\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return\n }\n\n const activeElement = this._getActive()\n const isNext = order === ORDER_NEXT\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap)\n\n if (nextElement === activeElement) {\n return\n }\n\n const nextElementIndex = this._getItemIndex(nextElement)\n\n const triggerEvent = (eventName) => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex,\n })\n }\n\n const slideEvent = triggerEvent(EVENT_SLIDE)\n\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return\n }\n\n const isCycling = Boolean(this._interval)\n this.pause()\n\n this._isSliding = true\n\n this._setActiveIndicatorElement(nextElementIndex)\n this._activeElement = nextElement\n\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n triggerEvent(EVENT_SLID)\n }\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated())\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE)\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element)\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n}\n\n/**\n * Data API implementation\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n event.preventDefault()\n\n const carousel = Carousel.getOrCreateInstance(target)\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n carousel.to(slideIndex)\n carousel._maybeEnableCycle()\n return\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next()\n carousel._maybeEnableCycle()\n return\n }\n\n carousel.prev()\n carousel._maybeEnableCycle()\n })\n\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel)\n }\n })\n}\n\nexport default Carousel\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carousel.js","sources":["../../src/js/plugins/carousel.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 Splide from '@splidejs/splide'\n\nimport BaseComponent from './base-component.js'\nimport SelectorEngine from './dom/selector-engine'\nimport EventHandler from './dom/event-handler'\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_CAROUSEL = '[data-bs-carousel-splide]'\n\nconst CONFIG_DEFAULT = {\n slideFocus: false,\n rewind: true,\n perMove: 1,\n i18n: {\n prev: 'Slide precedente',\n next: 'Slide successiva',\n first: 'Vai alla prima slide',\n last: 'Vai all’ultima slide',\n slideX: 'Vai alla slide %s',\n pageX: 'Vai a pagina %s',\n play: 'Attiva autoplay',\n pause: 'Pausa autoplay',\n carousel: 'Carosello',\n select: 'Seleziona una slide da mostrare',\n slide: 'slide',\n slideLabel: '%s di %s',\n },\n}\nconst CONFIGS = {\n 'it-carousel-landscape-abstract-three-cols': {\n type: 'slide',\n perPage: 3,\n gap: 24,\n padding: { left: 0, right: 0 },\n arrows: false,\n breakpoints: {\n 768: {\n perPage: 1,\n gap: 24,\n padding: { left: 0, right: 0 },\n arrows: false,\n },\n 992: {\n perPage: 2,\n gap: 24,\n padding: { left: 40, right: 40 },\n arrows: false,\n },\n },\n },\n 'it-carousel-landscape-abstract-three-cols-arrow-visible': {\n type: 'slide',\n perPage: 3,\n gap: 24,\n padding: { left: 0, right: 0 },\n arrows: true,\n breakpoints: {\n 768: {\n perPage: 1,\n gap: 24,\n padding: { left: 40, right: 40 },\n arrows: true,\n },\n 992: {\n perPage: 2,\n gap: 24,\n padding: { left: 40, right: 40 },\n arrows: true,\n },\n },\n },\n 'it-big-img': {\n type: 'loop',\n perPage: 1,\n gap: 48,\n padding: { left: 320, right: 320 },\n arrows: false,\n breakpoints: {\n 768: {\n perPage: 1,\n gap: 0,\n padding: { left: 0, right: 0 },\n arrows: false,\n },\n 992: {\n perPage: 1,\n gap: 24,\n padding: { left: 160, right: 160 },\n arrows: false,\n },\n },\n },\n 'it-standard-image': {\n type: 'loop',\n perPage: 3,\n gap: 24,\n padding: { left: 48, right: 48 },\n arrows: false,\n breakpoints: {\n 768: {\n perPage: 1,\n gap: 24,\n padding: { left: 40, right: 40 },\n arrows: false,\n },\n 992: {\n perPage: 2,\n gap: 24,\n padding: { left: 48, right: 48 },\n arrows: false,\n },\n },\n },\n 'it-carousel-landscape-abstract': {\n type: 'slide',\n perPage: 1,\n gap: 24,\n padding: { left: 0, right: 0 },\n arrows: false,\n breakpoints: {\n 768: {\n perPage: 1,\n gap: 24,\n padding: { left: 0, right: 0 },\n arrows: false,\n },\n 992: {\n perPage: 1,\n gap: 24,\n padding: { left: 24, right: 24 },\n arrows: false,\n },\n },\n },\n 'it-calendar-wrapper': {\n type: 'slide',\n perPage: 4,\n gap: 0,\n padding: { left: 0, right: 0 },\n arrows: false,\n breakpoints: {\n 560: {\n perPage: 1,\n gap: 0,\n padding: { left: 24, right: 24 },\n arrows: false,\n },\n 768: {\n perPage: 2,\n gap: 0,\n padding: { left: 0, right: 0 },\n arrows: false,\n },\n 992: {\n perPage: 3,\n gap: 0,\n padding: { left: 0, right: 0 },\n arrows: false,\n },\n },\n },\n}\n\nclass CarouselBI extends BaseComponent {\n constructor(element) {\n super(element)\n this._config = this._getConfig()\n this._splide = new Splide(this._element, this._config)\n\n this._init()\n }\n\n dispose() {\n this._splide.destroy()\n super.dispose()\n }\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n _init() {\n this._splide.mount()\n }\n\n _getConfig() {\n let conf = Object.assign({}, CONFIG_DEFAULT)\n Object.keys(CONFIGS).forEach((classKey) => {\n if (this._element.classList.contains(classKey)) {\n conf = Object.assign({}, conf, CONFIGS[classKey])\n }\n })\n return conf\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n EventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_CAROUSEL)\n carousels.forEach((carousel) => {\n CarouselBI.getOrCreateInstance(carousel)\n })\n })\n}\n\nexport default CarouselBI\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"forward.js","sources":["../../src/js/plugins/forward.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'\n//import SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\nimport { getElementFromSelector } from './util/index'\n\nimport { documentScrollTo } from './util/tween'\n\nconst NAME = 'historyback'\nconst DATA_KEY = 'bs.historyback'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_TOGGLE = '[data-bs-toggle=\"forward\"]'\n\nconst Default = {\n duration: 800,\n easing: 'easeInOutSine',\n}\n\nclass Forward extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n goToTarget() {\n const target = getElementFromSelector(this._element)\n if (target) {\n documentScrollTo(target.offsetTop, {\n duration: this._config.duration,\n easing: this._config.easing,\n })\n }\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n EventHandler.on(this._element, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n this.goToTarget()\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_TOGGLE, function (evt) {\n evt.preventDefault()\n const forward = Forward.getOrCreateInstance(this)\n forward.goToTarget()\n })\n}\n\nexport default Forward\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAWA,MAAM,IAAI,GAAG;AACb,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC/B,MAAM,YAAY,GAAG;;AAErB,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;;AAE9D,MAAM,eAAe,GAAG;;AAExB,MAAM,OAAO,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,eAAe;AACzB;;AAEA,MAAM,OAAO,SAAS,aAAa,CAAC;AACpC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,KAAK,CAAC,OAAO;;AAEjB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;AAEzC,IAAI,IAAI,CAAC,WAAW;AACpB;;AAEA;;AAEA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO;AACX;;AAEA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ;AACvD,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE;AACzC,QAAQ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AACvC,QAAQ,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACnC,OAAO;AACP;AACA;;AAEA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,MAAM,GAAG;AACb,MAAM,GAAG,OAAO;AAChB,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACnD;AACA,IAAI,OAAO;AACX;;AAEA,EAAE,WAAW,GAAG;AAChB,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK;AACzD,MAAM,GAAG,CAAC,cAAc;AACxB,MAAM,IAAI,CAAC,UAAU;AACrB,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACtE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,GAAG,EAAE;AAClF,IAAI,GAAG,CAAC,cAAc;AACtB,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI;AACpD,IAAI,OAAO,CAAC,UAAU;AACtB,GAAG;AACH;;;;"}
1
+ {"version":3,"file":"forward.js","sources":["../../src/js/plugins/forward.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 Manipulator from './dom/manipulator'\nimport { getElementFromSelector } from './util/index'\n\nimport { documentScrollTo } from './util/tween'\n\nconst NAME = 'historyback'\nconst DATA_KEY = 'bs.historyback'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst SELECTOR_TOGGLE = '[data-bs-toggle=\"forward\"]'\n\nconst Default = {\n duration: 800,\n easing: 'easeInOutSine',\n}\n\nclass Forward extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n goToTarget() {\n const target = getElementFromSelector(this._element)\n if (target) {\n documentScrollTo(target.offsetTop, {\n duration: this._config.duration,\n easing: this._config.easing,\n })\n }\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n EventHandler.on(this._element, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n this.goToTarget()\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_TOGGLE, function (evt) {\n evt.preventDefault()\n const forward = Forward.getOrCreateInstance(this)\n forward.goToTarget()\n })\n}\n\nexport default Forward\n"],"names":[],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAUA,MAAM,IAAI,GAAG;AACb,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC/B,MAAM,YAAY,GAAG;;AAErB,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,YAAY,CAAC;;AAE9D,MAAM,eAAe,GAAG;;AAExB,MAAM,OAAO,GAAG;AAChB,EAAE,QAAQ,EAAE,GAAG;AACf,EAAE,MAAM,EAAE,eAAe;AACzB;;AAEA,MAAM,OAAO,SAAS,aAAa,CAAC;AACpC,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,KAAK,CAAC,OAAO;;AAEjB,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;;AAEzC,IAAI,IAAI,CAAC,WAAW;AACpB;;AAEA;;AAEA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO;AACX;;AAEA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,QAAQ;AACvD,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,gBAAgB,CAAC,MAAM,CAAC,SAAS,EAAE;AACzC,QAAQ,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;AACvC,QAAQ,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;AACnC,OAAO;AACP;AACA;;AAEA;AACA,EAAE,UAAU,CAAC,MAAM,EAAE;AACrB,IAAI,MAAM,GAAG;AACb,MAAM,GAAG,OAAO;AAChB,MAAM,GAAG,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC;AACrD,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,CAAC;AACnD;AACA,IAAI,OAAO;AACX;;AAEA,EAAE,WAAW,GAAG;AAChB,IAAI,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC,GAAG,KAAK;AACzD,MAAM,GAAG,CAAC,cAAc;AACxB,MAAM,IAAI,CAAC,UAAU;AACrB,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AACtE,EAAE,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,UAAU,GAAG,EAAE;AAClF,IAAI,GAAG,CAAC,cAAc;AACtB,IAAI,MAAM,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI;AACpD,IAAI,OAAO,CAAC,UAAU;AACtB,GAAG;AACH;;;;"}
@@ -16,7 +16,7 @@ const CLASS_NAME_CLONED_HEADER = 'cloned-element';
16
16
  const CLASS_NAME_SHOW = 'show';
17
17
  const CLASS_NAME_ISTICKY = 'is-sticky';
18
18
 
19
- const SELECTOR_HEADER = '.it-header-sticky';
19
+ const SELECTOR_HEADER = '.it-header-sticky [data-bs-toggle="sticky"]';
20
20
  const SELECTOR_TOGGLER = '.custom-navbar-toggler';
21
21
  const SELECTOR_MENU_WRAPPER = '.menu-wrapper';
22
22
  const SELECTOR_BRAND_WRAPPER = '.it-brand-wrapper';
@@ -88,12 +88,6 @@ class HeaderSticky {
88
88
  }
89
89
  }
90
90
  }
91
-
92
- /*if (toAdd) {
93
- elSticky.nextElementSibling.style.paddingTop = navbarHeight + (isDesktop ? navOffsetTop - scrollToGap : navbarHeight - scrollToGap) + 'px'
94
- } else {
95
- elSticky.nextElementSibling.style.paddingTop = 0 + 'px'
96
- }*/
97
91
  }
98
92
 
99
93
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"header-sticky.js","sources":["../../src/js/plugins/header-sticky.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 SelectorEngine from './dom/selector-engine'\nimport { isVisible } from './util/index'\n\nimport Sticky from './sticky'\n\nimport onDocumentScroll from './util/on-document-scroll'\n\nconst CLASS_NAME_CLONED_HEADER = 'cloned-element'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_ISTICKY = 'is-sticky'\n\nconst SELECTOR_HEADER = '.it-header-sticky'\nconst SELECTOR_TOGGLER = '.custom-navbar-toggler'\nconst SELECTOR_MENU_WRAPPER = '.menu-wrapper'\nconst SELECTOR_BRAND_WRAPPER = '.it-brand-wrapper'\nconst SELECTOR_SEARCH_WRAPPER = '.it-search-wrapper'\nconst SELECTOR_USER_WRAPPER = '.it-user-wrapper'\nconst SELECTOR_CLONED = `.${CLASS_NAME_CLONED_HEADER}`\n\nconst dataSet = new Map()\n\nclass HeaderSticky {\n //HeaderSticky uses Sticky so it can't be a Bootstrap BaseComponent\n constructor(element) {\n if (dataSet.get(element)) {\n return null\n }\n\n this._element = element\n this._elementObj = Sticky.getOrCreateInstance(element)\n\n dataSet.set(element, this._elementObj)\n\n this._bindEvents()\n\n this._toggleClonedElement(this._element.classList.contains(CLASS_NAME_ISTICKY))\n }\n\n //Static\n\n static getOrCreateInstance(element) {\n return dataSet.get(element) || new this(element)\n }\n\n //Private\n\n _bindEvents() {\n this._element.addEventListener('on.bs.sticky', () => this._toggleClonedElement(true))\n this._element.addEventListener('off.bs.sticky', () => this._toggleClonedElement(false))\n }\n\n _toggleClonedElement(toAdd = true) {\n const isDesktop = !isVisible(SelectorEngine.findOne(SELECTOR_TOGGLER, this._element))\n\n if (isDesktop) {\n const target = SelectorEngine.findOne(SELECTOR_MENU_WRAPPER, this._element)\n\n if (toAdd) {\n const elBrand = SelectorEngine.findOne(SELECTOR_BRAND_WRAPPER, this._element)\n const elSearch = SelectorEngine.findOne(SELECTOR_SEARCH_WRAPPER, this._element)\n const elUser = SelectorEngine.findOne(SELECTOR_USER_WRAPPER, this._element)\n\n const clonedBrand = elBrand ? elBrand.cloneNode(true) : null\n const clonedSearch = elSearch ? elSearch.cloneNode(true) : null\n const clonedUser = elUser ? elUser.cloneNode(true) : null\n\n if (clonedBrand) {\n target.insertBefore(clonedBrand, target.childNodes[0]).classList.add(CLASS_NAME_CLONED_HEADER)\n }\n if (clonedSearch) {\n target.appendChild(clonedSearch).classList.add(CLASS_NAME_CLONED_HEADER)\n }\n if (clonedUser) {\n target.appendChild(clonedUser).classList.add(CLASS_NAME_CLONED_HEADER)\n target.appendChild(clonedUser).classList.remove(CLASS_NAME_SHOW)\n }\n } else {\n SelectorEngine.find(SELECTOR_CLONED, this._element).forEach((item) => {\n item.parentElement.removeChild(item)\n })\n }\n }\n }\n\n /*if (toAdd) {\n elSticky.nextElementSibling.style.paddingTop = navbarHeight + (isDesktop ? navOffsetTop - scrollToGap : navbarHeight - scrollToGap) + 'px'\n } else {\n elSticky.nextElementSibling.style.paddingTop = 0 + 'px'\n }*/\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nonDocumentScroll(() => {\n const stickies = SelectorEngine.find(SELECTOR_HEADER)\n stickies.map((sticky) => {\n HeaderSticky.getOrCreateInstance(sticky)\n })\n})\n\nexport default HeaderSticky\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"header-sticky.js","sources":["../../src/js/plugins/header-sticky.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 SelectorEngine from './dom/selector-engine'\nimport { isVisible } from './util/index'\n\nimport Sticky from './sticky'\n\nimport onDocumentScroll from './util/on-document-scroll'\n\nconst CLASS_NAME_CLONED_HEADER = 'cloned-element'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_ISTICKY = 'is-sticky'\n\nconst SELECTOR_HEADER = '.it-header-sticky [data-bs-toggle=\"sticky\"]'\nconst SELECTOR_TOGGLER = '.custom-navbar-toggler'\nconst SELECTOR_MENU_WRAPPER = '.menu-wrapper'\nconst SELECTOR_BRAND_WRAPPER = '.it-brand-wrapper'\nconst SELECTOR_SEARCH_WRAPPER = '.it-search-wrapper'\nconst SELECTOR_USER_WRAPPER = '.it-user-wrapper'\nconst SELECTOR_CLONED = `.${CLASS_NAME_CLONED_HEADER}`\n\nconst dataSet = new Map()\n\nclass HeaderSticky {\n //HeaderSticky uses Sticky so it can't be a Bootstrap BaseComponent\n constructor(element) {\n if (dataSet.get(element)) {\n return null\n }\n\n this._element = element\n this._elementObj = Sticky.getOrCreateInstance(element)\n\n dataSet.set(element, this._elementObj)\n\n this._bindEvents()\n\n this._toggleClonedElement(this._element.classList.contains(CLASS_NAME_ISTICKY))\n }\n\n //Static\n\n static getOrCreateInstance(element) {\n return dataSet.get(element) || new this(element)\n }\n\n //Private\n\n _bindEvents() {\n this._element.addEventListener('on.bs.sticky', () => this._toggleClonedElement(true))\n this._element.addEventListener('off.bs.sticky', () => this._toggleClonedElement(false))\n }\n\n _toggleClonedElement(toAdd = true) {\n const isDesktop = !isVisible(SelectorEngine.findOne(SELECTOR_TOGGLER, this._element))\n\n if (isDesktop) {\n const target = SelectorEngine.findOne(SELECTOR_MENU_WRAPPER, this._element)\n\n if (toAdd) {\n const elBrand = SelectorEngine.findOne(SELECTOR_BRAND_WRAPPER, this._element)\n const elSearch = SelectorEngine.findOne(SELECTOR_SEARCH_WRAPPER, this._element)\n const elUser = SelectorEngine.findOne(SELECTOR_USER_WRAPPER, this._element)\n\n const clonedBrand = elBrand ? elBrand.cloneNode(true) : null\n const clonedSearch = elSearch ? elSearch.cloneNode(true) : null\n const clonedUser = elUser ? elUser.cloneNode(true) : null\n\n if (clonedBrand) {\n target.insertBefore(clonedBrand, target.childNodes[0]).classList.add(CLASS_NAME_CLONED_HEADER)\n }\n if (clonedSearch) {\n target.appendChild(clonedSearch).classList.add(CLASS_NAME_CLONED_HEADER)\n }\n if (clonedUser) {\n target.appendChild(clonedUser).classList.add(CLASS_NAME_CLONED_HEADER)\n target.appendChild(clonedUser).classList.remove(CLASS_NAME_SHOW)\n }\n } else {\n SelectorEngine.find(SELECTOR_CLONED, this._element).forEach((item) => {\n item.parentElement.removeChild(item)\n })\n }\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nonDocumentScroll(() => {\n const stickies = SelectorEngine.find(SELECTOR_HEADER)\n stickies.map((sticky) => {\n HeaderSticky.getOrCreateInstance(sticky)\n })\n})\n\nexport default HeaderSticky\n"],"names":[],"mappings":"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"}
@@ -82,7 +82,11 @@ class InputLabel {
82
82
  }
83
83
 
84
84
  _isEmpty() {
85
- return !this._element.value && !this._element.getAttribute('placeholder')
85
+ if (this._element.getAttribute('type') === 'number') {
86
+ return !this._element.value && !this._element.getAttribute('placeholder') && !this._element.validity.badInput
87
+ } else {
88
+ return !this._element.value && !this._element.getAttribute('placeholder')
89
+ }
86
90
  }
87
91
 
88
92
  _labelOut() {
@@ -1 +1 @@
1
- {"version":3,"file":"input-label.js","sources":["../../src/js/plugins/input-label.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 EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nconst NAME = 'inputlabel'\nconst DATA_KEY = 'bs.inputlabel'\nconst EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\n\nconst EVENT_FOCUS = `focus${EVENT_KEY}`\nconst EVENT_BLUR = `blur${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nclass InputLabel {\n constructor(element) {\n this._element = element\n\n this._init()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static getInputFromLabel = (labelElement) => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return document.querySelector('#' + CSS.escape(labelElement.getAttribute('for')))\n }\n }\n\n // Public\n\n // Private\n _init() {\n const label = this._getLabel()\n if (label && !label.classList.contains(CLASS_NAME_ACTIVE)) {\n //script disabled if active on init\n this._labelOut()\n this._labelOver()\n }\n\n if (label && label.getAttribute('it-bs-static') === null) {\n this._bindEvents()\n }\n }\n\n _bindEvents() {\n if (['date', 'time'].includes(this._element.getAttribute('type'))) {\n return\n }\n if (this._element.getAttribute('type') === 'file') {\n EventHandler.on(this._element, EVENT_BLUR, () => {\n this._labelOut()\n })\n } else {\n EventHandler.on(this._element, EVENT_FOCUS, () => {\n this._labelOut()\n })\n EventHandler.on(this._element, EVENT_BLUR, () => {\n this._labelOver()\n })\n EventHandler.on(this._element, EVENT_CHANGE, () => {\n this._labelToggle()\n })\n }\n }\n\n _getLabel() {\n return SelectorEngine.findOne('label[for=\"' + this._element.getAttribute('id') + '\"]')\n }\n\n _isEmpty() {\n return !this._element.value && !this._element.getAttribute('placeholder')\n }\n\n _labelOut() {\n const label = this._getLabel()\n if (label) {\n label.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n _labelOver() {\n if (this._isEmpty()) {\n const label = this._getLabel()\n if (label) {\n label.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n }\n _labelToggle() {\n if (!this._isEmpty()) {\n this._labelOut()\n } else {\n this._labelOver()\n }\n }\n}\n\nexport default InputLabel\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-label.js","sources":["../../src/js/plugins/input-label.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 EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nconst NAME = 'inputlabel'\nconst DATA_KEY = 'bs.inputlabel'\nconst EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\n\nconst EVENT_FOCUS = `focus${EVENT_KEY}`\nconst EVENT_BLUR = `blur${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nclass InputLabel {\n constructor(element) {\n this._element = element\n\n this._init()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n static getInputFromLabel = (labelElement) => {\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n return document.querySelector('#' + CSS.escape(labelElement.getAttribute('for')))\n }\n }\n\n // Public\n\n // Private\n _init() {\n const label = this._getLabel()\n if (label && !label.classList.contains(CLASS_NAME_ACTIVE)) {\n //script disabled if active on init\n this._labelOut()\n this._labelOver()\n }\n\n if (label && label.getAttribute('it-bs-static') === null) {\n this._bindEvents()\n }\n }\n\n _bindEvents() {\n if (['date', 'time'].includes(this._element.getAttribute('type'))) {\n return\n }\n if (this._element.getAttribute('type') === 'file') {\n EventHandler.on(this._element, EVENT_BLUR, () => {\n this._labelOut()\n })\n } else {\n EventHandler.on(this._element, EVENT_FOCUS, () => {\n this._labelOut()\n })\n EventHandler.on(this._element, EVENT_BLUR, () => {\n this._labelOver()\n })\n EventHandler.on(this._element, EVENT_CHANGE, () => {\n this._labelToggle()\n })\n }\n }\n\n _getLabel() {\n return SelectorEngine.findOne('label[for=\"' + this._element.getAttribute('id') + '\"]')\n }\n\n _isEmpty() {\n if (this._element.getAttribute('type') === 'number') {\n return !this._element.value && !this._element.getAttribute('placeholder') && !this._element.validity.badInput\n } else {\n return !this._element.value && !this._element.getAttribute('placeholder')\n }\n }\n\n _labelOut() {\n const label = this._getLabel()\n if (label) {\n label.classList.add(CLASS_NAME_ACTIVE)\n }\n }\n _labelOver() {\n if (this._isEmpty()) {\n const label = this._getLabel()\n if (label) {\n label.classList.remove(CLASS_NAME_ACTIVE)\n }\n }\n }\n _labelToggle() {\n if (!this._isEmpty()) {\n this._labelOut()\n } else {\n this._labelOver()\n }\n }\n}\n\nexport default InputLabel\n"],"names":[],"mappings":";;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAKA,MAAM,IAAI,GAAG;AACb,MAAM,QAAQ,GAAG;AACjB,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;AAC/B;;AAEA,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC;AACtC,MAAM,UAAU,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC;AACpC,MAAM,YAAY,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;;AAExC,MAAM,iBAAiB,GAAG;;AAE1B,MAAM,UAAU,CAAC;AACjB,EAAE,WAAW,CAAC,OAAO,EAAE;AACvB,IAAI,IAAI,CAAC,QAAQ,GAAG;;AAEpB,IAAI,IAAI,CAAC,KAAK;AACd;;AAEA;;AAEA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO;AACX;;AAEA,EAAE,OAAO,iBAAiB,GAAG,CAAC,YAAY,KAAK;AAC/C,IAAI,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;AAC1E,MAAM,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AACtF;AACA;;AAEA;;AAEA;AACA,EAAE,KAAK,GAAG;AACV,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AAChC,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;AAC/D;AACA,MAAM,IAAI,CAAC,SAAS;AACpB,MAAM,IAAI,CAAC,UAAU;AACrB;;AAEA,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,IAAI,EAAE;AAC9D,MAAM,IAAI,CAAC,WAAW;AACtB;AACA;;AAEA,EAAE,WAAW,GAAG;AAChB,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE;AACvE,MAAM;AACN;AACA,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,MAAM,EAAE;AACvD,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM;AACvD,QAAQ,IAAI,CAAC,SAAS;AACtB,OAAO;AACP,KAAK,MAAM;AACX,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM;AACxD,QAAQ,IAAI,CAAC,SAAS;AACtB,OAAO;AACP,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM;AACvD,QAAQ,IAAI,CAAC,UAAU;AACvB,OAAO;AACP,MAAM,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM;AACzD,QAAQ,IAAI,CAAC,YAAY;AACzB,OAAO;AACP;AACA;;AAEA,EAAE,SAAS,GAAG;AACd,IAAI,OAAO,cAAc,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI;AACzF;;AAEA,EAAE,QAAQ,GAAG;AACb,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;AACzD,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAC3G,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa;AAC9E;AACA;;AAEA,EAAE,SAAS,GAAG;AACd,IAAI,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AAChC,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,iBAAiB;AAC3C;AACA;AACA,EAAE,UAAU,GAAG;AACf,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;AACzB,MAAM,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS;AAClC,MAAM,IAAI,KAAK,EAAE;AACjB,QAAQ,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,iBAAiB;AAChD;AACA;AACA;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;AAC1B,MAAM,IAAI,CAAC,SAAS;AACpB,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,UAAU;AACrB;AACA;AACA;;;;"}
@@ -33,11 +33,8 @@ const SELECTOR_BTN = 'button[class^="input-number-"]';
33
33
  class InputNumber extends BaseComponent {
34
34
  constructor(element) {
35
35
  super(element);
36
-
37
36
  this._wrapperElement = this._element.closest(SELECTOR_WRAPPER);
38
-
39
37
  this._label = new InputLabel(element);
40
-
41
38
  this._init();
42
39
  this._bindEvents();
43
40
  }
@@ -48,8 +45,6 @@ class InputNumber extends BaseComponent {
48
45
  return NAME
49
46
  }
50
47
 
51
- // Public
52
-
53
48
  // Private
54
49
  _init() {
55
50
  if (this._wrapperElement) {
@@ -83,7 +78,10 @@ class InputNumber extends BaseComponent {
83
78
  }
84
79
 
85
80
  _incrDecr(isDecr) {
86
- var inputVal = 0;
81
+ let inputVal = 0;
82
+ if (this._element.disabled || this._element.readonly) {
83
+ return
84
+ }
87
85
  if (this._element.value !== '') inputVal = parseFloat(this._element.value);
88
86
 
89
87
  if (!isNaN(inputVal)) {
@@ -137,7 +135,7 @@ const createInput = (element) => {
137
135
 
138
136
  if (typeof window !== 'undefined' && typeof document !== 'undefined') {
139
137
  document.addEventListener('DOMContentLoaded', function () {
140
- var frmel = document.querySelectorAll(SELECTOR_INPUT + ', label');
138
+ let frmel = document.querySelectorAll(SELECTOR_INPUT + ', label');
141
139
  frmel.forEach(function (item) {
142
140
  const target = InputLabel.getInputFromLabel(item) || item;
143
141
  createInput(target);
@@ -1 +1 @@
1
- {"version":3,"file":"input-number.js","sources":["../../src/js/plugins/input-number.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'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nimport InputLabel from './input-label'\n\nconst NAME = 'inputnumber'\nconst DATA_KEY = 'bs.inputnumber'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_INPUT = `input`\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ADAPTIVE = 'input-number-adaptive'\nconst CLASS_NAME_DECREMENT = 'input-number-sub'\n\nconst SELECTOR_WRAPPER = '.input-number'\nconst SELECTOR_INPUT = 'input[data-bs-input][type=\"number\"]'\nconst SELECTOR_BTN = 'button[class^=\"input-number-\"]'\n\nclass InputNumber extends BaseComponent {\n constructor(element) {\n super(element)\n\n this._wrapperElement = this._element.closest(SELECTOR_WRAPPER)\n\n this._label = new InputLabel(element)\n\n this._init()\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n _init() {\n if (this._wrapperElement) {\n this._inputResize()\n }\n }\n\n _bindEvents() {\n if (this._wrapperElement) {\n SelectorEngine.find(SELECTOR_BTN, this._wrapperElement).forEach((btn) => {\n EventHandler.on(btn, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n this._incrDecr(btn.classList.contains(CLASS_NAME_DECREMENT))\n this._label._labelOut()\n })\n })\n\n EventHandler.on(this._element, EVENT_CHANGE, () => this._checkLimit())\n }\n }\n\n _inputResize() {\n if (this._wrapperElement.classList.contains(CLASS_NAME_ADAPTIVE)) {\n let newWidth = null\n newWidth = 'calc(70px + ' + this._element.value.length + 'ch)'\n\n if (newWidth) {\n this._element.style.width = newWidth\n }\n }\n }\n\n _incrDecr(isDecr) {\n var inputVal = 0\n if (this._element.value !== '') inputVal = parseFloat(this._element.value)\n\n if (!isNaN(inputVal)) {\n //get step\n let step = parseFloat(this._element.getAttribute('step'))\n if (!step) {\n step = 1\n }\n\n this._element.value = inputVal + step * (isDecr ? -1 : 1)\n EventHandler.trigger(this._element, EVENT_CHANGE)\n EventHandler.trigger(this._element, EVENT_INPUT)\n }\n }\n\n _checkLimit() {\n const inputVal = parseFloat(this._element.value)\n\n if (!isNaN(inputVal)) {\n let val = inputVal\n const max = parseFloat(this._element.getAttribute('max'))\n const min = parseFloat(this._element.getAttribute('min'))\n\n if (min && inputVal < min) {\n val = min\n }\n //limit max\n if (max && inputVal > max) {\n val = max\n }\n\n this._element.value = val\n }\n\n this._inputResize()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst createInput = (element) => {\n if (element && element.matches(SELECTOR_INPUT) && element.parentNode.querySelector(SELECTOR_BTN)) {\n return InputNumber.getOrCreateInstance(element)\n }\n return null\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n document.addEventListener('DOMContentLoaded', function () {\n var frmel = document.querySelectorAll(SELECTOR_INPUT + ', label')\n frmel.forEach(function (item) {\n const target = InputLabel.getInputFromLabel(item) || item\n createInput(target)\n })\n })\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BTN, function () {\n const wrapper = this.closest(SELECTOR_WRAPPER)\n if (wrapper) {\n const input = SelectorEngine.findOne(SELECTOR_INPUT, wrapper)\n if (input) {\n InputNumber.getOrCreateInstance(input)\n }\n }\n })\n}\n\nexport default InputNumber\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-number.js","sources":["../../src/js/plugins/input-number.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'\nimport EventHandler from './dom/event-handler'\nimport SelectorEngine from './dom/selector-engine'\n\nimport InputLabel from './input-label'\n\nconst NAME = 'inputnumber'\nconst DATA_KEY = 'bs.inputnumber'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CHANGE = `change${EVENT_KEY}`\nconst EVENT_INPUT = `input`\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ADAPTIVE = 'input-number-adaptive'\nconst CLASS_NAME_DECREMENT = 'input-number-sub'\n\nconst SELECTOR_WRAPPER = '.input-number'\nconst SELECTOR_INPUT = 'input[data-bs-input][type=\"number\"]'\nconst SELECTOR_BTN = 'button[class^=\"input-number-\"]'\n\nclass InputNumber extends BaseComponent {\n constructor(element) {\n super(element)\n this._wrapperElement = this._element.closest(SELECTOR_WRAPPER)\n this._label = new InputLabel(element)\n this._init()\n this._bindEvents()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Private\n _init() {\n if (this._wrapperElement) {\n this._inputResize()\n }\n }\n\n _bindEvents() {\n if (this._wrapperElement) {\n SelectorEngine.find(SELECTOR_BTN, this._wrapperElement).forEach((btn) => {\n EventHandler.on(btn, EVENT_CLICK, (evt) => {\n evt.preventDefault()\n this._incrDecr(btn.classList.contains(CLASS_NAME_DECREMENT))\n this._label._labelOut()\n })\n })\n\n EventHandler.on(this._element, EVENT_CHANGE, () => this._checkLimit())\n }\n }\n\n _inputResize() {\n if (this._wrapperElement.classList.contains(CLASS_NAME_ADAPTIVE)) {\n let newWidth = null\n newWidth = 'calc(70px + ' + this._element.value.length + 'ch)'\n\n if (newWidth) {\n this._element.style.width = newWidth\n }\n }\n }\n\n _incrDecr(isDecr) {\n let inputVal = 0\n if (this._element.disabled || this._element.readonly) {\n return\n }\n if (this._element.value !== '') inputVal = parseFloat(this._element.value)\n\n if (!isNaN(inputVal)) {\n //get step\n let step = parseFloat(this._element.getAttribute('step'))\n if (!step) {\n step = 1\n }\n\n this._element.value = inputVal + step * (isDecr ? -1 : 1)\n EventHandler.trigger(this._element, EVENT_CHANGE)\n EventHandler.trigger(this._element, EVENT_INPUT)\n }\n }\n\n _checkLimit() {\n const inputVal = parseFloat(this._element.value)\n\n if (!isNaN(inputVal)) {\n let val = inputVal\n const max = parseFloat(this._element.getAttribute('max'))\n const min = parseFloat(this._element.getAttribute('min'))\n\n if (min && inputVal < min) {\n val = min\n }\n //limit max\n if (max && inputVal > max) {\n val = max\n }\n\n this._element.value = val\n }\n\n this._inputResize()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst createInput = (element) => {\n if (element && element.matches(SELECTOR_INPUT) && element.parentNode.querySelector(SELECTOR_BTN)) {\n return InputNumber.getOrCreateInstance(element)\n }\n return null\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n document.addEventListener('DOMContentLoaded', function () {\n let frmel = document.querySelectorAll(SELECTOR_INPUT + ', label')\n frmel.forEach(function (item) {\n const target = InputLabel.getInputFromLabel(item) || item\n createInput(target)\n })\n })\n EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BTN, function () {\n const wrapper = this.closest(SELECTOR_WRAPPER)\n if (wrapper) {\n const input = SelectorEngine.findOne(SELECTOR_INPUT, wrapper)\n if (input) {\n InputNumber.getOrCreateInstance(input)\n }\n }\n })\n}\n\nexport default InputNumber\n"],"names":[],"mappings":"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"}
@@ -53,6 +53,13 @@ class Masonry extends BaseComponent {
53
53
  super.dispose();
54
54
  }
55
55
 
56
+ // Public
57
+ layout() {
58
+ if (this._masonry) {
59
+ this._masonry.layout();
60
+ }
61
+ }
62
+
56
63
  // Private
57
64
  _getConfig(config) {
58
65
  config = {
@@ -85,7 +92,7 @@ class Masonry extends BaseComponent {
85
92
  _initMasonry() {
86
93
  const config = this._config;
87
94
  config.container = this._element;
88
- this._masonry = new MiniMasonry(config); //new MasonryPlugin(this._element, this._config)
95
+ this._masonry = new MiniMasonry(config);
89
96
  }
90
97
 
91
98
  _createLoader() {
@@ -1 +1 @@
1
- {"version":3,"file":"masonry.js","sources":["../../src/js/plugins/masonry.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 SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\n\nimport MiniMasonry from 'minimasonry/src/minimasonry'\n\nconst NAME = 'masonry'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_LOADER = 'masonry-loader'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"masonry\"]'\nconst SELECTOR_LOADER = `.${CLASS_NAME_LOADER}`\n\nconst Default = {\n percentPosition: true,\n}\n\nclass Masonry extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n this._config = this._getConfig(config)\n this._masonry = null\n this._images = SelectorEngine.find('img', this._element)\n this._loadCounter = 0\n this._init()\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n if (this._masonry) {\n this._masonry.destroy()\n this._masonry = null\n }\n\n super.dispose()\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _init() {\n if (this._images.length > 0) {\n this._images.forEach((img) => {\n const imgDummy = new Image()\n imgDummy.onload = () => this._onLoadEnd()\n imgDummy.src = img.src\n })\n } else {\n this._initMasonry()\n }\n }\n\n _onLoadEnd() {\n this._loadCounter++\n if (this._loadCounter >= this._images.length) {\n this._initMasonry()\n }\n }\n\n _initMasonry() {\n const config = this._config\n config.container = this._element\n this._masonry = new MiniMasonry(config) //new MasonryPlugin(this._element, this._config)\n }\n\n _createLoader() {\n if (typeof document === 'undefined') {\n return\n }\n const loader = document.createElement('div')\n loader.classList.add(CLASS_NAME_LOADER, 'fade', 'd-flex', 'justify-content-center', 'align-items-center')\n loader.innerHTML = '<div class=\"progress-spinner progress-spinner-active\"><span class=\"visually-hidden\">Caricamento...</span></div>'\n this._element.appendChild(loader)\n return loader\n }\n _getOrCreateLoader() {\n const loader = SelectorEngine.findOne(SELECTOR_LOADER, this._element)\n if (!loader) {\n return this._createLoader()\n }\n return loader\n }\n _destroyLoader() {\n const loader = SelectorEngine.findOne(SELECTOR_LOADER, this._element)\n if (loader) {\n loader.remove()\n }\n }\n _showLoader() {\n const loader = this._getOrCreateLoader()\n loader.classList.add(CLASS_NAME_SHOW)\n }\n _hideLoader() {\n this._destroyLoader()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const masonries = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n if (masonries.length > 0) {\n masonries.forEach((masonry) => {\n Masonry.getOrCreateInstance(masonry)\n })\n }\n}\n\nexport default Masonry\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"masonry.js","sources":["../../src/js/plugins/masonry.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 SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\n\nimport MiniMasonry from 'minimasonry/src/minimasonry'\n\nconst NAME = 'masonry'\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_LOADER = 'masonry-loader'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"masonry\"]'\nconst SELECTOR_LOADER = `.${CLASS_NAME_LOADER}`\n\nconst Default = {\n percentPosition: true,\n}\n\nclass Masonry extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n if (typeof window !== 'undefined' && typeof document !== 'undefined') {\n this._config = this._getConfig(config)\n this._masonry = null\n this._images = SelectorEngine.find('img', this._element)\n this._loadCounter = 0\n this._init()\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n dispose() {\n if (this._masonry) {\n this._masonry.destroy()\n this._masonry = null\n }\n\n super.dispose()\n }\n\n // Public\n layout() {\n if (this._masonry) {\n this._masonry.layout()\n }\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _init() {\n if (this._images.length > 0) {\n this._images.forEach((img) => {\n const imgDummy = new Image()\n imgDummy.onload = () => this._onLoadEnd()\n imgDummy.src = img.src\n })\n } else {\n this._initMasonry()\n }\n }\n\n _onLoadEnd() {\n this._loadCounter++\n if (this._loadCounter >= this._images.length) {\n this._initMasonry()\n }\n }\n\n _initMasonry() {\n const config = this._config\n config.container = this._element\n this._masonry = new MiniMasonry(config)\n }\n\n _createLoader() {\n if (typeof document === 'undefined') {\n return\n }\n const loader = document.createElement('div')\n loader.classList.add(CLASS_NAME_LOADER, 'fade', 'd-flex', 'justify-content-center', 'align-items-center')\n loader.innerHTML = '<div class=\"progress-spinner progress-spinner-active\"><span class=\"visually-hidden\">Caricamento...</span></div>'\n this._element.appendChild(loader)\n return loader\n }\n _getOrCreateLoader() {\n const loader = SelectorEngine.findOne(SELECTOR_LOADER, this._element)\n if (!loader) {\n return this._createLoader()\n }\n return loader\n }\n _destroyLoader() {\n const loader = SelectorEngine.findOne(SELECTOR_LOADER, this._element)\n if (loader) {\n loader.remove()\n }\n }\n _showLoader() {\n const loader = this._getOrCreateLoader()\n loader.classList.add(CLASS_NAME_SHOW)\n }\n _hideLoader() {\n this._destroyLoader()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n const masonries = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n if (masonries.length > 0) {\n masonries.forEach((masonry) => {\n Masonry.getOrCreateInstance(masonry)\n })\n }\n}\n\nexport default Masonry\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
- import accessibleAutocomplete from 'accessible-autocomplete';
1
+ import accessibleAutocomplete from './vendor/accessible-autocomplete.js';
2
2
  import BaseComponent from './base-component.js';
3
+ import InputLabel from './input-label.js';
3
4
 
4
5
  /**
5
6
  * --------------------------------------------------------------------------
@@ -16,20 +17,31 @@ function onClassChange(element, callback) {
16
17
  const observer = new MutationObserver((mutations) => {
17
18
  mutations.forEach((mutation) => {
18
19
  if (mutation.type === 'attributes' && mutation.attributeName === 'class') {
19
- callback(mutation.target);
20
+ callback(mutation.oldValue, mutation.target);
20
21
  }
21
22
  });
22
23
  });
23
- observer.observe(element, { attributes: true });
24
+ observer.observe(element, { attributes: true, attributeOldValue: true });
24
25
  return observer.disconnect
25
26
  }
26
27
 
27
28
  class SelectAutocomplete extends BaseComponent {
28
29
  constructor(element, config) {
29
30
  super(element);
30
- this._hasFormControl = element.classList.contains('form-control');
31
- this.element_original_id = this._element.id;
32
- this._config = config;
31
+
32
+ this._config = config || {};
33
+ this._config.inputClasses = 'form-control';
34
+ this._config.showNoOptionsFound = true;
35
+ this._config.hintClasses = 'app-hint';
36
+ this._config.autoselect = false;
37
+ this._config.showAllValues = false;
38
+ this._config.templates = undefined;
39
+ this._config.confirmOnBlur = false;
40
+ this._config.menuAttributes = {};
41
+ this._config.menuClasses = null;
42
+
43
+ this._extraClasses = [];
44
+
33
45
  if (!this._config.tAssistiveHint)
34
46
  this._config.tAssistiveHint = () =>
35
47
  'Quando i risultati del completamento automatico sono disponibili, usa le frecce su e giù per rivedere e Invio per selezionare. Utenti di dispositivi touch, esplora tramite tocco o con gesti di scorrimento';
@@ -39,7 +51,7 @@ class SelectAutocomplete extends BaseComponent {
39
51
  if (!this._config.tStatusNoResults) this._config.tStatusNoResults = () => 'Nessun risultato di ricerca';
40
52
  if (!this._config.tStatusSelectedOption)
41
53
  this._config.tStatusSelectedOption = (selectedOption, length, index) => `${selectedOption} ${index + 1} di ${length} è sottolineato`;
42
- if (!this._config.tStatusResults)
54
+ if (!this._config.tStatusResults) {
43
55
  this._config.tStatusResults = (length, contentSelectedOption) => {
44
56
  const words = {
45
57
  result: length === 1 ? 'risultato' : 'risultati',
@@ -49,7 +61,10 @@ class SelectAutocomplete extends BaseComponent {
49
61
 
50
62
  return `${length} ${words.result} ${words.is} ${words.available}. ${contentSelectedOption}`
51
63
  };
52
- this._enhance();
64
+ }
65
+ if (typeof document !== 'undefined') {
66
+ this._enhance();
67
+ }
53
68
  }
54
69
 
55
70
  // Getters
@@ -60,20 +75,54 @@ class SelectAutocomplete extends BaseComponent {
60
75
 
61
76
  // Private
62
77
  _enhance() {
63
- accessibleAutocomplete.enhanceSelectElement(Object.assign({}, { selectElement: this._element }, this._config));
78
+ const inputId = this._config.id;
79
+ const originalConfirm = this._config.onConfirm;
80
+
81
+ this._config.onConfirm = (value) => {
82
+ document.getElementById(inputId).value = value;
83
+ document.getElementById(inputId).dispatchEvent(new Event('input'));
84
+ if (originalConfirm) {
85
+ originalConfirm(value);
86
+ }
87
+ };
88
+
89
+ accessibleAutocomplete(
90
+ Object.assign(
91
+ {},
92
+ {
93
+ element: this._element,
94
+ id: inputId,
95
+ },
96
+ this._config
97
+ )
98
+ );
64
99
  setTimeout(() => {
65
- if (this._hasFormControl) {
66
- if (typeof document === 'undefined') {
100
+ this._inputField = document.getElementById(inputId);
101
+ this._label = new InputLabel(this._inputField);
102
+ this._inputField.addEventListener('focus', () => {
103
+ this._extraClasses.forEach((cls) => {
104
+ this._inputField.classList.add(cls);
105
+ });
106
+ this._extraClasses = [];
107
+ });
108
+ this._inputField.addEventListener('blur', () => {
109
+ this._extraClasses.forEach((cls) => {
110
+ this._inputField.classList.add(cls);
111
+ });
112
+ this._extraClasses = [];
113
+ });
114
+
115
+ onClassChange(this._inputField, (oldClasses) => {
116
+ this._extraClasses = [];
117
+ if (oldClasses === this._inputField.classList.value) {
67
118
  return
68
119
  }
69
- const inputField = document.getElementById(this.element_original_id);
70
- inputField.classList.add('form-control');
71
- onClassChange(inputField, (node) => {
72
- if (!node.classList.contains('form-control')) {
73
- node.classList.add('form-control');
120
+ oldClasses.split(' ').forEach((cls) => {
121
+ if (!cls.startsWith('autocomplete')) {
122
+ this._extraClasses.push(cls);
74
123
  }
75
124
  });
76
- }
125
+ });
77
126
  }, 100);
78
127
  }
79
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select-autocomplete.js","sources":["../../src/js/plugins/select-autocomplete.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 accessibleAutocomplete from 'accessible-autocomplete'\n\nimport BaseComponent from './base-component.js'\n\nconst NAME = 'selectautocomplete'\n\nfunction onClassChange(element, callback) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n callback(mutation.target)\n }\n })\n })\n observer.observe(element, { attributes: true })\n return observer.disconnect\n}\n\nclass SelectAutocomplete extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._hasFormControl = element.classList.contains('form-control')\n this.element_original_id = this._element.id\n this._config = config\n if (!this._config.tAssistiveHint)\n this._config.tAssistiveHint = () =>\n 'Quando i risultati del completamento automatico sono disponibili, usa le frecce su e giù per rivedere e Invio per selezionare. Utenti di dispositivi touch, esplora tramite tocco o con gesti di scorrimento'\n if (!this._config.tNoResults) this._config.tNoResults = () => 'Nessun risultato trovato'\n if (!this._config.tStatusQueryTooShort)\n this._config.tStatusQueryTooShort = (minQueryLength) => `Digita ${minQueryLength} o più caratteri per mostrare le opzioni di ricerca`\n if (!this._config.tStatusNoResults) this._config.tStatusNoResults = () => 'Nessun risultato di ricerca'\n if (!this._config.tStatusSelectedOption)\n this._config.tStatusSelectedOption = (selectedOption, length, index) => `${selectedOption} ${index + 1} di ${length} è sottolineato`\n if (!this._config.tStatusResults)\n this._config.tStatusResults = (length, contentSelectedOption) => {\n const words = {\n result: length === 1 ? 'risultato' : 'risultati',\n is: length === 1 ? 'è' : 'sono',\n available: length === 1 ? 'disponibile' : 'disponibili',\n }\n\n return `${length} ${words.result} ${words.is} ${words.available}. ${contentSelectedOption}`\n }\n this._enhance()\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Private\n _enhance() {\n accessibleAutocomplete.enhanceSelectElement(Object.assign({}, { selectElement: this._element }, this._config))\n setTimeout(() => {\n if (this._hasFormControl) {\n if (typeof document === 'undefined') {\n return\n }\n const inputField = document.getElementById(this.element_original_id)\n inputField.classList.add('form-control')\n onClassChange(inputField, (node) => {\n if (!node.classList.contains('form-control')) {\n node.classList.add('form-control')\n }\n })\n }\n }, 100)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nexport default SelectAutocomplete\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"select-autocomplete.js","sources":["../../src/js/plugins/select-autocomplete.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 accessibleAutocomplete from './vendor/accessible-autocomplete'\n\nimport BaseComponent from './base-component.js'\n\nimport InputLabel from './input-label'\n\nconst NAME = 'selectautocomplete'\n\nfunction onClassChange(element, callback) {\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n callback(mutation.oldValue, mutation.target)\n }\n })\n })\n observer.observe(element, { attributes: true, attributeOldValue: true })\n return observer.disconnect\n}\n\nclass SelectAutocomplete extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = config || {}\n this._config.inputClasses = 'form-control'\n this._config.showNoOptionsFound = true\n this._config.hintClasses = 'app-hint'\n this._config.autoselect = false\n this._config.showAllValues = false\n this._config.templates = undefined\n this._config.confirmOnBlur = false\n this._config.menuAttributes = {}\n this._config.menuClasses = null\n\n this._extraClasses = []\n\n if (!this._config.tAssistiveHint)\n this._config.tAssistiveHint = () =>\n 'Quando i risultati del completamento automatico sono disponibili, usa le frecce su e giù per rivedere e Invio per selezionare. Utenti di dispositivi touch, esplora tramite tocco o con gesti di scorrimento'\n if (!this._config.tNoResults) this._config.tNoResults = () => 'Nessun risultato trovato'\n if (!this._config.tStatusQueryTooShort)\n this._config.tStatusQueryTooShort = (minQueryLength) => `Digita ${minQueryLength} o più caratteri per mostrare le opzioni di ricerca`\n if (!this._config.tStatusNoResults) this._config.tStatusNoResults = () => 'Nessun risultato di ricerca'\n if (!this._config.tStatusSelectedOption)\n this._config.tStatusSelectedOption = (selectedOption, length, index) => `${selectedOption} ${index + 1} di ${length} è sottolineato`\n if (!this._config.tStatusResults) {\n this._config.tStatusResults = (length, contentSelectedOption) => {\n const words = {\n result: length === 1 ? 'risultato' : 'risultati',\n is: length === 1 ? 'è' : 'sono',\n available: length === 1 ? 'disponibile' : 'disponibili',\n }\n\n return `${length} ${words.result} ${words.is} ${words.available}. ${contentSelectedOption}`\n }\n }\n if (typeof document !== 'undefined') {\n this._enhance()\n }\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Private\n _enhance() {\n const inputId = this._config.id\n const originalConfirm = this._config.onConfirm\n\n this._config.onConfirm = (value) => {\n document.getElementById(inputId).value = value\n document.getElementById(inputId).dispatchEvent(new Event('input'))\n if (originalConfirm) {\n originalConfirm(value)\n }\n }\n\n accessibleAutocomplete(\n Object.assign(\n {},\n {\n element: this._element,\n id: inputId,\n },\n this._config\n )\n )\n setTimeout(() => {\n this._inputField = document.getElementById(inputId)\n this._label = new InputLabel(this._inputField)\n this._inputField.addEventListener('focus', () => {\n this._extraClasses.forEach((cls) => {\n this._inputField.classList.add(cls)\n })\n this._extraClasses = []\n })\n this._inputField.addEventListener('blur', () => {\n this._extraClasses.forEach((cls) => {\n this._inputField.classList.add(cls)\n })\n this._extraClasses = []\n })\n\n onClassChange(this._inputField, (oldClasses) => {\n this._extraClasses = []\n if (oldClasses === this._inputField.classList.value) {\n return\n }\n oldClasses.split(' ').forEach((cls) => {\n if (!cls.startsWith('autocomplete')) {\n this._extraClasses.push(cls)\n }\n })\n })\n }, 100)\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nexport default SelectAutocomplete\n"],"names":[],"mappings":"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"}
@@ -227,6 +227,16 @@ class Tooltip extends BaseComponent {
227
227
  }
228
228
  }
229
229
 
230
+ document.addEventListener(
231
+ 'keyup',
232
+ (event) => {
233
+ if (event.key === 'Escape') {
234
+ this.hide();
235
+ }
236
+ },
237
+ { once: true }
238
+ );
239
+
230
240
  const complete = () => {
231
241
  EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN));
232
242