Skip to content

Commit 4c2ee77

Browse files
authored
Improve look & feel of disabled state (#43)
* Improve look & feel of disabled state * Cleanup node stuff
1 parent 842a0db commit 4c2ee77

File tree

9 files changed

+112
-4
lines changed

9 files changed

+112
-4
lines changed

src/Spillgebees.Blazor.RichTextEditor.Assets/package-lock.json

Lines changed: 19 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/Spillgebees.Blazor.RichTextEditor.Assets/package.json

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
"source": "src/index.ts",
55
"main": "dist/Spillgebees.Blazor.RichTextEditor.lib.module.js",
66
"scripts": {
7-
"build:dev": "NODE_ENV=development tsx ./build.ts",
8-
"build:prod": "NODE_ENV=production tsx ./build.ts",
7+
"build:dev": "cross-env NODE_ENV=development tsx ./build.ts",
8+
"build:prod": "cross-env NODE_ENV=production tsx ./build.ts",
99
"clean": "rimraf ./dist"
1010
},
1111
"keywords": [],
@@ -16,6 +16,7 @@
1616
"@microsoft/dotnet-js-interop": "^8.0.0",
1717
"@types/node": "^20.10.5",
1818
"@types/quill": "^2.0.14",
19+
"cross-env": "^7.0.3",
1920
"esbuild": "0.19.5",
2021
"eslint": "^8.53.0",
2122
"rimraf": "5.0.5",
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
@import '../node_modules/quill/dist/quill.bubble.css';
22
@import '../node_modules/quill/dist/quill.snow.css';
33

4+
.rich-text-editor-container.rich-text-editor-container-disabled {
5+
cursor: not-allowed;
6+
opacity: 0.38;
7+
pointer-events: all;
8+
}
9+
10+
.rich-text-editor-editor-container.rich-text-editor-editor-container-disabled {
11+
pointer-events: none;
12+
}
13+
414
.ql-toolbar.ql-snow.rich-text-editor-toolbar-container-bottom {
515
border-top: none;
616
}
17+
18+
.ql-toolbar.ql-snow.rich-text-editor-toolbar-container-hidden + .ql-container.ql-snow.ql-disabled.rich-text-editor-editor-container {
19+
border-top: 1px solid #ccc;
20+
}
21+
22+
.ql-toolbar.ql-snow.rich-text-editor-toolbar-container-disabled {
23+
pointer-events: none;
24+
}
25+
26+
.ql-toolbar.ql-snow.rich-text-editor-toolbar-container-hidden {
27+
display: none;
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<div>
2+
<h3>Disabled editor with <code class="hljs">ToolbarDisabledBehavior.Hidden</code></h3>
3+
<CodeSnippet Code="@Code">
4+
<Component>
5+
<CodeSnippet Code="@_content"
6+
CodeFormat="CodeFormat.Html"
7+
Summary="Show HTML">
8+
<Component>
9+
<RichTextEditor @bind-Content="@_content"
10+
IsEditorEnabled="@false"
11+
ToolbarOptions="ToolbarOptions.BasicToolbarOptions with { ToolbarDisabledBehavior = ToolbarDisabledBehavior.Hidden }"/>
12+
</Component>
13+
</CodeSnippet>
14+
</Component>
15+
</CodeSnippet>
16+
</div>
17+
18+
@code {
19+
private const string Code =
20+
@"<RichTextEditor @bind-Content=""@_content""
21+
IsEditorEnabled=""@false""
22+
ToolbarOptions=""ToolbarOptions.BasicToolbarOptions with { ToolbarDisabledBehavior = ToolbarDisabledBehavior.Hidden }""/>";
23+
24+
private string _content = "<b>Hello! \ud83d\udc4b</b>";
25+
}

src/Spillgebees.Blazor.RichTextEditor.Samples/Spillgebees.Blazor.RichTextEditor.Samples.Shared/Pages/RichTextEditorExamplesPageContent.razor

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515

1616
<DisabledRichTextEditorExample />
1717

18+
<HiddenRichTextEditorExample />
19+
1820
<FullToolbarOptionsRichTextEditorExample />
1921

2022
<CustomToolbarContentAndCustomFontRichTextEditorExample />

src/Spillgebees.Blazor.RichTextEditor/Components/BaseRichTextEditor.razor

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
@Toolbar
77
}
88
<div id="@EditorContainerHtmlId"
9+
class="@InternalEditorContainerClass"
910
@ref="@QuillReference">
1011
@EditorContent
1112
</div>

src/Spillgebees.Blazor.RichTextEditor/Components/BaseRichTextEditor.razor.cs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,16 @@ public string? Text
122122
[Parameter]
123123
public string ContainerClass { get; set; } = string.Empty;
124124

125+
[Parameter]
126+
public string ContainerDisabledClass { get; set; } = "rich-text-editor-container-disabled";
127+
128+
[Parameter]
129+
public string EditorContainerClass { get; set; } = string.Empty;
130+
131+
[Parameter]
132+
public string EditorContainerDisabledClass { get; set; } = "rich-text-editor-editor-container-disabled";
133+
134+
125135
[Parameter]
126136
public QuillDebugLevel DebugLevel { get; set; } = QuillDebugLevel.Error;
127137

@@ -130,15 +140,33 @@ public string? Text
130140
protected Range? InternalSelection;
131141
protected bool InternalIsEditorEnabled;
132142

133-
protected string InternalContainerClass => new CssBuilder("rich-text-editor-container")
143+
protected string InternalContainerClass => new CssBuilder()
144+
.AddClass("rich-text-editor-container")
134145
.AddClass(ContainerClass)
146+
.AddClass(ContainerDisabledClass, IsEditorEnabled is false)
147+
.Build();
148+
149+
protected string InternalEditorContainerClass => new CssBuilder()
150+
.AddClass("ql-container")
151+
.AddClass("ql-snow", Theme is QuillTheme.Snow)
152+
.AddClass("ql-bubble", Theme is QuillTheme.Bubble)
153+
.AddClass("ql-disabled", IsEditorEnabled is false)
154+
.AddClass("rich-text-editor-editor-container")
155+
.AddClass(EditorContainerClass, IsEditorEnabled is false)
156+
.AddClass(EditorContainerDisabledClass, IsEditorEnabled is false)
135157
.Build();
136158

137159
protected string InternalToolbarContainerClass => new CssBuilder()
160+
.AddClass("ql-toolbar")
161+
.AddClass("ql-snow", Theme is QuillTheme.Snow)
162+
.AddClass("ql-bubble", Theme is QuillTheme.Bubble)
163+
.AddClass("ql-disabled", IsEditorEnabled is false)
138164
.AddClass("rich-text-editor-toolbar-container")
139165
.AddClass("rich-text-editor-toolbar-container-top", ToolbarOptions.ToolbarPosition is ToolbarPosition.Top)
140166
.AddClass("rich-text-editor-toolbar-container-bottom", ToolbarOptions.ToolbarPosition is ToolbarPosition.Bottom)
141167
.AddClass(ToolbarOptions.ToolbarContainerClass)
168+
.AddClass(ToolbarOptions.ToolbarContainerDisabledClass, IsEditorEnabled is false && ToolbarOptions.ToolbarDisabledBehavior is ToolbarDisabledBehavior.Disabled)
169+
.AddClass(ToolbarOptions.ToolbarContainerHiddenClass, IsEditorEnabled is false && ToolbarOptions.ToolbarDisabledBehavior is ToolbarDisabledBehavior.Hidden)
142170
.Build();
143171

144172
protected ElementReference QuillReference;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Spillgebees.Blazor.RichTextEditor.Components.Toolbar;
2+
3+
public enum ToolbarDisabledBehavior
4+
{
5+
Disabled,
6+
Hidden
7+
}

src/Spillgebees.Blazor.RichTextEditor/Components/Toolbar/ToolbarOptions.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,10 @@ public record ToolbarOptions(
2020
string? ToolbarContainerHtmlId = null,
2121
List<string>? Fonts = null,
2222
ToolbarPosition ToolbarPosition = ToolbarPosition.Top,
23-
string ToolbarContainerClass = "")
23+
string ToolbarContainerClass = "",
24+
ToolbarDisabledBehavior ToolbarDisabledBehavior = ToolbarDisabledBehavior.Disabled,
25+
string ToolbarContainerDisabledClass = "rich-text-editor-toolbar-container-disabled",
26+
string ToolbarContainerHiddenClass = "rich-text-editor-toolbar-container-hidden")
2427
{
2528
private static readonly List<string> _defaultFonts = new()
2629
{

0 commit comments

Comments
 (0)