bootstrap-italia 2.1.1 → 2.2.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 (79) hide show
  1. package/dist/bootstrap-italia.esm.js +3 -6
  2. package/dist/bootstrap-italia.esm.js.map +1 -1
  3. package/dist/css/bootstrap-italia-comuni.min.css +1 -1
  4. package/dist/css/bootstrap-italia.min.css +1 -1
  5. package/dist/css/bootstrap-italia.min.css.map +1 -1
  6. package/dist/js/bootstrap-italia.bundle.min.js +369 -67
  7. package/dist/plugins/accordion.js +13 -5
  8. package/dist/plugins/accordion.js.map +1 -1
  9. package/dist/plugins/backToTop.js +3 -5
  10. package/dist/plugins/backToTop.js.map +1 -1
  11. package/dist/plugins/carousel-bi.js +0 -1
  12. package/dist/plugins/carousel-bi.js.map +1 -1
  13. package/dist/plugins/cookiebar.js.map +1 -1
  14. package/dist/plugins/dimmer.js +22 -19
  15. package/dist/plugins/dimmer.js.map +1 -1
  16. package/dist/plugins/fonts-loader.js +253 -249
  17. package/dist/plugins/fonts-loader.js.map +1 -1
  18. package/dist/plugins/forward.js +11 -6
  19. package/dist/plugins/forward.js.map +1 -1
  20. package/dist/plugins/header-sticky.js +74 -31
  21. package/dist/plugins/header-sticky.js.map +1 -1
  22. package/dist/plugins/history-back.js +13 -6
  23. package/dist/plugins/history-back.js.map +1 -1
  24. package/dist/plugins/init.js +14 -0
  25. package/dist/plugins/init.js.map +1 -0
  26. package/dist/plugins/input-label.js +4 -0
  27. package/dist/plugins/input-label.js.map +1 -1
  28. package/dist/plugins/input-number.js +48 -23
  29. package/dist/plugins/input-number.js.map +1 -1
  30. package/dist/plugins/input-password.js +84 -33
  31. package/dist/plugins/input-password.js.map +1 -1
  32. package/dist/plugins/input-search-autocomplete.js +24 -5
  33. package/dist/plugins/input-search-autocomplete.js.map +1 -1
  34. package/dist/plugins/input.js +32 -9
  35. package/dist/plugins/input.js.map +1 -1
  36. package/dist/plugins/navscroll.js +2 -3
  37. package/dist/plugins/navscroll.js.map +1 -1
  38. package/dist/plugins/select-autocomplete.js +0 -1
  39. package/dist/plugins/select-autocomplete.js.map +1 -1
  40. package/dist/plugins/sticky.js +2 -3
  41. package/dist/plugins/sticky.js.map +1 -1
  42. package/dist/plugins/transfer.js +12 -3
  43. package/dist/plugins/transfer.js.map +1 -1
  44. package/dist/plugins/upload-dragdrop.js +22 -5
  45. package/dist/plugins/upload-dragdrop.js.map +1 -1
  46. package/dist/plugins/util/observer.js +23 -9
  47. package/dist/plugins/util/observer.js.map +1 -1
  48. package/dist/version.js +1 -1
  49. package/dist/version.js.map +1 -1
  50. package/package.json +3 -3
  51. package/src/js/bootstrap-italia.entry.js +8 -12
  52. package/src/js/bootstrap-italia.esm.js +3 -6
  53. package/src/js/plugins/accordion.js +9 -1
  54. package/src/js/plugins/backToTop.js +3 -5
  55. package/src/js/plugins/carousel-bi.js +0 -1
  56. package/src/js/plugins/cookiebar.js +0 -11
  57. package/src/js/plugins/dimmer.js +16 -14
  58. package/src/js/plugins/fonts-loader.js +250 -248
  59. package/src/js/plugins/forward.js +8 -2
  60. package/src/js/plugins/header-sticky.js +75 -30
  61. package/src/js/plugins/history-back.js +8 -2
  62. package/src/js/plugins/init.js +14 -0
  63. package/src/js/plugins/input-label.js +4 -0
  64. package/src/js/plugins/input-number.js +35 -10
  65. package/src/js/plugins/input-password.js +64 -13
  66. package/src/js/plugins/input-search-autocomplete.js +22 -2
  67. package/src/js/plugins/input.js +27 -4
  68. package/src/js/plugins/navscroll.js +2 -3
  69. package/src/js/plugins/select-autocomplete.js +0 -1
  70. package/src/js/plugins/sticky.js +2 -3
  71. package/src/js/plugins/transfer.js +11 -2
  72. package/src/js/plugins/upload-dragdrop.js +21 -4
  73. package/src/js/plugins/util/observer.js +23 -9
  74. package/src/js/version.js +1 -1
  75. package/src/scss/custom/_accessible-autocomplete.scss +4 -0
  76. package/src/scss/custom/_carousel.scss +4 -0
  77. package/src/scss/custom/_dimmer.scss +5 -1
  78. package/src/scss/custom/_form-password.scss +7 -0
  79. package/src/scss/custom/_version.scss +1 -1
@@ -234,12 +234,11 @@ class Sticky extends BaseComponent {
234
234
  * ------------------------------------------------------------------------
235
235
  */
236
236
 
237
- const dataApiCb = onDocumentScroll(() => {
237
+ onDocumentScroll(() => {
238
238
  const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
239
- stickies.forEach((sticky) => {
239
+ stickies.map((sticky) => {
240
240
  Sticky.getOrCreateInstance(sticky);
241
241
  });
242
- dataApiCb.dispose();
243
242
  });
244
243
 
245
244
  export { Sticky as default };
@@ -1 +1 @@
1
- {"version":3,"file":"sticky.js","sources":["../../src/js/plugins/sticky.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport {\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'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\n\nimport { isScreenMobile } from './util/device'\nimport onDocumentScroll from './util/on-document-scroll'\n\nconst NAME = 'sticky'\nconst DATA_KEY = 'bs.sticky'\nconst EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\n\n//const EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_STICKY_ON = `on${EVENT_KEY}`\nconst EVENT_STICKY_OFF = `off${EVENT_KEY}`\n\nconst CLASS_NAME_WRAPPER = 'bs-it-sticky-wrapper'\nconst CLASS_NAME_STICKY = 'bs-is-sticky'\nconst CLASS_NAME_FIXED = 'bs-is-fixed'\n\nconst DATA_TARGET_MOBILE = 'data-bs-target-mobile'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"sticky\"]'\n\nconst Default = {\n positionType: 'sticky', //fixed\n stickyClassName: '',\n stackable: false,\n paddingTop: 0,\n}\n\nclass Sticky extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._isSticky = false\n this._wrapper = null\n\n this._stickyTarget = SelectorEngine.findOne(getSelectorFromElement(this._element), this._element) || this._element\n this._stickyTargetMobile = SelectorEngine.findOne(this._element.getAttribute(DATA_TARGET_MOBILE), this._element) || this._stickyTarget //needed?\n this._stickyLimit = 0\n this._stickyLimitMobile = 0\n this._setLimit()\n\n this._scrollCb = null\n\n this._isMobile = isScreenMobile()\n\n this._prevTop = 0\n\n this._onScroll()\n this._bindEvents()\n }\n\n dispose() {\n EventHandler.off(window, EVENT_RESIZE)\n this._scrollCb.dispose()\n\n super.dispose()\n }\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n EventHandler.on(window, EVENT_RESIZE, () => this._onResize())\n //EventHandler.on(window, EVENT_SCROLL, () => this._onScroll())\n this._scrollCb = onDocumentScroll(() => this._onScroll())\n }\n\n _onResize() {\n this._isMobile = isScreenMobile()\n this._setLimit()\n }\n\n _onScroll() {\n this._checkSticky()\n }\n\n _setLimit() {\n this._stickyLimit = this._cumulativeOffset(this._stickyTarget).top\n this._stickyLimitMobile = this._cumulativeOffset(this._stickyTargetMobile).top\n }\n\n _getLimit() {\n let newLimit = this._isMobile ? this._stickyLimitMobile : this._stickyLimit\n if (this._config.stackable) {\n this._getStickySimblings().forEach((sticky, idx) => {\n const data = sticky.getBoundingClientRect()\n newLimit -= data.height + (idx === 0 ? parseFloat(sticky.style.top) : 0)\n })\n }\n return newLimit > 0 ? newLimit : 0\n }\n\n /**\n * get the absolute position of an element\n * @param {*} element - the target element\n * @returns {Object} - absolute position top and left of the element\n */\n _cumulativeOffset(element) {\n let top = 0\n let left = 0\n do {\n top += element.offsetTop || 0\n left += element.offsetLeft || 0\n element = element.offsetParent\n } while (element)\n\n return {\n top: top,\n left: left,\n }\n }\n\n _isTypeSticky() {\n return this._config.positionType === 'sticky'\n }\n\n _checkSticky() {\n if (!this._isSticky) {\n //the target position can change dinamically\n this._setLimit()\n }\n const limit = this._getLimit()\n if (window.pageYOffset > limit) {\n this._setSticky()\n } else {\n this._unsetSticky()\n }\n }\n _setSticky() {\n if (!this._isSticky) {\n this._isSticky = true\n let cssClass = CLASS_NAME_STICKY\n if (!this._isTypeSticky()) {\n cssClass = CLASS_NAME_FIXED\n this._wrapper = this._createWrapper()\n }\n this._element.classList.add(cssClass)\n if (this._config.stickyClassName) {\n this._element.classList.add(this._config.stickyClassName)\n }\n this._prevTop = this._element.style.top\n this._element.style.top = this._getPositionTop() + 'px'\n EventHandler.trigger(this._element, EVENT_STICKY_ON)\n }\n }\n _unsetSticky() {\n if (this._isSticky) {\n let cssClass = CLASS_NAME_STICKY\n if (!this._isTypeSticky()) {\n cssClass = CLASS_NAME_FIXED\n this._destroyWrapper()\n }\n this._element.classList.remove(cssClass)\n if (this._config.stickyClassName) {\n this._element.classList.remove(this._config.stickyClassName)\n }\n this._element.style.top = this._prevTop\n this._isSticky = false\n EventHandler.trigger(this._element, EVENT_STICKY_OFF)\n }\n }\n\n _createWrapper() {\n const wrapper = document.createElement('div')\n wrapper.classList.add(CLASS_NAME_WRAPPER)\n wrapper.style.width = '100%' //this._element.getBoundingClientRect().width + 'px'\n wrapper.style.height = this._element.getBoundingClientRect().height + 'px'\n wrapper.style.overflow = 'hidden'\n // insert wrapper before el in the DOM tree\n this._element.parentNode.insertBefore(wrapper, this._element)\n // move el into wrapper\n wrapper.appendChild(this._element)\n return wrapper\n }\n _destroyWrapper() {\n if (this._wrapper) {\n this._wrapper.parentNode.insertBefore(this._element, this._wrapper)\n this._wrapper.remove()\n }\n }\n\n _getStickySimblings() {\n const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n return stickies.filter((sticky) => {\n const instance = Sticky.getInstance(sticky)\n if (instance && instance._isSticky && sticky !== this._element) {\n return true\n }\n return false\n })\n }\n\n /**\n * returns the top position of the element considering the config and the other sticky elements\n */\n _getPositionTop() {\n let newTop = 0\n if (this._config.stackable) {\n this._getStickySimblings().forEach((sticky, idx) => {\n const data = sticky.getBoundingClientRect()\n newTop += data.height + (idx === 0 ? parseFloat(sticky.style.top) : 0)\n })\n return newTop\n } else {\n return newTop + this._config.paddingTop\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst dataApiCb = onDocumentScroll(() => {\n const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n stickies.forEach((sticky) => {\n Sticky.getOrCreateInstance(sticky)\n })\n dataApiCb.dispose()\n})\n\nexport default Sticky\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sticky.js","sources":["../../src/js/plugins/sticky.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport {\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'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\n\nimport { isScreenMobile } from './util/device'\nimport onDocumentScroll from './util/on-document-scroll'\n\nconst NAME = 'sticky'\nconst DATA_KEY = 'bs.sticky'\nconst EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\n\n//const EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_STICKY_ON = `on${EVENT_KEY}`\nconst EVENT_STICKY_OFF = `off${EVENT_KEY}`\n\nconst CLASS_NAME_WRAPPER = 'bs-it-sticky-wrapper'\nconst CLASS_NAME_STICKY = 'bs-is-sticky'\nconst CLASS_NAME_FIXED = 'bs-is-fixed'\n\nconst DATA_TARGET_MOBILE = 'data-bs-target-mobile'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"sticky\"]'\n\nconst Default = {\n positionType: 'sticky', //fixed\n stickyClassName: '',\n stackable: false,\n paddingTop: 0,\n}\n\nclass Sticky extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n\n this._isSticky = false\n this._wrapper = null\n\n this._stickyTarget = SelectorEngine.findOne(getSelectorFromElement(this._element), this._element) || this._element\n this._stickyTargetMobile = SelectorEngine.findOne(this._element.getAttribute(DATA_TARGET_MOBILE), this._element) || this._stickyTarget //needed?\n this._stickyLimit = 0\n this._stickyLimitMobile = 0\n this._setLimit()\n\n this._scrollCb = null\n\n this._isMobile = isScreenMobile()\n\n this._prevTop = 0\n\n this._onScroll()\n this._bindEvents()\n }\n\n dispose() {\n EventHandler.off(window, EVENT_RESIZE)\n this._scrollCb.dispose()\n\n super.dispose()\n }\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n\n _bindEvents() {\n EventHandler.on(window, EVENT_RESIZE, () => this._onResize())\n //EventHandler.on(window, EVENT_SCROLL, () => this._onScroll())\n this._scrollCb = onDocumentScroll(() => this._onScroll())\n }\n\n _onResize() {\n this._isMobile = isScreenMobile()\n this._setLimit()\n }\n\n _onScroll() {\n this._checkSticky()\n }\n\n _setLimit() {\n this._stickyLimit = this._cumulativeOffset(this._stickyTarget).top\n this._stickyLimitMobile = this._cumulativeOffset(this._stickyTargetMobile).top\n }\n\n _getLimit() {\n let newLimit = this._isMobile ? this._stickyLimitMobile : this._stickyLimit\n if (this._config.stackable) {\n this._getStickySimblings().forEach((sticky, idx) => {\n const data = sticky.getBoundingClientRect()\n newLimit -= data.height + (idx === 0 ? parseFloat(sticky.style.top) : 0)\n })\n }\n return newLimit > 0 ? newLimit : 0\n }\n\n /**\n * get the absolute position of an element\n * @param {*} element - the target element\n * @returns {Object} - absolute position top and left of the element\n */\n _cumulativeOffset(element) {\n let top = 0\n let left = 0\n do {\n top += element.offsetTop || 0\n left += element.offsetLeft || 0\n element = element.offsetParent\n } while (element)\n\n return {\n top: top,\n left: left,\n }\n }\n\n _isTypeSticky() {\n return this._config.positionType === 'sticky'\n }\n\n _checkSticky() {\n if (!this._isSticky) {\n //the target position can change dinamically\n this._setLimit()\n }\n const limit = this._getLimit()\n if (window.pageYOffset > limit) {\n this._setSticky()\n } else {\n this._unsetSticky()\n }\n }\n _setSticky() {\n if (!this._isSticky) {\n this._isSticky = true\n let cssClass = CLASS_NAME_STICKY\n if (!this._isTypeSticky()) {\n cssClass = CLASS_NAME_FIXED\n this._wrapper = this._createWrapper()\n }\n this._element.classList.add(cssClass)\n if (this._config.stickyClassName) {\n this._element.classList.add(this._config.stickyClassName)\n }\n this._prevTop = this._element.style.top\n this._element.style.top = this._getPositionTop() + 'px'\n EventHandler.trigger(this._element, EVENT_STICKY_ON)\n }\n }\n _unsetSticky() {\n if (this._isSticky) {\n let cssClass = CLASS_NAME_STICKY\n if (!this._isTypeSticky()) {\n cssClass = CLASS_NAME_FIXED\n this._destroyWrapper()\n }\n this._element.classList.remove(cssClass)\n if (this._config.stickyClassName) {\n this._element.classList.remove(this._config.stickyClassName)\n }\n this._element.style.top = this._prevTop\n this._isSticky = false\n EventHandler.trigger(this._element, EVENT_STICKY_OFF)\n }\n }\n\n _createWrapper() {\n const wrapper = document.createElement('div')\n wrapper.classList.add(CLASS_NAME_WRAPPER)\n wrapper.style.width = '100%' //this._element.getBoundingClientRect().width + 'px'\n wrapper.style.height = this._element.getBoundingClientRect().height + 'px'\n wrapper.style.overflow = 'hidden'\n // insert wrapper before el in the DOM tree\n this._element.parentNode.insertBefore(wrapper, this._element)\n // move el into wrapper\n wrapper.appendChild(this._element)\n return wrapper\n }\n _destroyWrapper() {\n if (this._wrapper) {\n this._wrapper.parentNode.insertBefore(this._element, this._wrapper)\n this._wrapper.remove()\n }\n }\n\n _getStickySimblings() {\n const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n return stickies.filter((sticky) => {\n const instance = Sticky.getInstance(sticky)\n if (instance && instance._isSticky && sticky !== this._element) {\n return true\n }\n return false\n })\n }\n\n /**\n * returns the top position of the element considering the config and the other sticky elements\n */\n _getPositionTop() {\n let newTop = 0\n if (this._config.stackable) {\n this._getStickySimblings().forEach((sticky, idx) => {\n const data = sticky.getBoundingClientRect()\n newTop += data.height + (idx === 0 ? parseFloat(sticky.style.top) : 0)\n })\n return newTop\n } else {\n return newTop + this._config.paddingTop\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nonDocumentScroll(() => {\n const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n stickies.map((sticky) => {\n Sticky.getOrCreateInstance(sticky)\n })\n})\n\nexport default Sticky\n"],"names":[],"mappings":"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"}
@@ -7,8 +7,10 @@ import SelectorEngine from 'bootstrap/js/src/dom/selector-engine';
7
7
  const NAME = 'transfer';
8
8
  const DATA_KEY = 'bs.transfer';
9
9
  const EVENT_KEY = `.${DATA_KEY}`;
10
- //const DATA_API_KEY = '.data-api'
10
+ const DATA_API_KEY = '.data-api';
11
11
 
12
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
13
+ const EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`;
12
14
  //const EVENT_SCROLL = `scroll${EVENT_KEY}`
13
15
  const EVENT_CLICK = `click${EVENT_KEY}`;
14
16
 
@@ -250,8 +252,15 @@ class Transfer extends BaseComponent {
250
252
  * ------------------------------------------------------------------------
251
253
  */
252
254
 
253
- SelectorEngine.find(SELECTOR_BLOCK).forEach((block) => {
254
- Transfer.getOrCreateInstance(block);
255
+ /*SelectorEngine.find(SELECTOR_BLOCK).forEach((block) => {
256
+ Transfer.getOrCreateInstance(block)
257
+ })*/
258
+
259
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {
260
+ Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK));
261
+ });
262
+ EventHandler.on(document, EVENT_KEYUP_DATA_API, SELECTOR_BLOCK + ' .form-check label', function () {
263
+ Transfer.getOrCreateInstance(this.closest(SELECTOR_BLOCK));
255
264
  });
256
265
 
257
266
  export { Transfer as default };
@@ -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}`\n//const DATA_API_KEY = '.data-api'\n\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\nSelectorEngine.find(SELECTOR_BLOCK).forEach((block) => {\n Transfer.getOrCreateInstance(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 '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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"}
@@ -4,9 +4,11 @@ import SelectorEngine from 'bootstrap/js/src/dom/selector-engine';
4
4
  import ProgressDonut from './progress-donut.js';
5
5
 
6
6
  const NAME = 'upload';
7
- //const DATA_KEY = 'bs.upload'
8
- //const EVENT_KEY = `.${DATA_KEY}`
9
- //const DATA_API_KEY = '.data-api'
7
+ const DATA_KEY = 'bs.upload';
8
+ const EVENT_KEY = `.${DATA_KEY}`;
9
+ const DATA_API_KEY = '.data-api';
10
+
11
+ const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
10
12
 
11
13
  const EVENT_DRAG = `drag`;
12
14
  const EVENT_DRAG_START = `dragstart`;
@@ -118,8 +120,23 @@ class UploadDragDrop extends BaseComponent {
118
120
  * ------------------------------------------------------------------------
119
121
  */
120
122
 
121
- SelectorEngine.find(SELECTOR_FORM).forEach((form) => {
122
- UploadDragDrop.getOrCreateInstance(form);
123
+ /*SelectorEngine.find(SELECTOR_FORM).forEach((form) => {
124
+ UploadDragDrop.getOrCreateInstance(form)
125
+ })*/
126
+
127
+ const createInput = (element) => {
128
+ let found = element.matches && element.matches(SELECTOR_FORM) ? element : element.closest ? element.closest(SELECTOR_FORM) : null;
129
+ if (found) {
130
+ UploadDragDrop.getOrCreateInstance(found);
131
+ }
132
+ return null
133
+ };
134
+
135
+ document.addEventListener('dragenter', function (evt) {
136
+ createInput(evt.target);
137
+ });
138
+ EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM + ' label', function () {
139
+ createInput(this);
123
140
  });
124
141
 
125
142
  export { UploadDragDrop as default };
@@ -1 +1 @@
1
- {"version":3,"file":"upload-dragdrop.js","sources":["../../src/js/plugins/upload-dragdrop.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\n\nimport ProgressDonut from './progress-donut'\n\nconst NAME = 'upload'\n//const DATA_KEY = 'bs.upload'\n//const EVENT_KEY = `.${DATA_KEY}`\n//const DATA_API_KEY = '.data-api'\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\nSelectorEngine.find(SELECTOR_FORM).forEach((form) => {\n UploadDragDrop.getOrCreateInstance(form)\n})\n\nexport default UploadDragDrop\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upload-dragdrop.js","sources":["../../src/js/plugins/upload-dragdrop.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\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\ndocument.addEventListener('dragenter', function (evt) {\n createInput(evt.target)\n})\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_FORM + ' label', function () {\n createInput(this)\n})\n\nexport default UploadDragDrop\n"],"names":[],"mappings":"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"}
@@ -36,8 +36,10 @@ class CssClassObserver {
36
36
  if (this.ignoreToggle || this.lastClassState !== currentClassState) {
37
37
  this.lastClassState = currentClassState;
38
38
  if (currentClassState) {
39
- this.classAddedCallback();
40
- } else {
39
+ if (typeof this.classAddedCallback === 'function') {
40
+ this.classAddedCallback();
41
+ }
42
+ } else if (typeof this.classRemovedCallback === 'function') {
41
43
  this.classRemovedCallback();
42
44
  }
43
45
  }
@@ -61,13 +63,15 @@ class ContentObserver {
61
63
  this.init();
62
64
  }
63
65
 
66
+ //public
67
+
64
68
  init() {
65
69
  this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList));
66
70
  this.observe();
67
71
  }
68
72
 
69
73
  observe() {
70
- this.observer.observe(this.targetNode, { childList: true });
74
+ this.observer.observe(this.targetNode, { childList: true, subtree: true });
71
75
  }
72
76
 
73
77
  disconnect() {
@@ -78,18 +82,28 @@ class ContentObserver {
78
82
  for (let mutation of mutationsList) {
79
83
  if (mutation.type === 'childList') {
80
84
  mutation.addedNodes.forEach((node) => {
81
- if (node.matches(this.contentSelector)) {
82
- this.contentAddedCallback();
83
- }
85
+ this._callbackExec(node);
84
86
  });
85
87
  mutation.removedNodes.forEach((node) => {
86
- if (node.matches(this.contentSelector)) {
87
- this.contentRemovedCallback();
88
- }
88
+ this._callbackExec(node, true);
89
89
  });
90
90
  }
91
91
  }
92
92
  }
93
+
94
+ //private
95
+ _callbackExec(node, actionRemove) {
96
+ const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null;
97
+ const callback =
98
+ actionRemove && typeof this.contentRemovedCallback === 'function'
99
+ ? this.contentRemovedCallback
100
+ : typeof this.contentAddedCallback === 'function'
101
+ ? this.contentAddedCallback
102
+ : null;
103
+ if (foundNodes && callback) {
104
+ foundNodes.forEach((node) => callback(node));
105
+ }
106
+ }
93
107
  }
94
108
 
95
109
  export { ContentObserver, CssClassObserver };
@@ -1 +1 @@
1
- {"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.js"],"sourcesContent":["/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n this.classAddedCallback()\n } else {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n if (node.matches(this.contentSelector)) {\n this.contentAddedCallback()\n }\n })\n mutation.removedNodes.forEach((node) => {\n if (node.matches(this.contentSelector)) {\n this.contentRemovedCallback()\n }\n })\n }\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observer.js","sources":["../../../src/js/plugins/util/observer.js"],"sourcesContent":["/**\n * Mutation CSS Class Observer Object\n */\n//https://stackoverflow.com/a/53914092\n\nclass CssClassObserver {\n constructor(targetNode, classToWatch, classAddedCallback, classRemovedCallback, ignoreToggle) {\n this.targetNode = targetNode\n this.classToWatch = classToWatch\n this.classAddedCallback = classAddedCallback\n this.classRemovedCallback = classRemovedCallback\n this.observer = null\n this.lastClassState = targetNode.classList.contains(this.classToWatch)\n this.ignoreToggle = !!ignoreToggle\n\n this.init()\n }\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { attributes: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'attributes' && mutation.attributeName === 'class') {\n let currentClassState = mutation.target.classList.contains(this.classToWatch)\n if (this.ignoreToggle || this.lastClassState !== currentClassState) {\n this.lastClassState = currentClassState\n if (currentClassState) {\n if (typeof this.classAddedCallback === 'function') {\n this.classAddedCallback()\n }\n } else if (typeof this.classRemovedCallback === 'function') {\n this.classRemovedCallback()\n }\n }\n }\n }\n }\n}\n\n/**\n * Mutation Content Class Observer Object\n */\n\nclass ContentObserver {\n constructor(targetNode, contentSelector, contentAddedCallback, contentRemovedCallback) {\n this.targetNode = targetNode\n this.contentSelector = contentSelector\n this.contentAddedCallback = contentAddedCallback\n this.contentRemovedCallback = contentRemovedCallback\n this.observer = null\n\n this.init()\n }\n\n //public\n\n init() {\n this.observer = new MutationObserver((mutationsList) => this.mutationCallback(mutationsList))\n this.observe()\n }\n\n observe() {\n this.observer.observe(this.targetNode, { childList: true, subtree: true })\n }\n\n disconnect() {\n this.observer.disconnect()\n }\n\n mutationCallback(mutationsList) {\n for (let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n mutation.addedNodes.forEach((node) => {\n this._callbackExec(node)\n })\n mutation.removedNodes.forEach((node) => {\n this._callbackExec(node, true)\n })\n }\n }\n }\n\n //private\n _callbackExec(node, actionRemove) {\n const foundNodes = node.matches && node.matches(this.contentSelector) ? [node] : node.querySelectorAll ? node.querySelectorAll(this.contentSelector) : null\n const callback =\n actionRemove && typeof this.contentRemovedCallback === 'function'\n ? this.contentRemovedCallback\n : typeof this.contentAddedCallback === 'function'\n ? this.contentAddedCallback\n : null\n if (foundNodes && callback) {\n foundNodes.forEach((node) => callback(node))\n }\n }\n}\n\nexport { CssClassObserver, ContentObserver }\n"],"names":[],"mappings":"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"}
package/dist/version.js CHANGED
@@ -1,7 +1,7 @@
1
1
  // bootstrap italia version variable
2
2
  // useful to check for the current version
3
3
  // eslint-disable-next-line no-unused-vars
4
- const BOOTSTRAP_ITALIA_VERSION = '2.1.1';
4
+ const BOOTSTRAP_ITALIA_VERSION = '2.2.0';
5
5
 
6
6
  export { BOOTSTRAP_ITALIA_VERSION as default };
7
7
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/js/version.js"],"sourcesContent":["// bootstrap italia version variable\n// useful to check for the current version\n// eslint-disable-next-line no-unused-vars\nconst BOOTSTRAP_ITALIA_VERSION = '2.1.1'\nexport default BOOTSTRAP_ITALIA_VERSION\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACK,MAAC,wBAAwB,GAAG;;;;"}
1
+ {"version":3,"file":"version.js","sources":["../src/js/version.js"],"sourcesContent":["// bootstrap italia version variable\n// useful to check for the current version\n// eslint-disable-next-line no-unused-vars\nconst BOOTSTRAP_ITALIA_VERSION = '2.2.0'\nexport default BOOTSTRAP_ITALIA_VERSION\n"],"names":[],"mappings":"AAAA;AACA;AACA;AACK,MAAC,wBAAwB,GAAG;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bootstrap-italia",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "keywords": [
5
5
  "css",
6
6
  "sass",
@@ -16,7 +16,7 @@
16
16
  "*.css",
17
17
  "*.scss",
18
18
  "dist/bootstrap-italia.esm.js",
19
- "dist/plugins/fonts-loader.js"
19
+ "dist/plugins/init.js"
20
20
  ],
21
21
  "description": "Bootstrap Italia è un tema Bootstrap 5 per la creazione di applicazioni web nel pieno rispetto delle linee guida di design per i siti internet e i servizi digitali della PA",
22
22
  "homepage": "https://italia.github.io/bootstrap-italia/",
@@ -62,7 +62,7 @@
62
62
  "@rollup/plugin-legacy": "^2.2.0",
63
63
  "@rollup/plugin-node-resolve": "^13.1.3",
64
64
  "browser-sync": "^2.27.9",
65
- "browserslist-config-design-italia": "^1.0.0",
65
+ "browserslist-config-design-italia": "^1.1.0",
66
66
  "concurrently": "^7.0.0",
67
67
  "conventional-changelog": "^3.1.24",
68
68
  "conventional-changelog-cli": "^2.2.2",
@@ -2,15 +2,9 @@ import '../scss/bootstrap-italia.scss'
2
2
  import { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip } from 'bootstrap'
3
3
 
4
4
  import { loadPlugin } from './load-plugin'
5
- import * as fontsLoader from './plugins/fonts-loader'
5
+ import init from './plugins/init'
6
+ import loadFonts from './plugins/fonts-loader'
6
7
  import * as icons from './icons'
7
- import * as headerSticky from './plugins/header-sticky'
8
-
9
- import BOOTSTRAP_ITALIA_VERSION from './version'
10
-
11
- loadPlugin(icons)
12
- loadPlugin(fontsLoader)
13
- loadPlugin(headerSticky)
14
8
 
15
9
  import {
16
10
  Dimmer,
@@ -19,7 +13,6 @@ import {
19
13
  NavBarCollapsible,
20
14
  Accordion,
21
15
  NavScroll,
22
- TrackFocus,
23
16
  CarouselBI,
24
17
  FormValidate,
25
18
  ValidatorSelectAutocomplete,
@@ -32,6 +25,7 @@ import {
32
25
  UploadDragDrop,
33
26
  BackToTop,
34
27
  Sticky,
28
+ HeaderSticky,
35
29
  HistoryBack,
36
30
  Forward,
37
31
  Masonry,
@@ -39,9 +33,10 @@ import {
39
33
  Transfer,
40
34
  } from './bootstrap-italia.esm'
41
35
 
42
- window.BOOTSTRAP_ITALIA_VERSION = BOOTSTRAP_ITALIA_VERSION
36
+ loadPlugin(icons)
37
+ init()
43
38
 
44
- window.bootstrap = {
39
+ export default {
45
40
  Alert,
46
41
  Button,
47
42
  Carousel,
@@ -74,8 +69,9 @@ window.bootstrap = {
74
69
  ProgressDonut,
75
70
  SelectAutocomplete,
76
71
  Sticky,
77
- TrackFocus,
72
+ HeaderSticky,
78
73
  Transfer,
79
74
  UploadDragDrop,
80
75
  ValidatorSelectAutocomplete,
76
+ loadFonts,
81
77
  }
@@ -7,7 +7,7 @@ export { default as NavBarCollapsible } from './plugins/navbar-collapsible'
7
7
  export { default as Accordion } from './plugins/accordion'
8
8
  export { default as NavScroll } from './plugins/navscroll'
9
9
  export { default as Sticky } from './plugins/sticky'
10
- export { default as TrackFocus } from './plugins/track-focus'
10
+ export { default as HeaderSticky } from './plugins/header-sticky'
11
11
  export { FormValidate, ValidatorSelectAutocomplete } from './plugins/form-validate'
12
12
  export { default as Input } from './plugins/input'
13
13
  export { default as SelectAutocomplete } from './plugins/select-autocomplete'
@@ -35,10 +35,7 @@ export { default as ScrollSpy } from './plugins/scrollspy'
35
35
  export { default as Tab } from './plugins/tab'
36
36
  export { default as Toast } from './plugins/toast'
37
37
  export { default as Tooltip } from './plugins/tooltip'
38
+ export { default as loadFonts } from './plugins/fonts-loader'
38
39
 
39
40
  /* Side effects */
40
- import './plugins/fonts-loader.js'
41
- import './plugins/header-sticky'
42
- import BOOTSTRAP_ITALIA_VERSION from './version'
43
-
44
- window.BOOTSTRAP_ITALIA_VERSION = BOOTSTRAP_ITALIA_VERSION
41
+ export { default as init } from './plugins/init'
@@ -87,7 +87,7 @@ accordions.forEach((acc) => {
87
87
  Accordion.getOrCreateInstance(acc)
88
88
  })*/
89
89
 
90
- const accordionToggles = SelectorEngine.find(SELECTOR_HEADBTN)
90
+ /*const accordionToggles = SelectorEngine.find(SELECTOR_HEADBTN)
91
91
  accordionToggles.forEach((toggle) => {
92
92
  EventHandler.one(toggle, EVENT_KEYDOWN_DATA_API, (evt) => {
93
93
  const parent = toggle.closest(SELECTOR_HEADBTN_WRAPPER)
@@ -96,6 +96,14 @@ accordionToggles.forEach((toggle) => {
96
96
  accordion.handleKeyDown(evt.key, toggle, evt)
97
97
  }
98
98
  })
99
+ })*/
100
+
101
+ EventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_HEADBTN, function (evt) {
102
+ const parent = this.closest(SELECTOR_HEADBTN_WRAPPER)
103
+ if (parent) {
104
+ const accordion = Accordion.getOrCreateInstance(parent)
105
+ accordion.handleKeyDown(evt.key, this, evt)
106
+ }
99
107
  })
100
108
 
101
109
  export default Accordion
@@ -116,13 +116,11 @@ toggles.forEach((toggle) => {
116
116
  BackToTop.getOrCreateInstance(toggle)
117
117
  })*/
118
118
 
119
- const dataApiCb = onDocumentScroll(() => {
119
+ onDocumentScroll(() => {
120
120
  const toggles = SelectorEngine.find(SELECTOR_TOGGLE)
121
- toggles.forEach((toggle) => {
122
- const backToTop = BackToTop.getOrCreateInstance(toggle)
123
- backToTop.toggleShow()
121
+ toggles.map((toggle) => {
122
+ BackToTop.getOrCreateInstance(toggle)
124
123
  })
125
- dataApiCb.dispose()
126
124
  })
127
125
 
128
126
  export default BackToTop
@@ -1,5 +1,4 @@
1
1
  import Splide from '@splidejs/splide'
2
- import '@splidejs/splide/dist/css/splide-core.min.css'
3
2
 
4
3
  import BaseComponent from 'bootstrap/js/src/base-component.js'
5
4
  import SelectorEngine from 'bootstrap/js/src/dom/selector-engine'
@@ -278,17 +278,6 @@ EventHandler.on(window, EVENT_LOAD_DATA_API, function () {
278
278
  }
279
279
  })
280
280
 
281
- /*$(window).on(EVENT_LOAD_DATA_API, () => {
282
- const cookiebars = $.makeArray($(SELECTOR_COOKIE_BAR))
283
- var consent = Cookiebar._getCookieEU()
284
- if (!consent) {
285
- for (let i = cookiebars.length; i--;) {
286
- const $cookiebar = $(cookiebars[i])
287
- Cookiebar._jQueryInterface.call($cookiebar, 'show')
288
- }
289
- }
290
- })*/
291
-
292
281
  /**
293
282
  * ------------------------------------------------------------------------
294
283
  * jQuery