(core) When a page starts with a number, don't treat it as an emoji

Test Plan: Added a check to the emoji test.

Reviewers: georgegevoian

Reviewed By: georgegevoian

Subscribers: georgegevoian

Differential Revision: https://phab.getgrist.com/D3951
This commit is contained in:
Dmitry S
2023-07-12 14:38:03 -04:00
parent b2743cac2d
commit 8581492912
2 changed files with 10 additions and 3 deletions

View File

@@ -138,7 +138,9 @@ const pageInitialRegex = new RegExp(`^${emojiPart.source}(?:\\u{200D}${emojiPart
// present, is omitted from the displayName, but a regular character used as the initial is kept.
function splitPageInitial(name: string): {initial: string, displayName: string, hasEmoji: boolean} {
const m = name.match(pageInitialRegex);
if (m) {
// A common false positive is digits; those match \p{Emoji} but should not be considered emojis.
// (Other matching non-emojis include characters like '*', but those are nicer to show as emojis.)
if (m && !/^\d$/.test(m[0])) {
return {initial: m[0], displayName: name.slice(m[0].length).trim(), hasEmoji: true};
} else {
return {initial: Array.from(name)[0], displayName: name.trim(), hasEmoji: false};
@@ -179,6 +181,7 @@ const cssPageInitial = styled('div', `
box-shadow: 0 0 0 1px var(--grist-theme-left-panel-page-emoji-outline, var(--grist-color-dark-grey));
font-size: 15px;
overflow: hidden;
color: ${theme.text};
}
.${treeViewContainer.className}-close & {
margin-right: 0;