@financial-times/dotcom-ui-bootstrap 7.3.2 → 7.3.4
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/lib/bootstrap.js +91 -0
- package/package.json +3 -2
package/lib/bootstrap.js
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
;(function () {
|
|
2
|
+
var doc = document.documentElement
|
|
3
|
+
var isEnhanced = isEnhancedBrowser()
|
|
4
|
+
var scriptsConfig = getScriptsConfig()
|
|
5
|
+
var scriptsToLoad = []
|
|
6
|
+
var currentScript = document.scripts[document.scripts.length - 1]
|
|
7
|
+
|
|
8
|
+
doc.className = doc.className.replace('no-js', 'js')
|
|
9
|
+
|
|
10
|
+
if (isEnhanced) {
|
|
11
|
+
doc.className = doc.className.replace('core', 'enhanced')
|
|
12
|
+
Array.prototype.push.apply(scriptsToLoad, scriptsConfig.enhanced)
|
|
13
|
+
} else {
|
|
14
|
+
Array.prototype.push.apply(scriptsToLoad, scriptsConfig.core)
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
for (var i = 0, len = scriptsToLoad.length; i < len; i++) {
|
|
18
|
+
loadScript(scriptsToLoad[i])
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function scriptLoadError(error) {
|
|
22
|
+
var script = error.target ? error.target.src : null
|
|
23
|
+
|
|
24
|
+
if (script) {
|
|
25
|
+
console.error('The script ' + script + ' failed to load') // eslint-disable-line no-console
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
if (/enhanced/.test(doc.className)) {
|
|
29
|
+
console.warn('Script loading failed, reverting to core experience') // eslint-disable-line no-console
|
|
30
|
+
doc.className = doc.className.replace('enhanced', 'core')
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (scriptsConfig.trackErrors) {
|
|
34
|
+
addErrorTrackingPixel(script)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function loadScript(src) {
|
|
39
|
+
var script = document.createElement('script')
|
|
40
|
+
script.onerror = scriptLoadError
|
|
41
|
+
script.async = false
|
|
42
|
+
script.src = src
|
|
43
|
+
currentScript.parentNode.insertBefore(script, currentScript)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// "Cut the mustard" test
|
|
47
|
+
// by Maggie Allen and Matt Hinchliffe November 2018
|
|
48
|
+
function isEnhancedBrowser() {
|
|
49
|
+
var script = document.createElement('script')
|
|
50
|
+
var input = document.createElement('input')
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
'visibilityState' in document && // not supported by old Android (4.0-4.4) without a prefix
|
|
54
|
+
'indeterminate' in input && // not supported by BB 10
|
|
55
|
+
'flex' in doc.style && // not supported by old Safari (< 9) or IE 6-10
|
|
56
|
+
'async' in script // not supported by old Opera (Presto engine < 15)
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
function getScriptsConfig() {
|
|
61
|
+
var scriptsConfigEl = document.getElementById('page-kit-bootstrap-config')
|
|
62
|
+
var scriptsConfig = { core: [], enhanced: [], trackErrors: false }
|
|
63
|
+
|
|
64
|
+
if (scriptsConfigEl) {
|
|
65
|
+
try {
|
|
66
|
+
scriptsConfig = JSON.parse(scriptsConfigEl.innerHTML)
|
|
67
|
+
} catch (error) {
|
|
68
|
+
console.error('Bootstrap configuration error', error) // eslint-disable-line no-console
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return scriptsConfig
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function addErrorTrackingPixel(script) {
|
|
76
|
+
var img = new Image()
|
|
77
|
+
|
|
78
|
+
var data = JSON.stringify({
|
|
79
|
+
category: 'javascript',
|
|
80
|
+
action: 'load-error',
|
|
81
|
+
system: {
|
|
82
|
+
source: 'page-kit'
|
|
83
|
+
},
|
|
84
|
+
context: {
|
|
85
|
+
script: script
|
|
86
|
+
}
|
|
87
|
+
})
|
|
88
|
+
|
|
89
|
+
img.src = 'https://spoor-api.ft.com/px.gif?data=' + encodeURIComponent(data)
|
|
90
|
+
}
|
|
91
|
+
})()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@financial-times/dotcom-ui-bootstrap",
|
|
3
|
-
"version": "7.3.
|
|
3
|
+
"version": "7.3.4",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "component.js",
|
|
6
6
|
"browser": "browser.js",
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
"react": "16.x || 17.x"
|
|
31
31
|
},
|
|
32
32
|
"files": [
|
|
33
|
+
"lib/",
|
|
33
34
|
"dist/",
|
|
34
35
|
"src/",
|
|
35
36
|
"browser.js",
|
|
@@ -49,4 +50,4 @@
|
|
|
49
50
|
"check-engine": "^1.10.1",
|
|
50
51
|
"react": "^16.8.6"
|
|
51
52
|
}
|
|
52
|
-
}
|
|
53
|
+
}
|