From 8195285eb8913e59a02ae75a0d1b43c76a844107 Mon Sep 17 00:00:00 2001 From: Riccardo Graziosi Date: Sat, 7 May 2022 10:57:27 +0200 Subject: [PATCH] Add polyfill for padStart function --- .../PostStatuses/PostStatusForm.tsx | 4 +++- app/javascript/helpers/padStart.js | 20 +++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 app/javascript/helpers/padStart.js diff --git a/app/javascript/components/SiteSettings/PostStatuses/PostStatusForm.tsx b/app/javascript/components/SiteSettings/PostStatuses/PostStatusForm.tsx index 7f2ce921..05746bd0 100644 --- a/app/javascript/components/SiteSettings/PostStatuses/PostStatusForm.tsx +++ b/app/javascript/components/SiteSettings/PostStatuses/PostStatusForm.tsx @@ -2,6 +2,8 @@ import * as React from 'react'; import Button from '../../shared/Button'; +import padStart from '../../../helpers/padStart'; + interface Props { mode: 'create' | 'update'; @@ -47,7 +49,7 @@ class PostStatusForm extends React.Component { } getRandomColor() { - return '#' + (Math.random() * 0xFFFFFF << 0).toString(16).padStart(6, '0'); + return '#' + padStart((Math.random() * 0xFFFFFF << 0).toString(16), 6, '0'); } isFormValid() { diff --git a/app/javascript/helpers/padStart.js b/app/javascript/helpers/padStart.js new file mode 100644 index 00000000..0adb495f --- /dev/null +++ b/app/javascript/helpers/padStart.js @@ -0,0 +1,20 @@ +// padStart has been introduced in ES2017, but right now we're running on ES2016 +// This is a MDN polyfill used as an alternative +// TODO: switch to ES2017 and remove this script + +function padStart(str, targetLength, padString) { + targetLength = targetLength>>0; //truncate if number or convert non-number to 0; + padString = String((typeof padString !== 'undefined' ? padString : ' ')); + if (str.length > targetLength) { + return String(str); + } + else { + targetLength = targetLength-str.length; + if (targetLength > padString.length) { + padString += padString.repeat(targetLength/padString.length); //append to original to ensure we are longer than needed + } + return padString.slice(0,targetLength) + String(str); + } +}; + +export default padStart; \ No newline at end of file