From c8f437b3169571e6dbb853f248969f2ba70a9491 Mon Sep 17 00:00:00 2001 From: Giteabot Date: Fri, 18 Aug 2023 17:54:52 +0800 Subject: [PATCH] Add minimum polyfill to support "relative-time-element" in PaleMoon (#26575) (#26578) Backport #26575 by @wxiaoguang Close #26525 Co-authored-by: wxiaoguang (cherry picked from commit 1f29cfa68313c982497d09ef1b3b0fc5e5c9acba) --- web_src/js/webcomponents/polyfill.js | 17 +++++++++++++++++ web_src/js/webcomponents/webcomponents.js | 2 ++ 2 files changed, 19 insertions(+) create mode 100644 web_src/js/webcomponents/polyfill.js 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';