@@ -18,6 +18,7 @@ import {
18
18
import { ToolbarDropdown } from "../../../SharedComponents/Toolbar/components/ToolbarDropdown" ;
19
19
import { ToolbarDropdownItemProps } from "../../../SharedComponents/Toolbar/components/ToolbarDropdownItem" ;
20
20
import { useEditorChange } from "../../../hooks/useEditorChange" ;
21
+ import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks" ;
21
22
22
23
export type BlockTypeDropdownItem = {
23
24
name : string ;
@@ -42,7 +43,7 @@ export const defaultBlockTypeDropdownItems: BlockTypeDropdownItem[] = [
42
43
isSelected : ( block ) =>
43
44
block . type === "heading" &&
44
45
"level" in block . props &&
45
- block . props . level === "1" ,
46
+ block . props . level === 1 ,
46
47
} ,
47
48
{
48
49
name : "Heading 2" ,
@@ -52,7 +53,7 @@ export const defaultBlockTypeDropdownItems: BlockTypeDropdownItem[] = [
52
53
isSelected : ( block ) =>
53
54
block . type === "heading" &&
54
55
"level" in block . props &&
55
- block . props . level === "2" ,
56
+ block . props . level === 2 ,
56
57
} ,
57
58
{
58
59
name : "Heading 3" ,
@@ -62,7 +63,7 @@ export const defaultBlockTypeDropdownItems: BlockTypeDropdownItem[] = [
62
63
isSelected : ( block ) =>
63
64
block . type === "heading" &&
64
65
"level" in block . props &&
65
- block . props . level === "3" ,
66
+ block . props . level === 3 ,
66
67
} ,
67
68
{
68
69
name : "Bullet List" ,
@@ -82,6 +83,8 @@ export const BlockTypeDropdown = <BSchema extends BlockSchema>(props: {
82
83
editor : BlockNoteEditor < BSchema > ;
83
84
items ?: BlockTypeDropdownItem [ ] ;
84
85
} ) => {
86
+ const selectedBlocks = useSelectedBlocks ( props . editor ) ;
87
+
85
88
const [ block , setBlock ] = useState (
86
89
props . editor . getTextCursorPosition ( ) . block
87
90
) ;
@@ -123,10 +126,13 @@ export const BlockTypeDropdown = <BSchema extends BlockSchema>(props: {
123
126
const fullItems : ToolbarDropdownItemProps [ ] = useMemo ( ( ) => {
124
127
const onClick = ( item : BlockTypeDropdownItem ) => {
125
128
props . editor . focus ( ) ;
126
- props . editor . updateBlock ( block , {
127
- type : item . type ,
128
- props : item . props ,
129
- } as PartialBlock < BlockSchema > ) ;
129
+
130
+ for ( const block of selectedBlocks ) {
131
+ props . editor . updateBlock ( block , {
132
+ type : item . type ,
133
+ props : item . props ,
134
+ } as PartialBlock < BlockSchema > ) ;
135
+ }
130
136
} ;
131
137
132
138
return filteredItems . map ( ( item ) => ( {
@@ -135,7 +141,7 @@ export const BlockTypeDropdown = <BSchema extends BlockSchema>(props: {
135
141
onClick : ( ) => onClick ( item ) ,
136
142
isSelected : item . isSelected ( block as Block < BlockSchema > ) ,
137
143
} ) ) ;
138
- } , [ block , filteredItems , props . editor ] ) ;
144
+ } , [ block , filteredItems , props . editor , selectedBlocks ] ) ;
139
145
140
146
useEditorChange ( props . editor , ( ) => {
141
147
setBlock ( props . editor . getTextCursorPosition ( ) . block ) ;
0 commit comments