Skip to content

Commit

Permalink
fix(editor): affine preview root style (#10420)
Browse files Browse the repository at this point in the history
Fix [BS-2677](https://linear.app/affine-design/issue/BS-2677/linked-doc-embed-view样式错误)

1. Only show the border of embed synced doc block (in note) when hover.
2. Fix affine preview root padding style, set padding only when affine preview root in embed synced doc block (in surface).
3. Only add the footnote config extension to the chat panel and chat block center peek. For footnotes in other page preview scenarios, such as footnote nodes within embed synced doc blocks or embed linked doc blocks, the hover effect should be maintained.
  • Loading branch information
donteatfriedrice committed Feb 26, 2025
1 parent 0e4a799 commit d63f16d
Show file tree
Hide file tree
Showing 9 changed files with 52 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -231,6 +231,7 @@ export class EmbedSyncedDocBlockComponent extends EmbedBlockComponent<EmbedSynce
[theme]: true,
surface: false,
selected: this.selected$.value,
'show-hover-border': true,
})}
@click=${this._handleClick}
style=${containerStyleMap}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,13 @@ export const blockStyles = css`
}
.affine-embed-synced-doc-container {
border: 1px solid var(--affine-border-color);
border: 1px solid transparent;
border-radius: 8px;
overflow: hidden;
}
.affine-embed-synced-doc-container.show-hover-border:hover {
border-color: var(--affine-border-color);
}
.affine-embed-synced-doc-container.page {
display: block;
width: 100%;
Expand Down Expand Up @@ -151,7 +154,12 @@ export const blockStyles = css`
}
.affine-embed-synced-doc-container.surface {
border-color: var(--affine-border-color);
background: var(--affine-background-primary-color);
affine-preview-root {
padding: 0 24px;
}
}
.affine-embed-synced-doc-container
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ export class PreviewRootBlockComponent extends BlockComponent {
static override styles = css`
affine-preview-root {
display: block;
padding: 0 24px;
}
`;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,20 +36,22 @@ export class AffineFootnoteNode extends WithDisposable(ShadowlessElement) {
cursor: pointer;
}
.footnote-content-default {
display: inline-block;
background: ${unsafeCSSVarV2('block/footnote/numberBgHover')};
color: ${unsafeCSSVarV2('button/pureWhiteText')};
width: 14px;
height: 14px;
line-height: 14px;
font-size: 10px;
font-weight: 400;
border-radius: 50%;
text-align: center;
text-overflow: ellipsis;
font-family: ${unsafeCSS(baseTheme.fontSansFamily)};
transition: background 0.3s ease-in-out;
.footnote-node {
.footnote-content-default {
display: inline-block;
background: ${unsafeCSSVarV2('block/footnote/numberBgHover')};
color: ${unsafeCSSVarV2('button/pureWhiteText')};
width: 14px;
height: 14px;
line-height: 14px;
font-size: 10px;
font-weight: 400;
border-radius: 50%;
text-align: center;
text-overflow: ellipsis;
font-family: ${unsafeCSS(baseTheme.fontSansFamily)};
transition: background 0.3s ease-in-out;
}
}
.footnote-node.hover-effect {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import {
import {
ColorScheme,
createSignalFromObservable,
FootNoteNodeConfigExtension,
type Signal,
SpecProvider,
type ThemeExtension,
Expand Down Expand Up @@ -80,11 +79,6 @@ function getPagePreviewThemeExtension(framework: FrameworkProvider) {
return AffinePagePreviewThemeExtension;
}

// Disable hover effect for footnote node in center peek preview mode
const footnodeConfig = FootNoteNodeConfigExtension({
disableHoverEffect: true,
});

const fontConfig = getFontConfigExtension();

let _framework: FrameworkProvider;
Expand All @@ -108,7 +102,6 @@ export function enablePreviewExtension(framework: FrameworkProvider): void {

_previewExtensions = [
...AIChatBlockSpec,
footnodeConfig,
fontConfig,
getThemeExtension(framework),
getPagePreviewThemeExtension(framework),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import {
FootNoteNodeConfigExtension,
type SpecBuilder,
} from '@blocksuite/affine/blocks';

// Disable hover effect for footnote node
const disableHoverEffectConfig = {
disableHoverEffect: true,
};

export function enableFootnoteConfigExtension(
specBuilder: SpecBuilder,
config = disableHoverEffectConfig
) {
const footNoteConfig = FootNoteNodeConfigExtension(config);
return specBuilder.extend([footNoteConfig]);
}
1 change: 1 addition & 0 deletions packages/frontend/core/src/blocksuite/extensions/index.ts
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export * from './entry/enable-affine';
export * from './entry/enable-mobile';
export * from './footnote-config';
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { ChatPanel } from '@affine/core/blocksuite/ai';
import type { AffineEditorContainer } from '@affine/core/blocksuite/block-suite-editor';
import { enableFootnoteConfigExtension } from '@affine/core/blocksuite/extensions';
import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search';
import { DocDisplayMetaService } from '@affine/core/modules/doc-display-meta';
import { DocSearchMenuService } from '@affine/core/modules/doc-search-menu/services';
Expand Down Expand Up @@ -84,7 +85,9 @@ export const EditorChatPanel = forwardRef(function EditorChatPanel(
);
},
};
const previewSpecBuilder = SpecProvider._.getSpec('preview:page');
const previewSpecBuilder = enableFootnoteConfigExtension(
SpecProvider._.getSpec('preview:page')
);
chatPanelRef.current.previewSpecBuilder = previewSpecBuilder;
} else {
chatPanelRef.current.host = editor.host;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { toReactNode } from '@affine/component';
import { AIChatBlockPeekViewTemplate } from '@affine/core/blocksuite/ai';
import type { AIChatBlockModel } from '@affine/core/blocksuite/ai/blocks/ai-chat-block/model/ai-chat-model';
import { enableFootnoteConfigExtension } from '@affine/core/blocksuite/extensions';
import { AINetworkSearchService } from '@affine/core/modules/ai-button/services/network-search';
import type { EditorHost } from '@blocksuite/affine/block-std';
import { SpecProvider } from '@blocksuite/affine/blocks';
Expand All @@ -19,7 +20,9 @@ export const AIChatBlockPeekView = ({
const framework = useFramework();
const searchService = framework.get(AINetworkSearchService);
return useMemo(() => {
const previewSpecBuilder = SpecProvider._.getSpec('preview:page');
const previewSpecBuilder = enableFootnoteConfigExtension(
SpecProvider._.getSpec('preview:page')
);
const networkSearchConfig = {
visible: searchService.visible,
enabled: searchService.enabled,
Expand Down

0 comments on commit d63f16d

Please sign in to comment.