From 5de6684e4b599bd9600b1e7a546d8b85ad10d9e8 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 3 Jan 2025 11:00:07 +0530 Subject: [PATCH 01/39] 904164: Added Comment Event in Core and MVC --- .../comments-event/razor | 22 ++++++++++++++++ .../comments-event/tagHelper | 23 +++++++++++++++++ ej2-asp-core-mvc/document-editor/comments.md | 25 +++++++++++++++++++ 3 files changed, 70 insertions(+) create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/tagHelper diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor new file mode 100644 index 0000000000..3f8e256358 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor @@ -0,0 +1,22 @@ +@Html.EJS().DocumentEditorContainer("container").EnableToolbar(true).Height("590px").BeforeCommentAction("beforeComment").Render() + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/tagHelper new file mode 100644 index 0000000000..caace701dc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/tagHelper @@ -0,0 +1,23 @@ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/comments.md b/ej2-asp-core-mvc/document-editor/comments.md index aeae6d2a4d..5716008d99 100644 --- a/ej2-asp-core-mvc/document-editor/comments.md +++ b/ej2-asp-core-mvc/document-editor/comments.md @@ -196,3 +196,28 @@ The following example illustrates how to enable mention support in Document Edit {% highlight c# tabtitle="comments-mention.cs" %} {% endhighlight %}{% endtabs %} {% endif %} + +## Events + +DocumentEditor provides `beforeCommentAction` event, which is triggered on comment actions like Post, edit, reply, resolve and reopen. This event provides an opportunity to perform custom logic on comment actions like Post, edit, reply, resolve and reopen. The event handler receives the `CommentActionEventArgs` object as an argument, which allows access to information about the comment. + +To demonstrate a specific use case, let’s consider an example where we want to restrict the delete functionality based on the author’s name. The following code snippet illustrates how to allow only the author of a comment to delete: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/comments-event/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="comments-event.cs" %} +{% endhighlight %}{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/comments-event/razor %} +{% endhighlight %} +{% highlight c# tabtitle="comments-event.cs" %} +{% endhighlight %}{% endtabs %} +{% endif %} \ No newline at end of file From 739a1f81f7d8eb5a72c6187a28a518f02a502331 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 3 Jan 2025 11:17:19 +0530 Subject: [PATCH 02/39] 904164: Resolved Tag issue --- .../comment-only-protect/document-editor.cs | 5 ++++ .../comments-event/document-editor.cs | 5 ++++ .../comments-event/razor | 1 + .../comments-event/tagHelper | 1 + .../comments-mention/document-editor.cs | 5 ++++ ej2-asp-core-mvc/document-editor/comments.md | 26 ++++++++++++++----- 6 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/comment-only-protect/document-editor.cs create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/document-editor.cs create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/comments-mention/document-editor.cs diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/comment-only-protect/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/comment-only-protect/document-editor.cs new file mode 100644 index 0000000000..048a3eb88c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/comment-only-protect/document-editor.cs @@ -0,0 +1,5 @@ +public ActionResult Default() +{ + return View(); +} + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/document-editor.cs new file mode 100644 index 0000000000..048a3eb88c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/document-editor.cs @@ -0,0 +1,5 @@ +public ActionResult Default() +{ + return View(); +} + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor index 3f8e256358..e2e103e1a4 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/comments-event/razor @@ -1,3 +1,4 @@ + @Html.EJS().DocumentEditorContainer("container").EnableToolbar(true).Height("590px").BeforeCommentAction("beforeComment").Render() +``` + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +You can use the `maximumRows` property to set the maximum number of rows allowed while inserting a table in the Document Editor component. + +```ts +
+@Html.EJS().DocumentEditorContainer("container").Created("onCreated").EnableToolbar(true).Render() +
+ +``` + +{% endif %} + +When the maximum row limit is reached, an alert will appear, as follow + +![Row Limit Alert](images/Row_Limit_Alert.PNG) + +>Note: The maximum value is 32767, as per Microsoft Word application and you can set any value less than 32767 to this property. If you set any value greater than 32767, then Syncfusion Document editor will automatically reset as 32767. + +## Set the maximum number of Columns + +{% if page.publishingplatform == "aspnet-core" %} + +You can use the `maximumColumns` property to set the maximum number of rows allowed while inserting a table in the Document Editor component. + +Refer to the following sample code. + +```ts + + + +``` + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +You can use the `maximumColumns` property to set the maximum number of rows allowed while inserting a table in the Document Editor component. + +Refer to the following sample code. + +```ts +
+@Html.EJS().DocumentEditorContainer("container").Created("onCreated").EnableToolbar(true).Render() +
+ +``` + +{% endif %} + +When the maximum column limit is reached, an alert will appear, as follow + +![Column Limit Alert](images/Column_Limit_Alert.PNG) + +>Note: The maximum value is 63, as per Microsoft Word application and you can set any value less than 63 to this property. If you set any value greater than 63, then Syncfusion Document editor will automatically reset as 63. ## Insert rows From 755585dfad6504343f28da43c1977a8272870999 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 3 Jan 2025 19:07:43 +0530 Subject: [PATCH 04/39] 378279: Resolved Tag issue --- ej2-asp-core-mvc/document-editor/table.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/table.md b/ej2-asp-core-mvc/document-editor/table.md index b984899824..63cf9a386e 100644 --- a/ej2-asp-core-mvc/document-editor/table.md +++ b/ej2-asp-core-mvc/document-editor/table.md @@ -247,7 +247,9 @@ The following sample demonstrates how to delete the table row or columns, merge {% include code-snippet/document-editor/table/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Table.cs" %} -{% endhighlight %}{% endtabs %} +{% include code-snippet/document-editor/table/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -256,7 +258,9 @@ The following sample demonstrates how to delete the table row or columns, merge {% include code-snippet/document-editor/table/razor %} {% endhighlight %} {% highlight c# tabtitle="Table.cs" %} -{% endhighlight %}{% endtabs %} +{% include code-snippet/document-editor/table/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} From 498550240322881202f7d5240166f5593df1b789 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 3 Jan 2025 19:11:56 +0530 Subject: [PATCH 05/39] 378279: Resolved Front Matter issue --- ej2-asp-core-mvc/document-editor/table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/table.md b/ej2-asp-core-mvc/document-editor/table.md index 63cf9a386e..2bdc990b1b 100644 --- a/ej2-asp-core-mvc/document-editor/table.md +++ b/ej2-asp-core-mvc/document-editor/table.md @@ -1,6 +1,6 @@ --- layout: post -title: Table in ##Platform_Name## Document Editor Component +title: Table in ##Platform_Name## Document Editor Component | Syncfusion description: Learn here all about table in Syncfusion ##Platform_Name## Document Editor component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Table From 75b91ab208cac2ddfebd0f1fef6bdbf0389a2b30 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 22 Jan 2025 13:38:36 +0530 Subject: [PATCH 06/39] 817044: Added the Font Color changing by UI in Core and MVC --- .../document-editor/images/fontColor.png | Bin 0 -> 61517 bytes ej2-asp-core-mvc/document-editor/text-format.md | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 ej2-asp-core-mvc/document-editor/images/fontColor.png diff --git a/ej2-asp-core-mvc/document-editor/images/fontColor.png b/ej2-asp-core-mvc/document-editor/images/fontColor.png new file mode 100644 index 0000000000000000000000000000000000000000..bdaaa90e7652524d9ba6e1c64c6aa8a91d1d813d GIT binary patch literal 61517 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�y)340zTenXPPTy7m9nf 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СHxHPM8=2mZN&ddEcrxwqUU%DLIa? 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 P^8& Date: Wed, 22 Jan 2025 15:23:06 +0530 Subject: [PATCH 07/39] 817044: Resolved Tag issue --- ej2-asp-core-mvc/document-editor/text-format.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ej2-asp-core-mvc/document-editor/text-format.md b/ej2-asp-core-mvc/document-editor/text-format.md index 8fb21eccf0..d9f0355c95 100644 --- a/ej2-asp-core-mvc/document-editor/text-format.md +++ b/ej2-asp-core-mvc/document-editor/text-format.md @@ -162,6 +162,7 @@ documenteditor.selection.characterFormat.highlightColor= '#FFC0CB'; {% include code-snippet/document-editor/text-format/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Text-format.cs" %} +{% include code-snippet/document-editor/text-format/document-editor.cs %} {% endhighlight %}{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -171,6 +172,7 @@ documenteditor.selection.characterFormat.highlightColor= '#FFC0CB'; {% include code-snippet/document-editor/text-format/razor %} {% endhighlight %} {% highlight c# tabtitle="Text-format.cs" %} +{% include code-snippet/document-editor/text-format/document-editor.cs %} {% endhighlight %}{% endtabs %} {% endif %} From edbbc6972c365e5b985de493edcce43edc5769bf Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 22 Jan 2025 16:47:17 +0530 Subject: [PATCH 08/39] 817044: Resolved Tag issue --- ej2-asp-core-mvc/document-editor/text-format.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/text-format.md b/ej2-asp-core-mvc/document-editor/text-format.md index d9f0355c95..323089a273 100644 --- a/ej2-asp-core-mvc/document-editor/text-format.md +++ b/ej2-asp-core-mvc/document-editor/text-format.md @@ -163,7 +163,8 @@ documenteditor.selection.characterFormat.highlightColor= '#FFC0CB'; {% endhighlight %} {% highlight c# tabtitle="Text-format.cs" %} {% include code-snippet/document-editor/text-format/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -173,7 +174,8 @@ documenteditor.selection.characterFormat.highlightColor= '#FFC0CB'; {% endhighlight %} {% highlight c# tabtitle="Text-format.cs" %} {% include code-snippet/document-editor/text-format/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} From eeede74357847fe51d4807eed99d2152b607d936 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 22 Jan 2025 16:53:25 +0530 Subject: [PATCH 09/39] 817044: Resolved Front Matter issue --- ej2-asp-core-mvc/document-editor/text-format.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/text-format.md b/ej2-asp-core-mvc/document-editor/text-format.md index 323089a273..a3e466ac07 100644 --- a/ej2-asp-core-mvc/document-editor/text-format.md +++ b/ej2-asp-core-mvc/document-editor/text-format.md @@ -1,6 +1,6 @@ --- layout: post -title: Text Format in ##Platform_Name## Document Editor Component +title: Text Format in ##Platform_Name## Document Editor Component | Syncfusion description: Learn here all about text format in Syncfusion ##Platform_Name## Document Editor component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Text Format From 56d4920a9c0ed4b89c9f0040b60c1621c7ad3a07 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 22 Jan 2025 18:19:36 +0530 Subject: [PATCH 10/39] 814887: Added Get content as plain text/rich text and corrected the naming for the content in Core and MVC --- .../document-editor-container/get-paragraph/razor | 6 ++++-- .../document-editor-container/get-paragraph/tagHelper | 6 ++++-- .../code-snippet/document-editor-container/get-word/razor | 4 +++- .../document-editor-container/get-word/tagHelper | 4 +++- .../document-editor/how-to/get-the-selected-content.md | 2 +- 5 files changed, 15 insertions(+), 7 deletions(-) diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/razor index 0efbf1e5c5..2979d6865d 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/razor +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/razor @@ -11,7 +11,9 @@ // To select the current paragraph in document container.documentEditor.selection.selectParagraph(); - // To get the selected content as sfdt - var selectedContent = container.documentEditor.selection.sfdt; + // To get the selected content as text + var selectedContentText = container.documentEditor.selection.text; + // To get the selected content as SFDT (rich text) + var selectedContentSFDT = container.documentEditor.selection.sfdt; } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/tagHelper index 5e87f95a83..9cf6c5e9f1 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-paragraph/tagHelper @@ -13,7 +13,9 @@ // To select the current paragraph in document container.documentEditor.selection.selectParagraph(); - // To get the selected content as sfdt - var selectedContent = container.documentEditor.selection.sfdt; + // To get the selected content as text + var selectedContentText = container.documentEditor.selection.text; + // To get the selected content as SFDT (rich text) + var selectedContentSFDT = container.documentEditor.selection.sfdt; } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/razor index 98f75c0595..69a7a6ea6d 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/razor +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/razor @@ -12,6 +12,8 @@ container.documentEditor.selection.selectCurrentWord(); // To get the selected content as text - var selectedContent = container.documentEditor.selection.text; + var selectedContentText = container.documentEditor.selection.text; + // To get the selected content as SFDT (rich text) + var selectedContentSFDT = container.documentEditor.selection.sfdt; } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/tagHelper index 7569edbf72..59352fa775 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/get-word/tagHelper @@ -14,6 +14,8 @@ container.documentEditor.selection.selectCurrentWord(); // To get the selected content as text - var selectedContent = container.documentEditor.selection.text; + var selectedContentText = container.documentEditor.selection.text; + // To get the selected content as SFDT (rich text) + var selectedContentSFDT = container.documentEditor.selection.sfdt; } \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md index c822f07a24..5813c64745 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md @@ -46,7 +46,7 @@ You can add the following custom options using this API, ## Get the selected content as SFDT (rich text) -You can use `sfdt` API to get the selected content as plain text from React Document Editor component. +You can use `sfdt` API to get the selected content as rich text from React Document Editor component. {% if page.publishingplatform == "aspnet-core" %} From 9e99e590eb5d7200362cec96595885d0cea52b23 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 22 Jan 2025 18:46:22 +0530 Subject: [PATCH 11/39] 817044: Resolved Tag issue --- .../document-editor/how-to/get-current-word.md | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md index 3a7c3fe742..c6a3a5066c 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md @@ -25,7 +25,9 @@ The following example code illustrates how to select and get the current word as {% include code-snippet/document-editor-container/get-word/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-word.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% code-snippet/document-editor-container/get-word/document-editor.cs %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -34,12 +36,12 @@ The following example code illustrates how to select and get the current word as {% include code-snippet/document-editor-container/get-word/razor %} {% endhighlight %} {% highlight c# tabtitle="Get-word.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-word/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} -To get the bookmark content as SFDT (rich text), check this [`link`](../../document-editor/how-to/get-the-selected-content/#get-the-selected-content-as-sfdt-rich-text) - ## Select and get the paragraph in current cursor position You can use [`selectParagraph`] API in selection module to select the current paragraph at cursor position and use [`text`] API or [`sfdt`] API to get the selected content as plain text or SFDT from Document Editor component. @@ -53,7 +55,9 @@ The following example code illustrates how to select and get the current paragra {% include code-snippet/document-editor-container/get-paragraph/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-paragraph.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-paragraph/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -62,5 +66,7 @@ The following example code illustrates how to select and get the current paragra {% include code-snippet/document-editor-container/get-paragraph/razor %} {% endhighlight %} {% highlight c# tabtitle="Get-paragraph.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-paragraph/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} From a1d9c61ca9792ab436f3e79348aaac8abb5a80e4 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Thu, 23 Jan 2025 09:38:21 +0530 Subject: [PATCH 12/39] 814887: Resolved Spelling error --- .../document-editor/how-to/get-the-selected-content.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md index 5813c64745..618411fd7f 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md @@ -72,5 +72,5 @@ You can use `sfdt` API to get the selected content as rich text from React Docum You can add the following custom options using this API, * Save or export the selected content as SFDT file. -* Get the content of a bookmark in Word document as SFDT by selecting a bookmark using `selectbookmark` API. +* Get the content of a bookmark in Word document as SFDT by selecting a bookmark using `select bookmark` API. * Create template content that can be inserted to multiple documents in cursor position using `paste` API. \ No newline at end of file From 0f5b1c9da38507da3e50abf093c1b9a9715008ed Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Thu, 23 Jan 2025 10:21:29 +0530 Subject: [PATCH 13/39] 814887: Resolved Front Matter Issue --- ej2-asp-core-mvc/document-editor/how-to/get-current-word.md | 2 +- .../document-editor/how-to/get-the-selected-content.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md index c6a3a5066c..e8e4b3ac4d 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md @@ -1,6 +1,6 @@ --- layout: post -title: Select and retrieve current word and Paragraph in ##Platform_Name## Document Editor Component +title: get selected current word/Paragraph in ##Platform_Name## Document Editor Component | Syncfusion description: Learn how to select and retrieve current word and Paragraph from the Syncfusion ##Platform_Name## Document Editor Component platform: ej2-asp-core-mvc control: Get The Current Word And Paragrapgh diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md index 618411fd7f..7a4dfaeec2 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md @@ -1,6 +1,6 @@ --- layout: post -title: Get The Selected Content in ##Platform_Name## Document Editor Component +title: Get Selected Content in ##Platform_Name## Document Editor Component | Syncfusion description: Learn here all about get the selected content in Syncfusion ##Platform_Name## Document Editor component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Get The Selected Content From cf92f84a6026bfc5d1488513ceb0d90d47b90c41 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Thu, 23 Jan 2025 10:41:35 +0530 Subject: [PATCH 14/39] 814887: Resolved Front matter and tag issue --- .../document-editor/how-to/get-current-word.md | 2 +- .../how-to/get-the-selected-content.md | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md index e8e4b3ac4d..36ffa42310 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-current-word.md @@ -1,6 +1,6 @@ --- layout: post -title: get selected current word/Paragraph in ##Platform_Name## Document Editor Component | Syncfusion +title: Get current Word/Para in ##Platform_Name## Document editor control | Syncfusion description: Learn how to select and retrieve current word and Paragraph from the Syncfusion ##Platform_Name## Document Editor Component platform: ej2-asp-core-mvc control: Get The Current Word And Paragrapgh diff --git a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md index 7a4dfaeec2..c45d931f0f 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md +++ b/ej2-asp-core-mvc/document-editor/how-to/get-the-selected-content.md @@ -24,7 +24,9 @@ You can use `text` API to get the selected content as plain text from React Docu {% include code-snippet/document-editor-container/get-text/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-text.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-text/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -33,7 +35,9 @@ You can use `text` API to get the selected content as plain text from React Docu {% include code-snippet/document-editor-container/get-text/razor %} {% endhighlight %} {% highlight c# tabtitle="Get-text.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-text/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} @@ -55,7 +59,9 @@ You can use `sfdt` API to get the selected content as rich text from React Docum {% include code-snippet/document-editor-container/get-sfdt/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-sfdt.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-sfdt/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -64,7 +70,9 @@ You can use `sfdt` API to get the selected content as rich text from React Docum {% include code-snippet/document-editor-container/get-sfdt/razor %} {% endhighlight %} {% highlight c# tabtitle="Get-sfdt.cs" %} -{% endhighlight %}{% endtabs %} +{% code-snippet/document-editor-container/get-sfdt/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} From 338d47936459dc3e71a237298792eacd02c152e0 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 24 Jan 2025 12:55:35 +0530 Subject: [PATCH 15/39] 933118: Added notes for possibility of modifying the predefined highlight colors in Core and MVC. --- .../document-editor/how-to/customize-color-picker.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md index 28fa60756d..cbf965ee9f 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md @@ -42,4 +42,7 @@ The following table illustrates all the possible properties for the color picker | disabled | It is used to enable / disable ColorPicker component. If it is disabled the ColorPicker popup won’t open. Defaults to false | | mode | It is used to render the ColorPicker with the specified mode. Defaults to ‘Picker’ | | modeSwitcher | It is used to show / hide the mode switcher button of ColorPicker component. Defaults to true | -| showButtons | It is used to show / hide the control buttons (apply / cancel) of ColorPicker component. Defaults to true | \ No newline at end of file +| showButtons | It is used to show / hide the control buttons (apply / cancel) of ColorPicker component. Defaults to true | + + +>**Note**: According to the Word document specifications, it is not possible to modify the predefined highlight colors. \ No newline at end of file From 9ddbfa2ea9911937f0d89657519a90e800c370e7 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 24 Jan 2025 13:31:35 +0530 Subject: [PATCH 16/39] 933118: Resolved Spelling error --- .../document-editor/how-to/customize-color-picker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md index cbf965ee9f..8907b9c631 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md @@ -36,7 +36,7 @@ Similarly, you can use `documentEditorSettings` property for DocumentEditor also The following table illustrates all the possible properties for the color picker. -| Property | Behaviour | +| Property | Behavior | |---|---| | columns | It is used to render the ColorPicker palette with specified columns. Defaults to 10 | | disabled | It is used to enable / disable ColorPicker component. If it is disabled the ColorPicker popup won’t open. Defaults to false | From 47c4cb0b2b5ffe5aa3209debbc69a1c504a102f4 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 24 Jan 2025 13:40:18 +0530 Subject: [PATCH 17/39] 933118: Resolved Tag issue --- .../document-editor/how-to/customize-color-picker.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md index 8907b9c631..569852b147 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md @@ -22,7 +22,9 @@ Similarly, you can use `documentEditorSettings` property for DocumentEditor also {% include code-snippet/document-editor-container/customize-color-picker/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="customize-color-picker.cs" %} -{% endhighlight %}{% endtabs %} +{% include code-snippet/document-editor-container/customize-color-picker/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -31,7 +33,9 @@ Similarly, you can use `documentEditorSettings` property for DocumentEditor also {% include code-snippet/document-editor-container/customize-color-picker/razor %} {% endhighlight %} {% highlight c# tabtitle="customize-color-picker.cs" %} -{% endhighlight %}{% endtabs %} +{% include code-snippet/document-editor-container/customize-color-picker/document-editor.cs %} +{% endhighlight %} +{% endtabs %} {% endif %} The following table illustrates all the possible properties for the color picker. From c7e3d5eccf35420374e25d52917fc23faf546ef7 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 31 Jan 2025 14:06:04 +0530 Subject: [PATCH 18/39] 935866: Added note for the limitation of margin value in Core and MVC --- .../images/Margin_Limit_Alert.png | Bin 0 -> 64768 bytes .../document-editor/section-format.md | 6 ++++++ 2 files changed, 6 insertions(+) create mode 100644 ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png diff --git a/ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png b/ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png new file mode 100644 index 0000000000000000000000000000000000000000..fac22e3bd314f0550ace26dda62a4d3748cacd11 GIT binary patch literal 64768 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

I#ayZOW2s@l(=l+i$S2T z&bvnaM1D`HB~*Cs%#kv`Mli4$H&8QN&vK9spPbT~1j?!goMERlK6NU^pssWG@X%Nj zH|rg+E0UU|0FP9KedNU~)Zzlq=c{@D0Dmv;!r2Lt9Wkh_pq`f!bK~NR^5|1SKORN% zY24SO_3b`4JfrS2k?R8{4y~bVv|i1S6ZYBKDgnaRdyZL}0qCu0dXOLZ)g0qw36@pk zsezjlxd^V1fm}-6BV$PY>E@g6WgI zKzWaycBx0T`__DLe&xkTjz4+)5${`pfol+QG@$J16;0jAmr%eWvK$OPF-{xO%nPX7 zIOuL0aHRcrz_U#WbJOu*OMH?MKwqgP&n3MY%B}(XNobp<%N1-$h;M=-OM~xqUn^V zII9bsym)x$)+3f}e`l-yt)E cPu893H#XG7Pe*Note: The maximum value of Margin is 1584, as per Microsoft Word application and you can set any value less than 1584 to this property. If you set any value greater than 1584, then Syncfusion Document editor will automatically reset as 1584. + ## Header distance You can define the distance of header content from the top of the page by using the following sample code. From 2c57dccc634d11f5debcd198c48ad4e1f1ea00a6 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Mon, 3 Feb 2025 19:29:11 +0530 Subject: [PATCH 19/39] 933810:Added the enableTrackChanges feature document-level settings Content information in Core and MVC --- .../toggle-track-pane/document-editor.cs | 5 ++++ .../track-changes-default/document-editor.cs | 5 ++++ .../track-changes-default/razor | 13 ++++++++ .../track-changes-default/tagHelper | 9 ++++++ .../document-editor.cs | 5 ++++ .../track-changes/document-editor.cs | 5 ++++ .../document-editor/track-changes.md | 30 +++++++++++++++++++ 7 files changed, 72 insertions(+) create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/toggle-track-pane/document-editor.cs create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/document-editor.cs create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/razor create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/tagHelper create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes/document-editor.cs diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/toggle-track-pane/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/toggle-track-pane/document-editor.cs new file mode 100644 index 0000000000..cca48eedf9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/toggle-track-pane/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/document-editor.cs new file mode 100644 index 0000000000..cca48eedf9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/razor new file mode 100644 index 0000000000..33dcd7df80 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/razor @@ -0,0 +1,13 @@ +

+ @Html.EJS().DocumentEditorContainer("container").documentChange("onDocChange").EnableToolbar(true).Render() +
+ + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/tagHelper new file mode 100644 index 0000000000..98110a0409 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-default/tagHelper @@ -0,0 +1,9 @@ + + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs new file mode 100644 index 0000000000..cca48eedf9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes/document-editor.cs b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes/document-editor.cs new file mode 100644 index 0000000000..cca48eedf9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/track-changes/document-editor.cs @@ -0,0 +1,5 @@ + public ActionResult Default() + { + return View(); + } + diff --git a/ej2-asp-core-mvc/document-editor/track-changes.md b/ej2-asp-core-mvc/document-editor/track-changes.md index 8baa3f5213..c689ac7b2d 100644 --- a/ej2-asp-core-mvc/document-editor/track-changes.md +++ b/ej2-asp-core-mvc/document-editor/track-changes.md @@ -23,6 +23,7 @@ The following example demonstrates how to enable track changes. {% include code-snippet/document-editor-container/track-changes/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/track-changes/document-editor.cs %} {% endhighlight %}{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -32,9 +33,34 @@ The following example demonstrates how to enable track changes. {% include code-snippet/document-editor-container/track-changes/razor %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/track-changes/document-editor.cs %} {% endhighlight %}{% endtabs %} {% endif %} +>Track changes are document level settings. When opening a document, if the document does not have track changes enabled, then enableTrackChanges will be disabled even if we set enableTrackChanges={true} in the initial rendering. If you want to enable track changes for all the documents, then we recommend enabling track changes during the document change event. The following example demonstrates how to enable Track changes for the all the Document while Opening. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/track-changes-default/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Track-changes-default.cs" %} +{% include code-snippet/document-editor-container/track-changes-default/document-editor.cs %} +{% endhighlight % +}{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/track-changes-default/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Track-changes-default.cs" %} +{% include code-snippet/document-editor-container/track-changes-default/document-editor.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} ## Show/Hide Revisions Pane The Show/Hide Revisions Pane feature in the Document Editor allows users to toggle the visibility of the revisions pane, providing flexibility in managing tracked changes within the document. @@ -48,6 +74,7 @@ The following example code illustrates how to show/hide the revisions pane. {% include code-snippet/document-editor-container/toggle-track-pane/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/toggle-track-pane/document-editor.cs %} {% endhighlight %}{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -57,6 +84,7 @@ The following example code illustrates how to show/hide the revisions pane. {% include code-snippet/document-editor-container/toggle-track-pane/razor %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/toggle-track-pane/document-editor.cs %} {% endhighlight %}{% endtabs %} {% endif %} @@ -148,6 +176,7 @@ The following example code illustrates how to enforce and stop protection in Doc {% include code-snippet/document-editor-container/track-changes-only-protect/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs %} {% endhighlight %}{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -157,6 +186,7 @@ The following example code illustrates how to enforce and stop protection in Doc {% include code-snippet/document-editor-container/track-changes-only-protect/razor %} {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} +{% include code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs %} {% endhighlight %}{% endtabs %} {% endif %} From 47a81bd5afce3386ff9f1a0278180815fbe39818 Mon Sep 17 00:00:00 2001 From: Kavitha Muralitharan <98306850+KAVITHAMURALITHARAN@users.noreply.github.com> Date: Tue, 4 Feb 2025 18:39:17 +0530 Subject: [PATCH 20/39] 933118: Added review changes --- .../document-editor/how-to/customize-color-picker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md index 569852b147..913afa9e41 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-color-picker.md @@ -49,4 +49,4 @@ The following table illustrates all the possible properties for the color picker | showButtons | It is used to show / hide the control buttons (apply / cancel) of ColorPicker component. Defaults to true | ->**Note**: According to the Word document specifications, it is not possible to modify the predefined highlight colors. \ No newline at end of file +>**Note**: According to the Word document specifications, it is not possible to modify the **`Predefined Highlight colors`**. This limitation means that the range of highlight colors provided by default cannot be customized or expanded upon by the user to suit individual preferences. Consequently, users must work within the confines of the existing color palette, as no functionality currently exists to modify or personalize these predefined highlighting options. From b452f13c7cf8e3ecb38f1d92bfcae1042161468e Mon Sep 17 00:00:00 2001 From: Kavitha Muralitharan <98306850+KAVITHAMURALITHARAN@users.noreply.github.com> Date: Tue, 4 Feb 2025 18:59:46 +0530 Subject: [PATCH 21/39] 933810: Updated Review changes --- ej2-asp-core-mvc/document-editor/track-changes.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/track-changes.md b/ej2-asp-core-mvc/document-editor/track-changes.md index c689ac7b2d..c6ed04e343 100644 --- a/ej2-asp-core-mvc/document-editor/track-changes.md +++ b/ej2-asp-core-mvc/document-editor/track-changes.md @@ -37,7 +37,7 @@ The following example demonstrates how to enable track changes. {% endhighlight %}{% endtabs %} {% endif %} ->Track changes are document level settings. When opening a document, if the document does not have track changes enabled, then enableTrackChanges will be disabled even if we set enableTrackChanges={true} in the initial rendering. If you want to enable track changes for all the documents, then we recommend enabling track changes during the document change event. The following example demonstrates how to enable Track changes for the all the Document while Opening. +>Track changes are document level settings. When opening a document, if the document does not have track changes enabled, then enableTrackChanges will be disabled even if we set enableTrackChanges = true in the initial rendering. If you want to enable track changes for all the documents, then we recommend enabling track changes during the document change event. The following example demonstrates how to enable Track changes for the all the Document while Opening. {% if page.publishingplatform == "aspnet-core" %} @@ -194,4 +194,4 @@ Tracked changes only protection can be enabled in UI by using [Restrict Editing ![Enable track changes only protection](images/tracked-changes.png) -N> In enforce Protection method, first parameter denotes password and second parameter denotes protection type. Possible values of protection type are `NoProtection |ReadOnly |FormFieldsOnly |CommentsOnly |RevisionsOnly`. In stop protection method, parameter denotes the password. \ No newline at end of file +N> In enforce Protection method, first parameter denotes password and second parameter denotes protection type. Possible values of protection type are `NoProtection |ReadOnly |FormFieldsOnly |CommentsOnly |RevisionsOnly`. In stop protection method, parameter denotes the password. From 99bdc170c97931af012f5de2dfc86ed469c90221 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Tue, 4 Feb 2025 19:15:15 +0530 Subject: [PATCH 22/39] 933810: Resolved Tag issue --- .../document-editor/track-changes.md | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/track-changes.md b/ej2-asp-core-mvc/document-editor/track-changes.md index c689ac7b2d..172eee6669 100644 --- a/ej2-asp-core-mvc/document-editor/track-changes.md +++ b/ej2-asp-core-mvc/document-editor/track-changes.md @@ -24,7 +24,8 @@ The following example demonstrates how to enable track changes. {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/track-changes/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -34,7 +35,8 @@ The following example demonstrates how to enable track changes. {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/track-changes/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} >Track changes are document level settings. When opening a document, if the document does not have track changes enabled, then enableTrackChanges will be disabled even if we set enableTrackChanges={true} in the initial rendering. If you want to enable track changes for all the documents, then we recommend enabling track changes during the document change event. The following example demonstrates how to enable Track changes for the all the Document while Opening. @@ -47,8 +49,8 @@ The following example demonstrates how to enable track changes. {% endhighlight %} {% highlight c# tabtitle="Track-changes-default.cs" %} {% include code-snippet/document-editor-container/track-changes-default/document-editor.cs %} -{% endhighlight % -}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -75,7 +77,8 @@ The following example code illustrates how to show/hide the revisions pane. {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/toggle-track-pane/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -85,7 +88,8 @@ The following example code illustrates how to show/hide the revisions pane. {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/toggle-track-pane/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} ## Get all tracked revisions @@ -177,7 +181,8 @@ The following example code illustrates how to enforce and stop protection in Doc {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -187,7 +192,8 @@ The following example code illustrates how to enforce and stop protection in Doc {% endhighlight %} {% highlight c# tabtitle="Track-changes-only.cs" %} {% include code-snippet/document-editor-container/track-changes-only-protect/document-editor.cs %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} Tracked changes only protection can be enabled in UI by using [Restrict Editing pane](../document-editor/document-management#restrict-editing-pane/) From 6927d7d91f557bf8d77a14f0107aaa5a909a5a5f Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Tue, 4 Feb 2025 19:17:02 +0530 Subject: [PATCH 23/39] 933810:Resolved tag issue --- ej2-asp-core-mvc/document-editor/track-changes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/track-changes.md b/ej2-asp-core-mvc/document-editor/track-changes.md index 547b8f50f5..cd536ab510 100644 --- a/ej2-asp-core-mvc/document-editor/track-changes.md +++ b/ej2-asp-core-mvc/document-editor/track-changes.md @@ -200,4 +200,4 @@ Tracked changes only protection can be enabled in UI by using [Restrict Editing ![Enable track changes only protection](images/tracked-changes.png) -N> In enforce Protection method, first parameter denotes password and second parameter denotes protection type. Possible values of protection type are `NoProtection |ReadOnly |FormFieldsOnly |CommentsOnly |RevisionsOnly`. In stop protection method, parameter denotes the password. +N> In enforce Protection method, first parameter denotes password and second parameter denotes protection type. Possible values of protection type are `NoProtection |ReadOnly |FormFieldsOnly |CommentsOnly |RevisionsOnly`. In stop protection method, parameter denotes the password. \ No newline at end of file From e41bac9482f529af82c6dcbd47fd0ced2c478e9f Mon Sep 17 00:00:00 2001 From: Kavitha Muralitharan <98306850+KAVITHAMURALITHARAN@users.noreply.github.com> Date: Tue, 4 Feb 2025 19:24:49 +0530 Subject: [PATCH 24/39] 935866: Updated Review changes --- ej2-asp-core-mvc/document-editor/section-format.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/section-format.md b/ej2-asp-core-mvc/document-editor/section-format.md index 11cbd7a932..29e671e6bd 100644 --- a/ej2-asp-core-mvc/document-editor/section-format.md +++ b/ej2-asp-core-mvc/document-editor/section-format.md @@ -35,11 +35,7 @@ documenteditor.selection.sectionFormat.bottomMargin = 10; documenteditor.selection.sectionFormat.topMargin = 10; ``` -When the maximum Margin value of limit is reached, an alert will appear, as follow - -![Margin Limit Alert](images/Margin_Limit_Alert.PNG) - ->Note: The maximum value of Margin is 1584, as per Microsoft Word application and you can set any value less than 1584 to this property. If you set any value greater than 1584, then Syncfusion Document editor will automatically reset as 1584. +>Note: The maximum value of Margin is 1584, as per Microsoft Word application and you can set any value less than or equal to 1584 to this property. If you set any value greater than 1584, then Syncfusion Document editor will automatically reset as 1584. ## Header distance @@ -59,4 +55,4 @@ documenteditor.selection.sectionFormat.footerDistance = 72; ## See Also -* [Pagesetup dialog](../document-editor/dialog#page-setup-dialog) \ No newline at end of file +* [Pagesetup dialog](../document-editor/dialog#page-setup-dialog) From 98f9e5f7c6cf14df419607b890aca88b26e05266 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Tue, 4 Feb 2025 19:34:24 +0530 Subject: [PATCH 25/39] 935866: Removed image --- .../images/Margin_Limit_Alert.png | Bin 64768 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png diff --git a/ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png b/ej2-asp-core-mvc/document-editor/images/Margin_Limit_Alert.png deleted file mode 100644 index fac22e3bd314f0550ace26dda62a4d3748cacd11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64768 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

I#ayZOW2s@l(=l+i$S2T z&bvnaM1D`HB~*Cs%#kv`Mli4$H&8QN&vK9spPbT~1j?!goMERlK6NU^pssWG@X%Nj zH|rg+E0UU|0FP9KedNU~)Zzlq=c{@D0Dmv;!r2Lt9Wkh_pq`f!bK~NR^5|1SKORN% zY24SO_3b`4JfrS2k?R8{4y~bVv|i1S6ZYBKDgnaRdyZL}0qCu0dXOLZ)g0qw36@pk zsezjlxd^V1fm}-6BV$PY>E@g6WgI zKzWaycBx0T`__DLe&xkTjz4+)5${`pfol+QG@$J16;0jAmr%eWvK$OPF-{xO%nPX7 zIOuL0aHRcrz_U#WbJOu*OMH?MKwqgP&n3MY%B}(XNobp<%N1-$h;M=-OM~xqUn^V zII9bsym)x$)+3f}e`l-yt)E cPu893H#XG7Pe* Date: Tue, 4 Feb 2025 20:16:40 +0530 Subject: [PATCH 26/39] 378279: Updated Review Changes --- ej2-asp-core-mvc/document-editor/table.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/table.md b/ej2-asp-core-mvc/document-editor/table.md index 2bdc990b1b..3300af5d88 100644 --- a/ej2-asp-core-mvc/document-editor/table.md +++ b/ej2-asp-core-mvc/document-editor/table.md @@ -21,7 +21,7 @@ You can create and insert a table at cursor position by specifying the required documenteditor.editor.insertTable(3,3); ``` -## Set the maximum number of Rows +## Set the maximum number of Rows when inserting a table {% if page.publishingplatform == "aspnet-core" %} @@ -70,9 +70,9 @@ When the maximum row limit is reached, an alert will appear, as follow ![Row Limit Alert](images/Row_Limit_Alert.PNG) ->Note: The maximum value is 32767, as per Microsoft Word application and you can set any value less than 32767 to this property. If you set any value greater than 32767, then Syncfusion Document editor will automatically reset as 32767. +>Note: The maximum value of Row is 32767, as per Microsoft Word application and you can set any value less than 32767 to this property. -## Set the maximum number of Columns +## Set the maximum number of Columns when inserting a table {% if page.publishingplatform == "aspnet-core" %} @@ -97,7 +97,7 @@ Refer to the following sample code. {% elsif page.publishingplatform == "aspnet-mvc" %} -You can use the `maximumColumns` property to set the maximum number of rows allowed while inserting a table in the Document Editor component. +You can use the `maximumColumns` property to set the maximum number of columns allowed while inserting a table in the Document Editor component. Refer to the following sample code. @@ -123,7 +123,7 @@ When the maximum column limit is reached, an alert will appear, as follow ![Column Limit Alert](images/Column_Limit_Alert.PNG) ->Note: The maximum value is 63, as per Microsoft Word application and you can set any value less than 63 to this property. If you set any value greater than 63, then Syncfusion Document editor will automatically reset as 63. +>Note: The maximum value of Column is 63, as per Microsoft Word application and you can set any value less than 63 to this property. ## Insert rows @@ -268,4 +268,4 @@ The following sample demonstrates how to delete the table row or columns, merge ## See Also * [Feature modules](../document-editor/feature-module/) -* [Insert table dialog](../document-editor/dialog/#table-dialog) \ No newline at end of file +* [Insert table dialog](../document-editor/dialog/#table-dialog) From d3ade686dfb5019769740e4082fa8dd466157da2 Mon Sep 17 00:00:00 2001 From: Kavitha Muralitharan <98306850+KAVITHAMURALITHARAN@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:04:43 +0530 Subject: [PATCH 27/39] 378279: Updated Review Changes --- ej2-asp-core-mvc/document-editor/table.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/table.md b/ej2-asp-core-mvc/document-editor/table.md index 3300af5d88..c0cef2f4dc 100644 --- a/ej2-asp-core-mvc/document-editor/table.md +++ b/ej2-asp-core-mvc/document-editor/table.md @@ -70,7 +70,7 @@ When the maximum row limit is reached, an alert will appear, as follow ![Row Limit Alert](images/Row_Limit_Alert.PNG) ->Note: The maximum value of Row is 32767, as per Microsoft Word application and you can set any value less than 32767 to this property. +>Note: The maximum value of Row is 32767, as per Microsoft Word application and you can set any value less than or equal to 32767 to this property. ## Set the maximum number of Columns when inserting a table @@ -123,7 +123,7 @@ When the maximum column limit is reached, an alert will appear, as follow ![Column Limit Alert](images/Column_Limit_Alert.PNG) ->Note: The maximum value of Column is 63, as per Microsoft Word application and you can set any value less than 63 to this property. +>Note: The maximum value of Column is 63, as per Microsoft Word application and you can set any value less than or equal to 63 to this property. ## Insert rows From 33a795fac3c76c54e648c30c097d41809a69b538 Mon Sep 17 00:00:00 2001 From: Kavitha Muralitharan <98306850+KAVITHAMURALITHARAN@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:07:27 +0530 Subject: [PATCH 28/39] 378279: Updated Review Changes --- ej2-asp-core-mvc/document-editor/table.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/document-editor/table.md b/ej2-asp-core-mvc/document-editor/table.md index c0cef2f4dc..68811c5762 100644 --- a/ej2-asp-core-mvc/document-editor/table.md +++ b/ej2-asp-core-mvc/document-editor/table.md @@ -76,7 +76,7 @@ When the maximum row limit is reached, an alert will appear, as follow {% if page.publishingplatform == "aspnet-core" %} -You can use the `maximumColumns` property to set the maximum number of rows allowed while inserting a table in the Document Editor component. +You can use the `maximumColumns` property to set the maximum number of columns allowed while inserting a table in the Document Editor component. Refer to the following sample code. From 0416fc8723b763b35213e28c72ff2ea74c1bc258 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Wed, 5 Feb 2025 12:58:28 +0530 Subject: [PATCH 29/39] 817044: Modified Reference Image --- .../document-editor/images/fontColor.png | Bin 61517 -> 90239 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ej2-asp-core-mvc/document-editor/images/fontColor.png b/ej2-asp-core-mvc/document-editor/images/fontColor.png index bdaaa90e7652524d9ba6e1c64c6aa8a91d1d813d..3568c2c6c4fe35b239640cc9cb2a7bc6e47f7fce 100644 GIT binary patch literal 90239 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 P^8& Date: Thu, 13 Feb 2025 18:43:28 +0530 Subject: [PATCH 30/39] 378201: Added wrap text for toolbar on CoreMVC --- .../document-editor/custom-toolbar/razor | 15 ++++++++++++++- .../document-editor/custom-toolbar/tagHelper | 15 ++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/razor b/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/razor index 904635e29b..f66b2d964f 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/razor +++ b/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/razor @@ -8,7 +8,7 @@ var toolItem = { prefixIcon: "e-de-ctnr-lock", tooltipText: "Disable Image", - text: "Disable Image", + text: onWrapText("Disable Image"), id: "Custom" }; container.toolbarItems = [toolItem, 'Undo', 'Redo', 'Separator', 'Image', 'Table', 'Hyperlink', 'Bookmark', 'TableOfContents', 'Separator', 'Header', 'Footer', 'PageSetup', 'PageNumber', 'Break', 'InsertFootnote', 'InsertEndnote', 'Separator', 'Find', 'Separator', 'Comments', 'TrackChanges', 'Separator', 'LocalClipboard', 'RestrictEditing', 'Separator', 'FormFields', 'UpdateFields','ContentControl']; @@ -21,4 +21,17 @@ } }; } + + function onWrapText(text) { + let content = ''; + const index = text.lastIndexOf(' '); + + if (index !== -1) { + content = text.slice(0, index) + "

"; + } else { + content = text; + } + + return content; + } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/tagHelper index 2fe34e4560..437e447777 100644 --- a/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/document-editor/custom-toolbar/tagHelper @@ -5,7 +5,7 @@ var toolItem = { prefixIcon: "e-de-ctnr-lock", tooltipText: "Disable Image", - text: "Disable Image", + text: onWrapText("Disable Image"), id: "Custom" }; container.toolbarItems = [toolItem, 'Undo', 'Redo', 'Separator', 'Image', 'Table', 'Hyperlink', 'Bookmark', 'TableOfContents', 'Separator', 'Header', 'Footer', 'PageSetup', 'PageNumber', 'Break', 'InsertFootnote', 'InsertEndnote', 'Separator', 'Find', 'Separator', 'Comments', 'TrackChanges', 'Separator', 'LocalClipboard', 'RestrictEditing', 'Separator', 'FormFields', 'UpdateFields','ContentControl']; @@ -18,4 +18,17 @@ } }; } + + function onWrapText(text) { + let content = ''; + const index = text.lastIndexOf(' '); + + if (index !== -1) { + content = text.slice(0, index) + "
" + text.slice(index + 1) + "
"; + } else { + content = text; + } + + return content; + } From bada52ac1e02f248cba06aad7b81d7910acbe46f Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Mon, 7 Apr 2025 13:57:45 +0530 Subject: [PATCH 31/39] 938302: Added code for custom context menu with sub-menu items in Core and MVC --- .../customize-sub-context-menu/razor | 38 ++++++++++++++++++ .../customize-sub-context-menu/tagHelper | 39 +++++++++++++++++++ .../how-to/customize-context-menu.md | 24 ++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/razor create mode 100644 ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/tagHelper diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/razor new file mode 100644 index 0000000000..ef0ae7c5e7 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/razor @@ -0,0 +1,38 @@ +@Html.EJS().DocumentEditorContainer("container").Created("onCreated").EnableToolbar(true).Render() + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/tagHelper new file mode 100644 index 0000000000..26af90f131 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-sub-context-menu/tagHelper @@ -0,0 +1,39 @@ +
+ +
+ \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-context-menu.md b/ej2-asp-core-mvc/document-editor/how-to/customize-context-menu.md index 0ec79a94dc..0149b5d3f1 100644 --- a/ej2-asp-core-mvc/document-editor/how-to/customize-context-menu.md +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-context-menu.md @@ -90,3 +90,27 @@ The following code shows how to hide or show added custom option in context menu {% endhighlight %}{% endtabs %} {% endif %} +#### Customize Context Menu with sub-menu items + +Document Editor allows you to customize the Context Menu with sub-menu items. It can be achieved by using the `addCustomMenu()` method. + +The following code shows how to add a sub items in the custom option in context menu in Document Editor Container. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-sub-context-menu/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-sub-context-menu" %} +{% endhighlight %}{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-sub-context-menu/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-sub-context-menu" %} +{% endhighlight %}{% endtabs %} +{% endif %} \ No newline at end of file From d78903475729867217e123209b1dfac07a31c4ee Mon Sep 17 00:00:00 2001 From: hillary-ochieng Date: Mon, 28 Apr 2025 16:31:47 +0300 Subject: [PATCH 32/39] SEO-199759-aspnetcore-grid-docs --- .../grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md index 802ee210d7..750942de90 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md @@ -249,4 +249,4 @@ In the following image, you can see how many records will be scrollable when set ### Solution 3: Using paging instead of virtual scrolling -Similar to virtual scrolling, the [paging](https://ej2.syncfusion.com/aspnetcore/documentation/grid/paging/) feature also loads the data in an on-demand concept. Pagination is also compatible with all the other features(Grouping, Editing, etc.) in Grid. So, use the `paging` feature instead of virtual scrolling to view a large number of records in the Grid without any kind of performance degradation or browser height limitation. \ No newline at end of file +Similar to virtual scrolling, the [paging](https://ej2.syncfusion.com/aspnetcore/documentation/grid/paging) feature also loads the data in an on-demand concept. Pagination is also compatible with all the other features(Grouping, Editing, etc.) in Grid. So, use the `paging` feature instead of virtual scrolling to view a large number of records in the Grid without any kind of performance degradation or browser height limitation. \ No newline at end of file From 8f9d419d3e2858f8b3401fa2a02b929c013b88ea Mon Sep 17 00:00:00 2001 From: hillary-ochieng Date: Mon, 28 Apr 2025 16:50:05 +0300 Subject: [PATCH 33/39] SEO-199759-aspnetcore-installation-docs --- .../EJ2_ASP.NETCORE/installation/install-nuget-packages.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/install-nuget-packages.md b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/install-nuget-packages.md index b635ffd94a..755c628089 100644 --- a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/install-nuget-packages.md +++ b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/install-nuget-packages.md @@ -46,7 +46,7 @@ The NuGet **Package Manager UI** allows to search, install, uninstall, and updat ![ASP.NET Core NuGet Packages Install](images/InstallNuGet.png) -5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction/) for development. +5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction) for development. ## Installation using Dotnet (.NET) CLI @@ -72,7 +72,7 @@ Follow the below instructions to use the dotnet CLI command to install the Syncf N> Restoring is done automatically with **dotnet build** and **dotnet run** in .NET Core 2.0 and later. -5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction/) for development. +5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction) for development. ## Installation using Package Manager Console @@ -110,4 +110,4 @@ The **Package Manager Console** saves NuGet packages installation time since you 4. The NuGet package manager console will install the Syncfusion® ASP.NET Core JS2 NuGet package as well as the dependencies it has. When the installation is complete, the console will show that your Syncfusion® ASP.NET Core JS2 package has been successfully added to the application. -5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction/) for development. \ No newline at end of file +5. At this point, your application has all the required Syncfusion® assemblies, and you will be ready to start building high-performance, responsive app with [Syncfusion® ASP.NET Core JS2 components](https://www.syncfusion.com/aspnet-core-ui-controls). Also, you can refer to the [ASP.NET Core JS2 help document](https://ej2.syncfusion.com/aspnetcore/documentation/introduction) for development. \ No newline at end of file From 1a31721f3c3b20c7fc807f010fbc57494a77bc93 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Tue, 29 Apr 2025 15:11:28 +0530 Subject: [PATCH 34/39] 951777: Grouped the Rich Text Editor documentation topics and Modified feature module section - HotfixMvc --- .../{ => editor-types}/editor-mode.md | 4 +- .../EJ2_ASP.MVC/{ => editor-types}/iframe.md | 2 +- .../{ => editor-types}/inline-editing.md | 2 +- .../{ => editor-types}/resizable-editor.md | 4 +- .../{ => insert-image-media}/audio.md | 8 +- .../{ => insert-image-media}/file-browser.md | 0 .../{ => insert-image-media}/insert-images.md | 12 +- .../{ => insert-image-media}/video.md | 14 +- .../{ => smart-editing}/emoji-picker.md | 2 +- .../{ => smart-editing}/mentions.md | 2 +- .../{ => smart-editing}/slash-menu.md | 0 .../EJ2_ASP.MVC/toolbar/quick-toolbar.md | 231 +++++++ .../EJ2_ASP.MVC/toolbar/toolbar-types.md | 137 ++++ .../EJ2_ASP.MVC/tools/built-in-tools.md | 193 ++++++ .../EJ2_ASP.MVC/tools/custom-tools.md | 70 +++ .../EJ2_ASP.MVC/tools/styling-tools.md | 234 +++++++ .../EJ2_ASP.MVC/tools/text-formatting.md | 583 ++++++++++++++++++ .../{ => validation-security}/form-support.md | 4 +- .../read-only-mode.md | 2 +- .../xhtml-validation.md | 0 .../{ => editor-types}/editor-mode.md | 6 +- .../{ => editor-types}/iframe.md | 2 +- .../{ => editor-types}/inline-editing.md | 2 +- .../{ => editor-types}/resizable-editor.md | 4 +- .../{ => insert-image-media}/audio.md | 8 +- .../{ => insert-image-media}/file-browser.md | 0 .../{ => insert-image-media}/insert-images.md | 12 +- .../{ => insert-image-media}/video.md | 14 +- .../{ => smart-editing}/emoji-picker.md | 2 +- .../{ => smart-editing}/mentions.md | 2 +- .../{ => smart-editing}/slash-menu.md | 0 .../EJ2_ASP.NETCORE/toolbar/quick-toolbar.md | 231 +++++++ .../EJ2_ASP.NETCORE/toolbar/toolbar-types.md | 137 ++++ .../EJ2_ASP.NETCORE/tools/built-in-tools.md | 193 ++++++ .../EJ2_ASP.NETCORE/tools/custom-tools.md | 70 +++ .../EJ2_ASP.NETCORE/tools/styling-tools.md | 234 +++++++ .../EJ2_ASP.NETCORE/tools/text-formatting.md | 583 ++++++++++++++++++ .../{ => validation-security}/form-support.md | 6 +- .../read-only-mode.md | 2 +- .../xhtml-validation.md | 0 .../rich-text-editor/images/image-del.png | Bin 16659 -> 21474 bytes ej2-asp-core-toc.html | 63 +- ej2-asp-mvc-toc.html | 61 +- 43 files changed, 3045 insertions(+), 91 deletions(-) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => editor-types}/editor-mode.md (96%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => editor-types}/iframe.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => editor-types}/inline-editing.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => editor-types}/resizable-editor.md (94%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => insert-image-media}/audio.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => insert-image-media}/file-browser.md (100%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => insert-image-media}/insert-images.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => insert-image-media}/video.md (96%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => smart-editing}/emoji-picker.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => smart-editing}/mentions.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => smart-editing}/slash-menu.md (100%) create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/quick-toolbar.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-types.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/custom-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/styling-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => validation-security}/form-support.md (94%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => validation-security}/read-only-mode.md (96%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/{ => validation-security}/xhtml-validation.md (100%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => editor-types}/editor-mode.md (95%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => editor-types}/iframe.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => editor-types}/inline-editing.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => editor-types}/resizable-editor.md (94%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => insert-image-media}/audio.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => insert-image-media}/file-browser.md (100%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => insert-image-media}/insert-images.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => insert-image-media}/video.md (96%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => smart-editing}/emoji-picker.md (98%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => smart-editing}/mentions.md (97%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => smart-editing}/slash-menu.md (100%) create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/quick-toolbar.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-types.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/custom-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/styling-tools.md create mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => validation-security}/form-support.md (90%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => validation-security}/read-only-mode.md (96%) rename ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/{ => validation-security}/xhtml-validation.md (100%) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-mode.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/editor-mode.md similarity index 96% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-mode.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/editor-mode.md index 1f7624c711..d9ba399501 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-mode.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/editor-mode.md @@ -77,9 +77,9 @@ The third-party library such as [`Marked`](https://marked.js.org/#/README.md#REA {% endtabs %} {% endif %} -For further details on Markdown editing, refer to the [`Markdown`](./markdown) +For further details on Markdown editing, refer to the [`Markdown`](../../../markdown-editor/EJ2_ASP.MVC/getting-started) ## See Also -* [How to integrate the third party library](./third-party-integration/) +* [How to integrate the third party library](../third-party-integration/) * [How to render the iframe](./iframe/) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/iframe.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/iframe.md similarity index 98% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/iframe.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/iframe.md index 6a85c0ceca..31b9862b5d 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/iframe.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/iframe.md @@ -105,4 +105,4 @@ Likewise, add the external script file to the `< iframe >` element using the `sc ## See Also * [Implementing Inline Editing](./inline-editing) -* [Using the Markdown Editor](./markdown) \ No newline at end of file +* [Using the Markdown Editor](../../../markdown-editor/EJ2_ASP.MVC/getting-started) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/inline-editing.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/inline-editing.md similarity index 97% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/inline-editing.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/inline-editing.md index e034092740..6908f9f909 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/inline-editing.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/inline-editing.md @@ -45,4 +45,4 @@ This feature enhances the inline editing experience by providing immediate acces {% endtabs %} {% endif %} -![Rich Text Editor InlineMode](../images/inline.png) \ No newline at end of file +![Rich Text Editor InlineMode](../../images/inline.png) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/resizable-editor.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md similarity index 94% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/resizable-editor.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md index 6f5752d0da..db1b3ea1bc 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/resizable-editor.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md @@ -37,7 +37,7 @@ The following sample demonstrates the resizable feature. {% endtabs %} {% endif %} -![Rich Text Editor Resizable support](./images/Resizable-Editor.png) +![Rich Text Editor Resizable support](../../images/Resizable-Editor.png) ## Setting Editor Resize Limits @@ -82,4 +82,4 @@ By default, the control resizes up to the current viewport size. Apply these sty ## See Also * [Working with IFrame Editing Mode](./iframe) -* [Using the Markdown Editor](./markdown) \ No newline at end of file +* [Using the Markdown Editor](../../../markdown-editor/EJ2_ASP.MVC/getting-started) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/audio.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md similarity index 97% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/audio.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md index c5cbc86e73..0b8165fd12 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/audio.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md @@ -67,7 +67,7 @@ You can insert audio from either the hosted link or the local machine, by clicki By default, the audio tool opens the audio dialog, allowing you to insert audio from an online source. Inserting the URL will be added to the `src` attribute of the `` tag. -![Rich Text Editor Audio insert](../images/aspcore-richtexteditor-audio-web.png) +![Rich Text Editor Audio insert](../../images/aspcore-richtexteditor-audio-web.png) ## Uploading Audio from Local Machine @@ -206,7 +206,7 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need Once an audio file has been inserted, you can change it using the Rich Text Editor [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) `AudioReplace` option. You can replace the audio file using the web URL or the browse option in the audio dialog. -![Rich Text Editor Audio replace](../images/aspcore-richtexteditor-audio-replace.png) +![Rich Text Editor Audio replace](../../images/aspcore-richtexteditor-audio-replace.png) ## Deleting Audios @@ -214,7 +214,7 @@ To remove audio from the Rich Text Editor content, select the audio and click th Once you select the audio from the local machine, the URL for the audio will be generated. You can remove the audio from the service location by clicking the cross icon. -![Rich Text Editor Audio delete](../images/aspcore-richtexteditor-audio-del.png) +![Rich Text Editor Audio delete](../../images/aspcore-richtexteditor-audio-del.png) ## Configuring Audio Display Position @@ -276,6 +276,6 @@ By configuring these options in the [QuickToolbarSettings](https://help.syncfusi ## See Also -* [Quick Toolbars in the Toolbar](./toolbar#quick-inline-toolbar) +* [Quick Toolbars in the Toolbar](../toolbar/quick-toolbar) * [How to Use the Video Editing Option in Toolbar Items](./video) * [How to Use the Image Editing Option in Toolbar Items](./insert-images) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/file-browser.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/file-browser.md similarity index 100% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/file-browser.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/file-browser.md diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-images.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md similarity index 98% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-images.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md index f8d31eeb46..3e567adca5 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-images.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md @@ -156,7 +156,7 @@ To remove an image from the Rich Text Editor content, select the image and click Once you select the image from the local machine, the URL for the image will be generate. From there, you can remove the image from the service location by clicking the cross icon. -![Rich Text Editor Image delete](./images/image-del.png) +![Rich Text Editor Image delete](../../images/image-del.png) The following sample explains, how to configure `RemoveUrl` to remove a saved image from the remote service location, when the following image remove actions are performed: @@ -194,7 +194,7 @@ Sets the default width and height of the image when it is inserted in the Rich T Through the quick toolbar, change the width and height using `Change Size` option. Once you click, the Image Size dialog box will open as follows. In that you can specify the width and height of the image in pixel. -![Rich Text Editor Image dimension](./images/image-size.png) +![Rich Text Editor Image dimension](../../images/image-size.png) ## Adding Captions and Alt Text to Images @@ -238,13 +238,13 @@ Sets the default display for an image when it is inserted in the Rich Text Edito The hyperlink itself can be an image in Rich Text Editor. If the image given as hyperlink, remove, edit and open link will be added to the quick toolbar of image. For further details about link, see the [`link documentation`](./link) documentation. -![Rich Text Editor image with link](./images/image-link.png) +![Rich Text Editor image with link](../../images/image-link.png) ## Image Resizing Tools Rich Text Editor has a built-in image inserting support. The resize points will be appearing on each corner of image when focus. So, users can resize the image using mouse points or thumb through the resize points easily. Also, the resize calculation will be done based on aspect ratio. -![Rich Text Editor image resize](./images/image-resize.png) +![Rich Text Editor image resize](../../images/image-resize.png) ## Configuring Allowed Image Types @@ -331,5 +331,5 @@ By configuring these options in the [QuickToolbarSettings](https://help.syncfusi ## See Also -* [Image Quick toolbar](./toolbar#quick-inline-toolbar) -* [Hyperlink Management](./link) \ No newline at end of file +* [Image Quick toolbar](../toolbar/quick-toolbar#image-quick-toolbar) +* [Hyperlink Management](../link) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/video.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md similarity index 96% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/video.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md index 2fa068558d..5794843537 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/video.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md @@ -67,13 +67,13 @@ You can insert a video from either a hosted link or your local machine by clicki The insert video dialog opens with the `Embedded code` option selected by default. This allows you to insert a video using embedded code. -![Rich Text Editor Embed URL Video insert](./images/aspcore-richtexteditor-video-embed.png) +![Rich Text Editor Embed URL Video insert](../../images/aspcore-richtexteditor-video-embed.png) ### Inserting Video via Web URL You can switch to the `Web URL` option by selecting the Web URL checkbox. Inserting a video using the Web URL option will add the video URL as the `src` attribute of the `` tag. -![Rich Text Editor Video insert](./images/aspcore-richtexteditor-video-web.png) +![Rich Text Editor Video insert](../../images/aspcore-richtexteditor-video-web.png) ## Uploading Video from Local Machine @@ -211,9 +211,9 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can Once a video file has been inserted, you can replace it using the Rich Text Editor [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) `VideoReplace` option. You can replace the video file either by using the embedded code or the web URL and the browse option in the video dialog. -![Rich Text Editor Embed Video replace](./images/video-replace-embed.png) +![Rich Text Editor Embed Video replace](../../images/video-replace-embed.png) -![Rich Text Editor Web Video replace](./images/video-replace-web.png) +![Rich Text Editor Web Video replace](../../images/video-replace-web.png) ## Deleting Video @@ -221,7 +221,7 @@ To remove a video from the Rich Text Editor content, select the video and click Once you select the video from the local machine, the URL for the video will be generated. You can remove the video from the service location by clicking the cross icon. -![Rich Text Editor Video delete](./images/video-del.png) +![Rich Text Editor Video delete](../../images/video-del.png) ## Adjusting Video Dimensions @@ -230,7 +230,7 @@ Set the default width, minWidth, height, and minHeight of the video element when Through the [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video), you can also change the width and height using the `Change Size` button. Once you click on the button, the video size dialog will open as below. In that, specify the width and height of the video in pixels. -![Rich Text Editor Video dimension](./images/video-size.png) +![Rich Text Editor Video dimension](../../images/video-size.png) ## Configuring Video Display Position @@ -270,7 +270,7 @@ You can disable the resize action by configuring `false` for the [InsertVideoSet > If the [MinWidth](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinWidth) and [MinHeight](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinHeight) properties are configured, the video resizing does not shrink below the specified values. -![Rich Text Editor video resize](./images/aspcore-richtexteditor-video-resize.png) +![Rich Text Editor video resize](../../images/aspcore-richtexteditor-video-resize.png) ## Customizing the Video Quick Toolbar diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/emoji-picker.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md similarity index 98% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/emoji-picker.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md index 8009b69b8b..0f03b8ae6f 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/emoji-picker.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md @@ -50,7 +50,7 @@ The following code example shows how to add the emoji picker tool in the Rich Te Quickly access the emoji picker by pressing the colon (:) key while typing a word prefix in an editor, allowing instant emoji selection and display. Moreover, continue typing in the editor after the colon (:) to filter and refine your search for the desired emojis. -![Rich Text Editor Emoji Picker](../images/emoji-picker-shorcut.png) +![Rich Text Editor Emoji Picker](../../images/emoji-picker-shorcut.png) ## Navigating and Selecting Emojis Using the Keyboard diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/mentions.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md similarity index 97% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/mentions.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md index 76711876e9..c5f440bddb 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/mentions.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md @@ -34,7 +34,7 @@ In the following sample, we configured the following properties with popup dimen {% endhighlight %} {% endtabs %} -![ASP.NET MVC mention integration ](../images/mention-integration.png) +![ASP.NET MVC mention integration ](../../images/mention-integration.png) > [View Sample](https://ej2.syncfusion.com/aspnetmvc/RichTextEditor/MentionIntegration#/bootstrap5) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/slash-menu.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/slash-menu.md similarity index 100% rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/slash-menu.md rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/slash-menu.md diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/quick-toolbar.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/quick-toolbar.md new file mode 100644 index 0000000000..e6bcddd237 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/quick-toolbar.md @@ -0,0 +1,231 @@ +--- +layout: post +title: Quick toolbars in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Quick toolbars in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Quick toolbars +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Quick Toolbars in the ##Platform_Name## Rich Text Editor Control + +The Rich Text Editor has quick toolbars that act as context-menus, appearing when you click on elements like images, links, audio, video, and tables. By default, specific quick toolbar items are displayed when clicking on the corresponding element. You can customize these items using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. + +## Image quick toolbar + +You can customize the quick toolbar options for images using the `image` property within the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Image). The Rich Text Editor provides essential tools such as 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText', and 'Dimension' allowing seamless image management and editing directly within the content. + +By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Image) property, you can enhance the editor’s functionality, ensuring a user-friendly experience for efficiently handling image elements. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/image-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/image-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/image-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/image-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Link quick toolbar + +The link quick toolbar appears when you click on a link in the editor. You can customize its items using the `link` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Link). + +The Rich Text Editor provides essential tools in the link quick toolbar, including "Open", "Edit Link", "Remove Link", and "Custom Tool". + +The following example demonstrates how to customize the link quick toolbar using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Link) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/link-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/link-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/link-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/link-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Table quick toolbar + +The table quick toolbar opens when you click anywhere within a table. Customize its items using the `table` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Table). + +The quick toolbar appears when clicking on a table, providing easy access to table-related commands. You can customize the quick toolbar by adding or removing tools using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Table) property. + +The following sample demonstrates the customiztion of table quick toolbar. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/table-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/table-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/table-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/table-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Audio quick toolbar + +Customize the quick toolbar items for audio elements using the `audio` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio).The Rich Text Editor provides essential tools such as "AudioReplace", "Remove", and "AudioLayoutOption", allowing seamless management and editing of audio content. + +By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) property, you can enhance the editor’s capabilities, ensuring a user-friendly experience for handling audio elements efficiently. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/audio-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/audio-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/audio-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/audio-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Video quick toolbar + +The video quick toolbar appears when you click on a video element. You can customize its tools using the `video` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video). + +The Rich Text Editor allows you to tailor the video quick toolbar with essential tools such as "VideoReplace", "VideoAlign", "VideoRemove", "VideoLayoutOption", and "VideoDimension", enabling seamless management of embedded videos. + +By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) property, you enhance the editor’s capabilities, ensuring a user-friendly experience for editing and customizing video elements effortlessly. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/video-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/video-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/video-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/video-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Text quick toolbar + +The text quick toolbar provides easy access to commonly used formatting tools, enabling users to apply styles and adjustments effortlessly. This enhances the editing experience by streamlining text formatting. + +Customize the quick toolbar items using the `text` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Text). Any toolbar items available in the Rich Text Editor can be configured for the text quick toolbar. The example below demonstrates its customization. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-quick-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-quick-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-quick-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Quick inline toolbar + +Quick commands are opened as context-menu on clicking the corresponding element. The commands must be passed as string collection to image, text, link and table attributes of the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. + +| Target Element | Default Quick Toolbar items | +|----------------|---------| +|image | 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText','Dimension'.| +| link | 'Open', 'Edit', 'UnLink'.| +| text | null
(Any toolbar [items](https://ej2.syncfusion.com/aspnetmvc/documentation/rich-text-editor/toolbar) in the Rich Text Editor can be configured here).| +| table| 'TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'.| + +Custom tool can be added to the corresponding quick toolbar, using [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. + +The below sample demonstrates the option to insert the image to the Rich Text Editor content as well as option to rotate the image through the quick toolbar. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quick-inline/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quick-inline/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-types.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-types.md new file mode 100644 index 0000000000..55eda1045c --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-types.md @@ -0,0 +1,137 @@ +--- +layout: post +title: Toolbar types in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Toolbar types in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Toolbar types +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Toolbar in the ##Platform_Name## Rich Text Editor Control + +The Syncfusion ##Platform_Name## Rich Text Editor provides a powerful toolbar that enables users to format, style, and edit content efficiently. The toolbar includes essential editing tools such as bold, italic, underline, alignment, and lists, along with customization options to suit different use cases. + +To learn about the different types of toolbars in the ASP.NET MVC Rich Text Editor, watch this video: + +{% youtube "youtube:https://www.youtube.com/watch?v=09tBgKpjgjU"%} + +The Rich Text Editor allows you to configure different types of toolbar using [type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Type) field in [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The types of toolbar are: + +1. Expand +2. MultiRow +3. Scrollable + +## Expanding the toolbar + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-expand/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-expand/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Configuring a multi-row toolbar + +Setting the `type` as `MultiRow` in [`toolbarSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will arrange the toolbar items across multiple rows, displaying all configured toolbar items. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-multi/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-multi/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Implementing a scrollable toolbar + +Setting the `type` to `Scrollable` in [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display the toolbar items in a single line, enabling horizontal scrolling in the toolbar. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/scrollable/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/scrollable/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/scrollable/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/scrollable/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Creating a sticky toolbar + +By default, the toolbar remains fixed at the top of the Rich Text Editor when scrolling. You can customize the position of this sticky toolbar by setting the [floatingToolbarOffset](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FloatingToolbarOffset) to adjust its offset from the top of the document. + +Additionally, you can enable or disable the floating toolbar using the [enableFloating](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_EnableFloating) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/floating-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/floating-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## See also + +* [Customizing Rich Text Editor Toolbar Styles](../style#customizing-the-rich-text-editors-toolbar) +* [Implementing Inline Editing](../editor-types/inline-editing) +* [Customizing Accessibility Shortcut Keys](../accessibility#keyboard-navigation) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md new file mode 100644 index 0000000000..0b71a487a2 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md @@ -0,0 +1,193 @@ +--- +layout: post +title: Toolbar types in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Toolbar types in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Toolbar types +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Built-in Tools in the ##Platform_Name## Rich Text Editor Control + +By default, the ASP.NET MVC Rich Text Editor displays the following toolbar items: + +> `Bold` , `Italic` , `Underline` , `|` , `Formats` , `Alignments` , `Blockquote`, `OrderedList` , `UnorderedList` , `|` , `CreateLink` , `Image` , `|` , `SourceCode` , `Undo` , `Redo` + +These default items cover essential text editing features, such as text formatting, lists, alignment, and linking. + +## Available Toolbar Items + +The following table shows the list of available tools in the Rich Text Editor's toolbar. + +The order of items in the toolbar can be customized to meet your application's requirements. If no specific order is set, the editor will render the above default toolbar items. Below is a list of all available toolbar items in the Rich Text Editor. + +### Text formatting + +It provides tools for applying text styles such as bold, italic, underline, strike-through, and more to modify the appearance of the text. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Bold | ![Bold icon](../../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | +| Italic | ![Italic icon](../../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | +| Underline | ![Underline icon](../../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| +| ClearFormat | ![ClearFormat icon](../../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| +| Blockquote | ![Blockquote icon](../../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| +| SubScript | ![SubScript icon](../../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| +| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| + +### Font & styling + +Tools in this section allow users to customize font properties such as font family, size, color, background color, and paragraph formatting. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| FontName | ![FontName icon](../../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| +| FontSize | ![FontSize icon](../../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| +| FontColor | ![FontColor icon](../../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| +| BackgroundColor | ![BackgroundColor icon](../../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| +| Formats (Paragraph, Headings) | ![Format icon](../../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| + +### Alignment + +This section provides alignment options for the text or content, allowing users to justify text or align it to the left, center, or right. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Alignment | ![Alignment icon](../../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| +| JustifyLeft | ![JustifyLeft icon](../../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | +| JustifyCenter | ![JustifyCenter icon](../../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | +| JustifyRight | ![JustifyRight icon](../../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | +| JustifyFull | ![JustifyFull icon](../../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | + +### Lists & indentation + +Tools here allow users to create ordered and unordered lists, change the list style, and adjust indentation levels for improved document structure. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| OrderedList | ![OrderedList icon](../../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| +| UnorderedList | ![UnorderedList icon](../../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| +| NumberFormatList | ![NumberFormatList icon](../../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| +| BulletFormatList | ![BulletFormatList icon](../../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| +| Indent | ![Indent icon](../../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| +| Outdent | ![Outdent icon](../../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| + +### Hyperlinks + +This section provides tools for inserting and managing hyperlinks within the content. Users can create new links or modify existing ones to enhance document navigation and interactivity. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Hyperlink | ![Hyperlink icon](../../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| +| InsertLink | ![InsertLink icon](../../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | + +#### Link quicktoolbar items + +The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Editor, allowing users to add, edit, or remove links from selected text or images directly within the editor. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| OpenLink | ![OpenLink icon](../../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | +| EditLink | ![EditLink icon](../../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | +| RemoveLink | ![RemoveLink icon](../../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | + +### Images + +This section contains the primary tool for inserting images into the editor. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Insert Image | ![Images icon](../../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| + +#### Image quicktoolbar items + +The image quicktoolbar offers a set of tools to edit images inserted in the Rich Text Editor. It allows users to modify image properties, including alignment, size, alternate text, and links, enhancing image management in the content. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Replace Image | ![Replace icon](../../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | +| Align Image | ![Alignment icon](../../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | +| Remove Image | ![Remove icon](../../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | +| OpenImageLink | ![OpenImageLink icon](../../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | +| EditImageLink | ![EditImageLink icon](../../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | +| RemoveImageLink | ![RemoveImageLink icon](../../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | +| Display | ![Display icon](../../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | +| AltText | ![AltText icon](../../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | +| Dimension | ![Dimension icon](../../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | + +### Tables + +This section offers the main tool for creating tables within the content. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| CreateTable | ![CreateTable icon](../../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | + +#### Table quicktoolbar items + +The table quicktoolbar provides options for table editing within the Rich Text Editor. Users can insert or remove rows and columns, merge or split cells, and access table properties for easier table management and customization. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| RemoveTable | ![RemoveTable icon](../../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | +| TableHeader | ![TableHeader icon](../../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | +| TableColumns | ![TableColumns icon](../../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | +| TableRows | ![TableRows icon](../../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | +| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | +| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | +| TableEditProperties | ![TableEditProperties icon](../../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | + +### Undo & redo + +These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Undo | ![Undo icon](../../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | +| Redo | ![Redo icon](../../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| + +### Other tools + +This section contains miscellaneous tools such as full-screen mode, print, preview, source code editing, and clearing all styles from text. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| FullScreen | ![FullScreen icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| +| Maximize | ![Maximize icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | +| Minimize | ![Minimize icon](../../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | +| Preview | ![Preview icon](../../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | +| InsertCode | ![InsertCode icon](../../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | +| Print | ![Print icon](../../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| +| ClearAll | ![ClearAll icon](../../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | +| SourceCode | ![SourceCode icon](../../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| + +## Removing built-in tool from toolbar + +Remove the build-in tools from the toolbar by using the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/custom-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/custom-tools.md new file mode 100644 index 0000000000..a00b1bd71d --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/custom-tools.md @@ -0,0 +1,70 @@ +--- +layout: post +title: Custom Toolbar in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Custom Toolbar in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Custom Toolbar +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Custom Toolbar Items in the ##Platform_Name## Rich Text Editor Control + +To quickly get started with the ASP.NET MVC Rich Text Editor with a custom toolbar, watch this video: + +{% youtube "youtube:https://www.youtube.com/watch?v=AnHsErOlU1A"%} + +The Rich Text Editor allows you to configure your own commands to its toolbar using the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The command can be plain text, icon, or HTML template. The order and the group can also be defined where the command should be included. Bind the action to the command by getting its instance. + +This sample shows how to add your own commands to the toolbar of the Rich Text Editor. The “Ω” command is added to insert special characters in the editor. By clicking the “Ω” command, it will show the special characters list, and then choose the character to be inserted in the editor. + +The following code snippet illustrates custom tool with tooltip text which will be included in [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) field of the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. + + +```csharp + + var tools = new { + tooltipText = "Insert Symbol", + template = "" + }; + ViewBag.items = new object[] { "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "OrderedList", + "UnorderedList", "|", "CreateLink", "Image", "|", "SourceCode", tools + , "|", "Undo", "Redo" + }; + +``` + +The Rich Text Editor provides options to customize tool functionalities. Use the `undo` property to enable or disable the undo function for specific tools. Additionally, the click property lets you configure and bind the onclick event of a tool to a specific method. + +This sample demonstrates how to add a custom "Ω" icon to the toolbar. Clicking on this icon opens a dialog where you can insert special characters into the editor. It also shows how to enable undo and redo functionalities. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-tool/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-tool/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +> When rendering any control for the custom toolbar, like a dropdown, the focus may be lost, causing it to render outside the Rich Text Editor and triggering a blur event. This can interfere with proper functionalities like cursor focus. To prevent this issue, it is recommended to assign the `e-rte-elements` class to the control rendered in the custom toolbar. + +## Enabling and disabling toolbar items + +You can use the `enableToolbarItem` and `disableToolbarItem` methods to control the state of toolbar items. This methods takes a single item or an array of [items](#available-toolbar-items) as parameter. + +>You can add the command name `Custom` to disable the custom toolbar items on source code view and other quick toolbar operations. \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/styling-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/styling-tools.md new file mode 100644 index 0000000000..38f99322c1 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/styling-tools.md @@ -0,0 +1,234 @@ +--- +layout: post +title: Styling tools in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Styling tools in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Styling tools +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Styling Tools in the ##Platform_Name## Rich Text Editor Control + +## Font family + +The Rich Text Editor initializes with a default font family, which inherits the font family of the parent element. You can change the font for selected text using the font family dropdown in the toolbar. When the default font family is selected, the toolbar will display "Font Name". However, for other font families, the toolbar will show the name of the selected font. + +To apply a different font style to a specific section of the content, follow these steps: + +1. Select the text you want to change. +2. Choose the desired font style from the drop-down menu in the toolbar. + +These steps will apply the selected font style to the chosen text, allowing you to customize the appearance of your content easily. + +### Built-in font family + +You can add the `FontName` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-family/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-family/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The Rich Text Editor comes with a pre-configured set of [fontFamily](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. + +### Custom font family + +The Rich Text Editor supports providing custom fonts along with the existing list. To add additional font names to the font dropdown, you can configure the items field of the [fontFamily](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. This allows you to extend the available font options beyond the default selection. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font-family/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font-family/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Google font support + +To use web fonts in Rich Text Editor, it is not needed for the web fonts to be present in local machine. To add the web fonts to Rich Text Editor, you need to refer the web font links and add the font names in the [fontFamily](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The below font style links are referred in the page. + +```typescript + + + + +``` + +N> In the above sample, you can see that we have added two Google web fonts (`Roboto` and `Great vibes`) to `Rich Text Editor`. + +## Font size + +The Rich Text Editor initializes with a default font size, which inherits the font size of the parent element. You can change the font for selected text using the font size dropdown in the toolbar. When the default font size is selected, the toolbar will display "Font Size". However, for other font sizes, the toolbar will show the name of the selected font. + +### Built-in font size + +You can add the `FontSize` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/styling/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/styling/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/styling/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/styling/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The Rich Text Editor includes a default set of [fontSize](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontSize) property. + +### Custom font size + +The Rich Text Editor supports providing custom fonts along with the existing list. To add additional font names to the font dropdown, you can configure the items field of the [fontSize](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontSize) property. This allows you to extend the available font options beyond the default selection. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-style/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-style/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-style/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-style/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Font and background color + +You can add the `FontColor` and `BackgroundColor` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-background-color/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-background-color/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-background-color/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-background-color/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Custom font and background colors + +To apply `font color` or `background color` to selected content in the Rich Text Editor, use the font color and background color tools. + +The Rich Text Editor offers custom font and background colors along with the existing list through the [colorCode](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ColorCode) field of the [fontColor](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontColor) and [backgroundColor](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_BackgroundColor) properties. + +Both the `FontColor` and `BackgroundColor` properties offer two modes: `Picker` and `Palette`. The Palette mode provides a predefined set of colors, while the Picker mode includes a color scheme to choose custom colors. You can switch between these options using the [modeSwitcher](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ModeSwitcher) feature. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md new file mode 100644 index 0000000000..13473d13b6 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md @@ -0,0 +1,583 @@ +--- +layout: post +title: Text formatting and Structure in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Text formatting and Structure in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Text formatting and Structure +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Text Formatting and Structure in the ##Platform_Name## Rich Text Editor Control + +## Basic text styling + +The Rich Text Editor's basic styles feature provides essential formatting options, including bold, italic, underline, strikethrough, subscript, superscript, and case changes. These fundamental tools enable users to enhance and customize their text effortlessly. By leveraging these options, users can ensure their content is both visually appealing and well-structured. + +### Available text styles + +The table below lists the available text styles in the Rich Text Editor's toolbar. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Bold | ![Bold icon](../../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| + +Please refer to the sample below to add these basic text styling options in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/basic-text-styling/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic-text-styling/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/basic-text-styling/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic-text-styling/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Text alignments + +The Rich Text Editor offers various text alignment options, including left, center, right, and justify. To utilize these alignment options, add the Alignments item to the items property in the toolbarSettings. + +> **Important Note:** Text alignment is applied to the entire block element containing the cursor or selected text, not just to the selected text itself. When you apply an alignment, it affects the whole paragraph or block, even if you've only selected a portion of the text. + +Here are the available alignment options: + +* Align Left: +To left-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Left` icon in the toolbar. This will align the entire paragraph with the left margin. + +* Align Center: +To center-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Center` icon in the toolbar. This will center the entire paragraph within its container. + +* Align Right: +To right-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Right` icon in the toolbar. This will align the entire paragraph with the right margin. + +* Align Justify: +To fully justify your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Justify` icon in the toolbar. This will distribute the entire paragraph evenly across the line, aligning it with both the left and right margins. + +Please refer to the sample and code snippets below to add these alignment options in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-alignments/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-alignments/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-alignments/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-alignments/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Number and bullet format list + +List formatting in the Rich Text Editor allows users to organize content into structured lists, enhancing readability and visual presentation. The control supports two main types of lists: + +1. Ordered Lists +2. Unordered Lists + +### Ordered lists + +Ordered lists present items in a specific sequence, with each item preceded by a number or letter. The Rich Text Editor provides two ways to create and manage ordered lists: + +#### Using the ordered list tool + +The `OrderedList` toolbar item offers a quick way to create or toggle a numbered list. To use it, select the desired text in the editor and click the `OrderedList` button in the toolbar. If the selected text is not already a numbered list, it will be converted into one. If it's already a numbered list, clicking the button will remove the list formatting. + +#### Number format list tool + +For more detailed control over the numbering style, use the `numberFormatList` dropdown in the toolbar. Select the desired text in the editor, then choose the preferred format from the `numberFormatList` dropdown. The selected text will be transformed into a numbered list with the chosen style. + +##### Available numbering styles: + +* `None`: Removes numbering while maintaining list structure and indentation +* `Number`: Uses standard numeric sequencing (1, 2, 3, ...) +* `Lower Roman`: Employs lowercase Roman numerals (i, ii, iii, ...) +* `Lowercase Greek`: Utilizes lowercase Greek letters (α, β, γ, ...) +* `Upper Alpha`: Applies uppercase letters (A, B, C, ...) +* `Lower Alpha`: Uses lowercase letters (a, b, c, ...) +* `Upper Roman`: Employs uppercase Roman numerals (I, II, III, ...) + +You can customize the available number formats using the [numberFormatList](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_NumberFormatList) property of the Rich Text Editor. + +The following example demonstrates how to customize the number format lists in the Rich Text Editor: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/number-format-list/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/number-format-list/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/number-format-list/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/number-format-list/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Unordered lists + +Unordered lists present items with visual markers, providing an effective way to list items without implying order or priority. The Rich Text Editor offers two methods for creating and managing unordered lists: + +#### Using the unordered list tool + +The `UnorderedList` toolbar item provides a fast way to create or toggle a bulleted list. To use it, select the desired text in the editor and click the `UnorderedList` button in the toolbar. If the selected text is not already a bulleted list, it will be converted into one. If it's already a bulleted list, clicking the button will remove the list formatting. + +#### Bullet format list tool + +For more control over the bullet style, use the `bulletFormatList` dropdown in the toolbar. Select the desired text in the editor, then choose the preferred format from the `bulletFormatList` dropdown. The selected text will be transformed into a bullet list with the chosen style. + +##### Available bullet styles + +* `None`: Removes bullet points while maintaining list structure and indentation +* `Disc`: Displays solid circular bullets +* `Square`: Uses solid square bullets +* `Circle`: Presents hollow circular bullets + +The following example demonstrates how to customize the bullet format lists in the Rich Text Editor: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/format-lists/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/format-lists/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/format-lists/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/format-lists/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Increase and decrease indent + +The Rich Text Editor allows you to set indentation for text blocks such as paragraphs, headings, or lists. This feature helps you visually organize and structure your content, making it easier to read and understand. + +The Rich Text Editor allows you to configure two types of indentation tools, `Indent` and `Outdent` tool in the Rich Text Editor toolbar using the `ToolbarSettings` [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +| Options | Description | +|----------------|---------| +| Indent | Increases the indentation | +| Outdent | Decreases the indentation | + +To adjust the text indentation: + +1. Select the desired text or paragraph. +2. Click the Indent or Outdent button in the toolbar. +3. The indentation of the selected text will be modified accordingly. + +To configure the `Indent` and `Outdent` toolbar item, refer to the below code. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Indentation in lists + +The Rich Text Editor provides powerful indentation features for both bullet and number format lists, allowing users to create nested lists and adjust list levels easily. + +#### Increasing indent + +To increase the indent of a list item: + +1. Select the list item you want to indent. +2. Click the "Increase Indent" button in the toolbar or press Ctrl + ]. +3. The selected item will be indented, creating a nested list. + +#### Decreasing indent + +To decrease the indent of a list item: + +1. Select the indented list item. +2. Click the "Decrease Indent" button in the toolbar or press Ctrl + [. +3. The selected item will move back to the previous indentation level. + +#### Using tab key for indentation + +The Tab key provides a quick way to adjust list indentation: + +- Pressing Tab will increase the indent of the selected list item, creating a nested list. +- Pressing Shift + Tab will decrease the indent of the selected list item, moving it to the previous level. + +This behavior allows for efficient creation and management of multi-level lists without the need to use the toolbar buttons. + +## Heading formats + +The Rich Text Editor control provides a feature to format text with various heading styles, such as Heading 1, Heading 2, Heading 3, and Heading 4. These headings allow for structuring content hierarchically, improving readability, and organizing information effectively. + +### Built-in formats + +To enable heading styles in your Rich Text Editor: + +1. Ensure the `Formats` item is included in the toolbar configuration. +2. To apply a heading: + * Select the desired text + * Click the `Formats` dropdown in the toolbar + * Choose the appropriate heading level (e.g., Heading 1, Heading 2) + +This action will format the selected text with the chosen heading style, helping to create a clear document structure and emphasize important sections. + +Below are examples and code snippets demonstrating how to integrate and utilize heading formatting options effectively in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/headings/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/headings/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/headings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/headings/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Custom format + +The Rich Text Editor allows you to customize the format dropdown to include specific styles such as heading 1, heading 2, heading 3, heading 4, heading 5, heading 6, and paragraph. + +To customize the format dropdown: + +1. Define a `formats` array in your component configuration. +2. Specify each format option with a display name and corresponding value. + +This customization enhances the editor’s functionality, enabling users to structure content with appropriate headings, improving readability and organization. + +Below are examples demonstrating how to customize the format dropdown. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-headings/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-headings/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-headings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-headings/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Quotation formatting + +The Rich Text Editor facilitates quotation formatting through the `Blockquote` tool available in the toolbar. Blockquotes are designed to visually highlight significant text, emphasizing key information or quotations by setting them apart from the main content for added emphasis and clarity. + +To format text as a quotation, select the desired text and click on the `Blockquote` icon in the toolbar. The selected text will be formatted as a blockquote, typically indented and styled differently from the surrounding content. + +Use the `Blockquote` tool in the editor below to see the feature in action. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quotation-formatting/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quotation-formatting/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quotation-formatting/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quotation-formatting/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +> In a markdown editor, blockquotes are represented using the `>` symbol. + +## Insert code + +The Rich Text Editor control offers a powerful feature to format text as preformatted code blocks, making it ideal for displaying programming snippets or structured contents. + +### Enabling code block formatting + +To enable code block formatting, ensure that the Formats item is included in the toolbar items of your Rich Text Editor configuration. + +Below are examples and code snippets demonstrating how to add and effectively use the code block formatting option in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-format/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-format/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Applying code block formatting + +Follow these steps to format text as a code block: + +1. Select the desired text in the editor. +2. Click on the `Formats` dropdown in the toolbar. +3. Choose `Preformatted` from the dropdown menu. + +### Exiting code block format + +To exit the code block format: + +1. Place the cursor at the end of your code block content. +2. Press the Enter key twice. + +This action will move the cursor out of the code block and return to normal text formatting. + +### Enhancing code block appearance + +To make your code blocks more visually appealing, you can add custom styling. Here's an example of how to style your `
` tag:
+
+```typescript
+
+
+```
+
+This styling adds a light gray background, sets a monospace font, and includes padding and borders for better visual separation.
+
+## Format painter
+
+The format painter tool enables users to replicate formatting from one text segment and apply it to another. It can be accessed through the toolbar or keyboard shortcuts, allowing for the transfer of formatting styles from individual words to entire paragraphs. Customization options for the format painter are available through the [formatPainterSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FormatPainterSettings) property.
+
+### Configuring format painter tool in the toolbar
+
+You can add the `FormatPainter` tool in the Rich Text Editor using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property.
+
+By double-clicking the format painter toolbar button, `sticky mode` will be enabled. In sticky mode, the format painter will be disabled when the user clicks the `Escape` key again.
+
+The following code example shows how to add the format painter tool in the Rich Text Editor.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/format-painter-cs1/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/format-painter-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+### Customizing copy and paste format
+
+You can customize the format painter tool in the Rich Text Editor using the [formatPainterSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FormatPainterSettings) property.
+
+The [allowedFormats](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFormatPainterSettings_AllowedFormats) property helps you to specify tag names that allow the formats to be copied from the selected text. For instance, you can include formats from the selected text using tags like `p; h1; h2; h3; div; ul; ol; li; span; strong; em; code;`. The following example demonstrates how to customize this functionality.
+
+Similarly, with the [deniedFormats](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFormatPainterSettings_DeniedFormats) property, you can utilize the selectors to prevent specific formats from being pasted onto the selected text. The table below illustrates the selectors and their respective usage.
+
+| Type | Description        | Selector                                                | Usage                                                                  |
+|------|--------------------|---------------------------------------------------------|------------------------------------------------------------------------|
+| ()   | Class Selector     | h3(e-rte-block-blue-text)                               | The class name e-rte-block-blue-text of H3 element is not copied.      |
+| []   | Attribute Selector | span\[title]                                            | The title attribute of span element is not copied.                     |
+| {}   | Style Selector     | span{background-color, color}                           | The background-color and color styles of span element is not copied.   |
+
+Using the `deniedFormats` property following styles are denied copying from the selected text such as `h3(e-rte-block-blue-text){background-color,padding}[title]; li{color}; span(e-inline-text-highlight)[title]; strong{color}(e-rte-strong-bg)`.
+
+Below is an example illustrating how to define the `allowedFormats` and `deniedFormats` settings for the Format Painter in the Rich Text Editor.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/format-painter-cs2/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/format-painter-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/rich-text-editor/format-painter-cs2" %}
+
+### Shortcut keys for copy and paste format
+
+For more details on keyboard navigation, refer to the [Keyboard support](../keyboard-support) documentation.
+
+> The format painter retains the formatting after application making it possible to apply the same formatting multiple times by using the Alt + Shift + v keyboard shortcut.
+
+Additionally, You can perform the format painter actions programmatically using the [executeCommand](../exec-command/) public method.
+
+## Clear formatting
+
+The ASP.NET MVC Rich Text Editor component offers a powerful `Clear Format` feature to remove any applied formatting from selected text.
+
+This feature is particularly useful when you need to:
+
+- Remove multiple styles at once
+- Quickly standardize text formatting
+- Prepare text for new styling
+
+### Configuring clear format
+
+To enable the Clear Format feature in your Rich Text Editor, you need to add it to the toolbar items. Follow these steps:
+
+1. Open your component file where you've implemented the Rich Text Editor.
+2. Locate the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property in your Rich Text Editor configuration.
+3. Add `'ClearFormat'` to the `items` array within `toolbarSettings`.
+
+Here's an example of how to configure the Clear Format feature:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+### Using clear format
+
+Once configured, you can use the Clear Format feature as follows:
+
+1. Select the text with formatting you want to remove.
+2. Click the `Clear Format` button in the toolbar.
+3. The selected text will revert to its original, unformatted state.
+
+Using `Clear Format` makes it easy to undo styling changes and keep your text looking consistent. Examples and code snippets below show how to use 'Clear Format' effectively in the Rich Text Editor.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/form-support.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/form-support.md
similarity index 94%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/form-support.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/form-support.md
index ee60490bb3..35bf7c26d7 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/form-support.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/form-support.md
@@ -63,5 +63,5 @@ Upon submitting the form, `getValue` method will be triggered. Through the `Form
 
 ## See Also
 
-* [How to integrate the third party library](./third-party-integration/)
-* [How to validate the value](./validation/)
\ No newline at end of file
+* [How to integrate the third party library](../third-party-integration)
+* [How to validate the value](../validation)
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/read-only-mode.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/read-only-mode.md
similarity index 96%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/read-only-mode.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/read-only-mode.md
index baf4d99659..3aad06de2e 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/read-only-mode.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/read-only-mode.md
@@ -43,4 +43,4 @@ Please refer to the sample and code snippets below to demonstrate how to enable
 
 ## See Also
 
-[How to Disable and Enable the Rich Text Editor](./disable-editor)
\ No newline at end of file
+[How to Disable and Enable the Rich Text Editor](../disable-editor)
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/xhtml-validation.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/xhtml-validation.md
similarity index 100%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/xhtml-validation.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/validation-security/xhtml-validation.md
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-mode.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/editor-mode.md
similarity index 95%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-mode.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/editor-mode.md
index 980b333a49..a54e6eb271 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-mode.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/editor-mode.md
@@ -77,9 +77,9 @@ The third-party library such as [`Marked`](https://marked.js.org/#/README.md#REA
 {% endtabs %}
 {% endif %}
 
-For further details on Markdown editing, refer to the [`Markdown`](./markdown)
+For further details on Markdown editing, refer to the [`Markdown`](../../../markdown-editor/EJ2_ASP.NETCORE/getting-started)
 
 ## See Also
 
-* [How to integrate the third party library](./third-party-integration/)
-* [How to render the iframe](./iframe/)
+* [How to integrate the third party library](../third-party-integration)
+* [How to render the iframe](./iframe)
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/iframe.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/iframe.md
similarity index 98%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/iframe.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/iframe.md
index 1836c84454..d2278a0fe8 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/iframe.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/iframe.md
@@ -106,4 +106,4 @@ Likewise, add the external script file to the `< iframe >` element using the `sc
 ## See Also
 
 * [Implementing Inline Editing](./inline-editing)
-* [Using the Markdown Editor](./markdown)
+* [Using the Markdown Editor](../../../markdown-editor/EJ2_ASP.NETCORE/getting-started)
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/inline-editing.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md
similarity index 97%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/inline-editing.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md
index f029509ac1..4ee1707e8b 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/inline-editing.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md
@@ -45,5 +45,5 @@ This feature enhances the inline editing experience by providing immediate acces
 {% endtabs %}
 {% endif %}
 
-![Rich Text Editor InlineMode](../images/inline.png)
+![Rich Text Editor InlineMode](../../images/inline.png)
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/resizable-editor.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md
similarity index 94%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/resizable-editor.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md
index 6441af2c99..3f3a72d8f9 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/resizable-editor.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md
@@ -37,7 +37,7 @@ The following sample demonstrates the resizable feature.
 {% endtabs %}
 {% endif %}
 
-![Rich Text Editor Resizable support](./images/Resizable-Editor.png)
+![Rich Text Editor Resizable support](../../images/Resizable-Editor.png)
 
 ## Setting Editor Resize Limits
 
@@ -82,4 +82,4 @@ By default, the control resizes up to the current viewport size. Apply these sty
 ## See Also
 
 * [Working with IFrame Editing Mode](./iframe)
-* [Using the Markdown Editor](./markdown)
\ No newline at end of file
+* [Using the Markdown Editor](../../../markdown-editor/EJ2_ASP.NETCORE/getting-started)
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/audio.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md
similarity index 97%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/audio.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md
index d9d70266c4..d0cb56799a 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/audio.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md
@@ -67,7 +67,7 @@ You can insert audio from either the hosted link or the local machine, by clicki
 
 By default, the audio tool opens the audio dialog, allowing you to insert audio from an online source. Inserting the URL will be added to the `src` attribute of the `` tag.
 
-![Rich Text Editor Audio insert](./images/aspcore-richtexteditor-audio-web.png)
+![Rich Text Editor Audio insert](../../images/aspcore-richtexteditor-audio-web.png)
 
 ## Uploading Audio from Local Machine
 
@@ -206,7 +206,7 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need
 
 Once an audio file has been inserted, you can change it using the Rich Text Editor [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) `audioReplace` option. You can replace the audio file using the web URL or the browse option in the audio dialog.
 
-![Rich Text Editor Audio replace](./images/aspcore-richtexteditor-audio-replace.png)
+![Rich Text Editor Audio replace](../../images/aspcore-richtexteditor-audio-replace.png)
 
 ## Deleting Audios
 
@@ -214,7 +214,7 @@ To remove audio from the Rich Text Editor content, select the audio and click th
 
 Once you select the audio from the local machine, the URL for the audio will be generated. You can remove the audio from the service location by clicking the cross icon.
 
-![Rich Text Editor Audio delete](./images/aspcore-richtexteditor-audio-del.png)
+![Rich Text Editor Audio delete](../../images/aspcore-richtexteditor-audio-del.png)
 
 ## Configuring Audio Display Position
 
@@ -276,6 +276,6 @@ By configuring these options in the [quickToolbarSettings](https://help.syncfusi
 
 ## See Also
 
-* [Quick Toolbars in the Toolbar](./toolbar#quick-inline-toolbar)
+* [Quick Toolbars in the Toolbar](../toolbar/quick-toolbar#quick-inline-toolbar)
 * [How to Use the Video Editing Option in Toolbar Items](./video)
 * [How to Use the Image Editing Option in Toolbar Items](./insert-images)
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/file-browser.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/file-browser.md
similarity index 100%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/file-browser.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/file-browser.md
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-images.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md
similarity index 98%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-images.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md
index edebe10ae1..42491a51d3 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-images.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md
@@ -156,7 +156,7 @@ To remove an image from the Rich Text Editor content, select the image and click
 
 Once you select the image from the local machine, the URL for the image will be generate. From there, you can remove the image from the service location by clicking the cross icon.
 
-![Rich Text Editor Image delete](./images/image-del.png)
+![Rich Text Editor Image delete](../../images/image-del.png)
 
 The following sample explains, how to configure `removeUrl` to remove a saved image from the remote service location, when the following image remove actions are performed:
 
@@ -194,7 +194,7 @@ Sets the default width and height of the image when it is inserted in the Rich T
 
 Through the quick toolbar, change the width and height using `Change Size` option. Once you click, the Image Size dialog box will open as follows. In that you can specify the width and height of the image in pixel.
 
-![Rich Text Editor Image dimension](./images/image-size.png)
+![Rich Text Editor Image dimension](../../images/image-size.png)
 
 ## Adding Captions and Alt Text to Images
 
@@ -238,13 +238,13 @@ Sets the default display for an image when it is inserted in the Rich Text Edito
 
 The hyperlink itself can be an image in Rich Text Editor. If the image given as hyperlink, remove, edit and open link will be added to the quick toolbar of image. For further details about link, see the [`link documentation`](./link) documentation.
 
-![Rich Text Editor image with link](./images/image-link.png)
+![Rich Text Editor image with link](../../images/image-link.png)
 
 ## Image Resizing Tools
 
 Rich Text Editor has a built-in image inserting support.  The resize points will be appearing on each corner of image when focus. So, users can resize the image using mouse points or thumb through the resize points easily. Also, the resize calculation will be done based on aspect ratio.
 
-![Rich Text Editor image resize](./images/image-resize.png)
+![Rich Text Editor image resize](../../images/image-resize.png)
 
 ## Configuring Allowed Image Types
 
@@ -331,5 +331,5 @@ By configuring these options in the [quickToolbarSettings](https://help.syncfusi
 
 ## See Also
 
-* [Image Quick toolbar](./toolbar#quick-inline-toolbar)
-* [Hyperlink Management](./link)
\ No newline at end of file
+* [Image Quick toolbar](../toolbar#quick-inline-toolbar)
+* [Hyperlink Management](../link)
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/video.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md
similarity index 96%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/video.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md
index ec70775823..279a1dc454 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/video.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md
@@ -67,13 +67,13 @@ You can insert a video from either a hosted link or your local machine by clicki
 
 The insert video dialog opens with the `Embedded code` option selected by default. This allows you to insert a video using embedded code.
 
-![Rich Text Editor Embed URL Video insert](./images/aspcore-richtexteditor-video-embed.png)
+![Rich Text Editor Embed URL Video insert](../../images/aspcore-richtexteditor-video-embed.png)
 
 ### Inserting Video via Web URL
 
 You can switch to the `Web URL` option by selecting the Web URL checkbox. Inserting a video using the Web URL option will add the video URL as the `src` attribute of the `` tag.
 
-![Rich Text Editor Video insert](./images/aspcore-richtexteditor-video-web.png)
+![Rich Text Editor Video insert](../../images/aspcore-richtexteditor-video-web.png)
 
 ## Uploading Video from Local Machine
 
@@ -211,9 +211,9 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can
 
 Once a video file has been inserted, you can replace it using the Rich Text Editor [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) `videoReplace` option. You can replace the video file either by using the embedded code or the web URL and the browse option in the video dialog.
 
-![Rich Text Editor Embed Video replace](./images/video-replace-embed.png)
+![Rich Text Editor Embed Video replace](../../images/video-replace-embed.png)
 
-![Rich Text Editor Web Video replace](./images/video-replace-web.png)
+![Rich Text Editor Web Video replace](../../images/video-replace-web.png)
 
 ## Deleting Video
 
@@ -221,7 +221,7 @@ To remove a video from the Rich Text Editor content, select the video and click
 
 Once you select the video from the local machine, the URL for the video will be generated. You can remove the video from the service location by clicking the cross icon.
 
-![Rich Text Editor Video delete](./images/video-del.png)
+![Rich Text Editor Video delete](../../images/video-del.png)
 
 
 ## Adjusting Video Dimensions
@@ -230,7 +230,7 @@ Set the default width, minWidth, height, and minHeight of the video element when
 
 Through the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video), you can also change the width and height using the `Change Size` button. Once you click on the button, the video size dialog will open as below. In that, specify the width and height of the video in pixels.
 
-![Rich Text Editor Video dimension](./images/video-size.png)
+![Rich Text Editor Video dimension](../../images/video-size.png)
 
 ## Configuring Video Display Position
 
@@ -270,7 +270,7 @@ You can disable the resize action by configuring `false` for the [insertVideoSet
 
 > If the [minWidth](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinWidth) and [minHeight](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinHeight) properties are configured, the video resizing does not shrink below the specified values.
 
-![Rich Text Editor video resize](./images/aspcore-richtexteditor-video-resize.png)
+![Rich Text Editor video resize](../../images/aspcore-richtexteditor-video-resize.png)
 
 ## Customizing the Video Quick Toolbar
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/emoji-picker.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md
similarity index 98%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/emoji-picker.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md
index cd5ee6bae4..05297d12e6 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/emoji-picker.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md
@@ -50,7 +50,7 @@ The following code example shows how to add the emoji picker tool in the Rich Te
 
 Quickly access the emoji picker by pressing the colon (:) key while typing a word prefix in an editor, allowing instant emoji selection and display. Moreover, continue typing in the editor after the colon (:) to filter and refine your search for the desired emojis.
 
-![Rich Text Editor Emoji Picker](../images/emoji-picker-shorcut.png)
+![Rich Text Editor Emoji Picker](../../images/emoji-picker-shorcut.png)
 
 ## Navigating and Selecting Emojis Using the Keyboard
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/mentions.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md
similarity index 97%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/mentions.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md
index 51d0f64c46..bc367b6825 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/mentions.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md
@@ -34,7 +34,7 @@ In the following sample, we configured the following properties with popup dimen
 {% endhighlight %}
 {% endtabs %}
 
-![ASP.NET Core mention integration ](../images/mention-integration.png)
+![ASP.NET Core mention integration ](../../images/mention-integration.png)
 
 > [View Sample](https://ej2.syncfusion.com/aspnetcore/RichTextEditor/MentionIntegration#/bootstrap5)
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/slash-menu.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/slash-menu.md
similarity index 100%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/slash-menu.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/slash-menu.md
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/quick-toolbar.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/quick-toolbar.md
new file mode 100644
index 0000000000..ed7e822637
--- /dev/null
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/quick-toolbar.md
@@ -0,0 +1,231 @@
+---
+layout: post
+title: Quick toolbars in ##Platform_Name## Rich Text Editor Control | Syncfusion
+description: Learn here all about Quick toolbars in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more.
+platform: ej2-asp-core-mvc
+control: Quick toolbars
+publishingplatform: ##Platform_Name##
+documentation: ug
+---
+
+# Quick Toolbars in the ##Platform_Name## Rich Text Editor Control
+
+The Rich Text Editor has quick toolbars that act as context-menus, appearing when you click on elements like images, links, audio, video, and tables. By default, specific quick toolbar items are displayed when clicking on the corresponding element. You can customize these items using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property.
+
+## Image quick toolbar
+
+You can customize the quick toolbar options for images using the `image` property within the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Image). The Rich Text Editor provides essential tools such as 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText', and 'Dimension' allowing seamless image management and editing directly within the content.
+
+By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Image) property, you can enhance the editor’s functionality, ensuring a user-friendly experience for efficiently handling image elements.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/image-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/image-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/image-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/image-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Link quick toolbar
+
+The link quick toolbar appears when you click on a link in the editor. You can customize its items using the `link` property in the  [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Link).
+
+The Rich Text Editor provides essential tools in the link quick toolbar, including "Open", "Edit Link", "Remove Link", and "Custom Tool".
+
+The following example demonstrates how to customize the link quick toolbar using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Link) property.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/link-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/link-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/link-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/link-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Table quick toolbar
+
+The table quick toolbar opens when you click anywhere within a table. Customize its items using the `table` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Table).
+
+The quick toolbar appears when clicking on a table, providing easy access to table-related commands. You can customize the quick toolbar by adding or removing tools using the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Table) property.
+
+The following sample demonstrates the customiztion of table quick toolbar.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/table-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/table-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/table-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/table-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Audio quick toolbar
+
+Customize the quick toolbar items for audio elements using the `audio` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio).The Rich Text Editor provides essential tools such as "AudioReplace", "Remove", and "AudioLayoutOption", allowing seamless management and editing of audio content.
+
+By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) property, you can enhance the editor’s capabilities, ensuring a user-friendly experience for handling audio elements efficiently.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/audio-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/audio-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/audio-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/audio-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Video quick toolbar
+
+The video quick toolbar appears when you click on a video element. You can customize its tools using the `video` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video).
+
+The Rich Text Editor allows you to tailor the video quick toolbar with essential tools such as "VideoReplace", "VideoAlign", "VideoRemove", "VideoLayoutOption", and "VideoDimension", enabling seamless management of embedded videos.
+
+By configuring these options in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) property, you enhance the editor’s capabilities, ensuring a user-friendly experience for editing and customizing video elements effortlessly.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/video-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/video-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/video-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/video-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Text quick toolbar
+
+The text quick toolbar provides easy access to commonly used formatting tools, enabling users to apply styles and adjustments effortlessly. This enhances the editing experience by streamlining text formatting.
+
+Customize the quick toolbar items using the `text` property in the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Text). Any toolbar items available in the Rich Text Editor can be configured for the text quick toolbar. The example below demonstrates its customization.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/text-quick-toolbar/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/text-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/text-quick-toolbar/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/text-quick-toolbar/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+## Quick inline toolbar
+
+Quick commands are opened as context-menu on clicking the corresponding element. The commands must be passed as string collection to image, text, link and table attributes of the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property.
+
+| Target Element | Default Quick Toolbar items |
+|----------------|---------|
+|image | 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText','Dimension'.|
+| link | 'Open', 'Edit', 'UnLink'.|
+| text | null 
(Any toolbar [items](https://ej2.syncfusion.com/aspnetcore/documentation/rich-text-editor/toolbar#toolbar-items) in the Rich Text Editor can be configured here).| +| table| 'TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'.| + +Custom tool can be added to the corresponding quick toolbar, using [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. + +The below sample demonstrates the option to insert the image to the Rich Text Editor content as well as option to rotate the image through the quick toolbar. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quick-inline/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quick-inline/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-types.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-types.md new file mode 100644 index 0000000000..877dd795f0 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-types.md @@ -0,0 +1,137 @@ +--- +layout: post +title: Toolbar types in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Toolbar types in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Toolbar types +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Toolbar in the ##Platform_Name## Rich Text Editor Control + +The Syncfusion ##Platform_Name## Rich Text Editor provides a powerful toolbar that enables users to format, style, and edit content efficiently. The toolbar includes essential editing tools such as bold, italic, underline, alignment, and lists, along with customization options to suit different use cases. + +To learn about the different types of toolbars in the ASP.NET Core Rich Text Editor, watch this video: + +{% youtube "youtube:https://www.youtube.com/watch?v=09tBgKpjgjU"%} + +The Rich Text Editor allows you to configure different types of toolbar using [type](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Type) field in [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The types of toolbar are: + +1. Expand +2. MultiRow +3. Scrollable + +## Expanding the toolbar + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-expand/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-expand/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Configuring a multi-row toolbar + +Setting the `type` as `MultiRow` in [`toolbarSettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will arrange the toolbar items across multiple rows, displaying all configured toolbar items. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-multi/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-multi/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Implementing a scrollable toolbar + +Setting the `type` to `Scrollable` in [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display the toolbar items in a single line, enabling horizontal scrolling in the toolbar. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/scrollable/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/scrollable/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/scrollable/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/scrollable/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Creating a sticky toolbar + +By default, the toolbar remains fixed at the top of the Rich Text Editor when scrolling. You can customize the position of this sticky toolbar by setting the [floatingToolbarOffset](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FloatingToolbarOffset) to adjust its offset from the top of the document. + +Additionally, you can enable or disable the floating toolbar using the [enableFloating](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_EnableFloating) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/floating-toolbar/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/floating-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## See also + +* [Customizing Rich Text Editor Toolbar Styles](../style#customizing-the-rich-text-editors-toolbar) +* [Implementing Inline Editing](../editor-types/inline-editing) +* [Customizing Accessibility Shortcut Keys](../accessibility#keyboard-navigation) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md new file mode 100644 index 0000000000..14230fe2a0 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md @@ -0,0 +1,193 @@ +--- +layout: post +title: Toolbar types in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Toolbar types in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Toolbar types +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Built-in Tools in the ##Platform_Name## Rich Text Editor Control + +By default, the ASP.NET Core Rich Text Editor displays the following toolbar items: + +> `Bold` , `Italic` , `Underline` , `|` , `Formats` , `Alignments` , `Blockquote`, `OrderedList` , `UnorderedList` , `|` , `CreateLink` , `Image` , `|` , `SourceCode` , `Undo` , `Redo` + +These default items cover essential text editing features, such as text formatting, lists, alignment, and linking. + +## Available Toolbar Items + +The following table shows the list of available tools in the Rich Text Editor's toolbar. + +The order of items in the toolbar can be customized to meet your application's requirements. If no specific order is set, the editor will render the above default toolbar items. Below is a list of all available toolbar items in the Rich Text Editor. + +### Text formatting + +It provides tools for applying text styles such as bold, italic, underline, strike-through, and more to modify the appearance of the text. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Bold | ![Bold icon](../../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | +| Italic | ![Italic icon](../../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | +| Underline | ![Underline icon](../../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| +| ClearFormat | ![ClearFormat icon](../../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| +| Blockquote | ![Blockquote icon](../../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| +| SubScript | ![SubScript icon](../../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| +| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| + +### Font & styling + +Tools in this section allow users to customize font properties such as font family, size, color, background color, and paragraph formatting. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| FontName | ![FontName icon](../../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| +| FontSize | ![FontSize icon](../../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| +| FontColor | ![FontColor icon](../../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| +| BackgroundColor | ![BackgroundColor icon](../../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| +| Formats (Paragraph, Headings) | ![Format icon](../../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| + +### Alignment + +This section provides alignment options for the text or content, allowing users to justify text or align it to the left, center, or right. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Alignment | ![Alignment icon](../../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| +| JustifyLeft | ![JustifyLeft icon](../../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | +| JustifyCenter | ![JustifyCenter icon](../../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | +| JustifyRight | ![JustifyRight icon](../../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | +| JustifyFull | ![JustifyFull icon](../../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | + +### Lists & indentation + +Tools here allow users to create ordered and unordered lists, change the list style, and adjust indentation levels for improved document structure. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| OrderedList | ![OrderedList icon](../../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| +| UnorderedList | ![UnorderedList icon](../../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| +| NumberFormatList | ![NumberFormatList icon](../../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| +| BulletFormatList | ![BulletFormatList icon](../../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| +| Indent | ![Indent icon](../../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| +| Outdent | ![Outdent icon](../../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| + +### Hyperlinks + +This section provides tools for inserting and managing hyperlinks within the content. Users can create new links or modify existing ones to enhance document navigation and interactivity. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Hyperlink | ![Hyperlink icon](../../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| +| InsertLink | ![InsertLink icon](../../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | + +#### Link quicktoolbar items + +The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Editor, allowing users to add, edit, or remove links from selected text or images directly within the editor. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| OpenLink | ![OpenLink icon](../../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | +| EditLink | ![EditLink icon](../../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | +| RemoveLink | ![RemoveLink icon](../../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | + +### Images + +This section contains the primary tool for inserting images into the editor. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Insert Image | ![Images icon](../../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| + +#### Image quicktoolbar items + +The image quicktoolbar offers a set of tools to edit images inserted in the Rich Text Editor. It allows users to modify image properties, including alignment, size, alternate text, and links, enhancing image management in the content. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Replace Image | ![Replace icon](../../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | +| Align Image | ![Alignment icon](../../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | +| Remove Image | ![Remove icon](../../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | +| OpenImageLink | ![OpenImageLink icon](../../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | +| EditImageLink | ![EditImageLink icon](../../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | +| RemoveImageLink | ![RemoveImageLink icon](../../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | +| Display | ![Display icon](../../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | +| AltText | ![AltText icon](../../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | +| Dimension | ![Dimension icon](../../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | + +### Tables + +This section offers the main tool for creating tables within the content. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| CreateTable | ![CreateTable icon](../../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | + +#### Table quicktoolbar items + +The table quicktoolbar provides options for table editing within the Rich Text Editor. Users can insert or remove rows and columns, merge or split cells, and access table properties for easier table management and customization. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| RemoveTable | ![RemoveTable icon](../../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | +| TableHeader | ![TableHeader icon](../../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | +| TableColumns | ![TableColumns icon](../../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | +| TableRows | ![TableRows icon](../../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | +| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | +| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | +| TableEditProperties | ![TableEditProperties icon](../../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | + +### Undo & redo + +These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Undo | ![Undo icon](../../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | +| Redo | ![Redo icon](../../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| + +### Other tools + +This section contains miscellaneous tools such as full-screen mode, print, preview, source code editing, and clearing all styles from text. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| FullScreen | ![FullScreen icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| +| Maximize | ![Maximize icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | +| Minimize | ![Minimize icon](../../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | +| Preview | ![Preview icon](../../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | +| InsertCode | ![InsertCode icon](../../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | +| Print | ![Print icon](../../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| +| ClearAll | ![ClearAll icon](../../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | +| SourceCode | ![SourceCode icon](../../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| + +## Removing built-in tool from toolbar + +Remove the build-in tools from the toolbar by using the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/audremove-buildin-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/custom-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/custom-tools.md new file mode 100644 index 0000000000..5465af4669 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/custom-tools.md @@ -0,0 +1,70 @@ +--- +layout: post +title: Custom Toolbar in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Custom Toolbar in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Custom Toolbar +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Custom Toolbar Items in the ##Platform_Name## Rich Text Editor Control + +To quickly get started with the ASP.NET Core Rich Text Editor with a custom toolbar, watch this video: + +{% youtube "youtube:https://www.youtube.com/watch?v=AnHsErOlU1A"%} + +The Rich Text Editor allows you to configure your own commands to its toolbar using the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The command can be plain text, icon, or HTML template. The order and the group can also be defined where the command should be included. Bind the action to the command by getting its instance. + +This sample shows how to add your own commands to the toolbar of the Rich Text Editor. The “Ω” command is added to insert special characters in the editor. By clicking the “Ω” command, it will show the special characters list, and then choose the character to be inserted in the editor. + +The following code snippet illustrates custom tool with tooltip text which will be included in [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) field of the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. + + +```csharp + + var tools = new { + tooltipText = "Insert Symbol", + template = "" + }; + ViewBag.items = new object[] { "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "OrderedList", + "UnorderedList", "|", "CreateLink", "Image", "|", "SourceCode", tools + , "|", "Undo", "Redo" + }; + +``` + +The Rich Text Editor provides options to customize tool functionalities. Use the `undo` property to enable or disable the undo function for specific tools. Additionally, the click property lets you configure and bind the onclick event of a tool to a specific method. + +This sample demonstrates how to add a custom "Ω" icon to the toolbar. Clicking on this icon opens a dialog where you can insert special characters into the editor. It also shows how to enable undo and redo functionalities. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-tool/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-tool/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +> When rendering any control for the custom toolbar, like a dropdown, the focus may be lost, causing it to render outside the Rich Text Editor and triggering a blur event. This can interfere with proper functionalities like cursor focus. To prevent this issue, it is recommended to assign the `e-rte-elements` class to the control rendered in the custom toolbar. + +## Enabling and disabling toolbar items + +You can use the `enableToolbarItem` and `disableToolbarItem` methods to control the state of toolbar items. This methods takes a single item or an array of [items](#available-toolbar-items) as parameter. + +>You can add the command name `Custom` to disable the custom toolbar items on source code view and other quick toolbar operations. \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/styling-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/styling-tools.md new file mode 100644 index 0000000000..ed09633cc5 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/styling-tools.md @@ -0,0 +1,234 @@ +--- +layout: post +title: Styling tools in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Styling tools in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Styling tools +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Styling Tools in the ##Platform_Name## Rich Text Editor Control + +## Font family + +The Rich Text Editor initializes with a default font family, which inherits the font family of the parent element. You can change the font for selected text using the font family dropdown in the toolbar. When the default font family is selected, the toolbar will display "Font Name". However, for other font families, the toolbar will show the name of the selected font. + +To apply a different font style to a specific section of the content, follow these steps: + +1. Select the text you want to change. +2. Choose the desired font style from the drop-down menu in the toolbar. + +These steps will apply the selected font style to the chosen text, allowing you to customize the appearance of your content easily. + +### Built-in font family + +You can add the `FontName` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-family/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-family/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The Rich Text Editor comes with a pre-configured set of [fontFamily](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. + +### Custom font family + +The Rich Text Editor supports providing custom fonts along with the existing list. To add additional font names to the font dropdown, you can configure the items field of the [fontFamily](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. This allows you to extend the available font options beyond the default selection. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font-family/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font-family/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font-family/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Google font support + +To use web fonts in Rich Text Editor, it is not needed for the web fonts to be present in local machine. To add the web fonts to Rich Text Editor, you need to refer the web font links and add the font names in the [fontFamily](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontFamily) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/how-to/google-webfonts/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The below font style links are referred in the page. + +```typescript + + + + +``` + +N> In the above sample, you can see that we have added two Google web fonts (`Roboto` and `Great vibes`) to `Rich Text Editor`. + +## Font size + +The Rich Text Editor initializes with a default font size, which inherits the font size of the parent element. You can change the font for selected text using the font size dropdown in the toolbar. When the default font size is selected, the toolbar will display "Font Size". However, for other font sizes, the toolbar will show the name of the selected font. + +### Built-in font size + +You can add the `FontSize` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/styling/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/styling/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/styling/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/styling/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +The Rich Text Editor includes a default set of [fontSize](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontSize) property. + +### Custom font size + +The Rich Text Editor supports providing custom fonts along with the existing list. To add additional font names to the font dropdown, you can configure the items field of the [fontSize](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontSize) property. This allows you to extend the available font options beyond the default selection. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-style/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-style/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-style/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-style/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Font and background color + +You can add the `FontColor` and `BackgroundColor` tool in the Rich Text Editor toolbar using the `toolbarSettings` [items](ps://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-background-color/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-background-color/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/font-background-color/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/font-background-color/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Custom font and background colors + +To apply `font color` or `background color` to selected content in the Rich Text Editor, use the font color and background color tools. + +The Rich Text Editor offers custom font and background colors along with the existing list through the [colorCode](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ColorCode) field of the [fontColor](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FontColor) and [backgroundColor](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_BackgroundColor) properties. + +Both the `FontColor` and `BackgroundColor` properties offer two modes: `Picker` and `Palette`. The Palette mode provides a predefined set of colors, while the Picker mode includes a color scheme to choose custom colors. You can switch between these options using the [modeSwitcher](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ModeSwitcher) feature. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-font/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-font/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md new file mode 100644 index 0000000000..8fb0ee5711 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md @@ -0,0 +1,583 @@ +--- +layout: post +title: Text formatting and Structure in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Text formatting and Structure in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Text formatting and Structure +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Text Formatting and Structure in the ##Platform_Name## Rich Text Editor Control + +## Basic text styling + +The Rich Text Editor's basic styles feature provides essential formatting options, including bold, italic, underline, strikethrough, subscript, superscript, and case changes. These fundamental tools enable users to enhance and customize their text effortlessly. By leveraging these options, users can ensure their content is both visually appealing and well-structured. + +### Available text styles + +The table below lists the available text styles in the Rich Text Editor's toolbar. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Bold | ![Bold icon](../../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| + +Please refer to the sample below to add these basic text styling options in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/basic-text-styling/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic-text-styling/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/basic-text-styling/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic-text-styling/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Text alignments + +The Rich Text Editor offers various text alignment options, including left, center, right, and justify. To utilize these alignment options, add the Alignments item to the items property in the toolbarSettings. + +> **Important Note:** Text alignment is applied to the entire block element containing the cursor or selected text, not just to the selected text itself. When you apply an alignment, it affects the whole paragraph or block, even if you've only selected a portion of the text. + +Here are the available alignment options: + +* Align Left: +To left-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Left` icon in the toolbar. This will align the entire paragraph with the left margin. + +* Align Center: +To center-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Center` icon in the toolbar. This will center the entire paragraph within its container. + +* Align Right: +To right-align your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Right` icon in the toolbar. This will align the entire paragraph with the right margin. + +* Align Justify: +To fully justify your text, place the cursor in the desired paragraph or select any text within it, then click the `Align Justify` icon in the toolbar. This will distribute the entire paragraph evenly across the line, aligning it with both the left and right margins. + +Please refer to the sample and code snippets below to add these alignment options in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-alignments/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-alignments/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/text-alignments/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/text-alignments/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Number and bullet format list + +List formatting in the Rich Text Editor allows users to organize content into structured lists, enhancing readability and visual presentation. The control supports two main types of lists: + +1. Ordered Lists +2. Unordered Lists + +### Ordered lists + +Ordered lists present items in a specific sequence, with each item preceded by a number or letter. The Rich Text Editor provides two ways to create and manage ordered lists: + +#### Using the ordered list tool + +The `OrderedList` toolbar item offers a quick way to create or toggle a numbered list. To use it, select the desired text in the editor and click the `OrderedList` button in the toolbar. If the selected text is not already a numbered list, it will be converted into one. If it's already a numbered list, clicking the button will remove the list formatting. + +#### Number format list tool + +For more detailed control over the numbering style, use the `numberFormatList` dropdown in the toolbar. Select the desired text in the editor, then choose the preferred format from the `numberFormatList` dropdown. The selected text will be transformed into a numbered list with the chosen style. + +##### Available numbering styles: + +* `None`: Removes numbering while maintaining list structure and indentation +* `Number`: Uses standard numeric sequencing (1, 2, 3, ...) +* `Lower Roman`: Employs lowercase Roman numerals (i, ii, iii, ...) +* `Lowercase Greek`: Utilizes lowercase Greek letters (α, β, γ, ...) +* `Upper Alpha`: Applies uppercase letters (A, B, C, ...) +* `Lower Alpha`: Uses lowercase letters (a, b, c, ...) +* `Upper Roman`: Employs uppercase Roman numerals (I, II, III, ...) + +You can customize the available number formats using the [numberFormatList](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_NumberFormatList) property of the Rich Text Editor. + +The following example demonstrates how to customize the number format lists in the Rich Text Editor: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/number-format-list/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/number-format-list/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/number-format-list/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/number-format-list/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Unordered lists + +Unordered lists present items with visual markers, providing an effective way to list items without implying order or priority. The Rich Text Editor offers two methods for creating and managing unordered lists: + +#### Using the unordered list tool + +The `UnorderedList` toolbar item provides a fast way to create or toggle a bulleted list. To use it, select the desired text in the editor and click the `UnorderedList` button in the toolbar. If the selected text is not already a bulleted list, it will be converted into one. If it's already a bulleted list, clicking the button will remove the list formatting. + +#### Bullet format list tool + +For more control over the bullet style, use the `bulletFormatList` dropdown in the toolbar. Select the desired text in the editor, then choose the preferred format from the `bulletFormatList` dropdown. The selected text will be transformed into a bullet list with the chosen style. + +##### Available bullet styles + +* `None`: Removes bullet points while maintaining list structure and indentation +* `Disc`: Displays solid circular bullets +* `Square`: Uses solid square bullets +* `Circle`: Presents hollow circular bullets + +The following example demonstrates how to customize the bullet format lists in the Rich Text Editor: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/format-lists/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/format-lists/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/format-lists/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/format-lists/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Increase and decrease indent + +The Rich Text Editor allows you to set indentation for text blocks such as paragraphs, headings, or lists. This feature helps you visually organize and structure your content, making it easier to read and understand. + +The Rich Text Editor allows you to configure two types of indentation tools, `Indent` and `Outdent` tool in the Rich Text Editor toolbar using the `ToolbarSettings` [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property. + +| Options | Description | +|----------------|---------| +| Indent | Increases the indentation | +| Outdent | Decreases the indentation | + +To adjust the text indentation: + +1. Select the desired text or paragraph. +2. Click the Indent or Outdent button in the toolbar. +3. The indentation of the selected text will be modified accordingly. + +To configure the `Indent` and `Outdent` toolbar item, refer to the below code. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/indent-and-outdent/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Indentation in lists + +The Rich Text Editor provides powerful indentation features for both bullet and number format lists, allowing users to create nested lists and adjust list levels easily. + +#### Increasing indent + +To increase the indent of a list item: + +1. Select the list item you want to indent. +2. Click the "Increase Indent" button in the toolbar or press Ctrl + ]. +3. The selected item will be indented, creating a nested list. + +#### Decreasing indent + +To decrease the indent of a list item: + +1. Select the indented list item. +2. Click the "Decrease Indent" button in the toolbar or press Ctrl + [. +3. The selected item will move back to the previous indentation level. + +#### Using tab key for indentation + +The Tab key provides a quick way to adjust list indentation: + +- Pressing Tab will increase the indent of the selected list item, creating a nested list. +- Pressing Shift + Tab will decrease the indent of the selected list item, moving it to the previous level. + +This behavior allows for efficient creation and management of multi-level lists without the need to use the toolbar buttons. + +## Heading formats + +The Rich Text Editor control provides a feature to format text with various heading styles, such as Heading 1, Heading 2, Heading 3, and Heading 4. These headings allow for structuring content hierarchically, improving readability, and organizing information effectively. + +### Built-in formats + +To enable heading styles in your Rich Text Editor: + +1. Ensure the `Formats` item is included in the toolbar configuration. +2. To apply a heading: + * Select the desired text + * Click the `Formats` dropdown in the toolbar + * Choose the appropriate heading level (e.g., Heading 1, Heading 2) + +This action will format the selected text with the chosen heading style, helping to create a clear document structure and emphasize important sections. + +Below are examples and code snippets demonstrating how to integrate and utilize heading formatting options effectively in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/headings/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/headings/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/headings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/headings/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Custom format + +The Rich Text Editor allows you to customize the format dropdown to include specific styles such as heading 1, heading 2, heading 3, heading 4, heading 5, heading 6, and paragraph. + +To customize the format dropdown: + +1. Define a `formats` array in your component configuration. +2. Specify each format option with a display name and corresponding value. + +This customization enhances the editor’s functionality, enabling users to structure content with appropriate headings, improving readability and organization. + +Below are examples demonstrating how to customize the format dropdown. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-headings/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-headings/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/custom-headings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/custom-headings/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Quotation formatting + +The Rich Text Editor facilitates quotation formatting through the `Blockquote` tool available in the toolbar. Blockquotes are designed to visually highlight significant text, emphasizing key information or quotations by setting them apart from the main content for added emphasis and clarity. + +To format text as a quotation, select the desired text and click on the `Blockquote` icon in the toolbar. The selected text will be formatted as a blockquote, typically indented and styled differently from the surrounding content. + +Use the `Blockquote` tool in the editor below to see the feature in action. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quotation-formatting/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quotation-formatting/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/quotation-formatting/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/quotation-formatting/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +> In a markdown editor, blockquotes are represented using the `>` symbol. + +## Insert code + +The Rich Text Editor control offers a powerful feature to format text as preformatted code blocks, making it ideal for displaying programming snippets or structured contents. + +### Enabling code block formatting + +To enable code block formatting, ensure that the Formats item is included in the toolbar items of your Rich Text Editor configuration. + +Below are examples and code snippets demonstrating how to add and effectively use the code block formatting option in the Rich Text Editor. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-format/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-format/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Applying code block formatting + +Follow these steps to format text as a code block: + +1. Select the desired text in the editor. +2. Click on the `Formats` dropdown in the toolbar. +3. Choose `Preformatted` from the dropdown menu. + +### Exiting code block format + +To exit the code block format: + +1. Place the cursor at the end of your code block content. +2. Press the Enter key twice. + +This action will move the cursor out of the code block and return to normal text formatting. + +### Enhancing code block appearance + +To make your code blocks more visually appealing, you can add custom styling. Here's an example of how to style your `
` tag:
+
+```typescript
+
+
+```
+
+This styling adds a light gray background, sets a monospace font, and includes padding and borders for better visual separation.
+
+## Format painter
+
+The format painter tool enables users to replicate formatting from one text segment and apply it to another. It can be accessed through the toolbar or keyboard shortcuts, allowing for the transfer of formatting styles from individual words to entire paragraphs. Customization options for the format painter are available through the [formatPainterSettings](../api/rich-text-editor/https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html) property.
+
+### Configuring format painter tool in the toolbar
+
+You can add the `FormatPainter` tool in the Rich Text Editor using the `toolbarSettings` [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) property.
+
+By double-clicking the format painter toolbar button, `sticky mode` will be enabled. In sticky mode, the format painter will be disabled when the user clicks the `Escape` key again.
+
+The following code example shows how to add the format painter tool in the Rich Text Editor.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/format-painter-cs1/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/format-painter-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+### Customizing copy and paste format
+
+You can customize the format painter tool in the Rich Text Editor using the [formatPainterSettings](../api/rich-text-editor/https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html) property.
+
+The [allowedFormats](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFormatPainterSettings_AllowedFormats) property helps you to specify tag names that allow the formats to be copied from the selected text. For instance, you can include formats from the selected text using tags like `p; h1; h2; h3; div; ul; ol; li; span; strong; em; code;`. The following example demonstrates how to customize this functionality.
+
+Similarly, with the [deniedFormats](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFormatPainterSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFormatPainterSettings_DeniedFormats) property, you can utilize the selectors to prevent specific formats from being pasted onto the selected text. The table below illustrates the selectors and their respective usage.
+
+| Type | Description        | Selector                                                | Usage                                                                  |
+|------|--------------------|---------------------------------------------------------|------------------------------------------------------------------------|
+| ()   | Class Selector     | h3(e-rte-block-blue-text)                               | The class name e-rte-block-blue-text of H3 element is not copied.      |
+| []   | Attribute Selector | span\[title]                                            | The title attribute of span element is not copied.                     |
+| {}   | Style Selector     | span{background-color, color}                           | The background-color and color styles of span element is not copied.   |
+
+Using the `deniedFormats` property following styles are denied copying from the selected text such as `h3(e-rte-block-blue-text){background-color,padding}[title]; li{color}; span(e-inline-text-highlight)[title]; strong{color}(e-rte-strong-bg)`.
+
+Below is an example illustrating how to define the `allowedFormats` and `deniedFormats` settings for the Format Painter in the Rich Text Editor.
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/format-painter-cs2/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/format-painter-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% previewsample "page.domainurl/code-snippet/rich-text-editor/format-painter-cs2" %}
+
+### Shortcut keys for copy and paste format
+
+For more details on keyboard navigation, refer to the [Keyboard support](../keyboard-support) documentation.
+
+> The format painter retains the formatting after application making it possible to apply the same formatting multiple times by using the Alt + Shift + v keyboard shortcut.
+
+Additionally, You can perform the format painter actions programmatically using the [executeCommand](../exec-command/) public method.
+
+## Clear formatting
+
+The ASP.NET Core Rich Text Editor component offers a powerful `Clear Format` feature to remove any applied formatting from selected text.
+
+This feature is particularly useful when you need to:
+
+- Remove multiple styles at once
+- Quickly standardize text formatting
+- Prepare text for new styling
+
+### Configuring clear format
+
+To enable the Clear Format feature in your Rich Text Editor, you need to add it to the toolbar items. Follow these steps:
+
+1. Open your component file where you've implemented the Rich Text Editor.
+2. Locate the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property in your Rich Text Editor configuration.
+3. Add `'ClearFormat'` to the `items` array within `toolbarSettings`.
+
+Here's an example of how to configure the Clear Format feature:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs1/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+### Using clear format
+
+Once configured, you can use the Clear Format feature as follows:
+
+1. Select the text with formatting you want to remove.
+2. Click the `Clear Format` button in the toolbar.
+3. The selected text will revert to its original, unformatted state.
+
+Using `Clear Format` makes it easy to undo styling changes and keep your text looking consistent. Examples and code snippets below show how to use 'Clear Format' effectively in the Rich Text Editor.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-format-cs2/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/form-support.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/form-support.md
similarity index 90%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/form-support.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/form-support.md
index 3c6b9f9b8b..8c91d017dd 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/form-support.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/form-support.md
@@ -67,6 +67,6 @@ Upon submitting the form, `getValue` method will be triggered. Through the `Form
 
 ## See Also
 
-* [How to integrate the third party library](./third-party-integration/)
-* [How to validate the value](./validation/)
-* [How to get the Rich Text Editor value on the controller](./how-to/render-rich-text-editor-for)
+* [How to integrate the third party library](../third-party-integration)
+* [How to validate the value](../validation)
+* [How to get the Rich Text Editor value on the controller](../how-to/render-rich-text-editor-for)
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/read-only-mode.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/read-only-mode.md
similarity index 96%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/read-only-mode.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/read-only-mode.md
index 9468ef3d51..25142fe43d 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/read-only-mode.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/read-only-mode.md
@@ -43,4 +43,4 @@ Please refer to the sample and code snippets below to demonstrate how to enable
 
 ## See Also
 
-[How to Disable and Enable the Rich Text Editor](./disable-editor)
\ No newline at end of file
+[How to Disable and Enable the Rich Text Editor](../disable-editor)
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/xhtml-validation.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/xhtml-validation.md
similarity index 100%
rename from ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/xhtml-validation.md
rename to ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/validation-security/xhtml-validation.md
diff --git a/ej2-asp-core-mvc/rich-text-editor/images/image-del.png b/ej2-asp-core-mvc/rich-text-editor/images/image-del.png
index 2be94eed983a0bc5ff934f49182b4a586de03592..043c9e48c1920b96c840df43645eed4a7ef0685f 100644
GIT binary patch
literal 21474
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

literal 16659
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

  • Getting Started
  • -
  • Editor Value
  • -
  • Editor Modes
  • -
  • Toolbar
  • -
  • Inline Editing
  • -
  • Iframe Editing Mode
  • -
  • Style Encapsulation
  • -
  • Resizable Editor
  • -
  • Read-only Mode
  • +
  • Managing Editor Value
  • +
  • Toolbar + +
  • +
  • Tools + +
  • +
  • Editor Types + +
  • +
  • Insert Image and Media + +
  • +
  • Smart Editing + +
  • +
  • Validation and Security + +
  • +
  • Link Manipulation
  • Disabling the Rich Text Editor
  • Character Count
  • Code View Support
  • @@ -2330,26 +2368,17 @@
  • Code Block Formatting
  • List Formatting
  • Link
  • -
  • Images
  • -
  • Audios
  • -
  • Videos
  • Table
  • Remove Formatting
  • Format Painter
  • -
  • Emoji Picker
  • Paste Cleanup
  • Enter Key Configuration
  • Undo Redo
  • -
  • Mentions
  • -
  • Form support
  • -
  • XHTML validation
  • Preventing Cross-Site Scripting (XSS)
  • Style Appearance Customization
  • Content Import/Export
  • Third party integration
  • Globalization
  • -
  • File Browser
  • -
  • Slash Menu
  • ExecuteCommand in Rich Text Editor
  • Keyboard shortcuts
  • Accessibility
  • diff --git a/ej2-asp-mvc-toc.html b/ej2-asp-mvc-toc.html index 82892d71f3..51428e41f5 100644 --- a/ej2-asp-mvc-toc.html +++ b/ej2-asp-mvc-toc.html @@ -2268,14 +2268,52 @@
  • RichTextEditor
    • Getting Started
    • -
    • Editor Value
    • -
    • Editor Modes
    • -
    • Toolbar
    • -
    • Inline Editing
    • -
    • Iframe Editing Mode
    • +
    • Managing Editor Value
    • +
    • Toolbar + +
    • +
    • Tools + +
    • +
    • Editor Types + +
    • +
    • Insert Image and Media + +
    • +
    • Smart Editing + +
    • +
    • Validation and Security + +
    • Style Encapsulation
    • -
    • Resizable Editor
    • -
    • Read-only Mode
    • Disabling the Rich Text Editor
    • Character Count
    • Code View Support
    • @@ -2289,26 +2327,17 @@
    • Code Block Formatting
    • List Formatting
    • Link
    • -
    • Images
    • -
    • Audios
    • -
    • Videos
    • Table
    • Remove Formatting
    • Format Painter
    • -
    • Emoji Picker
    • Paste Cleanup
    • Enter Key Configuration
    • Undo Redo
    • -
    • Mentions
    • -
    • Form support
    • -
    • XHTML validation
    • Preventing Cross-Site Scripting (XSS)
    • Style Appearance Customization
    • Content Import/Export
    • Third party integration
    • Globalization
    • -
    • File Browser
    • -
    • Slash Menu
    • ExecuteCommand in Rich Text Editor
    • Keyboard shortcuts
    • Accessibility
    • From 73c8e6b80f385a087a391f0c488453c66aa70517 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Tue, 29 Apr 2025 15:29:44 +0530 Subject: [PATCH 35/39] 951777: Grouped the Rich Text Editor documentation topics and Modified feature module section - HotfixMvc --- .../remove-buildin-tool/controller.cs | 10 + .../remove-buildin-tool/razor | 2 + .../remove-buildin-tool/tagHelper | 3 + .../text-quick-toolbar/controller.cs | 10 + .../rich-text-editor/text-quick-toolbar/razor | 1 + .../text-quick-toolbar/tagHelper | 3 + .../EJ2_ASP.MVC/basic-text-styling.md | 18 +- .../rich-text-editor/EJ2_ASP.MVC/toolbar.md | 395 ----------------- .../EJ2_ASP.NETCORE/basic-text-styling.md | 18 +- .../EJ2_ASP.NETCORE/toolbar.md | 402 ------------------ 10 files changed, 47 insertions(+), 815 deletions(-) create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/controller.cs create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/razor create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/tagHelper create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/controller.cs create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/razor create mode 100644 ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/tagHelper delete mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar.md delete mode 100644 ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar.md diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/controller.cs new file mode 100644 index 0000000000..3045958bec --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/controller.cs @@ -0,0 +1,10 @@ +public class HomeController : Controller +{ + + public ActionResult Index() + { + ViewBag.value = @"

      The Rich Text Editor component is WYSIWYG (\'what you see is what you get\') editor that provides the best user experience to create and update the content. Users can format their content using standard toolbar commands.

      Key features:

      • Provides <IFRAME> and <DIV> modes

      • Capable of handling markdown editing.

      • Contains a modular library to load the necessary functionality on demand.

      • Provides a fully customizable toolbar.

      • Provides HTML view to edit the source directly for developers.

      • Supports third-party library integration.

      • Allows preview of modified content before saving it.

      • Handles images, hyperlinks, video, hyperlinks, uploads, etc.

      • Contains undo/redo manager.

      • Creates bulleted and numbered lists.

      "; + ViewBag.items = new[] { "Undo", "Redo", "|", "Bold", "Italic", "Underline", "StrikeThrough", "|", "FontName", "FontSize", "FontColor", "BackgroundColor" }; + return View(); + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/razor new file mode 100644 index 0000000000..5963639b24 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/razor @@ -0,0 +1,2 @@ + +@Html.EJS().RichTextEditor("toolbar").ToolbarSettings(e => e.Items((object)ViewBag.items)).Value(ViewBag.value).Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/tagHelper new file mode 100644 index 0000000000..19d49f85e6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/remove-buildin-tool/tagHelper @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/controller.cs new file mode 100644 index 0000000000..9a7863132e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/controller.cs @@ -0,0 +1,10 @@ +public class HomeController : Controller +{ + + public ActionResult Index() + { + ViewBag.value = @"

      The Syncfusion Rich Text Editor, a WYSIWYG (what you see is what you get) editor, is a user interface that allows you to create, edit, and format rich text content. You can try out a demo of this editor here.

      Key features:

      • Provides <IFRAME> and <DIV> modes.

      • Bulleted and numbered lists.

      • Handles images, hyperlinks, videos, hyperlinks, uploads, etc.

      • Contains undo/redo manager.

      Sky with sun
      "; + ViewBag.text = new[] { "Bold", "Italic", "Underline", "FontColor", "BackgroundColor", "Alignments", "-", "FontSize", "FontName", "Formats", "OrderedList", "UnorderedList"}; + return View(); + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/razor new file mode 100644 index 0000000000..de54210d29 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/razor @@ -0,0 +1 @@ +@Html.EJS().RichTextEditor("text").QuickToolbarSettings(e => { e.Text((object)ViewBag.text); }).Value(ViewBag.value).Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/tagHelper new file mode 100644 index 0000000000..3e886d3993 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/text-quick-toolbar/tagHelper @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md index 60bd145152..412c4abf8a 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md @@ -18,15 +18,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](./images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](./images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](./images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](./images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](./images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](./images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](./images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](./images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](.../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar.md deleted file mode 100644 index ed0f5a1315..0000000000 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -layout: post -title: Toolbar in ##Platform_Name## Rich Text Editor Component | Syncfusion -description: Learn here all about Toolbar in Syncfusion ##Platform_Name## Rich Text Editor component of Syncfusion Essential JS 2 and more. -platform: ej2-asp-core-mvc -control: Toolbar -publishingplatform: ##Platform_Name## -documentation: ug ---- - -# Toolbar in ##Platform_Name## Rich Text Editor Control - -The Syncfusion ASP.NET MVC Rich Text Editor control provides a versatile and powerful toolbar to enhance your text editing experience. The toolbar contains a variety of formatting, styling, and editing tools, allowing users to create and modify content efficiently. - -## Tools - -### Default Toolbar Items - -By default, the ASP.NET MVC Rich Text Editor displays the following toolbar items: - -> `Bold` , `Italic` , `Underline` , `|` , `Formats` , `Alignments` , `Blockquote`, `OrderedList` , `UnorderedList` , `|` , `CreateLink` , `Image` , `|` , `SourceCode` , `Undo` , `Redo` - -These default items cover essential text editing features, such as text formatting, lists, alignment, and linking. - -### Available Toolbar Items - -The following table shows the list of available tools in the Rich Text Editor's toolbar. - -The order of items in the toolbar can be customized to meet your application's requirements. If no specific order is set, the editor will render the above default toolbar items. Below is a list of all available toolbar items in the Rich Text Editor. - -#### Text formatting - -It provides tools for applying text styles such as bold, italic, underline, strike-through, and more to modify the appearance of the text. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](./images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | -| Italic | ![Italic icon](./images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | -| Underline | ![Underline icon](./images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| -| ClearFormat | ![ClearFormat icon](./images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| -| Blockquote | ![Blockquote icon](./images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| -| SubScript | ![SubScript icon](./images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](./images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| -| LowerCase | ![LowerCase icon](./images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](./images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| - -#### Font & styling - -Tools in this section allow users to customize font properties such as font family, size, color, background color, and paragraph formatting. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| FontName | ![FontName icon](./images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| -| FontSize | ![FontSize icon](./images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| -| FontColor | ![FontColor icon](./images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| -| BackgroundColor | ![BackgroundColor icon](./images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| -| Formats (Paragraph, Headings) | ![Format icon](./images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| - -#### Alignment - -This section provides alignment options for the text or content, allowing users to justify text or align it to the left, center, or right. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Alignment | ![Alignment icon](./images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| -| JustifyLeft | ![JustifyLeft icon](./images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | -| JustifyCenter | ![JustifyCenter icon](./images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | -| JustifyRight | ![JustifyRight icon](./images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | -| JustifyFull | ![JustifyFull icon](./images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | - -#### Lists & indentation - -Tools here allow users to create ordered and unordered lists, change the list style, and adjust indentation levels for improved document structure. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| OrderedList | ![OrderedList icon](./images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| -| UnorderedList | ![UnorderedList icon](./images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| -| NumberFormatList | ![NumberFormatList icon](./images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| -| BulletFormatList | ![BulletFormatList icon](./images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| -| Indent | ![Indent icon](./images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| -| Outdent | ![Outdent icon](./images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| - -#### Hyperlinks - -This section provides tools for inserting and managing hyperlinks within the content. Users can create new links or modify existing ones to enhance document navigation and interactivity. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Hyperlink | ![Hyperlink icon](./images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| -| InsertLink | ![InsertLink icon](./images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | - -##### Link quicktoolbar items - -The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Editor, allowing users to add, edit, or remove links from selected text or images directly within the editor. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| OpenLink | ![OpenLink icon](./images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | -| EditLink | ![EditLink icon](./images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | -| RemoveLink | ![RemoveLink icon](./images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | - -#### Images - -This section contains the primary tool for inserting images into the editor. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Insert Image | ![Images icon](./images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| - -##### Image quicktoolbar items - -The image quicktoolbar offers a set of tools to edit images inserted in the Rich Text Editor. It allows users to modify image properties, including alignment, size, alternate text, and links, enhancing image management in the content. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Replace Image | ![Replace icon](./images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | -| Align Image | ![Alignment icon](./images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | -| Remove Image | ![Remove icon](./images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | -| OpenImageLink | ![OpenImageLink icon](./images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | -| EditImageLink | ![EditImageLink icon](./images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | -| RemoveImageLink | ![RemoveImageLink icon](./images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | -| Display | ![Display icon](./images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | -| AltText | ![AltText icon](./images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | -| Dimension | ![Dimension icon](./images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | - -#### Tables - -This section offers the main tool for creating tables within the content. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| CreateTable | ![CreateTable icon](./images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | - -##### Table quicktoolbar items - -The table quicktoolbar provides options for table editing within the Rich Text Editor. Users can insert or remove rows and columns, merge or split cells, and access table properties for easier table management and customization. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| RemoveTable | ![RemoveTable icon](./images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | -| TableHeader | ![TableHeader icon](./images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | -| TableColumns | ![TableColumns icon](./images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | -| TableRows | ![TableRows icon](./images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | -| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](./images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | -| TableCellVerticalAlign | ![TableCellVerticalAlign icon](./images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | -| TableEditProperties | ![TableEditProperties icon](./images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | - -#### Undo & redo - -These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Undo | ![Undo icon](./images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | -| Redo | ![Redo icon](./images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| - -#### Other tools - -This section contains miscellaneous tools such as full-screen mode, print, preview, source code editing, and clearing all styles from text. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| FullScreen | ![FullScreen icon](./images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| -| Maximize | ![Maximize icon](./images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | -| Minimize | ![Minimize icon](./images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | -| Preview | ![Preview icon](./images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | -| InsertCode | ![InsertCode icon](./images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | -| Print | ![Print icon](./images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| -| ClearAll | ![ClearAll icon](./images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | -| SourceCode | ![SourceCode icon](./images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| - - -## How to Enable the Toolbar - -The Rich Text Editor toolbar contains a collection of tools such as bold, italic and text alignment buttons that are used to format the content. However, in most integrations, you can customize the toolbar configurations easily to suit your needs. - -The Rich Text Editor allows you to configure different types of toolbar using [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Type) field in [ToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The types of toolbar are: - -1. Expand -2. MultiRow -3. Scrollable - -## Expanding the Toolbar - -The default mode of the toolbar is `Expand`, configured through [`ToolbarSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) with `Type: 'Expand'`. This mode hides any overflowing toolbar items in the next row, which can viewed by clicking the expand arrow. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-expand/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-expand/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Configuring a Multi-row Toolbar - -Setting the `Type` as `MultiRow` in [`ToolbarSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will arrange the toolbar items across multiple rows, displaying all configured toolbar items. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-multi/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-multi/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Implementing a Scrollable Toolbar - -Setting the `Type` to `Scrollable` in [ToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display the toolbar items in a single line, enabling horizontal scrolling in the toolbar. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/scrollable/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/scrollable/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/scrollable/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/scrollable/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Creating a Sticky Toolbar - -By default, the toolbar remains fixed at the top of the Rich Text Editor when scrolling. You can customize the position of this sticky toolbar by setting the [FloatingToolbarOffset](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FloatingToolbarOffset) to adjust its offset from the top of the document. - -Additionally, you can enable or disable the floating toolbar using the [EnableFloating](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_EnableFloating) property. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/floating-toolbar/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/floating-toolbar/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -### Custom Toolbar Items - -The Rich Text Editor allows you to configure your own commands to its toolbar using the [ToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The command can be plain text, icon, or HTML template. The order and the group can also be defined where the command should be included. Bind the action to the command by getting its instance. - -This sample shows how to add your own commands to the toolbar of the Rich Text Editor. The “Ω” command is added to insert special characters in the editor. By clicking the “Ω” command, it will show the special characters list, and then choose the character to be inserted in the editor. - -The following code snippet illustrates custom tool with tooltip text which will be included in [Items](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) field of the [ToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. - - -```csharp - - var tools = new { - tooltipText = "Insert Symbol", - template = "" - }; - ViewBag.items = new object[] { "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "OrderedList", - "UnorderedList", "|", "CreateLink", "Image", "|", "SourceCode", tools - , "|", "Undo", "Redo" - }; - -``` - -The Rich Text Editor provides options to customize tool functionalities. Use the `undo` property to enable or disable the undo function for specific tools. Additionally, the click property lets you configure and bind the onclick event of a tool to a specific method. - -This sample demonstrates how to add a custom "Ω" icon to the toolbar. Clicking on this icon opens a dialog where you can insert special characters into the editor. It also shows how to enable undo and redo functionalities. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/custom-tool/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/custom-tool/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -> When rendering any control for the custom toolbar, like a dropdown, the focus may be lost, causing it to render outside the Rich Text Editor and triggering a blur event. This can interfere with proper functionalities like cursor focus. To prevent this issue, it is recommended to assign the `e-rte-elements` class to the control rendered in the custom toolbar. - -### Enabling and Disabling Toolbar Items - -You can use the `enableToolbarItem` and `disableToolbarItem` methods to control the state of toolbar items. This methods takes a single item or an array of [items](#available-toolbar-items) as parameter. - -> You can add the command name `Custom` to disable the custom toolbar items on source code view and other quick toolbar operations. - - -## Quick Inline toolbar - -Quick commands are opened as context-menu on clicking the corresponding element. The commands must be passed as string collection to image, text, link and table attributes of the [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. - -| Target Element | Default Quick Toolbar items | -|----------------|---------| -| Image | 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText','Dimension'.| -| Link | 'Open', 'Edit', 'UnLink'.| -| Text | null
      (Any toolbar [items](https://ej2.syncfusion.com/aspnetmvc/documentation/rich-text-editor/toolbar#toolbar-items) in the Rich Text Editor can be configured here).| -| table| 'TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'.| - -Custom tool can be added to the corresponding quick toolbar, using [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. - -The below sample demonstrates the option to insert the image to the Rich Text Editor content as well as option to rotate the image through the quick toolbar. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/quick-inline/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/quick-inline/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## See Also - -* [Customizing Rich Text Editor Toolbar Styles](./style#customizing-the-rich-text-editors-toolbar) -* [Implementing Inline Editing](./inline-editing) -* [Customizing Accessibility Shortcut Keys](./accessibility#keyboard-interaction) \ No newline at end of file diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md index 60bd145152..66e5ca1877 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md @@ -18,15 +18,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](./images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](./images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](./images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](./images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](./images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](./images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](./images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](./images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar.md deleted file mode 100644 index 907943623c..0000000000 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar.md +++ /dev/null @@ -1,402 +0,0 @@ ---- -layout: post -title: Toolbar in ##Platform_Name## Rich Text Editor Component | Syncfusion -description: Learn here all about Toolbar in Syncfusion ##Platform_Name## Rich Text Editor component of Syncfusion Essential JS 2 and more. -platform: ej2-asp-core-mvc -control: Toolbar -publishingplatform: ##Platform_Name## -documentation: ug ---- - -# Toolbar in ##Platform_Name## Rich Text Editor Control - -The Syncfusion ASP.NET Core Rich Text Editor control provides a versatile and powerful toolbar to enhance your text editing experience. The toolbar contains a variety of formatting, styling, and editing tools, allowing users to create and modify content efficiently. - -## Tools - -### Default Toolbar Items - -By default, the ASP.NET Core Rich Text Editor displays the following toolbar items: - -> `Bold` , `Italic` , `Underline` , `|` , `Formats` , `Alignments` , `Blockquote`, `OrderedList` , `UnorderedList` , `|` , `CreateLink` , `Image` , `|` , `SourceCode` , `Undo` , `Redo` - -These default items cover essential text editing features, such as text formatting, lists, alignment, and linking. - -### Available Toolbar Items - -The following table shows the list of available tools in the Rich Text Editor's toolbar. - -The order of items in the toolbar can be customized to meet your application's requirements. If no specific order is set, the editor will render the above default toolbar items. Below is a list of all available toolbar items in the Rich Text Editor. - -#### Text formatting - -It provides tools for applying text styles such as bold, italic, underline, strike-through, and more to modify the appearance of the text. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](./images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | -| Italic | ![Italic icon](./images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | -| Underline | ![Underline icon](./images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| -| ClearFormat | ![ClearFormat icon](./images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| -| Blockquote | ![Blockquote icon](./images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| -| SubScript | ![SubScript icon](./images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](./images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| -| LowerCase | ![LowerCase icon](./images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](./images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| - -#### Font & styling - -Tools in this section allow users to customize font properties such as font family, size, color, background color, and paragraph formatting. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| FontName | ![FontName icon](./images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| -| FontSize | ![FontSize icon](./images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| -| FontColor | ![FontColor icon](./images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| -| BackgroundColor | ![BackgroundColor icon](./images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| -| Formats (Paragraph, Headings) | ![Format icon](./images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| - -#### Alignment - -This section provides alignment options for the text or content, allowing users to justify text or align it to the left, center, or right. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Alignment | ![Alignment icon](./images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| -| JustifyLeft | ![JustifyLeft icon](./images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | -| JustifyCenter | ![JustifyCenter icon](./images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | -| JustifyRight | ![JustifyRight icon](./images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | -| JustifyFull | ![JustifyFull icon](./images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | - -#### Lists & indentation - -Tools here allow users to create ordered and unordered lists, change the list style, and adjust indentation levels for improved document structure. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| OrderedList | ![OrderedList icon](./images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| -| UnorderedList | ![UnorderedList icon](./images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| -| NumberFormatList | ![NumberFormatList icon](./images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| -| BulletFormatList | ![BulletFormatList icon](./images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| -| Indent | ![Indent icon](./images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| -| Outdent | ![Outdent icon](./images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| - -#### Hyperlinks - -This section provides tools for inserting and managing hyperlinks within the content. Users can create new links or modify existing ones to enhance document navigation and interactivity. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Hyperlink | ![Hyperlink icon](./images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| -| InsertLink | ![InsertLink icon](./images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | - -##### Link quicktoolbar items - -The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Editor, allowing users to add, edit, or remove links from selected text or images directly within the editor. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| OpenLink | ![OpenLink icon](./images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | -| EditLink | ![EditLink icon](./images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | -| RemoveLink | ![RemoveLink icon](./images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | - -#### Images - -This section contains the primary tool for inserting images into the editor. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Insert Image | ![Images icon](./images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| - -##### Image quicktoolbar items - -The image quicktoolbar offers a set of tools to edit images inserted in the Rich Text Editor. It allows users to modify image properties, including alignment, size, alternate text, and links, enhancing image management in the content. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Replace Image | ![Replace icon](./images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | -| Align Image | ![Alignment icon](./images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | -| Remove Image | ![Remove icon](./images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | -| OpenImageLink | ![OpenImageLink icon](./images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | -| EditImageLink | ![EditImageLink icon](./images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | -| RemoveImageLink | ![RemoveImageLink icon](./images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | -| Display | ![Display icon](./images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | -| AltText | ![AltText icon](./images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | -| Dimension | ![Dimension icon](./images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | - -#### Tables - -This section offers the main tool for creating tables within the content. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| CreateTable | ![CreateTable icon](./images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | - -##### Table quicktoolbar items - -The table quicktoolbar provides options for table editing within the Rich Text Editor. Users can insert or remove rows and columns, merge or split cells, and access table properties for easier table management and customization. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| RemoveTable | ![RemoveTable icon](./images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | -| TableHeader | ![TableHeader icon](./images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | -| TableColumns | ![TableColumns icon](./images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | -| TableRows | ![TableRows icon](./images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | -| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](./images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | -| TableCellVerticalAlign | ![TableCellVerticalAlign icon](./images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | -| TableEditProperties | ![TableEditProperties icon](./images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | - -#### Undo & redo - -These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| Undo | ![Undo icon](./images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | -| Redo | ![Redo icon](./images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| - -#### Other tools - -This section contains miscellaneous tools such as full-screen mode, print, preview, source code editing, and clearing all styles from text. - -| Name | Icons | Summary | Initialization | -|----------------|---------|---------|------------------------------------------| -| FullScreen | ![FullScreen icon](./images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| -| Maximize | ![Maximize icon](./images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | -| Minimize | ![Minimize icon](./images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | -| Preview | ![Preview icon](./images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | -| InsertCode | ![InsertCode icon](./images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | -| Print | ![Print icon](./images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| -| ClearAll | ![ClearAll icon](./images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | -| SourceCode | ![SourceCode icon](./images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| - - -## How to Enable the Toolbar - -To learn about the different types of toolbars in the ASP.NET Core Rich Text Editor, watch this video: - -{% youtube "youtube:https://www.youtube.com/watch?v=09tBgKpjgjU"%} - -The Rich Text Editor toolbar contains a collection of tools such as bold, italic and text alignment buttons that are used to format the content. However, in most integrations, you can customize the toolbar configurations easily to suit your needs. - -The Rich Text Editor allows you to configure different types of toolbar using [type](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Type) field in [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The types of toolbar are: - -1. Expand -2. MultiRow -3. Scrollable - -## Expanding the Toolbar - -The default mode of the toolbar is `Expand`, configured through [`toolbarSettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) with `type: 'Expand'`. This mode hides any overflowing toolbar items in the next row, which can viewed by clicking the expand arrow. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-expand/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-expand/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-expand/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Configuring a Multi-row Toolbar - -Setting the `type` as `MultiRow` in [`toolbarSettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will arrange the toolbar items across multiple rows, displaying all configured toolbar items. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-multi/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/toolbar-multi/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/toolbar-multi/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Implementing a Scrollable Toolbar - -Setting the `type` to `Scrollable` in [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display the toolbar items in a single line, enabling horizontal scrolling in the toolbar. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/scrollable/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/scrollable/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/scrollable/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/scrollable/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## Creating a Sticky Toolbar - -By default, the toolbar remains fixed at the top of the Rich Text Editor when scrolling. You can customize the position of this sticky toolbar by setting the [floatingToolbarOffset](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FloatingToolbarOffset) to adjust its offset from the top of the document. - -Additionally, you can enable or disable the floating toolbar using the [enableFloating](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_EnableFloating) property. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/floating-toolbar/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/floating-toolbar/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/floating-toolbar/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -### Custom Toolbar Items - -To quickly get started with the ASP.NET Core Rich Text Editor with a custom toolbar, watch this video: - -{% youtube "youtube:https://www.youtube.com/watch?v=AnHsErOlU1A"%} - -The Rich Text Editor allows you to configure your own commands to its toolbar using the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The command can be plain text, icon, or HTML template. The order and the group can also be defined where the command should be included. Bind the action to the command by getting its instance. - -This sample shows how to add your own commands to the toolbar of the Rich Text Editor. The “Ω” command is added to insert special characters in the editor. By clicking the “Ω” command, it will show the special characters list, and then choose the character to be inserted in the editor. - -The following code snippet illustrates custom tool with tooltip text which will be included in [items](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Items) field of the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. - - -```csharp - - var tools = new { - tooltipText = "Insert Symbol", - template = "" - }; - ViewBag.items = new object[] { "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "OrderedList", - "UnorderedList", "|", "CreateLink", "Image", "|", "SourceCode", tools - , "|", "Undo", "Redo" - }; - -``` - -The Rich Text Editor provides options to customize tool functionalities. Use the `undo` property to enable or disable the undo function for specific tools. Additionally, the click property lets you configure and bind the onclick event of a tool to a specific method. - -This sample demonstrates how to add a custom "Ω" icon to the toolbar. Clicking on this icon opens a dialog where you can insert special characters into the editor. It also shows how to enable undo and redo functionalities. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/custom-tool/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/custom-tool/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/custom-tool/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -> When rendering any control for the custom toolbar, like a dropdown, the focus may be lost, causing it to render outside the Rich Text Editor and triggering a blur event. This can interfere with proper functionalities like cursor focus. To prevent this issue, it is recommended to assign the `e-rte-elements` class to the control rendered in the custom toolbar. - -### Enabling and Disabling Toolbar Items - -You can use the `enableToolbarItem` and `disableToolbarItem` methods to control the state of toolbar items. This methods takes a single item or an array of [items](#available-toolbar-items) as parameter. - ->You can add the command name `Custom` to disable the custom toolbar items on source code view and other quick toolbar operations. - -## Quick Inline toolbar - -Quick commands are opened as context-menu on clicking the corresponding element. The commands must be passed as string collection to image, text, link and table attributes of the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. - -| Target Element | Default Quick Toolbar items | -|----------------|---------| -|image | 'Replace', 'Align', 'Caption', 'Remove', 'InsertLink', 'Display', 'AltText','Dimension'.| -| link | 'Open', 'Edit', 'UnLink'.| -| text | null
      (Any toolbar [items](https://ej2.syncfusion.com/aspnetcore/documentation/rich-text-editor/toolbar#toolbar-items) in the Rich Text Editor can be configured here).| -| table| 'TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'.| - -Custom tool can be added to the corresponding quick toolbar, using [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_QuickToolbarSettings) property. - -The below sample demonstrates the option to insert the image to the Rich Text Editor content as well as option to rotate the image through the quick toolbar. - -{% if page.publishingplatform == "aspnet-core" %} - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/quick-inline/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} -{% endhighlight %} -{% endtabs %} - -{% elsif page.publishingplatform == "aspnet-mvc" %} - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/quick-inline/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/quick-inline/controller.cs %} -{% endhighlight %} -{% endtabs %} -{% endif %} - -## See Also - -* [Customizing Rich Text Editor Toolbar Styles](./style#customizing-the-rich-text-editors-toolbar) -* [Implementing Inline Editing](./inline-editing) -* [Customizing Accessibility Shortcut Keys](./accessibility#keyboard-interaction) From 7e9605db5387cb0eb9a599730ea1f30c0e3a1c31 Mon Sep 17 00:00:00 2001 From: sf4443 <159987806+sf4443@users.noreply.github.com> Date: Thu, 1 May 2025 16:48:25 +0530 Subject: [PATCH 36/39] 905249: Uploader Changing titles to saving and returning responses --- ej2-asp-core-mvc/uploader/EJ2_ASP.NETCORE/async.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ej2-asp-core-mvc/uploader/EJ2_ASP.NETCORE/async.md b/ej2-asp-core-mvc/uploader/EJ2_ASP.NETCORE/async.md index cd4cb6d429..7d430f4786 100644 --- a/ej2-asp-core-mvc/uploader/EJ2_ASP.NETCORE/async.md +++ b/ej2-asp-core-mvc/uploader/EJ2_ASP.NETCORE/async.md @@ -141,8 +141,9 @@ public async Task Save(IFormFile UploadFiles) return Ok(); } ``` +## Saving and returning responses -### Server-side configuration for saving and returning responses +### Server-side configuration The following example demonstrates the server-side action for saving files on the server and returning responses in JSON, String, and File formats. @@ -209,7 +210,7 @@ public IActionResult Save() ``` -### Client-side configuration for saving and returning responses +### Client-side configuration The following example demonstrates the client-side action for saving files on the server and returning responses in JSON, String, and File formats. From 95928d564028fb1175cc43045a545c206bf82131 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Fri, 2 May 2025 16:04:51 +0530 Subject: [PATCH 37/39] 951777: Corrected the image path --- .../EJ2_ASP.MVC/basic-text-styling.md | 18 +-- .../editor-types/resizable-editor.md | 2 +- .../EJ2_ASP.MVC/insert-image-media/audio.md | 6 +- .../insert-image-media/insert-images.md | 8 +- .../EJ2_ASP.MVC/insert-image-media/video.md | 14 +-- .../EJ2_ASP.MVC/smart-editing/emoji-picker.md | 2 +- .../EJ2_ASP.MVC/smart-editing/mentions.md | 2 +- .../rich-text-editor/EJ2_ASP.MVC/table.md | 20 +-- .../EJ2_ASP.MVC/tools/built-in-tools.md | 118 +++++++++--------- .../EJ2_ASP.MVC/tools/text-formatting.md | 18 +-- .../EJ2_ASP.NETCORE/basic-text-styling.md | 18 +-- .../editor-types/inline-editing.md | 2 +- .../editor-types/resizable-editor.md | 2 +- .../insert-image-media/audio.md | 6 +- .../insert-image-media/insert-images.md | 8 +- .../insert-image-media/video.md | 14 +-- .../smart-editing/emoji-picker.md | 2 +- .../EJ2_ASP.NETCORE/smart-editing/mentions.md | 2 +- .../rich-text-editor/EJ2_ASP.NETCORE/table.md | 20 +-- .../EJ2_ASP.NETCORE/tools/built-in-tools.md | 118 +++++++++--------- .../EJ2_ASP.NETCORE/tools/text-formatting.md | 18 +-- 21 files changed, 209 insertions(+), 209 deletions(-) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md index 412c4abf8a..60bd145152 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/basic-text-styling.md @@ -18,15 +18,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](.../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](./images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](./images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](./images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](./images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](./images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](./images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](./images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](./images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md index db1b3ea1bc..780ec0e6ae 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/editor-types/resizable-editor.md @@ -37,7 +37,7 @@ The following sample demonstrates the resizable feature. {% endtabs %} {% endif %} -![Rich Text Editor Resizable support](../../images/Resizable-Editor.png) +![Rich Text Editor Resizable support](../images/Resizable-Editor.png) ## Setting Editor Resize Limits diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md index 0b8165fd12..153c4273c0 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/audio.md @@ -67,7 +67,7 @@ You can insert audio from either the hosted link or the local machine, by clicki By default, the audio tool opens the audio dialog, allowing you to insert audio from an online source. Inserting the URL will be added to the `src` attribute of the `` tag. -![Rich Text Editor Audio insert](../../images/aspcore-richtexteditor-audio-web.png) +![Rich Text Editor Audio insert](../images/aspcore-richtexteditor-audio-web.png) ## Uploading Audio from Local Machine @@ -206,7 +206,7 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need Once an audio file has been inserted, you can change it using the Rich Text Editor [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) `AudioReplace` option. You can replace the audio file using the web URL or the browse option in the audio dialog. -![Rich Text Editor Audio replace](../../images/aspcore-richtexteditor-audio-replace.png) +![Rich Text Editor Audio replace](../images/aspcore-richtexteditor-audio-replace.png) ## Deleting Audios @@ -214,7 +214,7 @@ To remove audio from the Rich Text Editor content, select the audio and click th Once you select the audio from the local machine, the URL for the audio will be generated. You can remove the audio from the service location by clicking the cross icon. -![Rich Text Editor Audio delete](../../images/aspcore-richtexteditor-audio-del.png) +![Rich Text Editor Audio delete](../images/aspcore-richtexteditor-audio-del.png) ## Configuring Audio Display Position diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md index 3e567adca5..c2b6a8ee9e 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/insert-images.md @@ -156,7 +156,7 @@ To remove an image from the Rich Text Editor content, select the image and click Once you select the image from the local machine, the URL for the image will be generate. From there, you can remove the image from the service location by clicking the cross icon. -![Rich Text Editor Image delete](../../images/image-del.png) +![Rich Text Editor Image delete](../images/image-del.png) The following sample explains, how to configure `RemoveUrl` to remove a saved image from the remote service location, when the following image remove actions are performed: @@ -194,7 +194,7 @@ Sets the default width and height of the image when it is inserted in the Rich T Through the quick toolbar, change the width and height using `Change Size` option. Once you click, the Image Size dialog box will open as follows. In that you can specify the width and height of the image in pixel. -![Rich Text Editor Image dimension](../../images/image-size.png) +![Rich Text Editor Image dimension](../images/image-size.png) ## Adding Captions and Alt Text to Images @@ -238,13 +238,13 @@ Sets the default display for an image when it is inserted in the Rich Text Edito The hyperlink itself can be an image in Rich Text Editor. If the image given as hyperlink, remove, edit and open link will be added to the quick toolbar of image. For further details about link, see the [`link documentation`](./link) documentation. -![Rich Text Editor image with link](../../images/image-link.png) +![Rich Text Editor image with link](../images/image-link.png) ## Image Resizing Tools Rich Text Editor has a built-in image inserting support. The resize points will be appearing on each corner of image when focus. So, users can resize the image using mouse points or thumb through the resize points easily. Also, the resize calculation will be done based on aspect ratio. -![Rich Text Editor image resize](../../images/image-resize.png) +![Rich Text Editor image resize](../images/image-resize.png) ## Configuring Allowed Image Types diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md index 5794843537..3612ebe93a 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/insert-image-media/video.md @@ -67,13 +67,13 @@ You can insert a video from either a hosted link or your local machine by clicki The insert video dialog opens with the `Embedded code` option selected by default. This allows you to insert a video using embedded code. -![Rich Text Editor Embed URL Video insert](../../images/aspcore-richtexteditor-video-embed.png) +![Rich Text Editor Embed URL Video insert](../images/aspcore-richtexteditor-video-embed.png) ### Inserting Video via Web URL You can switch to the `Web URL` option by selecting the Web URL checkbox. Inserting a video using the Web URL option will add the video URL as the `src` attribute of the `` tag. -![Rich Text Editor Video insert](../../images/aspcore-richtexteditor-video-web.png) +![Rich Text Editor Video insert](../images/aspcore-richtexteditor-video-web.png) ## Uploading Video from Local Machine @@ -211,9 +211,9 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can Once a video file has been inserted, you can replace it using the Rich Text Editor [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) `VideoReplace` option. You can replace the video file either by using the embedded code or the web URL and the browse option in the video dialog. -![Rich Text Editor Embed Video replace](../../images/video-replace-embed.png) +![Rich Text Editor Embed Video replace](../images/video-replace-embed.png) -![Rich Text Editor Web Video replace](../../images/video-replace-web.png) +![Rich Text Editor Web Video replace](../images/video-replace-web.png) ## Deleting Video @@ -221,7 +221,7 @@ To remove a video from the Rich Text Editor content, select the video and click Once you select the video from the local machine, the URL for the video will be generated. You can remove the video from the service location by clicking the cross icon. -![Rich Text Editor Video delete](../../images/video-del.png) +![Rich Text Editor Video delete](../images/video-del.png) ## Adjusting Video Dimensions @@ -230,7 +230,7 @@ Set the default width, minWidth, height, and minHeight of the video element when Through the [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video), you can also change the width and height using the `Change Size` button. Once you click on the button, the video size dialog will open as below. In that, specify the width and height of the video in pixels. -![Rich Text Editor Video dimension](../../images/video-size.png) +![Rich Text Editor Video dimension](../images/video-size.png) ## Configuring Video Display Position @@ -270,7 +270,7 @@ You can disable the resize action by configuring `false` for the [InsertVideoSet > If the [MinWidth](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinWidth) and [MinHeight](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinHeight) properties are configured, the video resizing does not shrink below the specified values. -![Rich Text Editor video resize](../../images/aspcore-richtexteditor-video-resize.png) +![Rich Text Editor video resize](../images/aspcore-richtexteditor-video-resize.png) ## Customizing the Video Quick Toolbar diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md index 0f03b8ae6f..8009b69b8b 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/emoji-picker.md @@ -50,7 +50,7 @@ The following code example shows how to add the emoji picker tool in the Rich Te Quickly access the emoji picker by pressing the colon (:) key while typing a word prefix in an editor, allowing instant emoji selection and display. Moreover, continue typing in the editor after the colon (:) to filter and refine your search for the desired emojis. -![Rich Text Editor Emoji Picker](../../images/emoji-picker-shorcut.png) +![Rich Text Editor Emoji Picker](../images/emoji-picker-shorcut.png) ## Navigating and Selecting Emojis Using the Keyboard diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md index c5f440bddb..76711876e9 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/smart-editing/mentions.md @@ -34,7 +34,7 @@ In the following sample, we configured the following properties with popup dimen {% endhighlight %} {% endtabs %} -![ASP.NET MVC mention integration ](../../images/mention-integration.png) +![ASP.NET MVC mention integration ](../images/mention-integration.png) > [View Sample](https://ej2.syncfusion.com/aspnetmvc/RichTextEditor/MentionIntegration#/bootstrap5) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/table.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/table.md index 5a72a7159c..540533adc7 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/table.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/table.md @@ -47,25 +47,25 @@ Tables can also be inserted through the `Insert Table` option in the pop-up wher The `TableHeader` command is available in the quick toolbar, allowing you to add or remove the header row from the inserted table. The following image illustrates the table header. -![Rich Text Editor table header](../images/table_header.png) +![Rich Text Editor table header](./images/table_header.png) ## Inserting Rows You can insert `Rows` above or below the selected table cell using the quick toolbar. The focused row can also be deleted. The following screenshot shows the available options of the row item. -![Rich Text Editor table row](../images/table_rows.png) +![Rich Text Editor table row](./images/table_rows.png) ## Inserting Columns `Columns` can be inserted to the left or right of the selected table cell using the quick toolbar. The focused column can also be deleted. The following screenshot shows the available options in inserting column item. -![Rich Text Editor table column](../images/table_column.png) +![Rich Text Editor table column](./images/table_column.png) ## Setting Cell Background Color Set the background color for each table cell using the `BackgroundColor` command in the quick toolbar. -![Rich Text Editor table background color](../images/table_bg_color.png) +![Rich Text Editor table background color](./images/table_bg_color.png) ## Deleting Tables @@ -77,13 +77,13 @@ Delete the entire table using the delete item in the quick toolbar. Align text inside table cells to the top, middle, or bottom using the `TableCellVerticalAlign` tool in the quick toolbar. -![Rich Text Editor table vertical alignment](../images/table_vertical.png) +![Rich Text Editor table vertical alignment](./images/table_vertical.png) ### Horizontal Alignment Align text inside table cells to the left, right, or center using the `TableCellHorizontalAlign` tool in the quick toolbar. -![Rich Text Editor table horizontal alignment](../images/table_horizontal.png) +![Rich Text Editor table horizontal alignment](./images/table_horizontal.png) ## Applying Table Styles @@ -95,7 +95,7 @@ By Default, provides Dashed border and Alternate rows. **Alternate border**: Applies an alternating background to table rows. -![Rich Text Editor table styles](../images/table_style.png) +![Rich Text Editor table styles](./images/table_style.png) ## Setting Table and Cell Dimensions @@ -103,7 +103,7 @@ Sets the default width of the table when it is inserted in the Rich Text Editor Users can modify the width, cell padding, and cell spacing of selected tables using the properties option in the quick toolbar. -![Rich Text Editor table settings](../images/table_properties.png) +![Rich Text Editor table settings](./images/table_properties.png) ## Table Cell Selection and Formatting @@ -163,7 +163,7 @@ The table cell merge feature allows you to merge two or more row and column cell The following image explains the table merge action. -![Rich Text Editor table cell merge](../images/table_merge.png) +![Rich Text Editor table cell merge](./images/table_merge.png) ### Splitting Table Cells @@ -171,7 +171,7 @@ The table cell split feature allows you to a selected cell can be split both hor The following image explains the table split action. -![Rich Text Editor table cell split](../images/table_split.png) +![Rich Text Editor table cell split](./images/table_split.png) {% if page.publishingplatform == "aspnet-core" %} diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md index 0b71a487a2..282bcdf4a3 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/built-in-tools.md @@ -28,16 +28,16 @@ It provides tools for applying text styles such as bold, italic, underline, stri | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](../../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | -| Italic | ![Italic icon](../../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | -| Underline | ![Underline icon](../../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| -| ClearFormat | ![ClearFormat icon](../../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| -| Blockquote | ![Blockquote icon](../../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| -| SubScript | ![SubScript icon](../../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| -| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | +| Italic | ![Italic icon](../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | +| Underline | ![Underline icon](../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| +| ClearFormat | ![ClearFormat icon](../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| +| Blockquote | ![Blockquote icon](../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| +| SubScript | ![SubScript icon](../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| ### Font & styling @@ -45,11 +45,11 @@ Tools in this section allow users to customize font properties such as font fami | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| FontName | ![FontName icon](../../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| -| FontSize | ![FontSize icon](../../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| -| FontColor | ![FontColor icon](../../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| -| BackgroundColor | ![BackgroundColor icon](../../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| -| Formats (Paragraph, Headings) | ![Format icon](../../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| +| FontName | ![FontName icon](../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| +| FontSize | ![FontSize icon](../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| +| FontColor | ![FontColor icon](../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| +| BackgroundColor | ![BackgroundColor icon](../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| +| Formats (Paragraph, Headings) | ![Format icon](../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| ### Alignment @@ -57,11 +57,11 @@ This section provides alignment options for the text or content, allowing users | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Alignment | ![Alignment icon](../../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| -| JustifyLeft | ![JustifyLeft icon](../../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | -| JustifyCenter | ![JustifyCenter icon](../../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | -| JustifyRight | ![JustifyRight icon](../../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | -| JustifyFull | ![JustifyFull icon](../../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | +| Alignment | ![Alignment icon](../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| +| JustifyLeft | ![JustifyLeft icon](../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | +| JustifyCenter | ![JustifyCenter icon](../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | +| JustifyRight | ![JustifyRight icon](../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | +| JustifyFull | ![JustifyFull icon](../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | ### Lists & indentation @@ -69,12 +69,12 @@ Tools here allow users to create ordered and unordered lists, change the list st | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| OrderedList | ![OrderedList icon](../../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| -| UnorderedList | ![UnorderedList icon](../../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| -| NumberFormatList | ![NumberFormatList icon](../../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| -| BulletFormatList | ![BulletFormatList icon](../../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| -| Indent | ![Indent icon](../../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| -| Outdent | ![Outdent icon](../../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| +| OrderedList | ![OrderedList icon](../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| +| UnorderedList | ![UnorderedList icon](../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| +| NumberFormatList | ![NumberFormatList icon](../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| +| BulletFormatList | ![BulletFormatList icon](../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| +| Indent | ![Indent icon](../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| +| Outdent | ![Outdent icon](../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| ### Hyperlinks @@ -82,8 +82,8 @@ This section provides tools for inserting and managing hyperlinks within the con | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Hyperlink | ![Hyperlink icon](../../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| -| InsertLink | ![InsertLink icon](../../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | +| Hyperlink | ![Hyperlink icon](../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| +| InsertLink | ![InsertLink icon](../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | #### Link quicktoolbar items @@ -91,9 +91,9 @@ The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Edito | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| OpenLink | ![OpenLink icon](../../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | -| EditLink | ![EditLink icon](../../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | -| RemoveLink | ![RemoveLink icon](../../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | +| OpenLink | ![OpenLink icon](../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | +| EditLink | ![EditLink icon](../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | +| RemoveLink | ![RemoveLink icon](../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | ### Images @@ -101,7 +101,7 @@ This section contains the primary tool for inserting images into the editor. | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Insert Image | ![Images icon](../../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| +| Insert Image | ![Images icon](../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| #### Image quicktoolbar items @@ -109,15 +109,15 @@ The image quicktoolbar offers a set of tools to edit images inserted in the Rich | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Replace Image | ![Replace icon](../../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | -| Align Image | ![Alignment icon](../../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | -| Remove Image | ![Remove icon](../../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | -| OpenImageLink | ![OpenImageLink icon](../../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | -| EditImageLink | ![EditImageLink icon](../../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | -| RemoveImageLink | ![RemoveImageLink icon](../../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | -| Display | ![Display icon](../../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | -| AltText | ![AltText icon](../../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | -| Dimension | ![Dimension icon](../../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | +| Replace Image | ![Replace icon](../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | +| Align Image | ![Alignment icon](../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | +| Remove Image | ![Remove icon](../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | +| OpenImageLink | ![OpenImageLink icon](../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | +| EditImageLink | ![EditImageLink icon](../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | +| RemoveImageLink | ![RemoveImageLink icon](../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | +| Display | ![Display icon](../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | +| AltText | ![AltText icon](../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | +| Dimension | ![Dimension icon](../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | ### Tables @@ -125,7 +125,7 @@ This section offers the main tool for creating tables within the content. | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| CreateTable | ![CreateTable icon](../../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | +| CreateTable | ![CreateTable icon](../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | #### Table quicktoolbar items @@ -133,13 +133,13 @@ The table quicktoolbar provides options for table editing within the Rich Text E | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| RemoveTable | ![RemoveTable icon](../../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | -| TableHeader | ![TableHeader icon](../../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | -| TableColumns | ![TableColumns icon](../../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | -| TableRows | ![TableRows icon](../../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | -| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | -| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | -| TableEditProperties | ![TableEditProperties icon](../../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | +| RemoveTable | ![RemoveTable icon](../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | +| TableHeader | ![TableHeader icon](../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | +| TableColumns | ![TableColumns icon](../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | +| TableRows | ![TableRows icon](../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | +| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | +| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | +| TableEditProperties | ![TableEditProperties icon](../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | ### Undo & redo @@ -147,8 +147,8 @@ These tools allow users to easily undo or redo any changes made within the edito | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Undo | ![Undo icon](../../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | -| Redo | ![Redo icon](../../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| +| Undo | ![Undo icon](../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | +| Redo | ![Redo icon](../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| ### Other tools @@ -156,14 +156,14 @@ This section contains miscellaneous tools such as full-screen mode, print, previ | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| FullScreen | ![FullScreen icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| -| Maximize | ![Maximize icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | -| Minimize | ![Minimize icon](../../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | -| Preview | ![Preview icon](../../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | -| InsertCode | ![InsertCode icon](../../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | -| Print | ![Print icon](../../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| -| ClearAll | ![ClearAll icon](../../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | -| SourceCode | ![SourceCode icon](../../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| +| FullScreen | ![FullScreen icon](../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| +| Maximize | ![Maximize icon](../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | +| Minimize | ![Minimize icon](../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | +| Preview | ![Preview icon](../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | +| InsertCode | ![InsertCode icon](../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | +| Print | ![Print icon](../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| +| ClearAll | ![ClearAll icon](../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | +| SourceCode | ![SourceCode icon](../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| ## Removing built-in tool from toolbar diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md index 13473d13b6..8411772b79 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md @@ -20,15 +20,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](../../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](../../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](../../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](../../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](../../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md index 66e5ca1877..60bd145152 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/basic-text-styling.md @@ -18,15 +18,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](./images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](./images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](./images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](./images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](./images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](./images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](./images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](./images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](./images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md index 4ee1707e8b..f029509ac1 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/inline-editing.md @@ -45,5 +45,5 @@ This feature enhances the inline editing experience by providing immediate acces {% endtabs %} {% endif %} -![Rich Text Editor InlineMode](../../images/inline.png) +![Rich Text Editor InlineMode](../images/inline.png) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md index 3f3a72d8f9..567ccc1d23 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/editor-types/resizable-editor.md @@ -37,7 +37,7 @@ The following sample demonstrates the resizable feature. {% endtabs %} {% endif %} -![Rich Text Editor Resizable support](../../images/Resizable-Editor.png) +![Rich Text Editor Resizable support](../images/Resizable-Editor.png) ## Setting Editor Resize Limits diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md index d0cb56799a..f74a7d0d28 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/audio.md @@ -67,7 +67,7 @@ You can insert audio from either the hosted link or the local machine, by clicki By default, the audio tool opens the audio dialog, allowing you to insert audio from an online source. Inserting the URL will be added to the `src` attribute of the `` tag. -![Rich Text Editor Audio insert](../../images/aspcore-richtexteditor-audio-web.png) +![Rich Text Editor Audio insert](../images/aspcore-richtexteditor-audio-web.png) ## Uploading Audio from Local Machine @@ -206,7 +206,7 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need Once an audio file has been inserted, you can change it using the Rich Text Editor [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Audio) `audioReplace` option. You can replace the audio file using the web URL or the browse option in the audio dialog. -![Rich Text Editor Audio replace](../../images/aspcore-richtexteditor-audio-replace.png) +![Rich Text Editor Audio replace](../images/aspcore-richtexteditor-audio-replace.png) ## Deleting Audios @@ -214,7 +214,7 @@ To remove audio from the Rich Text Editor content, select the audio and click th Once you select the audio from the local machine, the URL for the audio will be generated. You can remove the audio from the service location by clicking the cross icon. -![Rich Text Editor Audio delete](../../images/aspcore-richtexteditor-audio-del.png) +![Rich Text Editor Audio delete](../images/aspcore-richtexteditor-audio-del.png) ## Configuring Audio Display Position diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md index 42491a51d3..950062f721 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/insert-images.md @@ -156,7 +156,7 @@ To remove an image from the Rich Text Editor content, select the image and click Once you select the image from the local machine, the URL for the image will be generate. From there, you can remove the image from the service location by clicking the cross icon. -![Rich Text Editor Image delete](../../images/image-del.png) +![Rich Text Editor Image delete](../images/image-del.png) The following sample explains, how to configure `removeUrl` to remove a saved image from the remote service location, when the following image remove actions are performed: @@ -194,7 +194,7 @@ Sets the default width and height of the image when it is inserted in the Rich T Through the quick toolbar, change the width and height using `Change Size` option. Once you click, the Image Size dialog box will open as follows. In that you can specify the width and height of the image in pixel. -![Rich Text Editor Image dimension](../../images/image-size.png) +![Rich Text Editor Image dimension](../images/image-size.png) ## Adding Captions and Alt Text to Images @@ -238,13 +238,13 @@ Sets the default display for an image when it is inserted in the Rich Text Edito The hyperlink itself can be an image in Rich Text Editor. If the image given as hyperlink, remove, edit and open link will be added to the quick toolbar of image. For further details about link, see the [`link documentation`](./link) documentation. -![Rich Text Editor image with link](../../images/image-link.png) +![Rich Text Editor image with link](../images/image-link.png) ## Image Resizing Tools Rich Text Editor has a built-in image inserting support. The resize points will be appearing on each corner of image when focus. So, users can resize the image using mouse points or thumb through the resize points easily. Also, the resize calculation will be done based on aspect ratio. -![Rich Text Editor image resize](../../images/image-resize.png) +![Rich Text Editor image resize](../images/image-resize.png) ## Configuring Allowed Image Types diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md index 279a1dc454..89ff68746d 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/insert-image-media/video.md @@ -67,13 +67,13 @@ You can insert a video from either a hosted link or your local machine by clicki The insert video dialog opens with the `Embedded code` option selected by default. This allows you to insert a video using embedded code. -![Rich Text Editor Embed URL Video insert](../../images/aspcore-richtexteditor-video-embed.png) +![Rich Text Editor Embed URL Video insert](../images/aspcore-richtexteditor-video-embed.png) ### Inserting Video via Web URL You can switch to the `Web URL` option by selecting the Web URL checkbox. Inserting a video using the Web URL option will add the video URL as the `src` attribute of the `` tag. -![Rich Text Editor Video insert](../../images/aspcore-richtexteditor-video-web.png) +![Rich Text Editor Video insert](../images/aspcore-richtexteditor-video-web.png) ## Uploading Video from Local Machine @@ -211,9 +211,9 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can Once a video file has been inserted, you can replace it using the Rich Text Editor [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video) `videoReplace` option. You can replace the video file either by using the embedded code or the web URL and the browse option in the video dialog. -![Rich Text Editor Embed Video replace](../../images/video-replace-embed.png) +![Rich Text Editor Embed Video replace](../images/video-replace-embed.png) -![Rich Text Editor Web Video replace](../../images/video-replace-web.png) +![Rich Text Editor Web Video replace](../images/video-replace-web.png) ## Deleting Video @@ -221,7 +221,7 @@ To remove a video from the Rich Text Editor content, select the video and click Once you select the video from the local machine, the URL for the video will be generated. You can remove the video from the service location by clicking the cross icon. -![Rich Text Editor Video delete](../../images/video-del.png) +![Rich Text Editor Video delete](../images/video-del.png) ## Adjusting Video Dimensions @@ -230,7 +230,7 @@ Set the default width, minWidth, height, and minHeight of the video element when Through the [quickToolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings_Video), you can also change the width and height using the `Change Size` button. Once you click on the button, the video size dialog will open as below. In that, specify the width and height of the video in pixels. -![Rich Text Editor Video dimension](../../images/video-size.png) +![Rich Text Editor Video dimension](../images/video-size.png) ## Configuring Video Display Position @@ -270,7 +270,7 @@ You can disable the resize action by configuring `false` for the [insertVideoSet > If the [minWidth](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinWidth) and [minHeight](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MinHeight) properties are configured, the video resizing does not shrink below the specified values. -![Rich Text Editor video resize](../../images/aspcore-richtexteditor-video-resize.png) +![Rich Text Editor video resize](../images/aspcore-richtexteditor-video-resize.png) ## Customizing the Video Quick Toolbar diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md index 05297d12e6..cd5ee6bae4 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/emoji-picker.md @@ -50,7 +50,7 @@ The following code example shows how to add the emoji picker tool in the Rich Te Quickly access the emoji picker by pressing the colon (:) key while typing a word prefix in an editor, allowing instant emoji selection and display. Moreover, continue typing in the editor after the colon (:) to filter and refine your search for the desired emojis. -![Rich Text Editor Emoji Picker](../../images/emoji-picker-shorcut.png) +![Rich Text Editor Emoji Picker](../images/emoji-picker-shorcut.png) ## Navigating and Selecting Emojis Using the Keyboard diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md index bc367b6825..51d0f64c46 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/smart-editing/mentions.md @@ -34,7 +34,7 @@ In the following sample, we configured the following properties with popup dimen {% endhighlight %} {% endtabs %} -![ASP.NET Core mention integration ](../../images/mention-integration.png) +![ASP.NET Core mention integration ](../images/mention-integration.png) > [View Sample](https://ej2.syncfusion.com/aspnetcore/RichTextEditor/MentionIntegration#/bootstrap5) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/table.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/table.md index 2861e81148..7a58796065 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/table.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/table.md @@ -47,25 +47,25 @@ Tables can also be inserted through the `Insert Table` option in the pop-up wher The `TableHeader` command is available in the quick toolbar, allowing you to add or remove the header row from the inserted table. The following image illustrates the table header. -![Rich Text Editor table header](../images/table_header.png) +![Rich Text Editor table header](./images/table_header.png) ## Inserting Rows You can insert `Rows` above or below the selected table cell using the quick toolbar. The focused row can also be deleted. The following screenshot shows the available options of the row item. -![Rich Text Editor table row](../images/table_rows.png) +![Rich Text Editor table row](./images/table_rows.png) ## Inserting Columns `Columns` can be inserted to the left or right of the selected table cell using the quick toolbar. The focused column can also be deleted. The following screenshot shows the available options in inserting column item. -![Rich Text Editor table column](../images/table_column.png) +![Rich Text Editor table column](./images/table_column.png) ## Setting Cell Background Color Set the background color for each table cell using the `BackgroundColor` command in the quick toolbar. -![Rich Text Editor table background color](../images/table_bg_color.png) +![Rich Text Editor table background color](./images/table_bg_color.png) ## Deleting Tables @@ -77,13 +77,13 @@ Delete the entire table using the delete item in the quick toolbar. Align text inside table cells to the top, middle, or bottom using the `TableCellVerticalAlign` tool in the quick toolbar. -![Rich Text Editor table vertical alignment](../images/table_vertical.png) +![Rich Text Editor table vertical alignment](./images/table_vertical.png) ### Horizontal Alignment Align text inside table cells to the left, right, or center using the `TableCellHorizontalAlign` tool in the quick toolbar. -![Rich Text Editor table horizontal alignment](../images/table_horizontal.png) +![Rich Text Editor table horizontal alignment](./images/table_horizontal.png) ## Applying Table Styles @@ -95,7 +95,7 @@ By Default, provides Dashed border and Alternate rows. **Alternate border**: Applies an alternating background to table rows. -![Rich Text Editor table styles](../images/table_style.png) +![Rich Text Editor table styles](./images/table_style.png) ## Setting Table and Cell Dimensions @@ -103,7 +103,7 @@ Sets the default width of the table when it is inserted in the Rich Text Editor Users can modify the width, cell padding, and cell spacing of selected tables using the properties option in the quick toolbar. -![Rich Text Editor table settings](../images/table_properties.png) +![Rich Text Editor table settings](./images/table_properties.png) ## Table Cell Selection and Formatting @@ -163,7 +163,7 @@ The table cell merge feature allows you to merge two or more row and column cell The following image explains the table merge action. -![Rich Text Editor table cell merge](../images/table_merge.png) +![Rich Text Editor table cell merge](./images/table_merge.png) ### Splitting Table Cells @@ -171,7 +171,7 @@ The table cell split feature allows you to a selected cell can be split both hor The following image explains the table split action. -![Rich Text Editor table cell split](../images/table_split.png) +![Rich Text Editor table cell split](./images/table_split.png) {% if page.publishingplatform == "aspnet-core" %} diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md index 14230fe2a0..8a94b73dfd 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md @@ -28,16 +28,16 @@ It provides tools for applying text styles such as bold, italic, underline, stri | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](../../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | -| Italic | ![Italic icon](../../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | -| Underline | ![Underline icon](../../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| -| ClearFormat | ![ClearFormat icon](../../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| -| Blockquote | ![Blockquote icon](../../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| -| SubScript | ![SubScript icon](../../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| -| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](../images/bold.png) | Text that is thicker and darker than usual. | toolbarSettings: { items: ['Bold']} | +| Italic | ![Italic icon](../images/italic.png) | Shows a text that is leaned to the right. | toolbarSettings: { items: ['Italic']} | +| Underline | ![Underline icon](../images/under-line.png) | The underline is added to the selected text. | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Apply double line strike through formatting for the selected text. |toolbarSettings: { items: ['StrikeThrough']}| +| ClearFormat | ![ClearFormat icon](../images/clear-format.png) | The clear format tool is useful to remove all formatting styles (such as bold, italic, underline, color, superscript, subscript, and more) from currently selected text. As a result, all the text formatting will be cleared and return to its default formatting styles.|toolbarSettings: { items: ['ClearFormat']}| +| Blockquote | ![Blockquote icon](../images/blockquote.png) | Blockquotes visually highlight important text within an editor, emphasizing key information or quotations. | toobarSettings: { items: ['Blockquote']}| +| SubScript | ![SubScript icon](../images/sub-script.png) | Makes the selected text as subscript (lower).|toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Makes the selected text as superscript (higher).|toolbarSettings: { items: ['SuperScript']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Change the case of selected text to lower in the content. |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Change the case of selected text to upper in the content.|toolbarSettings: { items: ['UpperCase’']}| ### Font & styling @@ -45,11 +45,11 @@ Tools in this section allow users to customize font properties such as font fami | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| FontName | ![FontName icon](../../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| -| FontSize | ![FontSize icon](../../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| -| FontColor | ![FontColor icon](../../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| -| BackgroundColor | ![BackgroundColor icon](../../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| -| Formats (Paragraph, Headings) | ![Format icon](../../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| +| FontName | ![FontName icon](../images/font-name.png) | Defines the fonts that appear under the Font Family DropDownList from the Rich Text Editor's toolbar. |toolbarSettings: { items: ['FontName']}| +| FontSize | ![FontSize icon](../images/font-size.png) | Defines the font sizes that appear under the Font Size DropDownList from the Rich Text Editor's toolbar.|toolbarSettings: { items: ['FontSize']}| +| FontColor | ![FontColor icon](../images/font-color.png) | Specifies an array of colors can be used in the colors popup for font color.|toolbarSettings: { items: ['FontColor']}| +| BackgroundColor | ![BackgroundColor icon](../images/background-color.png) | Specifies an array of colors can be used in the colors popup for background color.|toolbarSettings: { items: ['BackgroundColor']}| +| Formats (Paragraph, Headings) | ![Format icon](../images/formats.png) | An Object with the options that will appear in the Paragraph Format dropdown from the toolbar. |toolbarSettings: { items: ['Formats']}| ### Alignment @@ -57,11 +57,11 @@ This section provides alignment options for the text or content, allowing users | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Alignment | ![Alignment icon](../../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| -| JustifyLeft | ![JustifyLeft icon](../../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | -| JustifyCenter | ![JustifyCenter icon](../../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | -| JustifyRight | ![JustifyRight icon](../../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | -| JustifyFull | ![JustifyFull icon](../../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | +| Alignment | ![Alignment icon](../images/alignments.png) | Align the content with left, center, and right margin.|toolbarSettings: { items: ['Alignments']}| +| JustifyLeft | ![JustifyLeft icon](../images/align-left.png) | Allows each line to begin at the same distance from the editor’s left-hand side. | toolbarSettings: { items: ['JustifyLeft']} | +| JustifyCenter | ![JustifyCenter icon](../images/align-center.png) | There is an even space on each side of each line since the text is not aligned to the left or right margins. | toolbarSettings: { items: ['JustifyCenter']} | +| JustifyRight | ![JustifyRight icon](../images/align-right.png) | Allows each line to end at the same distance from the editor’s right-hand side. | toolbarSettings: { items: ['JustifyRight']} | +| JustifyFull | ![JustifyFull icon](../images/align-justify.png) | The text is aligned with both right and left margins. | toolbarSettings: { items: ['JustifyFull']} | ### Lists & indentation @@ -69,12 +69,12 @@ Tools here allow users to create ordered and unordered lists, change the list st | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| OrderedList | ![OrderedList icon](../../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| -| UnorderedList | ![UnorderedList icon](../../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| -| NumberFormatList | ![NumberFormatList icon](../../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| -| BulletFormatList | ![BulletFormatList icon](../../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| -| Indent | ![Indent icon](../../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| -| Outdent | ![Outdent icon](../../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| +| OrderedList | ![OrderedList icon](../images/order-list.png) | Create a new list item(numbered). |toolbarSettings: { items: ['OrderedList']}| +| UnorderedList | ![UnorderedList icon](../images/unorder-list.png) | Create a new list item(bulleted). |toolbarSettings: { items: ['UnorderedList']}| +| NumberFormatList | ![NumberFormatList icon](../images/number-format.png) | Allows to create list items with various list style types(numbered).|toolbarSettings: { items: ['NumberFormatList']}| +| BulletFormatList | ![BulletFormatList icon](../images/bullet-format.png) | Allows to create list items with various list style types(bulleted).|toolbarSettings: { items: ['BulletFormatList']}| +| Indent | ![Indent icon](../images/increase-indent.png) | Allows to increase the indent level of the content.|toolbarSettings: { items: ['Indent']}| +| Outdent | ![Outdent icon](../images/decrease-indent.png) | Allows to decrease the indent level of the content.|toolbarSettings: { items: ['Outdent']}| ### Hyperlinks @@ -82,8 +82,8 @@ This section provides tools for inserting and managing hyperlinks within the con | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Hyperlink | ![Hyperlink icon](../../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| -| InsertLink | ![InsertLink icon](../../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | +| Hyperlink | ![Hyperlink icon](../images/create-link.png) | Creates a hyperlink to a text or image to a specific location in the content.|toolbarSettings: { items: ['CreateLink']}| +| InsertLink | ![InsertLink icon](../images/create-link.png) |Allows users to add a link to a particular item. | toolbarSettings: { items: ['InsertLink']} | #### Link quicktoolbar items @@ -91,9 +91,9 @@ The link quicktoolbar provides tools to manage hyperlinks in the Rich Text Edito | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| OpenLink | ![OpenLink icon](../../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | -| EditLink | ![EditLink icon](../../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | -| RemoveLink | ![RemoveLink icon](../../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | +| OpenLink | ![OpenLink icon](../images/open-link.png) | To open the URL link that is attached to the selected text. | quickToolbarSettings: { link: ['OpenLink']} | +| EditLink | ![EditLink icon](../images/edit-link.png) | Allows you to change the URL that has been attached to a specific item. | quickToolbarSettings: { link: ['EditLink']} | +| RemoveLink | ![RemoveLink icon](../images/remove-link.png) | Allows you to remove the applied link from the selected item. | quickToolbarSettings: { link: ['RemoveLink']} | ### Images @@ -101,7 +101,7 @@ This section contains the primary tool for inserting images into the editor. | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Insert Image | ![Images icon](../../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| +| Insert Image | ![Images icon](../images/insert-image.png) | Inserts an image from an online source or local computer. |toolbarSettings: { items: ['Image']}| #### Image quicktoolbar items @@ -109,15 +109,15 @@ The image quicktoolbar offers a set of tools to edit images inserted in the Rich | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Replace Image | ![Replace icon](../../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | -| Align Image | ![Alignment icon](../../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | -| Remove Image | ![Remove icon](../../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | -| OpenImageLink | ![OpenImageLink icon](../../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | -| EditImageLink | ![EditImageLink icon](../../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | -| RemoveImageLink | ![RemoveImageLink icon](../../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | -| Display | ![Display icon](../../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | -| AltText | ![AltText icon](../../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | -| Dimension | ![Dimension icon](../../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | +| Replace Image | ![Replace icon](../images/image-replace.png) | Replace the selected image with another image. | quickToolbarSettings: { image: ['Replace']} | +| Align Image | ![Alignment icon](../images/alignments.png) | The image can be aligned to the right, left, or center. | quickToolbarSettings: { image: ['Align']} | +| Remove Image | ![Remove icon](../images/table-remove.png) | Allows to remove the selected image from the editor. | quickToolbarSettings: { image: ['Remove']} | +| OpenImageLink | ![OpenImageLink icon](../images/open-link.png) | Opens the link that is attached to the selected image. | quickToolbarSettings: { image: ['OpenImageLink']} | +| EditImageLink | ![EditImageLink icon](../images/edit-link.png) | Allows to edit the link that is attached to the selected image. | quickToolbarSettings: { image: ['EditImageLink']} | +| RemoveImageLink | ![RemoveImageLink icon](../images/remove-link.png) | Removes the link that is attached to the selected image. | quickToolbarSettings: { image: ['RemoveImageLink']} | +| Display | ![Display icon](../images/display.png) | Allows you to choose whether an image should be shown inline or as a block. | quickToolbarSettings: { image: ['Display']} | +| AltText | ![AltText icon](../images/alt-text.png) | To display image description when an image on a Web page cannot be displayed. | quickToolbarSettings: { image: ['AltText']} | +| Dimension | ![Dimension icon](../images/dimension.png) | Allows you to customize the image’s height and width. | quickToolbarSettings: { image: ['Dimension']} | ### Tables @@ -125,7 +125,7 @@ This section offers the main tool for creating tables within the content. | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| CreateTable | ![CreateTable icon](../../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | +| CreateTable | ![CreateTable icon](../images/create-table.png) | Create a table with defined columns and rows. | toolbarSettings: { items: ['CreateTable']} | #### Table quicktoolbar items @@ -133,13 +133,13 @@ The table quicktoolbar provides options for table editing within the Rich Text E | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| RemoveTable | ![RemoveTable icon](../../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | -| TableHeader | ![TableHeader icon](../../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | -| TableColumns | ![TableColumns icon](../../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | -| TableRows | ![TableRows icon](../../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | -| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | -| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | -| TableEditProperties | ![TableEditProperties icon](../../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | +| RemoveTable | ![RemoveTable icon](../images/table-remove.png) | Removes the selected table and its contents. | quickToolbarSettings: { table: ['TableRemove']} | +| TableHeader | ![TableHeader icon](../images/table-headers.png) | Allows you to add a table header. | quickToolbarSettings: { table: ['TableHeader']} | +| TableColumns | ![TableColumns icon](../images/table-columns.png) | Shows the dropdown to insert a column or delete the selected column. | quickToolbarSettings: { table: ['TableColumns']} | +| TableRows | ![TableRows icon](../images/table-row.png) | Shows the dropdown to insert a row ors delete the selected row. | quickToolbarSettings: { table: ['TableRows']} | +| TableCellHorizontalAlign | ![TableCellHorizontalAlign icon](../images/alignments.png) | Allows the table cell content to be aligned horizontally. | quickToolbarSettings: { table: ['TableCellHorizontalAlign']} | +| TableCellVerticalAlign | ![TableCellVerticalAlign icon](../images/vertical-align.png) | Allows the table cell content to be aligned vertically. | quickToolbarSettings: { table: ['TableCellVerticalAlign']} | +| TableEditProperties | ![TableEditProperties icon](../images/table-edit.png) | Allows you to change the table width, padding, and cell spacing styles. | quickToolbarSettings: { table: ['TableEditProperties']} | ### Undo & redo @@ -147,8 +147,8 @@ These tools allow users to easily undo or redo any changes made within the edito | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Undo | ![Undo icon](../../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | -| Redo | ![Redo icon](../../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| +| Undo | ![Undo icon](../images/undo.png) | Allows to undo the actions.|toolbarSettings: { items: ['Undo']} | +| Redo | ![Redo icon](../images/redo.png) | Allows to redo the actions.|toolbarSettings: { items: ['Redo']}| ### Other tools @@ -156,14 +156,14 @@ This section contains miscellaneous tools such as full-screen mode, print, previ | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| FullScreen | ![FullScreen icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| -| Maximize | ![Maximize icon](../../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | -| Minimize | ![Minimize icon](../../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | -| Preview | ![Preview icon](../../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | -| InsertCode | ![InsertCode icon](../../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | -| Print | ![Print icon](../../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| -| ClearAll | ![ClearAll icon](../../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | -| SourceCode | ![SourceCode icon](../../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| +| FullScreen | ![FullScreen icon](../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window.|toolbarSettings: { items: ['FullScreen']}| +| Maximize | ![Maximize icon](../images/maximize.png) | Stretches the editor to the maximum width and height of the browser window. | toolbarSettings: { items: ['Maximize']} | +| Minimize | ![Minimize icon](../images/minimize.png) | Shrinks the editor to the default width and height. | toolbarSettings: { items: ['Minimize']} | +| Preview | ![Preview icon](../images/preview.png) | Allows to see how the editor’s content looks in a browser. | toolbarSettings: { items: ['Preview']} | +| InsertCode | ![InsertCode icon](../images/insert-code.png) | Represents preformatted text which is to be presented exactly as written in the HTML file. | toolbarSettings: { items: ['InsertCode']} | +| Print | ![Print icon](../images/print.png) | Allows to print the editor content. |toolbarSettings: { items: ['Print']}| +| ClearAll | ![ClearAll icon](../images/clear-all.png) | Removes all styles that have been applied to the selected text.| toolbarSettings: { items: ['ClearAll']} | +| SourceCode | ![SourceCode icon](../images/code-view.png) | Rich Text Editor includes the ability for users to directly edit HTML code via “Source View”. If you made any modification in Source view directly, synchronize with Design view.|toolbarSettings: { items: ['SourceCode']}| ## Removing built-in tool from toolbar diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md index 8fb0ee5711..8183458077 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md @@ -20,15 +20,15 @@ The table below lists the available text styles in the Rich Text Editor's toolba | Name | Icons | Summary | Initialization | |----------------|---------|---------|------------------------------------------| -| Bold | ![Bold icon](../../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | -| Italic | ![Italic icon](../../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | -| Underline | ![Underline icon](../../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | -| StrikeThrough | ![StrikeThrough icon](../../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| -| InlineCode |![InlineCode icon](../../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| -| SubScript | ![SubScript icon](../../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| -| SuperScript | ![SuperScript icon](../../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| -| LowerCase | ![LowerCase icon](../../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| -| UpperCase | ![UpperCase icon](../../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| +| Bold | ![Bold icon](../images/bold.png) | Makes text thicker and darker | toolbarSettings: { items: ['Bold']} | `bold` | +| Italic | ![Italic icon](../images/italic.png) | Slants text to the right | toolbarSettings: { items: ['Italic']} | `italic` | +| Underline | ![Underline icon](../images/under-line.png) | Adds a line beneath the text | toolbarSettings: { items: ['Underline']} | +| StrikeThrough | ![StrikeThrough icon](../images/strikethrough.png) | Applies a line through the text. |toolbarSettings: { items: ['StrikeThrough']}| +| InlineCode |![InlineCode icon](../images/inlineCode.png) | Formats text as inline code | toolbarSettings: { items: ['InlineCode']} | `inline code`| +| SubScript | ![SubScript icon](../images/sub-script.png) | Positions text slightly below the normal line |toolbarSettings: { items: ['SubScript']}| +| SuperScript | ![SuperScript icon](../images/super-script.png) | Positions text slightly above the normal line |toolbarSettings: { items: ['SuperScript’']}| +| LowerCase | ![LowerCase icon](../images/lower-case.png) | Converts text to lowercase |toolbarSettings: { items: ['LowerCase']}| +| UpperCase | ![UpperCase icon](../images/upper-case.png) | Converts text to uppercase |toolbarSettings: { items: ['UpperCase’']}| Please refer to the sample below to add these basic text styling options in the Rich Text Editor. From c807b6d0dde59e17524df1c2a49205c9fb0e7636 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Fri, 2 May 2025 16:27:30 +0530 Subject: [PATCH 38/39] 951777: Corrected the image path --- .../rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md index 8a94b73dfd..e727c5dde1 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/built-in-tools.md @@ -176,7 +176,7 @@ Remove the build-in tools from the toolbar by using the [toolbarSettings](https: {% include code-snippet/rich-text-editor/remove-buildin-tool/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/audremove-buildin-tool/controller.cs %} +{% include code-snippet/rich-text-editor/remove-buildin-tool/controller.cs %} {% endhighlight %} {% endtabs %} From 02ea96ee39c43d3bed744f51786ce7e3bbbe92c7 Mon Sep 17 00:00:00 2001 From: Build Automaion Date: Mon, 5 May 2025 20:49:05 +0530 Subject: [PATCH 39/39] Added the release notes MD file and corresponding node entry in the TOC.html file --- ej2-asp-core-mvc/Release-notes/29.1.41.md | 103 ++++++++++++++++++++++ ej2-asp-core-toc.html | 2 +- ej2-asp-mvc-toc.html | 2 +- 3 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 ej2-asp-core-mvc/Release-notes/29.1.41.md diff --git a/ej2-asp-core-mvc/Release-notes/29.1.41.md b/ej2-asp-core-mvc/Release-notes/29.1.41.md new file mode 100644 index 0000000000..f21aecadb3 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/29.1.41.md @@ -0,0 +1,103 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Nuget Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Nuget Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="May 06, 2025" version="v29.1.41" passed="187958" failed="0" %} + +{% directory path: _includes/release-notes/v29.1.41 %} + +{% include {{file.url}} %} + +{% enddirectory %} + +## Test Results + +| Component Name | Test Cases | Passed | Failed | Remarks | +|---------------|------------|--------|--------|---------| +| 3D Chart | 232 | 232 | 0 | All Passed | +| 3D Circular Chart | 374 | 374 | 0 | All Passed | +| Accordion | 106 | 106 | 0 | All Passed | +| AI Assist View | 430 | 430 | 0 | All Passed | +| App Bar | 50 | 50 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 90 | 90 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 84 | 84 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Carousel | 61 | 61 | 0 | All Passed | +| Chart | 3884 | 3884 | 0 | All Passed | +| Chat UI | 46 | 46 | 0 | All Passed | +| CircularGauge | 283 | 283 | 0 | All Passed | +| ColorPicker | 45 | 45 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 616 | 616 | 0 | All Passed | +| Context Menu | 65 | 65 | 0 | All Passed | +| Dashboard layout | 31 | 31 | 0 | All Passed | +| Data Grid | 2521 | 2521 | 0 | All Passed | +| Date Picker | 381 | 381 | 0 | All Passed | +| Date Range Picker | 418 | 418 | 0 | All Passed | +| Date Time Picker | 306 | 306 | 0 | All Passed | +| Diagram | 18521 | 18521 | 0 | All Passed | +| Document Editor | 3311 | 3311 | 0 | All Passed | +| DropDown Button | 48 | 48 | 0 | All Passed | +| Dropdown List | 188 | 188 | 0 | All Passed | +| Dropdown Tree | 104 | 104 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 64 | 64 | 0 | All Passed | +| Gantt | 2461 | 2461 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 613 | 613 | 0 | All Passed | +| Kanban | 65 | 65 | 0 | All Passed | +| LinearGauge | 309 | 309 | 0 | All Passed | +| Listbox | 70 | 70 | 0 | All Passed | +| ListView | 83 | 83 | 0 | All Passed | +| Maps | 1126 | 1126 | 0 | All Passed | +| Mention | 35 | 35 | 0 | All Passed | +| Menu | 67 | 67 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 345 | 345 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 19501 | 19501 | 0 | All Passed | +| Pivot Table | 2010 | 2010 | 0 | All Passed | +| Progress Bar | 78 | 78 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RadioButton | 37 | 37 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 486 | 486 | 0 | All Passed | +| Rich Text Editor | 3901 | 3901 | 0 | All Passed | +| schedule | 4576 | 4576 | 0 | All Passed | +| sidebar | 88 | 88 | 0 | All Passed | +| Signature | 40 | 40 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 0 | All Passed | +| SmithChart | 49 | 49 | 0 | All Passed | +| Sparkline | 57 | 57 | 0 | All Passed | +| Speed Dial | 366 | 366 | 0 | All Passed | +| Split Button | 48 | 48 | 0 | All Passed | +| Spreadsheet | 9060 | 9060 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 82 | 82 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| TextBox | 33 | 33 | 0 | All Passed | +| Time Picker | 177 | 177 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 130 | 130 | 0 | All Passed | +| ToolTip | 135 | 135 | 0 | All Passed | +| TreeGrid | 2703 | 2703 | 0 | All Passed | +| Treemap | 209 | 209 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 15376 | 15376 | 0 | All Passed | +| PDF | 11853 | 11853 | 0 | All Passed | +| Presentation | 54238 | 54238 | 0 | All Passed | +| XlsIO | 17070 | 17070 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-toc.html b/ej2-asp-core-toc.html index e56fc4ece0..2743ec9784 100644 --- a/ej2-asp-core-toc.html +++ b/ej2-asp-core-toc.html @@ -3170,7 +3170,7 @@
  • Release Notes -

nk^L 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%0DX3z{fSp8L$KA5Q0LxruubIw*d` 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�y)340zTenXPPTy7m9nf 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СHxHPM8=2mZN&ddEcrxwqUU%DLIa? zR0n2_7AVjN7m};^@A!s=FiOdJBQS032BI8P3n%wNl>@H<)AyTD@qJ#91c`n&DdZT+hwBsZy{IBeExDumpQ*R~ z(u>3w3akn2uBx3~<#X5~jw&<%Ou(M)Wt%kol~nO+EMXGKCqM{R1U~#zVa7$m6&9v$ z!?>{?aR)r#*SBWQuhPzB=2W?k%7|sl#)+ArtI2cd=HicxVbgK`d+X(lbz~^+q(f?!_W|ZNnZXByp8jw?H#>I4}F8IbtMRluUXqX~pH|Hzm|o zm$6X6K)$F2FbA$6t{ja?Io+}2rM&;t=@jGf>EI*13boTLt}J(+oIkB(_nxNHImsMh zbaboMF(7O4I5?9{MT?yn;QWSv4M|UP%hfu=w$69XNLx4QTh@W^n+xl&XNVrd<^P4Y zuMUfH-TEFA1p!3`K~lOEL?i|fM5Mc8M7p~hBow7PhVD{Aq(zj5p*tl87+{Ej0cL>j z0oiAt^PTrx@B3cg_01o9ySFp<6Zg8;`mOa_p?GC=x~T4KGTC7Br;#00pcPLw5z*aW zu%l@b!j)t*mMa_c*j$U!$GlH;QezJ@vwzYt>+;L&uM51{Nv*wZwT86%2d@W=L*^9M zRW43HJVGkdFYyvrlcoKVlpG5$_{01G_vH2$P5}KsjyndtxfLqv$o_sHcp*;1#q#R% zW$cE@p~3zt6X2f_k#5xNrQJP?Bp3pAi|?NWwWh*t*BEohGcXPZ0MX~ej?=$=_!JsH z_P}IL|DTxp@aLq=K;BO>V8?zBkxG6&DO4>r1)6aS?2|_vRTWLbJj2UQg_aOa+kO28 zBYG!@Vv|;i_+qVHC{pS0|D&6Y`IInFLeBT8HCOo_iUADkfmRVh? zJqak@qf!GQ(sDPM?f^seD9?}4O!LDlKY7(N8WA#VE7#Sio67V+# zOX*&Ry^maxjHcU%3Dfh@G*cq(RU5v4d4lwba-H)9Uq6@bbX%ZxJ?u5Vw@zkjSnRi7 zp&L&MjPB=m6=dIKr1KtRkPQ1+dA8U~U=G61Q~`RsSs@D=x^ddnC;}>u#I8Sm-S0iT zDl{+f)_`7r^4VR-E(K!0T5@SQXM#;GGIb@x{W_<^H3g-3V1IxQlRfZV?Q%R(q7YWW z7cU;2oa_SyJjgMYilDvQ!7cOT?zf^f0rUG7abpx+-H1{1$W|X`p>_WjcX|V%X$P;d zYQ>CF0PDyArr_R=1+2{m_cO+1U^HVYRqlU>ALjoC( zw`U>9NGr@2BpLQ0>VU_h`}AH?i(||6_mD55Q3Mp_68!X=Gwkm@(EQ2q+V*>gl9CLz zfZZ0CPf6fPTU=<9^;Mar+TDc_RoiCV%;hg0MG3r=Pc`Rv?hKK;0(yry;nkxx5(S9KLN(urgyu0D~15QWz{LN+0)$8~V zpnL}MM$%GTRgdoS+QiL4!So09yL8_q2yd=Vs{8Xh#~j46((9wGJ${py!%3Sg6R%d9 z(qzO#IA{W{OSb34OSSu6Vu;A+Vc>b5n2}C>({$iv)IO4Tu+}s}G2pW|kNN8#rMk>j z&v+gb%=R}qTWyyq(ZkZxTn|1!?~IEDO5Ecjngi(bwR!KdeS%a;{XWIW`+Mv~_0fpY zEoO$&8P18=UB!_eSRLH2y9A<_MH7G8kPzwp+>@UF?kY}f0u3iuQg}5XXigLusv_ax zJerhb7CbgyF*vLs6BZi%ZV&OR%v^QbX6Q9}Mn*5gM2>Va{OGw|8-d4KO8=bUk6I^V zDA~)sGF53Ti#qYC`7qsQU4fgX!&1Pp9(~FR3wgGIo39Szzj8D3CBE%M6anQuiC-Ux z#>#V6Q-L0d0}Sx@9{V9a0oNampkW9&Mm3-MMT7f$pXu7)RFoXvWG{!)*Oq&h-QMKM z{f1<{>MY0QM+$CNFXMrjOtp6eP#L`vq}YQ0ec)2U@)iv*s=?Uvu2L*G{BTTS4}k1&T!@?Lo#6OgM9m`X>6xy;j# zPbj$_WudJT>1hWX>!ar#-LOK;U-^aM>zI4XF5N@8FvM~d%q4?QZ$Vt_DSm*FIqWn7t$K8?@7oZp=KiTS$5dvYEYqY&s*$*8JV z1{}$?$s*Z2@=X&}zcTz@AQmUYEhNp~C;LWO`QZ@rP1C;bi$mQAxW%rwu8{kaxy)Uu4B7XQgpaR zrD;r}55tqfTZ{Ta*G^K)D_&DlK3AZ0_PS)`)!MQeXCc%C8@V%rboA~WM{9>m;Kyhy z3ANuv@Q3fVJAw^=-klx1i)(h~jF$maxsXJFi(gN2-owg6*IE%>QU8MB{1>fr4ltgc z8eOs1$QdH%g-=9dH5Fhx0<&O|5zk|P{{ffH1>1z}&W43dNB;o&bZ@U{8|8qcq*>)% zcXJ2lrY+k+?b?Dbi7A$sGrdP__KVbd4rc_t8*jSQUIXJ>jGHPS-GW~OG1*oG;mh27 z<#cMBJN-na+%nNE-XZ(Ck9CJW;a2F=twCL(skbnLMRDWG!&|%U?pDjhCSm>T+`kTQ zh8hkP^&Uc=Dz*8T$}SBZi+N1w^fJbJdY_3);(F4E{iqBa!@Z#Z=SW;V!p3A5g&O|m zG!do|o|Wivhg+7k)#)JRXC84Qr6hOOBArshKdpLEVmCpqXW_Tz+Hxf=O*H-!PXbI{pe&nC@@vp7vj~;oN%m1g zUAPV9>ZsT&!EG=&=kW+&^tPOV=}4JopA{?=8P>=2lN>F=*ER#L6IYEGSer)M;m0vp zPMf<+kG{zYb!NNQWSz>bp1a)F?e8;OXiV1gq;R)iD>cbO#X>J>BE8NzF)RhJ;&HyM zpOnoF-Pd+wuY;?C%zo@|M1AvV0*@r+RO$SV9^igUSj*$C~{V{WA#X8zz-!n!r4Wf3S`*>|=>c?aV)HIrrr7urmV9Cb=9 zb2I!*$@Tj^QZr$vZgXxB$Qi5mW_nHPrDsP0qCT7alxb$G>|rxH5&A?qPikr)C+f3F z_)V0V$!lP`n=#o`mx}G@3JJ$lxV*4rH)m7AVJmh!_~oaECYNJhOxNXgCMITleykkL z?cGHzIrjMlmIs!*=T%bSw5#EfKe|nJOIDS2SUIii@)i1gT>;6ku(*UXcvRLz=iGex zJ*BYT@6lpD?XICu&oV~m3OR&JN^s9Hi^4s?RJlASH%Znod6j2}zwfYt4|Z(7efP%4 zR9^Yarc=GQxw70<%vX|lq^Ieoczn>X*W7XzcTB%?p?11t-#oTnk{T?kzfMK*;sufW zY7WuR*OKSh;~rGv6CQz*Lpmw}hWB+Y$%5IX$PM+z`UBNsCOhf41cLCV2dhyC*r;1= z(9`bvq-U{!g_0HFcHY!^ul=p>sUP9yDD3K+!3Oo@K`MSj_po?wll4fDua3pgORaH2 zqvPeLZa1nsIq&N7jA%(lSE?fIJI}W%mx8OSY^7CsR}q>L&*-{^NwM-z4PqRrVqA_) z{c&(hp2d2S2!L3Q*8LB^*O^tUeST;ikzT61@x<)iyVpQh2BN9F@DS}j#a;dDfDxu4 z(KGe;KR3g^mxw%@uNmu2I8KQN_~vZZNMMW9&(LUZcZDkJ%`eL&&Kp%k?n|*m&cmui z_8s&@=`Y%DnM)bJOrE!h-d3=nWN2T>Y%-b?;hq_qaU}ey1)z|T@;;-?u2=BnxMwbe zYg6On+>O16oi6%p8;FU>&=G-Ie4Y@&+PLzM&Dt(cACQQiE?s;M9lPgP3EC#Iq+%vA zCa%^+*H|`D{S$qT(@ws+(NDH&g^`gGE(;C9)qYyW)FxMRq0Z>t@@%}mB{iWY`K%ZA zPMsK>&d)LENhA+q_%5RM@z;3Z&G3phoI$Wr2Ox})Dhtwh`Ol<@$R^O&{fGBeh+?(1 zZh=ls`SC4~XTKV0f7TZYwpwXphHx1wwh4Yw_oqUWw66TqC202UIWOz4VJrG@?xEf{ zT=~;+(3hs#`q5HBI<3=TE}6X*jYx>OB9j_| zfRE@uQo!&N>|?s;?cR=Yth|Pmd#48-%0&0?)7k+UO)1qYeTDCjSBhg1yp!Sfy~?}H zOaLE1L`=kXzcV&c0pX*iSu&gQLH_mQNfApOe>yt%QRj%*?;syUHT?vv9^$*_;eVxM zgXXEm<&x8DOEM}kFWY`f`d6)2I{8*VVdpI|x=%(#mov>`e^~e@#$m#mnFC~Q2>E@_ zLjo+}cXSScUXRX!LhGgOk_yA00%e^)6+?Tk+tj+m*Ohw9L2VJL0^EGK)=Mbva=f=o zwnCK0a*5?LvkR&ghZ9I=y!Iu2*IYm;6{893mQ+cXj)X=`T$&Jkhpk5+W6;Y7+*~(3 z3w1nUg4cvpt>eT2f9sd^G>!II3gySJ$Sc9LbWD#GI%AoQuG>V7BPYHY<+)8|+JSe4 z1)w*`iGgVmkCuKWzJ4DX9>1o_Dp}AsR5G-KIW}1Mz4)_$=_c+@JePikQYV?`uP`u9 z`K=pn52sD!C0i7dAD5d-Z2Fftl*MO(Bz$l+QXP!8qKZ3m?d%J(q^s`#m(x6Eu z-N=LuD))u22dgZV*xX(E%YO2+z`ucX1p!xsIpu(dnBvf-IbTqL?w~-Kn6%W~pb@N5 zj3_yRnx{xLQlT1|l7^(BqO!5VGXW-Sh!m<8m;&L@M&biUKG(%>1sS>-o@O@(2z?> z{=uQEP#^-&`r<_+DGCKtkE=Z9am>n0;nfj*kz8#dD-XeSXE_ER)uGU_Du5$+_wwb- z4?Hc;mco@%ktvSh+|ZSs%y^Na#6XglXUaV{kmD(glgT+yd3D2PXwcz80- z6S?QyI59LW?gP>5eD~3`akiGH1!x^);`|g2FZBwR3DbeR1d0KGkBA@5mgdtNp8UXk zdU8Kl3hT{D|GYR=JF!214SeIw>puG?$bNpY4*B{ejFLz(r~G9MCp_^5+^9zxjt>+S zTttHxMW*7|8J;I@tra~&jE4Sfn=Etn?d?j+>(v$(6ULhnxiXwuOfyFIR5+XQdTM-c zH1+cc$UhQ-2E}Zgt_$KN?U625D15Z4xQ;I;WQNaL+#Kzu=%mLlpIYr5tq&vbA~SlVSTX65hQ;t`szmv^M2M3<$G!GQ~G=z^{;|; zQ584*uee>%_P*;_blP$H?fbt>9^rU@J|)S`Jdnxz`SazWT_-1($Bd|l%qBn_YIr9- z8|=nA_r}lOMSB>d09R)L@ZH7l{1_j7mJcw;58?6=4VcrW28^#wQ7uOJBpUs(BKCQ} zErEwO9$Mb;c&>nJ6ex0I&`&5PyRuS#(h;kDBq%Q}9X)XQCiglR_ouGqTdA%a5#pBR zE6)N z_s)5JJ;>MBYO+!JQcuWe{Zc3Ed*+$>w8y!XCvQ#=lp$E!m0 zXoAUYxo3G@({I0GWO7<)Zr*(MWpX1Ih?;yalrn@`<+7(zno?fk9s#D+-G>BRq+>@7ZN?n}5L2QU*=j0}oIH#3raVqb$B}DmR>*f3+2@li z6DY@xm5ZR`<=1aidy%H9x%r0_$Ekk)Zz>H$)7If1A98E$w1tBg z#Wu3`Rm&91RNEBVKDadYIlMh_J#5Bm8_qbXclb=Zeo|3K#^-cFqr9fE1~~p=fAT*- zm&@HZ_|0r<7l(e_HG&L#9~OFMxm{N?s2E@TxeykI^v1lZS=$NywXog(WiUK~Pu&v{ z0kn9UP;YqEphh7^!3y+B6G!(`tn}U&pjaSN`?aFT z7so!p0@%U6xtLf;ab!QOMEghJHotl07wci}vpTo=b==)C{O(IW4orY4ScOhVY!vAQ zjP&hx!1eY|W)_`s!Cp6nX#>u*HFaVB;qzUi_sMYy8YTRk`uX|w`ZGNn zin)?E9PGXd?T|Q4b>9~9q^wM8zsC{sZPJ;5uFwoIBL=A6z zXlUe1d*m-5-Tk$ceK|1Q#$;#ngHK0Wnpgjl7&vcV5mPw&llH#5(0+F)7nh5MNJd^b zt}x?rcr-uopA%@o93Lw7NwlB|YM-uhoeIAB)Bl?xmc|*_ihV1OCyrZ9w zyp&s}7Wf1SaFPd?Hg`|2l{r4AqiJSvuA3eLUa>~3R(*T-Lc#K+&VZfFQ3eztRl~;7 zO)^bdnJ$7W<%Rd?e%DUi2%nJlHFq7*R$AA_o%o6uHf1_BN~gE-0DFr_3tQvwsB$5g z#P$zgmiRZNHq?Xl)=iB^BRw>gze?I*JiMnV@>p5AHTO}w_CLNztcq(8RGuL4cYYOC z*$?ulcaA;DlC^Rz*hRQn`+1&R*%;HMF_6IL%@IKjr!@UTyJ3}88z7q}yI1T7w%cC! zYv!%iM)@?-Qk`J#)*LrkN1gB;JL+cV@8T^BWUw~R;^FKDLR*6IW3$2%Sb%;nyba}E z>Z~;`5`j=c@X1HZ$uH7`Zt4xfVt0DKes~7f6?g=crujDhK5nUVnCV=Si$s10Z4G$*Mfj#+gd-Mn%Us>}GG8Gv+y9 zQ5p^+wXWXW7L&D6*a@#*N<(_4d${Lb=c^ZpEAYAJx;w2z`kXp%Fa_EsBdk+ev!gU# zZWXMTbF46*=f1gZ0vX7FuXk|_l!=@E(HojTqx$mv^p>cX*9Hy!ZFn;456d&VF`jlW z;Nqe67!pn`4kP0P_ru=;+QFqRTHX2iUVAS0Q)X1(e)Ry1C&+#4kfey7k6AHS4r*v# zn@bE<3Z*I#kGM_cyfH)D)MQeC-Rp75*?MQNH1gZxie7sgt|0VPK|x6@O#qIhnsHEp zmD6HnhyBKSmm$0qT)x=PxHpxCvl9p{bYaRcIk0Z_G%5}V!zQeMxeV&(5`TaAT# zd3WGy&U@$~D@5bEInA|8z&4G@Jyt{SU{FQF3})qNyb0mi_VSvWn=f`%Sr`qx6C{0_ z-c+!Wq=kCT?ww8iV#h>-^R2q^tJ+0^imtr0vH@jswr@+m0?2n7e=x6Qf*W;H%BavtxBw{suR#Z zd7>C5;9k2v1N7w@4Rk6Pp0G*s$iW`v2}cCFOfeV`3b-~Gxn=^5&IAxoNgq>7P-^T~ zT29z+9hd!pJuFM4_t@u02|`)0bf}MPXEqS{^wEd6(WaGRm0m3`cZS?KDRD2k{20?m zV--r%T&vPI%_$&#`mWvggwI_uD<#Fd9Mzv!drNq?^;2YWS(6kCdF)PJPWV~|@*Ont z!gh=b1|Ra|`~GR}Q#ZQ!4j5F^QlVl5-72E&P`q^M?G<(1;1-JKIJ zPK(ZGt5!a+vbu$rtWMq(F!mT&lYvX%M~Wo~=SZ(oL->p}trN6#L{`{ps+PNb7a`Mw zUrM}SW_hawU5fid^}*PnNv*nKjeMLS_T73}Nv!1ILIXU_5NcKh zOfzqQ4aY;sxBIwLtnOR6*E*jcW{_|CFX=7KR?#To z;mD>iNs{O;s>{m<)mE=1XKZ$k&IGRolCIJqSx}xMmZiT%kw z^M$B9E+D2LtE?8iuBsXg&j?!rGqg+^1mZp#PDyUs6HVg-Q%A-=c6_@zNa~T|2KrVI3hNCl5$^jamEs#Rn-yYI) zgL{VFaj?>g>C9k?YI8@1Gy?dkob=YPzwe(R3IJV}X6NO$Z)F7h93ErRb_P0i<=;tF zf$2DX8mdwnWdnZ%3q?mq0hLa-wq41LT*PxIg+8t1llMgw zGu&l$1J<2X-VZK?jq?c)!`0FtslohdwkHNJ*vj1=X2Hq~|HU-|Bmi#+YsX=Nu$_-( zRbNY+f9iGQcs!`6%UHAD>@INItN@2_TP4GHV9v3lagD41ed5?QhV_<^Pk!@t!mHN2 zVSESjE$l9{`E!R??n$>+X6124aQKJz_TtwhwPxoUaO#C0K1`OeT9=lSx)&bUE78+Y zn9HaDc2YH^V6NKRn?YW$ZX|j81gnBaTEGV$-r9FvS*A>$JHVlRlc;AJ=*V1mCQBP-|H++Bg1^6Rd@I^i*$am@7f}FV!Im^o^Fo;^|;+Tk( z@jYIr!(P43{P)k=mK|%fyPeYt{snk}KyUs26PO|#ne+?En|U|WgzSksEglnUuDs$q zR{8gxhyPLCAW+<2?h@#`{lzT+n2zAj-UIjCrEf=j_8204nO=6ZFVjkiRo=dM1ZsZs z=YIo#WB2b*1p<90zc3E}dIgQ)i-WBJ8E*L6s7ID!ZDwg16&ELTy8C=>%<`F}lvE6= z@?J-0`{Sw%eN`9G{J>!0=07x^`PTT@5FMt_f{uqzv%G?fj)z_|*mFfDuz8JabZ8{B zYatR4bzqd2DHI=g24CA%<^#k0^BNNB&HO%Y0dC!(TWe(j&qZOS1CjiNZ$CglrWR=;!4>4W zn7xd8Ij2%ruz$r@L*$QKgs_@7Q!b-!g_-lJHR0T5{V!kd#bN*NV}vw-GPCDN03rIMp;?eWm1p`g!+#rqQ2Fr zQz3WSO(m@M%zB(97E|a*3hLv%xbzK0u>fVYl0&Iiiv-aXasrwua`DBQ>c-HG?j`#U z>9W{%dG9^#!(Kvf2H}Il)Aj{eJ<~A8qMH)rYy0_c8!h?z^ZRLQUY;{y^VOKM_xQPF z**D3m9^|9f^|zM*2zJKAmpakbFfwbY`R%>d9($x%c-J93g@cj8AOnqHyt~sXc^D*H?mq2K%I_NCX)@z9z$wtR?q!PfIk0g% ziRDH09f^Gzx3nJ@hj%eEQrMV_R@fnWBTB`!%s-5q!yRjSh(QNsc}NHMKVhKTnVf26 z!p^t*eJZ!}VztRx{uAOcB2=OuBeYpzJ{E9MBMC zBpK`xmm13qbbZMk0t0ae63}n_i(^NVUr;g#ekQR@5DoAkYqfw44$1rS#cBo^5Cn`6 zg?T@Q^a{goP2U|fS=Y~UBJB4X#>mRT!cv}zb2NN@eOB|)(+rfqWUmwtq8dTBZT{LS zzqMbQ^J9#I4DvCC+{Iv*1l=HfibrR0m_s42q1|JLBS~fD3KdnPjmOaNXfha^=RfFw zH!Rixme9}qa!=8T1to|Zf{Md{-X3S0^&%9_Cp3&rg4G|89Bv7xNvRp<($QBD zg3F4E)K{}SF+qG>-s}3ca_p9<^{%omM%Jbnz?;?`?eBKz?bA1+KJ#@7Nc3WTd7z2PVekFfHPpA|57MXzbd}MP5@dFQ)p>VhBPunOK9G^T zh~&kNB3NSBr&+1376>5iZMp9$Oj3jsg0@5cKqTLEC-OB)$^PdB& z0=uQdG;qI@axB%(2qxz&GA5H4!x;|V%`C>+f2#J((YvIl*dUtbb;!efyb_%rREvHV zRC^_a_`;S@UuG#PbP9)s71dC^F4-&%O7>|q|Fk*m_8V}51B1?xy5PyW^v-e}Rl5!G zbY6=>P|g(**9$Ci``w0s^V;p*eA>LKl4Wn|VLV4{LcbCKI@cbOp{CM+Impu23CZ%| zM>;3yYNHhN;X`($bQ->8G%fJ3$C~d+9GkLPt;kp=;v_{Z-MbWOHFq$hC9ry`sHD&jm9c1c%^~ z#3y%(F~>)_1-knjGXWvE<;2&_kaZ7Xq{rdzoh&&ZLV>CpeQU!!v3J7r%2QHaIx=a( zU0Ia+pEY=2@WhXNDCLtoYS%1)sE+mqKaLZHSXq?YA(w+$0kd0dY1CfB$nzOAmv%@> zV?%2QjwUJT?;Y3dGZ^)qs<7do7xQIOVX*M5QD1eS5G^BeGb$Ko)1WhAXCD|S7hQ%Y z)}~jX`Kx-eZ1iV84Dnp&e;5(X&f|n%KB`DB7oW^0T$eE+UKMW6IILGV4Wd>XtB1Vt zI@!=$wS6t>|CehMB2gG`(8$*32l>Kgqxnd@cII~{iM0O7WyL(*&-pTHEANWLwDY$t zetGuSs0VxHxYks%-Biabm~+TosV@m#D9qSAETMWu9Q*6-jZs;TS6Lyt1}{G(?e;HO zKF(>kQyG;k_4>>lC~xJ}@bvlgz}VQ!gYj#7greqh@;vom9WZ!MiI9?|?1w7o#?W6O zW&Q`?Gc9pDaL4cjcX$wnSz*X#O^CAj`bJg90CoNTGCt`TB#4kAJ3y5(m8wuz1@pL` zLWJ!cScmW}DV4iI?>Q$?RVv`Z+4n8xQ={A{f*gwi191s8UcREraxSk8YTNOMz|gqy&UJq>t=BZUD#TaQA$v zhffXTbxIj-U&2E=HZTlcvRd(4+1;?8<#3&pYLLeuRO{l%Z3!}_@k+45uO=VKAI)e^ zIkV%Dpr3+$eUSafJjO?7kN5mM9GsBp-{P5A^QIu?Xn>|f1*jf~NIaZ==cKFYo_B8< z7L!9ks8Xv!m8Hp8piZk64v^2zvykM2V%Fe z>iourOE&Ee%X8P_)2M>xrwb{JJN@Mtzo-zC4{e&SV1YZ%fsNMLg!4hoSoefB%G5Xb zm6yLZC_di|qz?ZgH7$TQQEIfBG?J!^w*Ur`CU5@1yLDmUJv;3<>B-e1H~PIA zN8b3nvL1KShYhOKp%cBsXv&;&RIeB$i(^s>lC?jA+tzR!^+c)x9m3BG5g>m{*()-$ zpfCy)w@@pbAM__#yXK=^%Oq8MZ@O8v1}JsnN+UTW!l|+~;>t80i62qBDLFK1(K_xX+Jry2W(T&e#Y^+n znE0xU!7aFjCvsggx@{(FUT^R>!fBe0) z(fk?dgoD=x2UyG-=h#`Km$NY=jN@(Y57}N% z(f$NQ9-%SuQ}k9@`JtRUo1|vIb9kCP9A2M3EhVaG(rXYLQk|Z3(pk(Os($C1zH!I? z@#MVDuxD1IgKB42jv-Ww=k#_c!BQ&cM(7YM#?7jXw`|yoBFrO$cQenl)&%IyUw@8; zLukZZDmkyJ)KWKjZMG*icCdvSxp9{GQjD2&L?2oe5f%u-*2~0TmzlRHm{cgl#InZ9 zHle9kYCXL;0ZG?pvuy3f= z<9o7bHV`O;^IWF-^WS_Jf9|Vy&8voug~Jpty3+qLvtFf6=Mc+AF3a!B$86%#**TVx zt}Zsp3iYq!;!7d|trjxGhWXyaf`V#D*ten5ZCAfi$I#4xD`n+hq*a#;AwmVbDUp%5 zAL6^pzvc|J*#6U1S^rBi5OhPSZGP80OxFGGU&r31z+yfm^-1(3| z?~wiG4r?ILR_iDC@;T7=y`8VRc4s<4n5*`2+nMuZ7AF74^SMEk!FZbzSkb@v_p39| z2arxq!+7^VqT+u%$s0sqA-}Eh&ql%HmqDi&@ta5Qw(i~_463_w;~s$I&VKc%^_oNs49@mG9 zA{)W%VT-5m?S%vS-3ch-sb_*?2bl!&WmwJr>;)(qL`l^3wr;9uiM~`o2vR=U#dae3meo1))M)44&qQ5 zne=CXLFa?4=7)HXu0rcT$JCp|T{~QRo}n>SIUjO%rXFr|m~;q2kR6vbE9;B*T#Xvh zOtCpG9C4fcN=LhHSYdByH)I89LC2PWDB*;#xg?dQ{_2W<9f>xXvpTzP)W>s9(fD3_ zW;wl*;g9e2hj^1eehly!85fGz@tBv?7mu%MF0*zxaIID9L+SDmptzZ`z?UT$=q z$JHEZ?5>*{cVj+srl~%Yt8@ST_O%a-nPGUKRX%RKoI0JYJ^;aR&88&fl)o|d#t5by zo}<7Rx#YeUY*O%%pdWeD%gvn}sPU65IXo`*gvojGmhtndh%?14qQazAu0wqPz+KG! zzD)GZ7laaNoUEPoZLHQ*TBUB`kb2Xa81_{+zCAH-O5t!wRad~-}W~^Xy@#M?VFkc8YXYVm_S@LiH}#k3kpl0 z!GO@#oeQjQ-SfOgVY3NteS9!|dMwrGG=D8BA%Yqx#Eh(-@s`)pI`WL515v*|-+B