UNPKG

2.16 kBJavaScriptView Raw
1import { window } from './facade/browser';
2export var BsVerions;
3(function (BsVerions) {
4 BsVerions["isBs3"] = "bs3";
5 BsVerions["isBs4"] = "bs4";
6 BsVerions["isBs5"] = "bs5";
7})(BsVerions || (BsVerions = {}));
8let guessedVersion;
9function _guessBsVersion() {
10 if (typeof window.document === 'undefined') {
11 return 'bs4';
12 }
13 const spanEl = window.document.createElement('span');
14 spanEl.innerText = 'testing bs version';
15 spanEl.classList.add('d-none');
16 spanEl.classList.add('visually-hidden');
17 window.document.head.appendChild(spanEl);
18 const rect = spanEl.getBoundingClientRect();
19 const overflowStyle = window.getComputedStyle(spanEl).overflow;
20 window.document.head.removeChild(spanEl);
21 if (!rect || (rect && rect.top !== 0)) {
22 return 'bs3';
23 }
24 if (overflowStyle && overflowStyle === 'hidden') {
25 return 'bs5';
26 }
27 return 'bs4';
28}
29export function setTheme(theme) {
30 guessedVersion = theme;
31}
32// todo: in ngx-bootstrap, bs4 will became a default one
33export function isBs3() {
34 if (typeof window === 'undefined') {
35 return true;
36 }
37 if (typeof window.__theme === 'undefined') {
38 if (guessedVersion) {
39 return guessedVersion === 'bs3';
40 }
41 guessedVersion = _guessBsVersion();
42 return guessedVersion === 'bs3';
43 }
44 return window.__theme === 'bs3';
45}
46export function isBs4() {
47 if (isBs3())
48 return false;
49 if (guessedVersion)
50 return guessedVersion === 'bs4';
51 guessedVersion = _guessBsVersion();
52 return guessedVersion === 'bs4';
53}
54export function isBs5() {
55 if (isBs3() || isBs4())
56 return false;
57 if (guessedVersion)
58 return guessedVersion === 'bs5';
59 guessedVersion = _guessBsVersion();
60 return guessedVersion === 'bs5';
61}
62export function getBsVer() {
63 return {
64 isBs3: isBs3(),
65 isBs4: isBs4(),
66 isBs5: isBs5()
67 };
68}
69export function currentBsVersion() {
70 const bsVer = getBsVer();
71 const resVersion = Object.keys(bsVer).find(key => bsVer[key]);
72 return BsVerions[resVersion];
73}
74//# sourceMappingURL=theme-provider.js.map
\No newline at end of file