bootstrap-italia 2.3.8 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bootstrap-italia.esm.js +2 -0
- 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 +198 -72
- package/dist/js/bootstrap-italia.min.js +54 -47
- package/dist/plugins/accept-overlay.js +118 -0
- package/dist/plugins/accept-overlay.js.map +1 -0
- package/dist/plugins/dimmer.js +0 -16
- package/dist/plugins/dimmer.js.map +1 -1
- package/dist/plugins/util/cookies.js +29 -0
- package/dist/plugins/util/cookies.js.map +1 -0
- package/dist/plugins/videoplayer.js +151 -0
- package/dist/plugins/videoplayer.js.map +1 -0
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +6 -5
- package/src/js/bootstrap-italia.entry.js +6 -0
- package/src/js/bootstrap-italia.esm.js +2 -0
- package/src/js/plugins/accept-overlay.js +118 -0
- package/src/js/plugins/dimmer.js +0 -15
- package/src/js/plugins/util/cookies.js +28 -0
- package/src/js/plugins/videoplayer.js +151 -0
- package/src/js/version.js +1 -1
- package/src/scss/bootstrap-italia.scss +2 -0
- package/src/scss/custom/_accept-overlay.scss +128 -0
- package/src/scss/custom/_accordion.scss +6 -0
- package/src/scss/custom/_alert.scss +1 -1
- package/src/scss/custom/_callout.scss +53 -10
- package/src/scss/custom/_version.scss +1 -1
- package/src/scss/custom/_videoplayer.scss +40 -0
- package/types/index.d.ts +2 -0
- package/types/plugins/fonts-loader.d.ts +5 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import BaseComponent from 'bootstrap/js/src/base-component.js';
|
|
2
|
+
import { reflow } from 'bootstrap/js/src/util';
|
|
3
|
+
import { cookies } from './util/cookies.js';
|
|
4
|
+
import SelectorEngine from 'bootstrap/js/src/dom/selector-engine';
|
|
5
|
+
|
|
6
|
+
const NAME = 'acceptoverlay';
|
|
7
|
+
|
|
8
|
+
const CLASS_NAME_FADE = 'fade';
|
|
9
|
+
const CLASS_NAME_SHOW = 'show';
|
|
10
|
+
|
|
11
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-accept-from]';
|
|
12
|
+
const SELECTOR_DATA_REMEMBER = '[data-bs-accept-remember]';
|
|
13
|
+
|
|
14
|
+
class AcceptOverlay extends BaseComponent {
|
|
15
|
+
constructor(element, config) {
|
|
16
|
+
const parentElement = element.closest('.acceptoverlay');
|
|
17
|
+
super(parentElement);
|
|
18
|
+
const remember = cookies.isChoiceRemembered(config.service);
|
|
19
|
+
this._isShown = true;
|
|
20
|
+
this._toggleElement = element;
|
|
21
|
+
if (remember) {
|
|
22
|
+
this.hide();
|
|
23
|
+
setTimeout(() => {
|
|
24
|
+
this._toggleElement.dispatchEvent(new Event('click'));
|
|
25
|
+
}, 100);
|
|
26
|
+
return
|
|
27
|
+
}
|
|
28
|
+
this._toggleElement.addEventListener('click', () => {
|
|
29
|
+
this.hide();
|
|
30
|
+
this._remember = this._toggleElement.parentElement.querySelector(SELECTOR_DATA_REMEMBER).checked;
|
|
31
|
+
cookies.rememberChoice(config.service, this._remember);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Getters
|
|
36
|
+
|
|
37
|
+
static get NAME() {
|
|
38
|
+
return NAME
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// Public
|
|
42
|
+
|
|
43
|
+
show() {
|
|
44
|
+
if (this._isShown || this._isTransitioning) {
|
|
45
|
+
return
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
this._isShown = true;
|
|
49
|
+
|
|
50
|
+
if (this._isAnimated()) {
|
|
51
|
+
this._isTransitioning = true;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this._showElement();
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
hide() {
|
|
58
|
+
if (!this._isShown || this._isTransitioning) {
|
|
59
|
+
return
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
this._isShown = false;
|
|
63
|
+
const isAnimated = this._isAnimated();
|
|
64
|
+
|
|
65
|
+
if (isAnimated) {
|
|
66
|
+
this._isTransitioning = true;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
this._element.classList.remove(CLASS_NAME_SHOW);
|
|
70
|
+
|
|
71
|
+
this._queueCallback(() => this._hideElement(), this._element, isAnimated);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//Private
|
|
75
|
+
|
|
76
|
+
_isAnimated() {
|
|
77
|
+
return this._element.classList.contains(CLASS_NAME_FADE)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
_showElement() {
|
|
81
|
+
const isAnimated = this._isAnimated();
|
|
82
|
+
|
|
83
|
+
this._element.removeAttribute('aria-hidden');
|
|
84
|
+
|
|
85
|
+
if (isAnimated) {
|
|
86
|
+
reflow(this._element);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
this._element.classList.add(CLASS_NAME_SHOW);
|
|
90
|
+
|
|
91
|
+
const transitionComplete = () => {
|
|
92
|
+
this._isTransitioning = false;
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
this._queueCallback(transitionComplete, this._element, isAnimated);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
_hideElement() {
|
|
99
|
+
this._element.setAttribute('aria-hidden', true);
|
|
100
|
+
this._isTransitioning = false;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* ------------------------------------------------------------------------
|
|
106
|
+
* Data Api implementation
|
|
107
|
+
* ------------------------------------------------------------------------
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
const acceptOverlays = SelectorEngine.find(SELECTOR_DATA_TOGGLE);
|
|
111
|
+
if (acceptOverlays.length > 0) {
|
|
112
|
+
acceptOverlays.forEach((element) => {
|
|
113
|
+
AcceptOverlay.getOrCreateInstance(element, { service: element.dataset.bsAcceptFrom });
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export { AcceptOverlay as default };
|
|
118
|
+
//# sourceMappingURL=accept-overlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accept-overlay.js","sources":["../../src/js/plugins/accept-overlay.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport { reflow } from 'bootstrap/js/src/util'\nimport { cookies } from './util/cookies'\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\n\nconst NAME = 'acceptoverlay'\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-accept-from]'\nconst SELECTOR_DATA_REMEMBER = '[data-bs-accept-remember]'\n\nclass AcceptOverlay extends BaseComponent {\n constructor(element, config) {\n const parentElement = element.closest('.acceptoverlay')\n super(parentElement)\n const remember = cookies.isChoiceRemembered(config.service)\n this._isShown = true\n this._toggleElement = element\n if (remember) {\n this.hide()\n setTimeout(() => {\n this._toggleElement.dispatchEvent(new Event('click'))\n }, 100)\n return\n }\n this._toggleElement.addEventListener('click', () => {\n this.hide()\n this._remember = this._toggleElement.parentElement.querySelector(SELECTOR_DATA_REMEMBER).checked\n cookies.rememberChoice(config.service, this._remember)\n })\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._showElement()\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideElement(), this._element, isAnimated)\n }\n\n //Private\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _showElement() {\n const isAnimated = this._isAnimated()\n\n this._element.removeAttribute('aria-hidden')\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n this._isTransitioning = false\n }\n\n this._queueCallback(transitionComplete, this._element, isAnimated)\n }\n\n _hideElement() {\n this._element.setAttribute('aria-hidden', true)\n this._isTransitioning = false\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst acceptOverlays = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\nif (acceptOverlays.length > 0) {\n acceptOverlays.forEach((element) => {\n AcceptOverlay.getOrCreateInstance(element, { service: element.dataset.bsAcceptFrom })\n })\n}\n\nexport default AcceptOverlay\n"],"names":[],"mappings":";;;;;AAMA,MAAM,IAAI,GAAG,gBAAe;AAC5B;AACA,MAAM,eAAe,GAAG,OAAM;AAC9B,MAAM,eAAe,GAAG,OAAM;AAC9B;AACA,MAAM,oBAAoB,GAAG,wBAAuB;AACpD,MAAM,sBAAsB,GAAG,4BAA2B;AAC1D;AACA,MAAM,aAAa,SAAS,aAAa,CAAC;AAC1C,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE;AAC/B,IAAI,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,gBAAgB,EAAC;AAC3D,IAAI,KAAK,CAAC,aAAa,EAAC;AACxB,IAAI,MAAM,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC,MAAM,CAAC,OAAO,EAAC;AAC/D,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAI;AACxB,IAAI,IAAI,CAAC,cAAc,GAAG,QAAO;AACjC,IAAI,IAAI,QAAQ,EAAE;AAClB,MAAM,IAAI,CAAC,IAAI,GAAE;AACjB,MAAM,UAAU,CAAC,MAAM;AACvB,QAAQ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAC;AAC7D,OAAO,EAAE,GAAG,EAAC;AACb,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM;AACxD,MAAM,IAAI,CAAC,IAAI,GAAE;AACjB,MAAM,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC,QAAO;AACtG,MAAM,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAC;AAC5D,KAAK,EAAC;AACN,GAAG;AACH;AACA;AACA;AACA,EAAE,WAAW,IAAI,GAAG;AACpB,IAAI,OAAO,IAAI;AACf,GAAG;AACH;AACA;AACA;AACA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChD,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAI;AACxB;AACA,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;AAC5B,MAAM,IAAI,CAAC,gBAAgB,GAAG,KAAI;AAClC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,YAAY,GAAE;AACvB,GAAG;AACH;AACA,EAAE,IAAI,GAAG;AACT,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjD,MAAM,MAAM;AACZ,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,GAAG,MAAK;AACzB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAE;AACzC;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,IAAI,CAAC,gBAAgB,GAAG,KAAI;AAClC,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,EAAC;AACnD;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAC;AAC7E,GAAG;AACH;AACA;AACA;AACA,EAAE,WAAW,GAAG;AAChB,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC;AAC5D,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,GAAE;AACzC;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAC;AAChD;AACA,IAAI,IAAI,UAAU,EAAE;AACpB,MAAM,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAC;AAC3B,KAAK;AACL;AACA,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,EAAC;AAChD;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM;AACrC,MAAM,IAAI,CAAC,gBAAgB,GAAG,MAAK;AACnC,MAAK;AACL;AACA,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAC;AACtE,GAAG;AACH;AACA,EAAE,YAAY,GAAG;AACjB,IAAI,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,EAAC;AACnD,IAAI,IAAI,CAAC,gBAAgB,GAAG,MAAK;AACjC,GAAG;AACH,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,cAAc,CAAC,IAAI,CAAC,oBAAoB,EAAC;AAChE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/B,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AACtC,IAAI,aAAa,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,EAAC;AACzF,GAAG,EAAC;AACJ;;;;"}
|
package/dist/plugins/dimmer.js
CHANGED
|
@@ -2,15 +2,12 @@ import BaseComponent from 'bootstrap/js/src/base-component.js';
|
|
|
2
2
|
import { getElementFromSelector, reflow } from 'bootstrap/js/src/util';
|
|
3
3
|
import EventHandler from 'bootstrap/js/src/dom/event-handler';
|
|
4
4
|
|
|
5
|
-
//import SelectorEngine from 'bootstrap/js/src/dom/selector-engine'
|
|
6
|
-
|
|
7
5
|
const NAME = 'dimmer';
|
|
8
6
|
const DATA_KEY = 'bs.dimmer';
|
|
9
7
|
const EVENT_KEY = `.${DATA_KEY}`;
|
|
10
8
|
const DATA_API_KEY = '.data-api';
|
|
11
9
|
|
|
12
10
|
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`;
|
|
13
|
-
//const EVENT_CLICK = `click${EVENT_KEY}`
|
|
14
11
|
|
|
15
12
|
const CLASS_NAME_FADE = 'fade';
|
|
16
13
|
const CLASS_NAME_SHOW = 'show';
|
|
@@ -107,19 +104,6 @@ class Dimmer extends BaseComponent {
|
|
|
107
104
|
* ------------------------------------------------------------------------
|
|
108
105
|
*/
|
|
109
106
|
|
|
110
|
-
/*SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((toggle) => {
|
|
111
|
-
const dimmerElement = getElementFromSelector(toggle)
|
|
112
|
-
const dimmer = Dimmer.getOrCreateInstance(dimmerElement)
|
|
113
|
-
|
|
114
|
-
EventHandler.on(toggle, EVENT_CLICK, () => {
|
|
115
|
-
toggle.checked ? dimmer.show() : dimmer.hide()
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
if (toggle.checked) {
|
|
119
|
-
dimmer.show()
|
|
120
|
-
}
|
|
121
|
-
})*/
|
|
122
|
-
|
|
123
107
|
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function () {
|
|
124
108
|
const dimmerElement = getElementFromSelector(this);
|
|
125
109
|
const dimmer = Dimmer.getOrCreateInstance(dimmerElement);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dimmer.js","sources":["../../src/js/plugins/dimmer.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport { reflow, getElementFromSelector } from 'bootstrap/js/src/util'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\n
|
|
1
|
+
{"version":3,"file":"dimmer.js","sources":["../../src/js/plugins/dimmer.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport { reflow, getElementFromSelector } from 'bootstrap/js/src/util'\nimport EventHandler from 'bootstrap/js/src/dom/event-handler'\n\nconst NAME = 'dimmer'\nconst DATA_KEY = 'bs.dimmer'\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 CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dimmer\"]'\nconst SELECTOR_DATA_ARIAHIDDEN = '[aria-hidden=true]'\n\nclass Dimmer extends BaseComponent {\n constructor(element) {\n super(element)\n\n this._isShown = !element.matches(SELECTOR_DATA_ARIAHIDDEN)\n this._isTransitioning = false\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Public\n\n show() {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = true\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n this._showElement()\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n this._queueCallback(() => this._hideElement(), this._element, isAnimated)\n }\n\n //Private\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _showElement() {\n const isAnimated = this._isAnimated()\n\n //this._element.style.display = 'flex'\n this._element.removeAttribute('aria-hidden')\n //this._element.setAttribute('aria-modal', true)\n //this._element.setAttribute('role', 'dialog')\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const transitionComplete = () => {\n this._isTransitioning = false\n }\n\n this._queueCallback(transitionComplete, this._element, isAnimated)\n }\n\n _hideElement() {\n //this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n //this._element.removeAttribute('aria-modal')\n //this._element.removeAttribute('role')\n this._isTransitioning = false\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function () {\n const dimmerElement = getElementFromSelector(this)\n const dimmer = Dimmer.getOrCreateInstance(dimmerElement)\n\n this.checked ? dimmer.show() : dimmer.hide()\n})\n\nexport default Dimmer\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
const preferencesMap = { ck3: {} };
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
Possible choices:
|
|
5
|
+
false => Accept once
|
|
6
|
+
true => Accept always
|
|
7
|
+
*/
|
|
8
|
+
const rememberChoice = (service, remember) => {
|
|
9
|
+
preferencesMap.ck3[service] = remember;
|
|
10
|
+
localStorage.setItem('bs-ck3', JSON.stringify(preferencesMap.ck3));
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
const isChoiceRemembered = (service) => {
|
|
14
|
+
preferencesMap.ck3 = JSON.parse(localStorage.getItem('bs-ck3') || '{}');
|
|
15
|
+
return preferencesMap.ck3[service] || false
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const clearAllRememberedChoices = () => {
|
|
19
|
+
localStorage.removeItem('bs-ck3');
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const cookies = {
|
|
23
|
+
rememberChoice,
|
|
24
|
+
isChoiceRemembered,
|
|
25
|
+
clearAllRememberedChoices,
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { cookies };
|
|
29
|
+
//# sourceMappingURL=cookies.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cookies.js","sources":["../../../src/js/plugins/util/cookies.js"],"sourcesContent":["const preferencesMap = { ck3: {} }\n\n/*\n Possible choices:\n false => Accept once\n true => Accept always\n*/\nconst rememberChoice = (service, remember) => {\n preferencesMap.ck3[service] = remember\n localStorage.setItem('bs-ck3', JSON.stringify(preferencesMap.ck3))\n}\n\nconst isChoiceRemembered = (service) => {\n preferencesMap.ck3 = JSON.parse(localStorage.getItem('bs-ck3') || '{}')\n return preferencesMap.ck3[service] || false\n}\n\nconst clearAllRememberedChoices = () => {\n localStorage.removeItem('bs-ck3')\n}\n\nconst cookies = {\n rememberChoice,\n isChoiceRemembered,\n clearAllRememberedChoices,\n}\n\nexport { cookies }\n"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,EAAE,GAAG,EAAE,EAAE,GAAE;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,QAAQ,KAAK;AAC9C,EAAE,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,SAAQ;AACxC,EAAE,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAC;AACpE,EAAC;AACD;AACA,MAAM,kBAAkB,GAAG,CAAC,OAAO,KAAK;AACxC,EAAE,cAAc,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAC;AACzE,EAAE,OAAO,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK;AAC7C,EAAC;AACD;AACA,MAAM,yBAAyB,GAAG,MAAM;AACxC,EAAE,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAC;AACnC,EAAC;AACD;AACK,MAAC,OAAO,GAAG;AAChB,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,yBAAyB;AAC3B;;;;"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import BaseComponent from 'bootstrap/js/src/base-component.js';
|
|
2
|
+
import SelectorEngine from 'bootstrap/js/src/dom/selector-engine';
|
|
3
|
+
import Manipulator from 'bootstrap/js/src/dom/manipulator';
|
|
4
|
+
import videojs from 'video.js';
|
|
5
|
+
|
|
6
|
+
const NAME = 'videoplayer';
|
|
7
|
+
|
|
8
|
+
const SELECTOR_TOGGLE = '[data-bs-video]';
|
|
9
|
+
|
|
10
|
+
const itLang = {
|
|
11
|
+
'Audio Player': 'Lettore audio',
|
|
12
|
+
'Video Player': 'Lettore video',
|
|
13
|
+
Play: 'Play',
|
|
14
|
+
Pause: 'Pausa',
|
|
15
|
+
Replay: 'Replay',
|
|
16
|
+
'Current Time': 'Orario attuale',
|
|
17
|
+
Duration: 'Durata',
|
|
18
|
+
'Remaining Time': 'Tempo rimanente',
|
|
19
|
+
'Stream Type': 'Tipo del Streaming',
|
|
20
|
+
LIVE: 'LIVE',
|
|
21
|
+
Loaded: 'Caricato',
|
|
22
|
+
Progress: 'Stato',
|
|
23
|
+
'Progress Bar': 'Barra di avanzamento',
|
|
24
|
+
'progress bar timing: currentTime={1} duration={2}': '{1} di {2}',
|
|
25
|
+
Fullscreen: 'Schermo intero',
|
|
26
|
+
'Exit Fullscreen': 'Chiudi Schermo intero',
|
|
27
|
+
Mute: 'Muto',
|
|
28
|
+
Unmute: 'Audio',
|
|
29
|
+
'Playback Rate': 'Tasso di riproduzione',
|
|
30
|
+
Subtitles: 'Sottotitoli',
|
|
31
|
+
'subtitles off': 'Senza sottotitoli',
|
|
32
|
+
Captions: 'Sottotitoli non udenti',
|
|
33
|
+
'captions off': 'Senza sottotitoli non udenti',
|
|
34
|
+
Chapters: 'Capitolo',
|
|
35
|
+
Descriptions: 'Descrizioni',
|
|
36
|
+
'descriptions off': 'Descrizioni disattivate',
|
|
37
|
+
'Audio Track': 'Traccia audio',
|
|
38
|
+
'Volume Level': 'Livello del volume',
|
|
39
|
+
'You aborted the media playback': 'La riproduzione del filmato è stata interrotta.',
|
|
40
|
+
'A network error caused the media download to fail part-way.': 'Il download del filmato è stato interrotto a causa di un problema rete.',
|
|
41
|
+
'The media could not be loaded, either because the server or network failed or because the format is not supported.':
|
|
42
|
+
'Il filmato non può essere caricato a causa di un errore nel server o nella rete o perché il formato non viene supportato.',
|
|
43
|
+
'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.':
|
|
44
|
+
'La riproduzione del filmato è stata interrotta a causa di un file danneggiato o per l’utilizzo di impostazioni non supportate dal browser.',
|
|
45
|
+
'No compatible source was found for this media.': 'Non ci sono fonti compatibili per questo filmato.',
|
|
46
|
+
'The media is encrypted and we do not have the keys to decrypt it.': 'Il contenuto multimediale è criptato e non disponiamo delle chiavi per decifrarlo.',
|
|
47
|
+
'Play Video': 'Riprduci il video',
|
|
48
|
+
Close: 'Chiudi',
|
|
49
|
+
'Close Modal Dialog': 'Chiudi la finestra di dialogo',
|
|
50
|
+
'Modal Window': 'Finestra di dialogo',
|
|
51
|
+
'This is a modal window': 'Questa è una finestra di dialogo',
|
|
52
|
+
'This modal can be closed by pressing the Escape key or activating the close button.':
|
|
53
|
+
'Questa finestra di dialogo può essere chiusa premendo sul tasto Esc o attivando il pulsante di chiusura.',
|
|
54
|
+
', opens captions settings dialog': ', aprire i parametri della trascrizione dei sottotitoli',
|
|
55
|
+
', opens subtitles settings dialog': ', aprire i parametri dei sottotitoli',
|
|
56
|
+
', opens descriptions settings dialog': ', aprire i parametri delle descrizioni',
|
|
57
|
+
', selected': ', selezionato',
|
|
58
|
+
'captions settings': 'Parametri della trascrizione dei sottotitoli',
|
|
59
|
+
'subtitles settings': 'Parametri dei sottotitoli',
|
|
60
|
+
'descriptions settings': 'Parametri delle descrizioni',
|
|
61
|
+
Text: 'Testo',
|
|
62
|
+
White: 'Bianco',
|
|
63
|
+
Black: 'Nero',
|
|
64
|
+
Red: 'Rosso',
|
|
65
|
+
Green: 'Verde',
|
|
66
|
+
Blue: 'Blu',
|
|
67
|
+
Yellow: 'Giallo',
|
|
68
|
+
Magenta: 'Magenta',
|
|
69
|
+
Cyan: 'Ciano',
|
|
70
|
+
Background: 'Sfondo',
|
|
71
|
+
Window: 'Finestra',
|
|
72
|
+
Transparent: 'Trasparente',
|
|
73
|
+
'Semi-Transparent': 'Semi-Trasparente',
|
|
74
|
+
Opaque: 'Opaco',
|
|
75
|
+
'Font Size': 'Dimensione dei caratteri',
|
|
76
|
+
'Text Edge Style': 'Stile dei bordi del testo',
|
|
77
|
+
None: 'Nessuno',
|
|
78
|
+
Uniform: 'Uniforme',
|
|
79
|
+
Dropshadow: 'Ombreggiatura',
|
|
80
|
+
'Font Family': 'Famiglia di caratteri',
|
|
81
|
+
'Proportional Sans-Serif': 'Carattere a spaziatura variabile senza grazie (Proportional Sans-Serif)',
|
|
82
|
+
'Monospace Sans-Serif': 'Carattere a spaziatura fissa senza grazie (Monospace Sans-Serif)',
|
|
83
|
+
'Proportional Serif': 'Carattere a spaziatura variabile con grazie (Proportional Serif)',
|
|
84
|
+
'Monospace Serif': 'Carattere a spaziatura fissa con grazie (Monospace Serif)',
|
|
85
|
+
'Small Caps': 'Maiuscoletto',
|
|
86
|
+
Reset: 'Reinizializza',
|
|
87
|
+
'restore all settings to the default values': 'Ripristina i valori predefiniti per tutti i parametri',
|
|
88
|
+
Done: 'Operazione completata',
|
|
89
|
+
'Caption Settings Dialog': 'Finestra di dialogo dei parametri della trascrizione dei sottotitoli',
|
|
90
|
+
'Beginning of dialog window. Escape will cancel and close the window.':
|
|
91
|
+
'Inizio della finestra di dialogo. Il tasto Esc annullerà l’operazione e chiuderà la finestra.',
|
|
92
|
+
'End of dialog window.': 'Fine della finestra di dialogo.',
|
|
93
|
+
'{1} is loading.': '{1} in fase di caricamento.',
|
|
94
|
+
'Exit Picture-in-Picture': 'Esci dalla modalità Picture-in-Picture',
|
|
95
|
+
'Picture-in-Picture': 'Picture-in-Picture',
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
const DEFAULT_CONFIG = { languages: { it: itLang }, language: 'it' };
|
|
99
|
+
|
|
100
|
+
const Default = {};
|
|
101
|
+
|
|
102
|
+
window.videojs = videojs;
|
|
103
|
+
|
|
104
|
+
class VideoPlayer extends BaseComponent {
|
|
105
|
+
constructor(element, config) {
|
|
106
|
+
super(element);
|
|
107
|
+
element.classList.add('video-js', 'vjs-theme-bootstrap-italia', 'vjs-fluid', 'vjs-big-play-centered');
|
|
108
|
+
this._config = this._getConfig(config);
|
|
109
|
+
|
|
110
|
+
this.player = videojs(element, DEFAULT_CONFIG);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
// Public
|
|
114
|
+
|
|
115
|
+
setYouTubeVideo(url) {
|
|
116
|
+
this.player.tech('youtube');
|
|
117
|
+
this.player.src({ type: 'video/youtube', src: url });
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Getters
|
|
121
|
+
|
|
122
|
+
static get NAME() {
|
|
123
|
+
return NAME
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// Private
|
|
127
|
+
_getConfig(config) {
|
|
128
|
+
config = {
|
|
129
|
+
...Default,
|
|
130
|
+
...Manipulator.getDataAttributes(this._element),
|
|
131
|
+
...(typeof config === 'object' ? config : {}),
|
|
132
|
+
};
|
|
133
|
+
return config
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* ------------------------------------------------------------------------
|
|
139
|
+
* Data Api implementation
|
|
140
|
+
* ------------------------------------------------------------------------
|
|
141
|
+
*/
|
|
142
|
+
|
|
143
|
+
const players = SelectorEngine.find(SELECTOR_TOGGLE);
|
|
144
|
+
if (players.length > 0) {
|
|
145
|
+
players.forEach((player) => {
|
|
146
|
+
VideoPlayer.getOrCreateInstance(player);
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export { VideoPlayer as default };
|
|
151
|
+
//# sourceMappingURL=videoplayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoplayer.js","sources":["../../src/js/plugins/videoplayer.js"],"sourcesContent":["import BaseComponent from 'bootstrap/js/src/base-component.js'\n\nimport SelectorEngine from 'bootstrap/js/src/dom/selector-engine'\nimport Manipulator from 'bootstrap/js/src/dom/manipulator'\nimport videojs from 'video.js'\n\nconst NAME = 'videoplayer'\n\nconst SELECTOR_TOGGLE = '[data-bs-video]'\n\nconst itLang = {\n 'Audio Player': 'Lettore audio',\n 'Video Player': 'Lettore video',\n Play: 'Play',\n Pause: 'Pausa',\n Replay: 'Replay',\n 'Current Time': 'Orario attuale',\n Duration: 'Durata',\n 'Remaining Time': 'Tempo rimanente',\n 'Stream Type': 'Tipo del Streaming',\n LIVE: 'LIVE',\n Loaded: 'Caricato',\n Progress: 'Stato',\n 'Progress Bar': 'Barra di avanzamento',\n 'progress bar timing: currentTime={1} duration={2}': '{1} di {2}',\n Fullscreen: 'Schermo intero',\n 'Exit Fullscreen': 'Chiudi Schermo intero',\n Mute: 'Muto',\n Unmute: 'Audio',\n 'Playback Rate': 'Tasso di riproduzione',\n Subtitles: 'Sottotitoli',\n 'subtitles off': 'Senza sottotitoli',\n Captions: 'Sottotitoli non udenti',\n 'captions off': 'Senza sottotitoli non udenti',\n Chapters: 'Capitolo',\n Descriptions: 'Descrizioni',\n 'descriptions off': 'Descrizioni disattivate',\n 'Audio Track': 'Traccia audio',\n 'Volume Level': 'Livello del volume',\n 'You aborted the media playback': 'La riproduzione del filmato è stata interrotta.',\n 'A network error caused the media download to fail part-way.': 'Il download del filmato è stato interrotto a causa di un problema rete.',\n 'The media could not be loaded, either because the server or network failed or because the format is not supported.':\n 'Il filmato non può essere caricato a causa di un errore nel server o nella rete o perché il formato non viene supportato.',\n 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.':\n 'La riproduzione del filmato è stata interrotta a causa di un file danneggiato o per l’utilizzo di impostazioni non supportate dal browser.',\n 'No compatible source was found for this media.': 'Non ci sono fonti compatibili per questo filmato.',\n 'The media is encrypted and we do not have the keys to decrypt it.': 'Il contenuto multimediale è criptato e non disponiamo delle chiavi per decifrarlo.',\n 'Play Video': 'Riprduci il video',\n Close: 'Chiudi',\n 'Close Modal Dialog': 'Chiudi la finestra di dialogo',\n 'Modal Window': 'Finestra di dialogo',\n 'This is a modal window': 'Questa è una finestra di dialogo',\n 'This modal can be closed by pressing the Escape key or activating the close button.':\n 'Questa finestra di dialogo può essere chiusa premendo sul tasto Esc o attivando il pulsante di chiusura.',\n ', opens captions settings dialog': ', aprire i parametri della trascrizione dei sottotitoli',\n ', opens subtitles settings dialog': ', aprire i parametri dei sottotitoli',\n ', opens descriptions settings dialog': ', aprire i parametri delle descrizioni',\n ', selected': ', selezionato',\n 'captions settings': 'Parametri della trascrizione dei sottotitoli',\n 'subtitles settings': 'Parametri dei sottotitoli',\n 'descriptions settings': 'Parametri delle descrizioni',\n Text: 'Testo',\n White: 'Bianco',\n Black: 'Nero',\n Red: 'Rosso',\n Green: 'Verde',\n Blue: 'Blu',\n Yellow: 'Giallo',\n Magenta: 'Magenta',\n Cyan: 'Ciano',\n Background: 'Sfondo',\n Window: 'Finestra',\n Transparent: 'Trasparente',\n 'Semi-Transparent': 'Semi-Trasparente',\n Opaque: 'Opaco',\n 'Font Size': 'Dimensione dei caratteri',\n 'Text Edge Style': 'Stile dei bordi del testo',\n None: 'Nessuno',\n Uniform: 'Uniforme',\n Dropshadow: 'Ombreggiatura',\n 'Font Family': 'Famiglia di caratteri',\n 'Proportional Sans-Serif': 'Carattere a spaziatura variabile senza grazie (Proportional Sans-Serif)',\n 'Monospace Sans-Serif': 'Carattere a spaziatura fissa senza grazie (Monospace Sans-Serif)',\n 'Proportional Serif': 'Carattere a spaziatura variabile con grazie (Proportional Serif)',\n 'Monospace Serif': 'Carattere a spaziatura fissa con grazie (Monospace Serif)',\n 'Small Caps': 'Maiuscoletto',\n Reset: 'Reinizializza',\n 'restore all settings to the default values': 'Ripristina i valori predefiniti per tutti i parametri',\n Done: 'Operazione completata',\n 'Caption Settings Dialog': 'Finestra di dialogo dei parametri della trascrizione dei sottotitoli',\n 'Beginning of dialog window. Escape will cancel and close the window.':\n 'Inizio della finestra di dialogo. Il tasto Esc annullerà l’operazione e chiuderà la finestra.',\n 'End of dialog window.': 'Fine della finestra di dialogo.',\n '{1} is loading.': '{1} in fase di caricamento.',\n 'Exit Picture-in-Picture': 'Esci dalla modalità Picture-in-Picture',\n 'Picture-in-Picture': 'Picture-in-Picture',\n}\n\nconst DEFAULT_CONFIG = { languages: { it: itLang }, language: 'it' }\n\nconst Default = {}\n\nwindow.videojs = videojs\n\nclass VideoPlayer extends BaseComponent {\n constructor(element, config) {\n super(element)\n element.classList.add('video-js', 'vjs-theme-bootstrap-italia', 'vjs-fluid', 'vjs-big-play-centered')\n this._config = this._getConfig(config)\n\n this.player = videojs(element, DEFAULT_CONFIG)\n }\n\n // Public\n\n setYouTubeVideo(url) {\n this.player.tech('youtube')\n this.player.src({ type: 'video/youtube', src: url })\n }\n\n // Getters\n\n static get NAME() {\n return NAME\n }\n\n // Private\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {}),\n }\n return config\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nconst players = SelectorEngine.find(SELECTOR_TOGGLE)\nif (players.length > 0) {\n players.forEach((player) => {\n VideoPlayer.getOrCreateInstance(player)\n })\n}\n\nexport default VideoPlayer\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.4.1';
|
|
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.4.1'\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.4.1",
|
|
4
4
|
"keywords": [
|
|
5
5
|
"css",
|
|
6
6
|
"sass",
|
|
@@ -83,10 +83,10 @@
|
|
|
83
83
|
"rollup-plugin-scss": "^3.0.0",
|
|
84
84
|
"rollup-plugin-svg-sprite-deterministic": "^2.0.0",
|
|
85
85
|
"sass": "^1.32.6",
|
|
86
|
-
"stylelint": "^
|
|
86
|
+
"stylelint": "^15.6.0",
|
|
87
87
|
"stylelint-config-prettier": "^9.0.3",
|
|
88
|
-
"stylelint-config-recommended-scss": "^
|
|
89
|
-
"stylelint-config-standard": "^
|
|
88
|
+
"stylelint-config-recommended-scss": "^11.0.0",
|
|
89
|
+
"stylelint-config-standard": "^33.0.0",
|
|
90
90
|
"stylelint-prettier": "^2.0.0",
|
|
91
91
|
"stylelint-scss": "^4.1.0",
|
|
92
92
|
"terser": "^5.14.2"
|
|
@@ -101,6 +101,7 @@
|
|
|
101
101
|
"just-validate": "^3.5.1",
|
|
102
102
|
"masonry-layout": "^4.2.2",
|
|
103
103
|
"progressbar.js": "^1.1.0",
|
|
104
|
-
"uuid": "^8.3.2"
|
|
104
|
+
"uuid": "^8.3.2",
|
|
105
|
+
"video.js": "^8.0.4"
|
|
105
106
|
}
|
|
106
107
|
}
|
|
@@ -3,6 +3,7 @@ import '../scss/bootstrap-italia.scss'
|
|
|
3
3
|
import { loadPlugin } from './load-plugin'
|
|
4
4
|
import init from './plugins/init'
|
|
5
5
|
import loadFonts from './plugins/fonts-loader'
|
|
6
|
+
import { cookies } from './plugins/util/cookies'
|
|
6
7
|
import * as icons from './icons'
|
|
7
8
|
|
|
8
9
|
import {
|
|
@@ -37,6 +38,7 @@ import {
|
|
|
37
38
|
ProgressDonut,
|
|
38
39
|
UploadDragDrop,
|
|
39
40
|
BackToTop,
|
|
41
|
+
AcceptOverlay,
|
|
40
42
|
Sticky,
|
|
41
43
|
HeaderSticky,
|
|
42
44
|
HistoryBack,
|
|
@@ -44,6 +46,7 @@ import {
|
|
|
44
46
|
Masonry,
|
|
45
47
|
List,
|
|
46
48
|
Transfer,
|
|
49
|
+
VideoPlayer,
|
|
47
50
|
} from './bootstrap-italia.esm'
|
|
48
51
|
|
|
49
52
|
loadPlugin(icons)
|
|
@@ -62,6 +65,8 @@ export default {
|
|
|
62
65
|
Tab,
|
|
63
66
|
Toast,
|
|
64
67
|
Tooltip,
|
|
68
|
+
VideoPlayer,
|
|
69
|
+
AcceptOverlay,
|
|
65
70
|
Accordion,
|
|
66
71
|
BackToTop,
|
|
67
72
|
CarouselBI,
|
|
@@ -87,4 +92,5 @@ export default {
|
|
|
87
92
|
UploadDragDrop,
|
|
88
93
|
ValidatorSelectAutocomplete,
|
|
89
94
|
loadFonts,
|
|
95
|
+
cookies,
|
|
90
96
|
}
|
|
@@ -35,6 +35,8 @@ 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 VideoPlayer } from './plugins/videoplayer'
|
|
39
|
+
export { default as AcceptOverlay } from './plugins/accept-overlay'
|
|
38
40
|
export { default as loadFonts } from './plugins/fonts-loader'
|
|
39
41
|
|
|
40
42
|
/* Side effects */
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import BaseComponent from 'bootstrap/js/src/base-component.js'
|
|
2
|
+
|
|
3
|
+
import { reflow } from 'bootstrap/js/src/util'
|
|
4
|
+
import { cookies } from './util/cookies'
|
|
5
|
+
import SelectorEngine from 'bootstrap/js/src/dom/selector-engine'
|
|
6
|
+
|
|
7
|
+
const NAME = 'acceptoverlay'
|
|
8
|
+
|
|
9
|
+
const CLASS_NAME_FADE = 'fade'
|
|
10
|
+
const CLASS_NAME_SHOW = 'show'
|
|
11
|
+
|
|
12
|
+
const SELECTOR_DATA_TOGGLE = '[data-bs-accept-from]'
|
|
13
|
+
const SELECTOR_DATA_REMEMBER = '[data-bs-accept-remember]'
|
|
14
|
+
|
|
15
|
+
class AcceptOverlay extends BaseComponent {
|
|
16
|
+
constructor(element, config) {
|
|
17
|
+
const parentElement = element.closest('.acceptoverlay')
|
|
18
|
+
super(parentElement)
|
|
19
|
+
const remember = cookies.isChoiceRemembered(config.service)
|
|
20
|
+
this._isShown = true
|
|
21
|
+
this._toggleElement = element
|
|
22
|
+
if (remember) {
|
|
23
|
+
this.hide()
|
|
24
|
+
setTimeout(() => {
|
|
25
|
+
this._toggleElement.dispatchEvent(new Event('click'))
|
|
26
|
+
}, 100)
|
|
27
|
+
return
|
|
28
|
+
}
|
|
29
|
+
this._toggleElement.addEventListener('click', () => {
|
|
30
|
+
this.hide()
|
|
31
|
+
this._remember = this._toggleElement.parentElement.querySelector(SELECTOR_DATA_REMEMBER).checked
|
|
32
|
+
cookies.rememberChoice(config.service, this._remember)
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// Getters
|
|
37
|
+
|
|
38
|
+
static get NAME() {
|
|
39
|
+
return NAME
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Public
|
|
43
|
+
|
|
44
|
+
show() {
|
|
45
|
+
if (this._isShown || this._isTransitioning) {
|
|
46
|
+
return
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
this._isShown = true
|
|
50
|
+
|
|
51
|
+
if (this._isAnimated()) {
|
|
52
|
+
this._isTransitioning = true
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
this._showElement()
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
hide() {
|
|
59
|
+
if (!this._isShown || this._isTransitioning) {
|
|
60
|
+
return
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
this._isShown = false
|
|
64
|
+
const isAnimated = this._isAnimated()
|
|
65
|
+
|
|
66
|
+
if (isAnimated) {
|
|
67
|
+
this._isTransitioning = true
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
this._element.classList.remove(CLASS_NAME_SHOW)
|
|
71
|
+
|
|
72
|
+
this._queueCallback(() => this._hideElement(), this._element, isAnimated)
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//Private
|
|
76
|
+
|
|
77
|
+
_isAnimated() {
|
|
78
|
+
return this._element.classList.contains(CLASS_NAME_FADE)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
_showElement() {
|
|
82
|
+
const isAnimated = this._isAnimated()
|
|
83
|
+
|
|
84
|
+
this._element.removeAttribute('aria-hidden')
|
|
85
|
+
|
|
86
|
+
if (isAnimated) {
|
|
87
|
+
reflow(this._element)
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
this._element.classList.add(CLASS_NAME_SHOW)
|
|
91
|
+
|
|
92
|
+
const transitionComplete = () => {
|
|
93
|
+
this._isTransitioning = false
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
this._queueCallback(transitionComplete, this._element, isAnimated)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
_hideElement() {
|
|
100
|
+
this._element.setAttribute('aria-hidden', true)
|
|
101
|
+
this._isTransitioning = false
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* ------------------------------------------------------------------------
|
|
107
|
+
* Data Api implementation
|
|
108
|
+
* ------------------------------------------------------------------------
|
|
109
|
+
*/
|
|
110
|
+
|
|
111
|
+
const acceptOverlays = SelectorEngine.find(SELECTOR_DATA_TOGGLE)
|
|
112
|
+
if (acceptOverlays.length > 0) {
|
|
113
|
+
acceptOverlays.forEach((element) => {
|
|
114
|
+
AcceptOverlay.getOrCreateInstance(element, { service: element.dataset.bsAcceptFrom })
|
|
115
|
+
})
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export default AcceptOverlay
|
package/src/js/plugins/dimmer.js
CHANGED
|
@@ -2,7 +2,6 @@ import BaseComponent from 'bootstrap/js/src/base-component.js'
|
|
|
2
2
|
|
|
3
3
|
import { reflow, getElementFromSelector } from 'bootstrap/js/src/util'
|
|
4
4
|
import EventHandler from 'bootstrap/js/src/dom/event-handler'
|
|
5
|
-
//import SelectorEngine from 'bootstrap/js/src/dom/selector-engine'
|
|
6
5
|
|
|
7
6
|
const NAME = 'dimmer'
|
|
8
7
|
const DATA_KEY = 'bs.dimmer'
|
|
@@ -10,7 +9,6 @@ const EVENT_KEY = `.${DATA_KEY}`
|
|
|
10
9
|
const DATA_API_KEY = '.data-api'
|
|
11
10
|
|
|
12
11
|
const EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`
|
|
13
|
-
//const EVENT_CLICK = `click${EVENT_KEY}`
|
|
14
12
|
|
|
15
13
|
const CLASS_NAME_FADE = 'fade'
|
|
16
14
|
const CLASS_NAME_SHOW = 'show'
|
|
@@ -107,19 +105,6 @@ class Dimmer extends BaseComponent {
|
|
|
107
105
|
* ------------------------------------------------------------------------
|
|
108
106
|
*/
|
|
109
107
|
|
|
110
|
-
/*SelectorEngine.find(SELECTOR_DATA_TOGGLE).forEach((toggle) => {
|
|
111
|
-
const dimmerElement = getElementFromSelector(toggle)
|
|
112
|
-
const dimmer = Dimmer.getOrCreateInstance(dimmerElement)
|
|
113
|
-
|
|
114
|
-
EventHandler.on(toggle, EVENT_CLICK, () => {
|
|
115
|
-
toggle.checked ? dimmer.show() : dimmer.hide()
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
if (toggle.checked) {
|
|
119
|
-
dimmer.show()
|
|
120
|
-
}
|
|
121
|
-
})*/
|
|
122
|
-
|
|
123
108
|
EventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function () {
|
|
124
109
|
const dimmerElement = getElementFromSelector(this)
|
|
125
110
|
const dimmer = Dimmer.getOrCreateInstance(dimmerElement)
|