mirror of
https://github.com/McShelby/hugo-theme-relearn.git
synced 2024-11-30 11:13:06 +00:00
theme: asure JS IE11 compatiblity
This commit is contained in:
parent
a0692851da
commit
1a7a1538df
2 changed files with 62 additions and 26 deletions
|
@ -3,6 +3,18 @@ var isIE = /*@cc_on!@*/false || !!document.documentMode;
|
||||||
if( isIE ){
|
if( isIE ){
|
||||||
// we don't support sidebar flyout in IE
|
// we don't support sidebar flyout in IE
|
||||||
document.querySelector( 'body' ).classList.remove( 'mobile-support' );
|
document.querySelector( 'body' ).classList.remove( 'mobile-support' );
|
||||||
|
// polyfill this rotten piece of sh...oftware
|
||||||
|
if( typeof NodeList !== "undefined" && NodeList.prototype && !NodeList.prototype.forEach ){
|
||||||
|
NodeList.prototype.forEach = Array.prototype.forEach;
|
||||||
|
}
|
||||||
|
if (!String.prototype.startsWith) {
|
||||||
|
Object.defineProperty(String.prototype, 'startsWith', {
|
||||||
|
value: function(search, rawPos) {
|
||||||
|
var pos = rawPos > 0 ? rawPos|0 : 0;
|
||||||
|
return this.substring(pos, pos + search.length) === search;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
document.querySelector( 'body' ).classList.add( 'mobile-support' );
|
document.querySelector( 'body' ).classList.add( 'mobile-support' );
|
||||||
|
@ -186,7 +198,7 @@ function initAnchorClipboard(){
|
||||||
new_element.setAttribute( 'title', window.T_Copy_link_to_clipboard );
|
new_element.setAttribute( 'title', window.T_Copy_link_to_clipboard );
|
||||||
new_element.setAttribute( 'data-clipboard-text', link );
|
new_element.setAttribute( 'data-clipboard-text', link );
|
||||||
new_element.innerHTML = '<i class="fas fa-link fa-lg"></i>';
|
new_element.innerHTML = '<i class="fas fa-link fa-lg"></i>';
|
||||||
element.append( new_element );
|
element.appendChild( new_element );
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".anchor").on('mouseleave', function(e) {
|
$(".anchor").on('mouseleave', function(e) {
|
||||||
|
|
|
@ -1,5 +1,11 @@
|
||||||
// we need to load this script in the html head to avoid flickering
|
// we need to load this script in the html head to avoid flickering
|
||||||
// on page load if the user has selected a non default variant
|
// on page load if the user has selected a non default variant
|
||||||
|
function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
||||||
|
|
||||||
|
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
||||||
|
|
||||||
|
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
||||||
|
|
||||||
var variants = {
|
var variants = {
|
||||||
variant: '',
|
variant: '',
|
||||||
variants: [],
|
variants: [],
|
||||||
|
@ -231,32 +237,50 @@ var variants = {
|
||||||
this.download( this.generateStylesheet(), 'text/css', 'theme-' + this.customvariantname + '.css' );
|
this.download( this.generateStylesheet(), 'text/css', 'theme-' + this.customvariantname + '.css' );
|
||||||
},
|
},
|
||||||
|
|
||||||
adjustCSSRules: function(selector, props, sheets){
|
adjustCSSRules: function(selector, props, sheets) {
|
||||||
// get stylesheet(s)
|
// get stylesheet(s)
|
||||||
if (!sheets) sheets = [...document.styleSheets];
|
if (!sheets) sheets = [].concat(document.styleSheets);else if (sheets.sup) {
|
||||||
else if (sheets.sup){ // sheets is a string
|
// sheets is a string
|
||||||
let absoluteURL = new URL(sheets, document.baseURI).href;
|
var absoluteURL = new URL(sheets, document.baseURI).href;
|
||||||
sheets = [...document.styleSheets].filter(i => i.href == absoluteURL);
|
sheets = [].concat(document.styleSheets).filter(function (i) {
|
||||||
}
|
return i.href == absoluteURL;
|
||||||
else sheets = [sheets]; // sheets is a stylesheet
|
});
|
||||||
|
} else sheets = [sheets]; // sheets is a stylesheet
|
||||||
// CSS (& HTML) reduce spaces in selector to one.
|
// CSS (& HTML) reduce spaces in selector to one.
|
||||||
selector = selector.replace(/\s+/g, ' ');
|
|
||||||
const findRule = s => [...s.cssRules].reverse().find(i => i.selectorText == selector)
|
|
||||||
let rule = sheets.map(findRule).filter(i=>i).pop()
|
|
||||||
|
|
||||||
const propsArr = props.sup
|
selector = selector.replace(/\s+/g, ' ');
|
||||||
? props.split(/\s*;\s*/).map(i => i.split(/\s*:\s*/)) // from string
|
|
||||||
|
var findRule = function findRule(s) {
|
||||||
|
return [].concat(s.cssRules).reverse().find(function (i) {
|
||||||
|
return i.selectorText == selector;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var rule = sheets.map(findRule).filter(function (i) {
|
||||||
|
return i;
|
||||||
|
}).pop();
|
||||||
|
var propsArr = props.sup ? props.split(/\s*;\s*/).map(function (i) {
|
||||||
|
return i.split(/\s*:\s*/);
|
||||||
|
}) // from string
|
||||||
: Object.entries(props); // from Object
|
: Object.entries(props); // from Object
|
||||||
|
|
||||||
if (rule) for (let [prop, val] of propsArr){
|
if (rule) {
|
||||||
|
for (var _iterator = _createForOfIteratorHelperLoose(propsArr), _step; !(_step = _iterator()).done;) {
|
||||||
|
var _rule$style;
|
||||||
|
var _step$value = _step.value,
|
||||||
|
prop = _step$value[0],
|
||||||
|
val = _step$value[1];
|
||||||
// rule.style[prop] = val; is against the spec, and does not support !important.
|
// rule.style[prop] = val; is against the spec, and does not support !important.
|
||||||
rule.style.setProperty(prop, ...val.split(/ *!(?=important)/));
|
(_rule$style = rule.style).setProperty.apply(_rule$style, [prop].concat(val.split(/ *!(?=important)/)));
|
||||||
}
|
}
|
||||||
else {
|
} else {
|
||||||
sheet = sheets.pop();
|
sheet = sheets.pop();
|
||||||
if (!props.sup) props = propsArr.reduce((str, [k, v]) => `${str}; ${k}: ${v}`, '');
|
if (!props.sup) props = propsArr.reduce(function (str, _ref) {
|
||||||
sheet.insertRule(`${selector} { ${props} }`, sheet.cssRules.length);
|
var k = _ref[0],
|
||||||
|
v = _ref[1];
|
||||||
|
return str + "; " + k + ": " + v;
|
||||||
|
}, '');
|
||||||
|
sheet.insertRule(selector + " { " + props + " }", sheet.cssRules.length);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue