Skip to content

Commit 0fa13d8

Browse files
committed
RTE format actions (work in progress)
1 parent 6562c9f commit 0fa13d8

File tree

6 files changed

+90
-9
lines changed

6 files changed

+90
-9
lines changed
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@page "/tests/rooster"
2+
@using RichTextEditAction = Blazorise.RichTextEdit.Rooster.RichTextEditAction
23

34
<Row>
45
<Column>
@@ -7,12 +8,23 @@
78
<CardTitle>RichTextEdit based on rooster.js</CardTitle>
89
</CardHeader>
910
<CardBody>
10-
<Blazorise.RichTextEdit.Rooster.RichTextEdit />
11+
<Buttons Role="ButtonsRole.Toolbar">
12+
<Buttons Margin="Margin.Is2.FromEnd">
13+
<Button Clicked="() => editor.Format(RichTextEditAction.Bold)" Style="font-weight: bold">B</Button>
14+
<Button Clicked="() => editor.Format(RichTextEditAction.Italic)" Style="font-style: initial">I</Button>
15+
<Button Clicked="() => editor.Format(RichTextEditAction.Underline)" Style="text-decoration: underline">U</Button>
16+
</Buttons>
17+
<Buttons Margin="Margin.Is2.FromEnd">
18+
<Button Clicked="() => editor.Format(RichTextEditAction.Header, 1)">H1</Button>
19+
<Button Clicked="() => editor.Format(RichTextEditAction.Header, 2)">H2</Button>
20+
</Buttons>
21+
</Buttons>
22+
<Blazorise.RichTextEdit.Rooster.RichTextEdit @ref="editor"/>
1123
</CardBody>
1224
</Card>
1325
</Column>
1426
</Row>
1527

1628
@code {
17-
29+
private Blazorise.RichTextEdit.Rooster.RichTextEdit editor;
1830
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
namespace Blazorise.RichTextEdit.Rooster;
2+
3+
public enum RichTextEditAction
4+
{
5+
Bold,
6+
Italic,
7+
Underline,
8+
Strike,
9+
Blockquote,
10+
CodeBlock,
11+
Header,
12+
List,
13+
Script,
14+
Indent,
15+
Direction,
16+
Size,
17+
Color,
18+
Background,
19+
Font,
20+
Align,
21+
Clean,
22+
Link,
23+
Image
24+
}

Source/Extensions/Blazorise.RichTextEdit.Rooster/JSRoosterModule.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@ public JSRoosterModule( IJSRuntime jsRuntime, IVersionProvider versionProvider )
1818
public ValueTask Initialize( DotNetObjectReference<RoosterAdapter> adapterReference, ElementReference elementRef, string elementId, object options )
1919
=> InvokeSafeVoidAsync( "initialize", adapterReference, elementRef, elementId, options );
2020

21+
public ValueTask Format( ElementReference elementRef, string elementId, string action, object options = null )
22+
=> InvokeSafeVoidAsync( "format", elementRef, elementId, action, options );
23+
2124
public ValueTask Destroy( ElementReference elementRef, string elementId )
2225
=> InvokeSafeVoidAsync( "destroy", elementRef, elementId );
2326
}

Source/Extensions/Blazorise.RichTextEdit.Rooster/RichTextEdit.razor.cs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Threading.Tasks;
1+
using System;
2+
using System.Threading.Tasks;
23
using Blazorise.Extensions;
34
using Blazorise.Utilities;
45
using Microsoft.AspNetCore.Components;
@@ -13,6 +14,36 @@ public partial class RichTextEdit : BaseComponent
1314
{
1415
private DotNetObjectReference<RoosterAdapter> adapter;
1516

17+
/// <summary>
18+
/// Perform format action
19+
/// </summary>
20+
/// <param name="action">the action to perform <see cref="RichTextEditAction"/></param>
21+
/// <param name="args">action arguments</param>
22+
public ValueTask Format( object action, params object[] args ) => action switch
23+
{
24+
string actionString => JSModule.Format( ElementRef, ElementId, actionString, args ),
25+
RichTextEditAction.Bold => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
26+
RichTextEditAction.Italic => JSModule.Format( ElementRef, ElementId, "toggleItalic", args ),
27+
RichTextEditAction.Underline => JSModule.Format( ElementRef, ElementId, "toggleUnderline", args ),
28+
RichTextEditAction.Strike => JSModule.Format( ElementRef, ElementId, "toggleStrikethrough", args ),
29+
RichTextEditAction.Blockquote => JSModule.Format( ElementRef, ElementId, "toggleBlockQuote", args ),
30+
RichTextEditAction.CodeBlock => JSModule.Format( ElementRef, ElementId, "toggleCodeBlock", args ),
31+
RichTextEditAction.Header => JSModule.Format( ElementRef, ElementId, "toggleHeader", args ),
32+
RichTextEditAction.List => JSModule.Format( ElementRef, ElementId, "toggleBullet", args ),
33+
RichTextEditAction.Script => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
34+
RichTextEditAction.Indent => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
35+
RichTextEditAction.Direction => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
36+
RichTextEditAction.Size => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
37+
RichTextEditAction.Color => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
38+
RichTextEditAction.Background => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
39+
RichTextEditAction.Font => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
40+
RichTextEditAction.Align => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
41+
RichTextEditAction.Clean => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
42+
RichTextEditAction.Link => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
43+
RichTextEditAction.Image => JSModule.Format( ElementRef, ElementId, "toggleBold", args ),
44+
_ => throw new ArgumentOutOfRangeException( nameof( action ), action, null )
45+
};
46+
1647
/// <inheritdoc/>
1748
protected override async Task OnAfterRenderAsync( bool firstRender )
1849
{
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
.b-rte-rooster {
2-
width: 500px;
3-
height: 300px;
2+
width: 100%;
3+
height: 5rem;
44
overflow: auto;
5+
padding: 4px;
56
border: solid 1px black;
67
}

Source/Extensions/Blazorise.RichTextEdit.Rooster/wwwroot/blazorise.rooster.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ export async function initialize(dotNetAdapter, element, elementId, options) {
1717
const instance = {
1818
options: options,
1919
adapter: dotNetAdapter,
20-
rooster: null,
20+
editor: null,
2121
};
2222

23-
instance.rooster = roosterjs.createEditor(element);
23+
instance.editor = roosterjs.createEditor(element);
2424

25-
instance.rooster.setContent('Welcome to <b>RoosterJs</b>!');
25+
instance.editor.setContent('Welcome to <b>RoosterJs</b>!');
2626

2727
_instances[elementId] = instance;
2828
}
@@ -34,7 +34,17 @@ export function destroy(element, elementId) {
3434
if (!instance)
3535
return;
3636

37-
instance.rooster.dispose();
37+
instance.editor.dispose();
3838
delete instances[elementId];
3939
}
4040

41+
export function format(element, elementId, action, args) {
42+
const instances = _instances || {};
43+
const instance = instances[elementId];
44+
45+
if (!instance)
46+
return;
47+
48+
roosterjs[action](instance.editor, args);
49+
}
50+

0 commit comments

Comments
 (0)