From 54bc60aa4d676e1defa05747ec5097ce191c0d30 Mon Sep 17 00:00:00 2001 From: fundon Date: Thu, 20 Mar 2025 02:08:15 +0000 Subject: [PATCH] refactor(editor): edgeless shape toolbar config extension (#10821) --- .../components/edgeless-shape-color-picker.ts | 1 + blocksuite/affine/all/src/effects.ts | 2 + .../components/toolbar/shape/shape-menu.ts | 59 +-- .../src/edgeless/configs/toolbar/connector.ts | 7 +- .../src/edgeless/configs/toolbar/mindmap.ts | 81 ++-- .../src/edgeless/configs/toolbar/shape.ts | 393 +++++++++++++++++- .../src/edgeless/configs/toolbar/types.ts | 1 + .../src/edgeless/configs/toolbar/utils.ts | 3 +- blocksuite/affine/components/package.json | 3 +- .../components/src/color-picker/button.ts | 38 +- .../components/src/color-picker/utils.ts | 34 +- .../line-styles-panel.ts | 2 +- .../color-picker.ts | 317 ++++++++++++++ .../src/edgeless-shape-color-picker/index.ts | 10 + 14 files changed, 836 insertions(+), 115 deletions(-) create mode 100644 blocksuite/affine/all/src/components/edgeless-shape-color-picker.ts create mode 100644 blocksuite/affine/components/src/edgeless-shape-color-picker/color-picker.ts create mode 100644 blocksuite/affine/components/src/edgeless-shape-color-picker/index.ts diff --git a/blocksuite/affine/all/src/components/edgeless-shape-color-picker.ts b/blocksuite/affine/all/src/components/edgeless-shape-color-picker.ts new file mode 100644 index 0000000000..a1ecdc2778 --- /dev/null +++ b/blocksuite/affine/all/src/components/edgeless-shape-color-picker.ts @@ -0,0 +1 @@ +export * from '@blocksuite/affine-components/edgeless-shape-color-picker'; diff --git a/blocksuite/affine/all/src/effects.ts b/blocksuite/affine/all/src/effects.ts index 937b3fcd33..756f203703 100644 --- a/blocksuite/affine/all/src/effects.ts +++ b/blocksuite/affine/all/src/effects.ts @@ -27,6 +27,7 @@ import { effects as componentDatePickerEffects } from '@blocksuite/affine-compon import { effects as componentDropIndicatorEffects } from '@blocksuite/affine-components/drop-indicator'; import { effects as componentEdgelessLineStylesEffects } from '@blocksuite/affine-components/edgeless-line-styles-panel'; import { effects as componentEdgelessLineWidthEffects } from '@blocksuite/affine-components/edgeless-line-width-panel'; +import { effects as componentEdgelessShapeColorPickerEffects } from '@blocksuite/affine-components/edgeless-shape-color-picker'; import { effects as componentEmbedCardModalEffects } from '@blocksuite/affine-components/embed-card-modal'; import { FilterableListComponent } from '@blocksuite/affine-components/filterable-list'; import { effects as componentHighlightDropdownMenuEffects } from '@blocksuite/affine-components/highlight-dropdown-menu'; @@ -153,6 +154,7 @@ export function effects() { componentSizeDropdownMenuEffects(); componentEdgelessLineWidthEffects(); componentEdgelessLineStylesEffects(); + componentEdgelessShapeColorPickerEffects(); widgetScrollAnchoringEffects(); widgetFrameTitleEffects(); diff --git a/blocksuite/affine/blocks/block-root/src/edgeless/components/toolbar/shape/shape-menu.ts b/blocksuite/affine/blocks/block-root/src/edgeless/components/toolbar/shape/shape-menu.ts index c6ce034cc4..ff57f56021 100644 --- a/blocksuite/affine/blocks/block-root/src/edgeless/components/toolbar/shape/shape-menu.ts +++ b/blocksuite/affine/blocks/block-root/src/edgeless/components/toolbar/shape/shape-menu.ts @@ -17,6 +17,7 @@ import { StyleGeneralIcon, StyleScribbleIcon } from '@blocksuite/icons/lit'; import { computed, effect, type Signal, signal } from '@preact/signals-core'; import { css, html, LitElement } from 'lit'; import { property } from 'lit/decorators.js'; +import { when } from 'lit/directives/when.js'; import type { EdgelessRootBlockComponent } from '../../../edgeless-root-block.js'; import { ShapeComponentConfig } from './shape-menu-config.js'; @@ -125,31 +126,39 @@ export class EdgelessShapeMenu extends SignalWatcher( return html`