diff --git a/web_src/js/webcomponents/polyfill.js b/web_src/js/webcomponents/polyfill.js new file mode 100644 index 0000000000..88c7276881 --- /dev/null +++ b/web_src/js/webcomponents/polyfill.js @@ -0,0 +1,17 @@ +try { + // some browsers like PaleMoon don't have full support for Intl.NumberFormat, so do the minimum polyfill to support "relative-time-element" + // https://repo.palemoon.org/MoonchildProductions/UXP/issues/2289 + new Intl.NumberFormat('en', {style: 'unit', unit: 'minute'}).format(1); +} catch { + const intlNumberFormat = Intl.NumberFormat; + Intl.NumberFormat = function(locales, options) { + if (options.style === 'unit') { + return { + format(value) { + return ` ${value} ${options.unit}`; + } + }; + } + return intlNumberFormat(locales, options); + }; +} diff --git a/web_src/js/webcomponents/webcomponents.js b/web_src/js/webcomponents/webcomponents.js index 123607282b..b17a4a832f 100644 --- a/web_src/js/webcomponents/webcomponents.js +++ b/web_src/js/webcomponents/webcomponents.js @@ -1,3 +1,5 @@ import '@webcomponents/custom-elements'; // polyfill for some browsers like Pale Moon +import './polyfill.js'; + import '@github/relative-time-element'; import './GiteaOriginUrl.js';