Skip to content

Commit

Permalink
fix(tags): wrong tag input width with CJK chars (#4127)
Browse files Browse the repository at this point in the history
  • Loading branch information
YUCLing authored Nov 29, 2024
1 parent af2a32a commit 33a72f5
Showing 1 changed file with 14 additions and 1 deletion.
15 changes: 14 additions & 1 deletion extensions/tags/js/src/common/components/TagSelectionModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,14 @@ export default class TagSelectionModal<
return this.attrs.title;
}

lengthWithCJK(text: string) {
let length = 0;
for (const char of text) {
length += /[\u4E00-\u9FFF\u3400-\u4DBF\uF900-\uFAFF]/.test(char) ? 2 : 1;
}
return length;
}

content() {
if (this.loading || !this.tags) {
return <LoadingIndicator />;
Expand All @@ -145,7 +153,12 @@ export default class TagSelectionModal<
const secondaryCount = this.secondaryCount();
const tags = this.getFilteredTags();

const inputWidth = Math.max(extractText(this.getInstruction(primaryCount, secondaryCount)).length, this.filter().length);
// 1 CJK character's width equals to 2ch,
// so we count 1 CJK character as 2 characters.
const inputWidth = Math.max(
this.lengthWithCJK(extractText(this.getInstruction(primaryCount, secondaryCount))),
this.lengthWithCJK(this.filter())
);

return [
<div className="Modal-body">
Expand Down

0 comments on commit 33a72f5

Please sign in to comment.