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.
- package/dist/bootstrap-italia.esm.js +3 -6
- package/dist/bootstrap-italia.esm.js.map +1 -1
- package/dist/css/bootstrap-italia-comuni.min.css +1 -1
- package/dist/css/bootstrap-italia.min.css +1 -1
- package/dist/css/bootstrap-italia.min.css.map +1 -1
- package/dist/js/bootstrap-italia.bundle.min.js +369 -67
- package/dist/plugins/accordion.js +13 -5
- package/dist/plugins/accordion.js.map +1 -1
- package/dist/plugins/backToTop.js +3 -5
- package/dist/plugins/backToTop.js.map +1 -1
- package/dist/plugins/carousel-bi.js +0 -1
- package/dist/plugins/carousel-bi.js.map +1 -1
- package/dist/plugins/cookiebar.js.map +1 -1
- package/dist/plugins/dimmer.js +22 -19
- package/dist/plugins/dimmer.js.map +1 -1
- package/dist/plugins/fonts-loader.js +253 -249
- package/dist/plugins/fonts-loader.js.map +1 -1
- package/dist/plugins/forward.js +11 -6
- package/dist/plugins/forward.js.map +1 -1
- package/dist/plugins/header-sticky.js +74 -31
- package/dist/plugins/header-sticky.js.map +1 -1
- package/dist/plugins/history-back.js +13 -6
- package/dist/plugins/history-back.js.map +1 -1
- package/dist/plugins/init.js +14 -0
- package/dist/plugins/init.js.map +1 -0
- package/dist/plugins/input-label.js +4 -0
- package/dist/plugins/input-label.js.map +1 -1
- package/dist/plugins/input-number.js +48 -23
- package/dist/plugins/input-number.js.map +1 -1
- package/dist/plugins/input-password.js +84 -33
- package/dist/plugins/input-password.js.map +1 -1
- package/dist/plugins/input-search-autocomplete.js +24 -5
- package/dist/plugins/input-search-autocomplete.js.map +1 -1
- package/dist/plugins/input.js +32 -9
- package/dist/plugins/input.js.map +1 -1
- package/dist/plugins/navscroll.js +2 -3
- package/dist/plugins/navscroll.js.map +1 -1
- package/dist/plugins/select-autocomplete.js +0 -1
- package/dist/plugins/select-autocomplete.js.map +1 -1
- package/dist/plugins/sticky.js +2 -3
- package/dist/plugins/sticky.js.map +1 -1
- package/dist/plugins/transfer.js +12 -3
- package/dist/plugins/transfer.js.map +1 -1
- package/dist/plugins/upload-dragdrop.js +22 -5
- package/dist/plugins/upload-dragdrop.js.map +1 -1
- package/dist/plugins/util/observer.js +23 -9
- package/dist/plugins/util/observer.js.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +3 -3
- package/src/js/bootstrap-italia.entry.js +8 -12
- package/src/js/bootstrap-italia.esm.js +3 -6
- package/src/js/plugins/accordion.js +9 -1
- package/src/js/plugins/backToTop.js +3 -5
- package/src/js/plugins/carousel-bi.js +0 -1
- package/src/js/plugins/cookiebar.js +0 -11
- package/src/js/plugins/dimmer.js +16 -14
- package/src/js/plugins/fonts-loader.js +250 -248
- package/src/js/plugins/forward.js +8 -2
- package/src/js/plugins/header-sticky.js +75 -30
- package/src/js/plugins/history-back.js +8 -2
- package/src/js/plugins/init.js +14 -0
- package/src/js/plugins/input-label.js +4 -0
- package/src/js/plugins/input-number.js +35 -10
- package/src/js/plugins/input-password.js +64 -13
- package/src/js/plugins/input-search-autocomplete.js +22 -2
- package/src/js/plugins/input.js +27 -4
- package/src/js/plugins/navscroll.js +2 -3
- package/src/js/plugins/select-autocomplete.js +0 -1
- package/src/js/plugins/sticky.js +2 -3
- package/src/js/plugins/transfer.js +11 -2
- package/src/js/plugins/upload-dragdrop.js +21 -4
- package/src/js/plugins/util/observer.js +23 -9
- package/src/js/version.js +1 -1
- package/src/scss/custom/_accessible-autocomplete.scss +4 -0
- package/src/scss/custom/_carousel.scss +4 -0
- package/src/scss/custom/_dimmer.scss +5 -1
- package/src/scss/custom/_form-password.scss +7 -0
- package/src/scss/custom/_version.scss +1 -1
package/dist/plugins/sticky.js
CHANGED
|
@@ -234,12 +234,11 @@ class Sticky extends BaseComponent {
|
|
|
234
234
|
* ------------------------------------------------------------------------
|
|
235
235
|
*/
|
|
236
236
|
|
|
237
|
-
|
|
237
|
+
onDocumentScroll(() => {
|
|
238
238
|
const stickies = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
|
|
239
|
-
stickies.
|
|
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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"}
|
package/dist/plugins/transfer.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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'\
|
|
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
|
-
|
|
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
|
-
|
|
82
|
-
this.contentAddedCallback();
|
|
83
|
-
}
|
|
85
|
+
this._callbackExec(node);
|
|
84
86
|
});
|
|
85
87
|
mutation.removedNodes.forEach((node) => {
|
|
86
|
-
|
|
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
|
|
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.
|
|
4
|
+
const BOOTSTRAP_ITALIA_VERSION = '2.2.0';
|
|
5
5
|
|
|
6
6
|
export { BOOTSTRAP_ITALIA_VERSION as default };
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -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
|
+
{"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.
|
|
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/
|
|
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.
|
|
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
|
|
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
|
-
|
|
36
|
+
loadPlugin(icons)
|
|
37
|
+
init()
|
|
43
38
|
|
|
44
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
119
|
+
onDocumentScroll(() => {
|
|
120
120
|
const toggles = SelectorEngine.find(SELECTOR_TOGGLE)
|
|
121
|
-
toggles.
|
|
122
|
-
|
|
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
|
|
@@ -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
|