fix(editor): do not display format bar with embed node (#11371)
Close [BS-2895: 点击inline名字区域不需要显示format toolbar](https://linear.app/affine-design/issue/BS-2895/点击inline名字区域不需要显示format-toolbar)
This commit is contained in:
@@ -202,8 +202,25 @@ export function getCombinedTextStyle(chain: Chain<InitCommandCtx>) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function isFormatSupported(chain: Chain<InitCommandCtx>) {
|
export function isFormatSupported(chain: Chain<InitCommandCtx>) {
|
||||||
return handleCurrentSelection(
|
return handleCurrentSelection(chain, (_type, inlineEditors) => {
|
||||||
chain,
|
if (inlineEditors.length === 1) {
|
||||||
(_type, inlineEditors) => inlineEditors.length > 0
|
const inlineEditor = inlineEditors[0];
|
||||||
);
|
const inlineRange = inlineEditor.getInlineRange();
|
||||||
|
|
||||||
|
// support block selection
|
||||||
|
if (!inlineRange) return true;
|
||||||
|
|
||||||
|
if (inlineRange.length !== 1) return true;
|
||||||
|
|
||||||
|
// skip embed node
|
||||||
|
const delta = inlineEditor.getDeltaByRangeIndex(inlineRange.index + 1);
|
||||||
|
if (!delta) return true;
|
||||||
|
|
||||||
|
const isEmbed = inlineEditor.isEmbed(delta);
|
||||||
|
if (isEmbed) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return inlineEditors.length > 0;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ import {
|
|||||||
initThreeParagraphs,
|
initThreeParagraphs,
|
||||||
pasteByKeyboard,
|
pasteByKeyboard,
|
||||||
pressArrowDown,
|
pressArrowDown,
|
||||||
|
pressArrowLeft,
|
||||||
pressArrowUp,
|
pressArrowUp,
|
||||||
pressEnter,
|
pressEnter,
|
||||||
pressEscape,
|
pressEscape,
|
||||||
@@ -1051,3 +1052,18 @@ test.describe('more menu button', () => {
|
|||||||
await assertRichTexts(page, ['123', '789']);
|
await assertRichTexts(page, ['123', '789']);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('should not display format bar when just select embed node', async ({
|
||||||
|
page,
|
||||||
|
}) => {
|
||||||
|
await enterPlaygroundRoom(page);
|
||||||
|
await initEmptyParagraphState(page);
|
||||||
|
await focusRichText(page, 0);
|
||||||
|
await type(page, '@\n');
|
||||||
|
await assertRichTextInlineRange(page, 0, 1, 0);
|
||||||
|
await pressArrowLeft(page);
|
||||||
|
await assertRichTextInlineRange(page, 0, 0, 1);
|
||||||
|
|
||||||
|
const { boldBtn } = getFormatBar(page);
|
||||||
|
await expect(boldBtn).toBeHidden();
|
||||||
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user