From 5de6684e4b599bd9600b1e7a546d8b85ad10d9e8 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Fri, 3 Jan 2025 11:00:07 +0530 Subject: [PATCH 01/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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/54] 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 02ed9ed9830fcf83648dd4df7185bf759409cc85 Mon Sep 17 00:00:00 2001 From: Nithya Date: Thu, 24 Apr 2025 17:42:43 +0530 Subject: [PATCH 32/54] 951563: Github links added --- .../Connecting-to-adaptors/odatav4-adaptor.md | 12 +++++++----- .../Connecting-to-adaptors/web-api-adaptor.md | 4 +++- .../Connecting-to-adaptors/web-method-adaptor.md | 2 ++ .../connecting-to-adaptors/custom-adaptor.md | 4 +++- .../connecting-to-adaptors/odatav4-adaptor.md | 12 +++++++----- .../connecting-to-adaptors/remote-save-adaptor.md | 2 ++ .../connecting-to-adaptors/url-adaptor.md | 2 ++ .../connecting-to-adaptors/web-api-adaptor.md | 4 +++- .../connecting-to-adaptors/web-method-adaptor.md | 2 ++ .../connecting-to-adaptors/custom-adaptor.md | 2 ++ ej2-asp-core-toc.html | 9 +++++---- ej2-asp-mvc-toc.html | 14 +++++++------- 12 files changed, 45 insertions(+), 24 deletions(-) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/odatav4-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/odatav4-adaptor.md index 5561c7136d..ce4387c859 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/odatav4-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/odatav4-adaptor.md @@ -300,7 +300,7 @@ Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will succe > Replace https://localhost:xxxx/odata/Orders with the actual **URL** of your API endpoint that provides the data in a consumable format (e.g., JSON). -## Handling Searching Operation +## Handling searching operation To enable search operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `Filter` method within the OData setup, allowing you to filter data based on specified criteria. Once enabled, clients can utilize the **$filter** query option in their requests to search for specific data entries. @@ -333,7 +333,7 @@ config.Count().Filter(); // Handles searching operation. ![Searching query](../images/adaptors/odatav4-adaptor-searching.png) -## Handling Filtering Operation +## Handling filtering operation To enable filter operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `Filter` method within the OData setup, allowing you to filter data based on specified criteria. Once enabled, clients can utilize the **$filter** query option in your requests to filter for specific data entries. @@ -369,7 +369,7 @@ config.Count().Filter(); // Handles filtering operation. **Multi column filtering** ![Filtering query](../images/adaptors/odatav4-adaptor-multi-column-filtering.png) -## Handling Sorting Operation +## Handling sorting operation To enable sorting operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `OrderBy` method within the OData setup, allowing you to sort data based on specified criteria. Once enabled, clients can utilize the **$orderby** query option in their requests to sort data entries according to desired attributes. @@ -406,7 +406,7 @@ config.Count().OrderBy(); // Handles sorting operation. **Multi column sorting** ![Multi column sorting query](../images/adaptors/odatav4-adaptor-multi-column-sorting.png) -## Handling Paging Operation +## Handling paging operation To implement paging operations in your web application using OData, you can utilize the `SetMaxTop` method within your OData setup to limit the maximum number of records that can be returned per request. While you configure the maximum limit, clients can utilize the **$skip** and **$top** query options in their requests to specify the number of records to skip and the number of records to take, respectively. @@ -440,7 +440,7 @@ config.Count().MaxTop(recordCount); // Handles paging operation. ![paging query](../images/adaptors/odatav4-adaptor-paging.png) -## Handling CRUD Operations +## Handling CRUD operations To manage CRUD (Create, Read, Update, Delete) operations using the ODataV4Adaptor, follow the provided guide for configuring the Syncfusion Grid for [editing](https://ej2.syncfusion.com/aspnetmvc/documentation/grid/editing/edit) and utilize the sample implementation of the `OrdersController` in your server application. This controller handles HTTP requests for CRUD operations such as GET, POST, PATCH, and DELETE. @@ -540,6 +540,8 @@ public IHttpActionResult Delete(int key) ![Delete Record](../images/adaptors/odatav4-adaptor-delete-record.png) +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/ODataV4Adaptor). + ## Odata with custom url The Syncfusion ODataV4 adaptor extends support for calling customized URLs to accommodate data retrieval and CRUD actions as per your application's requirements. However, when utilizing a custom URL with the ODataV4 adaptor, it's essential to modify the routing configurations in your application's route configuration file to align with your custom URL. You can invoke the custom URL by the following methods in the `DataManager`. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-api-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-api-adaptor.md index 2bf3a02ebe..3b32f4e199 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-api-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-api-adaptor.md @@ -605,4 +605,6 @@ public void Delete(int key) } ``` -![WebApiAdaptor CRUD operations](../images/adaptors/adaptor-crud-operation.gif) \ No newline at end of file +![WebApiAdaptor CRUD operations](../images/adaptors/adaptor-crud-operation.gif) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/WebApiAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md index 8a993b5acb..9e7392804a 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md @@ -738,3 +738,5 @@ public object BatchUpdate(CRUDModel batchOperation) } ``` ![WebMethodAdaptor Batch Editing](../images/adaptors/url-adaptor-batch-editing.gif) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/WebMethodAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/custom-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/custom-adaptor.md index 654bdcf95f..8801524c04 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/custom-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/custom-adaptor.md @@ -729,4 +729,6 @@ public IHttpActionResult Delete(int key) return Ok(deleteRecord); } ``` -![CustomAdaptor-Delete-record](../images/adaptors/ODataV4Adaptor/odatav4-adaptor-delete-record.png) \ No newline at end of file +![CustomAdaptor-Delete-record](../images/adaptors/ODataV4Adaptor/odatav4-adaptor-delete-record.png) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/CustomAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/odatav4-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/odatav4-adaptor.md index 5561c7136d..ce4387c859 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/odatav4-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/odatav4-adaptor.md @@ -300,7 +300,7 @@ Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will succe > Replace https://localhost:xxxx/odata/Orders with the actual **URL** of your API endpoint that provides the data in a consumable format (e.g., JSON). -## Handling Searching Operation +## Handling searching operation To enable search operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `Filter` method within the OData setup, allowing you to filter data based on specified criteria. Once enabled, clients can utilize the **$filter** query option in their requests to search for specific data entries. @@ -333,7 +333,7 @@ config.Count().Filter(); // Handles searching operation. ![Searching query](../images/adaptors/odatav4-adaptor-searching.png) -## Handling Filtering Operation +## Handling filtering operation To enable filter operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `Filter` method within the OData setup, allowing you to filter data based on specified criteria. Once enabled, clients can utilize the **$filter** query option in your requests to filter for specific data entries. @@ -369,7 +369,7 @@ config.Count().Filter(); // Handles filtering operation. **Multi column filtering** ![Filtering query](../images/adaptors/odatav4-adaptor-multi-column-filtering.png) -## Handling Sorting Operation +## Handling sorting operation To enable sorting operations in your web application using OData, you first need to configure the OData support in your service collection. This involves adding the `OrderBy` method within the OData setup, allowing you to sort data based on specified criteria. Once enabled, clients can utilize the **$orderby** query option in their requests to sort data entries according to desired attributes. @@ -406,7 +406,7 @@ config.Count().OrderBy(); // Handles sorting operation. **Multi column sorting** ![Multi column sorting query](../images/adaptors/odatav4-adaptor-multi-column-sorting.png) -## Handling Paging Operation +## Handling paging operation To implement paging operations in your web application using OData, you can utilize the `SetMaxTop` method within your OData setup to limit the maximum number of records that can be returned per request. While you configure the maximum limit, clients can utilize the **$skip** and **$top** query options in their requests to specify the number of records to skip and the number of records to take, respectively. @@ -440,7 +440,7 @@ config.Count().MaxTop(recordCount); // Handles paging operation. ![paging query](../images/adaptors/odatav4-adaptor-paging.png) -## Handling CRUD Operations +## Handling CRUD operations To manage CRUD (Create, Read, Update, Delete) operations using the ODataV4Adaptor, follow the provided guide for configuring the Syncfusion Grid for [editing](https://ej2.syncfusion.com/aspnetmvc/documentation/grid/editing/edit) and utilize the sample implementation of the `OrdersController` in your server application. This controller handles HTTP requests for CRUD operations such as GET, POST, PATCH, and DELETE. @@ -540,6 +540,8 @@ public IHttpActionResult Delete(int key) ![Delete Record](../images/adaptors/odatav4-adaptor-delete-record.png) +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/ODataV4Adaptor). + ## Odata with custom url The Syncfusion ODataV4 adaptor extends support for calling customized URLs to accommodate data retrieval and CRUD actions as per your application's requirements. However, when utilizing a custom URL with the ODataV4 adaptor, it's essential to modify the routing configurations in your application's route configuration file to align with your custom URL. You can invoke the custom URL by the following methods in the `DataManager`. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/remote-save-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/remote-save-adaptor.md index 4a85c3f535..38f4150754 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/remote-save-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/remote-save-adaptor.md @@ -362,3 +362,5 @@ Now, add the Syncfusion ASP.NET MVC Grid in `~/Views/Home/Index.cshtml` page. T **Step 7:** Run the Project Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will successfully fetch data from the API service. + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/RemoteSaveAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md index 30a801c33f..c6c8f46c68 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md @@ -612,3 +612,5 @@ To perform batch operation, define the edit `Mode` as **Batch** and specify the {% endtabs %} ![UrlAdaptor Batch Editing](../images/adaptors/url-adaptors/url-adaptor-batch-editing.gif) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/UrlAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-api-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-api-adaptor.md index 2bf3a02ebe..3b32f4e199 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-api-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-api-adaptor.md @@ -605,4 +605,6 @@ public void Delete(int key) } ``` -![WebApiAdaptor CRUD operations](../images/adaptors/adaptor-crud-operation.gif) \ No newline at end of file +![WebApiAdaptor CRUD operations](../images/adaptors/adaptor-crud-operation.gif) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/WebApiAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md index 8a993b5acb..9e7392804a 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md @@ -738,3 +738,5 @@ public object BatchUpdate(CRUDModel batchOperation) } ``` ![WebMethodAdaptor Batch Editing](../images/adaptors/url-adaptor-batch-editing.gif) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp-net-mvc-data-grid/tree/master/WebMethodAdaptor). \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/connecting-to-adaptors/custom-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/connecting-to-adaptors/custom-adaptor.md index da03995672..1708e80a0b 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/connecting-to-adaptors/custom-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/connecting-to-adaptors/custom-adaptor.md @@ -749,3 +749,5 @@ public IActionResult Delete(int key) } ``` ![ODataV4Adaptor-Delete-record](../images/adaptors/ODataV4Adaptor/odatav4-adaptor-delete-record.png) + +> Please find the sample in this [GitHub location](https://github.com/SyncfusionExamples/Binding-data-from-remote-service-to-asp.net-core-data-grid/tree/master/CustomAdaptor_EJ2Core). \ No newline at end of file diff --git a/ej2-asp-core-toc.html b/ej2-asp-core-toc.html index 9b22766f49..8ef26de688 100644 --- a/ej2-asp-core-toc.html +++ b/ej2-asp-core-toc.html @@ -1312,10 +1312,11 @@
  • Connecting to Database -
  • diff --git a/ej2-asp-mvc-toc.html b/ej2-asp-mvc-toc.html index 6daa8c4bba..32bd0ee862 100644 --- a/ej2-asp-mvc-toc.html +++ b/ej2-asp-mvc-toc.html @@ -1261,13 +1261,13 @@
  • Connecting to Database +
  • Microsoft SQL Server
  • +
  • MySQL Server
  • +
  • PostgreSQL Server
  • +
  • SQLite Server
  • +
  • Dapper
  • +
  • Entity Framework
  • +
  • Data Annotation
  • Adaptive View
  • From 2dd9716d4803481178c04702179668387c9cca5f Mon Sep 17 00:00:00 2001 From: Nithya Date: Thu, 24 Apr 2025 18:02:29 +0530 Subject: [PATCH 33/54] 951563: correction --- .../Connecting-to-adaptors/web-method-adaptor.md | 8 ++++---- .../connecting-to-adaptors/url-adaptor.md | 12 ++++++------ .../connecting-to-adaptors/web-method-adaptor.md | 8 ++++---- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md index 9e7392804a..243e43e130 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/Connecting-to-adaptors/web-method-adaptor.md @@ -296,7 +296,7 @@ Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will succe } ``` -## Handling Searching Operation +## Handling searching operation To enable search functionality, ensure that your API endpoint supports custom searching criteria. Implement the searching logic on the server-side using the `PerformSearching` method from the `QueryableOperation` class. This allows the custom data source to undergo searching based on the criteria specified in the incoming `DataManagerRequest` object. @@ -346,7 +346,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Filtering Operation +## Handling filtering operation To handle filtering operation, configure your API endpoint to support filter criteria. Implement the filtering logic on the server-side using the `PerformFiltering` method from the `QueryableOperation` class. This allows the custom data source to undergo filtering based on the criteria specified in the incoming `DataManagerRequest` object. @@ -407,7 +407,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Sorting Operation +## Handling sorting operation To handle sorting operation, configure your API to support custom sorting criteria. Implement the sorting logic on the server-side using the `PerformSorting` method from the `QueryableOperation` class. This allows the custom data source to undergo sorting based on the criteria specified in the incoming `DataManagerRequest` object. @@ -463,7 +463,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Paging Operation +## Handling paging operation To handle paging operation, configure your API endpoint to support custom paging criteria. Implement the paging logic on the server-side using the `PerformTake` and `PerformSkip` method from the `QueryableOperation` class. This allows the custom data source to undergo paging based on the custom paging criteria specified in the incoming `DataManagerRequest` object. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md index c6c8f46c68..691b5ff081 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/url-adaptor.md @@ -190,7 +190,7 @@ Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will succe > * In an API service project, add `Syncfusion.EJ2.MVC5` by opening the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search and install it. > * To access `DataManagerRequest`, import [Syncfusion.EJ2.Base](https://www.npmjs.com/package/@syncfusion/ej2-base) in `GridController.cs` file. -## Handling Searching Operation +## Handling searching operation To enable search functionality, ensure that your API endpoint supports custom searching criteria. Implement the searching logic on the server-side using the `PerformSearching`. This allows the custom data source to undergo searching based on the criteria specified in the incoming `DataManagerRequest` object. @@ -233,7 +233,7 @@ To enable search functionality, ensure that your API endpoint supports custom se {% endhighlight %} {% endtabs %} -## Handling Filtering Operation +## Handling filtering operation To handle filtering operation, configure your API endpoint to support filter criteria. Implement the filtering logic on the server-side using the `PerformFiltering`. This allows the custom data source to undergo filtering based on the criteria specified in the incoming `DataManagerRequest` object. @@ -278,7 +278,7 @@ To handle filtering operation, configure your API endpoint to support filter cri {% endhighlight %} {% endtabs %} -## Handling Sorting Operation +## Handling sorting operation To handle sorting operation, configure your API to support custom sorting criteria. Implement the sorting logic on the server-side using the `PerformSorting`. This allows the custom data source to undergo sorting based on the criteria specified in the incoming `DataManagerRequest` object. @@ -321,7 +321,7 @@ public ActionResult UrlDatasource(DataManagerRequest DataManagerRequest) {% endhighlight %} {% endtabs %} -## Handling Paging Operation +## Handling paging operation To handle paging operation, ensure that your API endpoint supports custom paging criteria. Implement the paging logic on the server-side using the `PerformTake` and `PerformSkip`. This allows the custom data source to undergo paging based on the criteria specified in the incoming `DataManagerRequest` object. @@ -369,7 +369,7 @@ To handle paging operation, ensure that your API endpoint supports custom paging ## Handling CRUD Operations -The Syncfusion ASP.NET MVC Grid seamlessly integrates CRUD (Create, Read, Update, Delete) operations with server-side controller actions through specific properties: `InsertUrl`, `RemoveUrl`, `UpdateUrl`,`CrudUrl`, and `BatchUrl`. These properties enable the Grid to communicate with the data service for every Grid action, facilitating server-side operations. +The Syncfusion ASP.NET MVC Grid seamlessly integrates CRUD (Create, Read, Update, and Delete) operations with server-side controller actions through specific properties: `InsertUrl`, `RemoveUrl`, `UpdateUrl`,`CrudUrl`, and `BatchUrl`. These properties enable the Grid to communicate with the data service for every Grid action, facilitating server-side operations. **CRUD Operations Mapping** @@ -472,7 +472,7 @@ public ActionResult Update(Orders value) } ``` -**Delete Operation** +**Delete Operation:** To delete existing records, use the `RemoveUrl` property to specify the controller action mapping URL for the delete operation. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md index 9e7392804a..243e43e130 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/connecting-to-adaptors/web-method-adaptor.md @@ -296,7 +296,7 @@ Run the project in Visual Studio, and the Syncfusion ASP.NET MVC Grid will succe } ``` -## Handling Searching Operation +## Handling searching operation To enable search functionality, ensure that your API endpoint supports custom searching criteria. Implement the searching logic on the server-side using the `PerformSearching` method from the `QueryableOperation` class. This allows the custom data source to undergo searching based on the criteria specified in the incoming `DataManagerRequest` object. @@ -346,7 +346,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Filtering Operation +## Handling filtering operation To handle filtering operation, configure your API endpoint to support filter criteria. Implement the filtering logic on the server-side using the `PerformFiltering` method from the `QueryableOperation` class. This allows the custom data source to undergo filtering based on the criteria specified in the incoming `DataManagerRequest` object. @@ -407,7 +407,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Sorting Operation +## Handling sorting operation To handle sorting operation, configure your API to support custom sorting criteria. Implement the sorting logic on the server-side using the `PerformSorting` method from the `QueryableOperation` class. This allows the custom data source to undergo sorting based on the criteria specified in the incoming `DataManagerRequest` object. @@ -463,7 +463,7 @@ public class DataManager {% endhighlight %} {% endtabs %} -## Handling Paging Operation +## Handling paging operation To handle paging operation, configure your API endpoint to support custom paging criteria. Implement the paging logic on the server-side using the `PerformTake` and `PerformSkip` method from the `QueryableOperation` class. This allows the custom data source to undergo paging based on the custom paging criteria specified in the incoming `DataManagerRequest` object. From ea632d164f6b0f6fa3da3a357fa7c1a8e0e01534 Mon Sep 17 00:00:00 2001 From: Yvone-Atieno <95272306+Yvone-Atieno@users.noreply.github.com> Date: Mon, 28 Apr 2025 11:55:17 +0300 Subject: [PATCH 34/54] SEO-200901 ASP.NET MVC Speech to Text UG --- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/events.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/getting-started.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/globalization.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/methods.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/security.md | 2 +- .../speech-to-text/EJ2_ASP.MVC/speech-recognition.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md index 212a966258..f9fbf80ba6 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md @@ -1,7 +1,7 @@ --- layout: post title: Appearance in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Appearance in Syncfusion ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about appearance in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: Appearance publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/events.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/events.md index ea8ed14440..30349d1611 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/events.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/events.md @@ -1,7 +1,7 @@ --- layout: post title: Events in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Events in Syncfusion ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about events in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: Events publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/getting-started.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/getting-started.md index 2a5a69b79b..f8a0b5c235 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/getting-started.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/getting-started.md @@ -1,7 +1,7 @@ --- layout: post title: Getting Started with ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about getting started with ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about getting started with Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/globalization.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/globalization.md index 2211f84fa6..e356c623b4 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/globalization.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/globalization.md @@ -1,7 +1,7 @@ --- layout: post title: Globalization in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Globalization in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about globalization in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/methods.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/methods.md index 170733b2a3..0db5f9ff8b 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/methods.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/methods.md @@ -1,7 +1,7 @@ --- layout: post title: Methods in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Methods in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about methods in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/security.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/security.md index 542c3c1d6b..f846dd95ba 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/security.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/security.md @@ -1,7 +1,7 @@ --- layout: post title: Security concerns in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Security concerns in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about security concerns in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/speech-recognition.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/speech-recognition.md index b0dde67380..ed2e0828c3 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/speech-recognition.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/speech-recognition.md @@ -1,7 +1,7 @@ --- layout: post title: Speech recognition in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Speech recognition in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about speech recognition in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## From d78903475729867217e123209b1dfac07a31c4ee Mon Sep 17 00:00:00 2001 From: hillary-ochieng Date: Mon, 28 Apr 2025 16:31:47 +0300 Subject: [PATCH 35/54] 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 36/54] 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 8d9c4f34d472e766e1e5192437d8049f26609921 Mon Sep 17 00:00:00 2001 From: Yvone-Atieno <95272306+Yvone-Atieno@users.noreply.github.com> Date: Mon, 28 Apr 2025 16:54:55 +0300 Subject: [PATCH 37/54] SEO-200918 ASP.NET Core Speech to Text UG --- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/appearance.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/events.md | 2 +- .../speech-to-text/EJ2_ASP.NETCORE/getting-started.md | 2 +- .../speech-to-text/EJ2_ASP.NETCORE/globalization.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/methods.md | 2 +- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/security.md | 2 +- .../speech-to-text/EJ2_ASP.NETCORE/speech-recognition.md | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/appearance.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/appearance.md index 3d32507b03..b7f4ced451 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/appearance.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/appearance.md @@ -1,7 +1,7 @@ --- layout: post title: Appearance in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Appearance in Syncfusion ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about appearance in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: Appearance publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/events.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/events.md index 56c32c47bd..1c4ee6486b 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/events.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/events.md @@ -1,7 +1,7 @@ --- layout: post title: Events in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Events in Syncfusion ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about events in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: Events publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/getting-started.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/getting-started.md index 62c6f46417..cc66711e7e 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/getting-started.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/getting-started.md @@ -1,7 +1,7 @@ --- layout: post title: Getting Started with ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about getting started with ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more details. +description: Checkout and learn about getting started with Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more details. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/globalization.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/globalization.md index 5a16383e9c..3a888bbb32 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/globalization.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/globalization.md @@ -1,7 +1,7 @@ --- layout: post title: Globalization in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Globalization in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about globalization in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/methods.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/methods.md index 677aa00d6b..fb68d70d02 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/methods.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/methods.md @@ -1,7 +1,7 @@ --- layout: post title: Methods in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Methods in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about methods in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/security.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/security.md index 542c3c1d6b..f846dd95ba 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/security.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/security.md @@ -1,7 +1,7 @@ --- layout: post title: Security concerns in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Security concerns in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about security concerns in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/speech-recognition.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/speech-recognition.md index 8a1b31b05c..ceaa0517f2 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/speech-recognition.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.NETCORE/speech-recognition.md @@ -1,7 +1,7 @@ --- layout: post title: Speech recognition in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about Speech recognition in ##Platform_Name## SpeechToText control of Syncfusion Essential JS 2 and more. +description: Checkout and learn about speech recognition in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: SpeechToText publishingplatform: ##Platform_Name## From 1a31721f3c3b20c7fc807f010fbc57494a77bc93 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Tue, 29 Apr 2025 15:11:28 +0530 Subject: [PATCH 38/54] 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
    zcmdSBcTkgU*Ds3tSP&~Js0dgnB0>x*h%^g`G?7lI8oCg8=rzHHN>^%-CITW|5(u66
    zC=h`FQUW9aqC|rvgoqGILc+d-zVG*bXP+~3X7-*vv;T0A`zmW)Wv%sFE&bg)
    zkM0x_654HWQ`cNbXcJ9HX!Erl+kh{JmR!q#ADaTr^{)w4^&Oi5e)-Ges>xL$p_*io
    zwYyt^--Z9a2?-Pu5|b7D+hkxa^HWI3BGf?ls%4lHvvsCk#wNU^Jo=T+B91@iJ<-N!
    z+U`sq^{r?6Quin9R!!aH@_y{F&z0kHV57}F$FCS)yYn0ge$;#Vv5;^9?>uIu(BvQFJFp`lc}#J3!yP;aV!1?afz5MSyfxhCC9#m5%w_G82Xtsx4KQ(Rez=XX;~#_oOlTyXvIKGf%~
    zkxs%*THM`~#&TyB{S0UuQ<3H~ZH~IZHX2#QbjjUGbCnl6@%TBx6yu(pf>(g0HdZ*R
    zcw`KorujTQ3pvG+W%yuSA8Fh~b;&*6r^4+TS-YB|UgE4$&o-icM!rU(KR{4hGE;&p
    z6o_By3{<`T>;Xw8(A+|0Iz6Rvc={69BL?NVT~U^yYk|6YMmGDI!M88}JOX;kA$^#+
    zx+6yT+{y
    zY3*mTTrz>vJDh6uQr6p50Wu9oT|Fj4ED{Bdh~lbzSSBkzN+mNrMO`I6lqt;5G)Ebt
    zTob!ff`{cL-Xgl>JRH>j{vrgdTtUYE5iT7s$xBi1mJf8uz-K|ejkiJjLK3=;zK~_4
    z0XzD}^^vwGD)r&MYd4ouD`y_b1sYkXghEuN-MWq)9TMyma`rtKB7YV#jdp!R0uf!4
    zUh=rhz->9=f~pG{cD?l@6R!nP$%LqE?{rmW8+7CxO6b}nmU@wt609mG(O`~>Jt9Nw
    z0*<~&qibaDYD!~a8r}e$MLwH#z(uA03@%n(@nEXtdwK67Sw@bmM9v%6EzX9jU5?#t
    za4s-tsB5H3S=OFw)Ri-shKFR}gER0iw6k1no~bMDOSPI!y=dHZ*`;e+L7LBfII8QY
    zJ}NbB-?dLGDV43%o3x$z_=^yg=vCJ_3l$rVZohK8x;8M1mU{6<*HKn#@T9y%JJRRm
    zHiHmg2X@Rjp)N)}cij`)#1
    z#L`>Mw{*nkIB?iBwSe3l`Q@$$SrX~^VlnmQ$EUv{ee{h&uDIcRWuJC~TW2eR4lPpzA?Bbw(JMB@APB+C+np|uq4#Tq#1HDe3+}<4%
    zF!c)LR|2%#q2dln+9uuxG}0@(rK#fq+PCmE_f4$}_Pm*$sK>SiPv1HsBy>ku-OM-b
    zRBvXMQLDGjGolW#Uf1nri|+MKHrs`S?w355_mi-*Y3+KC%Y#(3Db
    zao|pGcP^0pOTb^+Jk+|ysL&&`Lo+VzkYLL4SiXG8-Swv*<@2HfUOOvFc2tCwM2wC=
    zlg#_tXBD5Nv&i*(fuZlqeyvs`(45cm{Nf1L<-%4aW&^J(vaCLr^MFnx&&|S)=mZow
    z9O2DO+-o!Gn2o7ek#s4(ybrof=sv-no8(9+m0s}-rpfo0N|BqZ>+7;2rNiD{UL9T@
    zHP75DA0t?&>0#Y&!-{q=z$4KVIQjf%z&!DLl;0{EYZ)5ih{
    z4<<*_HGh77Y1f_48yrnqoxAPF`1TWO{n~Wn9vG>|sasF&eHY4d5-c?LF7=HPL4mb?
    z^USoD5#-a0fZ|Y(MY=y!%DTJzQpXzFNV$@~5WQMVw?XjK$~9Om<@LdQ$S`7yka3)G
    zpWJs-_?%)7`OQ_}+&ICf!8pU<jwfiU=GL#%N=~?Ac}W_q3PiwHJ;KoXB9XApUSC_LW7oT@ZCL8;
    zR>GXV4T2m`TA4@pRUuf(d1jeId@MT}QOy~X*M?xLeSdh5`L;5b=;_r66SmPh)rJv(
    zgoX=U(m5g&3)|i1K@StPLcW$46TuP8NVQrURXAeM^$&AByvWgFhy!
    znJg-@goHF5xj!>Q--KV_1jita%#)y)?t{_Kz2a73tf*y_C)|nma+CnypREe3;x7{W
    zA&6Nu1S1+`G)(C-JSd7J$lryi^Z1J%+T~S7VPGt+JvBr2?OS;2!G(41IM6V({?iYzERQi?UPO9`}qFk^9@d+Z`8Dyd(7fK0a1!&}RABtNgYd4it8L`{umE>*qYOZ_^
    z&|#l>l$bx4Q}0W*_8V={Ue^Obs_d(G{Ag&}vQEQBd#|Q%r8wp4M+6ixtKmF@p6WZE
    z*#4-caXb7vBQ(!i>*xDN>=2>*2A^fzTrRfV(XCpXTfD`ts_bw`2{6F7K_xv&Q2tUV
    zc9h)oScXkOtd7!g$}K-i*s9Hugb5a@jzNd*7rvgKXRY4q14F53^RfczxV+VhY0G5I
    zU!Qh@byy&02P174bLdFVNZxrJ&U{-kkLI`T%l>j5`?kImTa$dv*V8o-7V5;1_~KanWciRjE%
    z61h5%TlJUH8Y04P)hqhv;sp?&kvR&=%1ks+|o-LiAWXdTeZ`Oh%o}
    zu~`EHnR3cf&2k31#&Xemv(Wp77Y^HBpiZcpQnB#GzC~q8Lp;X90H3VQ@s#g4yZEb8
    zJ9aH2l~NPsv67&}UEma3Ve_3ZbGWnd5KyxYSG~WwzLj63RvmUkyBsG|o|%8q`o#j`
    z=f?-jn}m=u`bo!1&+jtTTy^DGQyQM1`ra)ER#a@)tVnBCc2DNxag%C&H!NLZit~N17{YXlkiz(v^R8Qdu|?E
    zyx(3dUbnPaz3WEGuOC%&52blUi1Ei|dvDCJ!lKtw<1=I@t?_57K}+YZmR7Og>)TuP
    z1E0(+ze;9~)u1D|&65_%v58MROBa=#ny!yfRh3Dml%zMNwAY
    za>U+QP$DDX@_U5dc><=??I3ze(muX1Kg|eGvN$Do!Tgx*4<9{kbUi%`C}zL=pS(E-l(4+dsx8EUpWGDmyLrQvBO(u
    ziKE-}kAnN9H>_@bbrd_!w3ab#!=rjLK(HDey)8ob-M`&zREdKC0N#KYPYn45Fuq>^
    z%+8zP4G*FRPrIk0#L-q$9Ti(nxC1~@Ma~`M!5V(h?i16BtTY!uiqHARg02DAQq#Dx
    z#61rMn5#Pstmv{oFbyTX@NutBg5cB6-y0QBExJ%tbJu8bt&+?jRsWh9LLi(=^r4o-AZ9f1_`L
    zI65;BVBHRnIS&8=p~DFX!H)R=NX{oc3kl$r4Gh`t6R@N#nT_n_Y>dh}?GBozwjV2=
    z?KoDv!SJ?{L}dDd4xe-Yq6pnzx)2LF0>PX80i@z+(eLBH=KMMiooo#BfZql@oyXr^
    zDC&y_rUgg{n0r58d+7hcg!MCG(fAE~R@%l6A2|@1nj`q%`?M=~08C3lJ;B)-ir>0CVN$|eenjHI$6j=Aa}qICtuyb&%j|9o8jfYt3s`}W+6jo#~%E9
    zuLUP1Sn9d08$F-?A#(a(M8b~5BTY7zbLT?m8Fxh=;OIAcY8V3W7@1COcZfJ*uP~ux
    zYKUj3!7AIhg+_xF5NxB(z1VEuW(}o!Uut*A#NP}@ug2Zk^=!kl{u8~SMc-BZCI%F1
    z+Ape2WMq(=;2zcOqBawMd)xT}4pgLUM#EH7_E3O^^yCE4$!&BzEh92)InOCpR=JVh
    zSvx+bFU?4|otjdtGVNg!o2zZ0vGK~ys!H{t6h6=i5!FTTYUFL-vjmX)r@zXuM^bY!
    z3?MPRz8F_Ke!x_d2uvF;?v$4i`RnIbU_{$8)o3U{KUs>I{+6DPR*9Sb`Sp}n)&e2`
    z0t^!60WkZ*Wg2QdH(2gRPq)1`9b!HA%iC`*-4@EN(jN@4af&tq2-%0u
    z8umECsW4z}pGnLqrBG(S9}DP2&476|O87RSft3zM6xVg3Lq5`K$9qG^$pA~B5tw1m
    zM8q^47^d0ae%)?vDN;&6lmB$2`1@STasj~1T=*RmySX`TG_Z)ri2m*g?iZ5abHnmK
    zwc|XjEd`he7D~y_i2R%R1ZeP8A6c&$f62~{kj+?GWiA(eAK4~9j=c2sVSM%Fsx~t)
    z*dsv74o~tYL6sff?S$UI?}Tc%9ozUR<%EyxTksz=#XI%oilUtl>a9rv-sfPu#3TQ6
    zXz0lK6I$fU0pD)=i2xUS_B`-~!HEz)(Kap&+(cN?F?BnvZdG=tSr!CL_T~cD-tmru
    z(>1~Uce&%<(E{g&2<~hk?o!8Do09^;+yA2lS(#!G3yIb#0eS^J@OmZ?M5k`*L4lsi
    zJUqI)P&`oX_f^;1CWbaRA`riX{H#OhHhDWh^C0B`D`5~$f=Z2M&jM3W?>ML>xEw$q
    z5|DlOETPB9MI0R>5RZ4B#uoVBQ{5H<3zXB3eIg*5WV2K$Fy-g1){gj;U-#k!E~!xh
    z#jp`aZChCiQhx5h^;hzkkfPn}n!`L}lM0oJ?c&1$dnhTQI@{u14g=Pl0!>|Ft*
    zQSkk8`-k`}KmKN+`^q&x1?@jX&jUj?97dtjE>Kl<0TcJFT-`hHYSEj30D=nozm_ph
    zS&I>f`;C8Z;lG&vL&P==ywK|ma3?F~1T0U;5&EwomxVT{?K`jN-nI%H741dVp@oJ?
    zS0GeycssBTp!NP9urla`fIRp#;0Uj3c54LPCt8ZJVrDyer5BSe;
    z3=)yzTRQIuYfwDgj_q4;{hE!X9X^15ov(GdM%Ghlo87@Xoa3^c?~!%>SMcaf(7EF#
    zP%)m=)2@eUhqr72@7)IV#o^<^^RTPsiD76FW016WzP)dAA;LIxgzwLrbrwrb7IF4F
    zOQC)Diu7VhP&mGRJ>8eBo)SDlc_Yr`JT{sBP9;v~$$o~pa@*ps2>THP;cE|OrjTVi
    zj)i4UHSE0{N<5tIc|HU&Sz&5Y-MuRy&vikX>_=9bAB)iRMf)cPueKeo;g8)Qq&v(-rj1VJWSAy_Iv@D8re=}b+4c%8+#6~{
    zYHR#hm-FSXG3oQ-ZxM*q8j;0|^0^MqMN(Q~pdHPBuWfc0pVMjkTB%6KFcJ1ol#W4i
    zFJ~z2u)YPenhJ?N#%2!>=^!x^O9wF3(rV;4s2V26F}XD1(^CKG#23O!-l-rDSn|~A
    z-rVlhMs(vc4D_N-A=}8?W7Z;e@UUwz7uDAP`T~taS%xr|u_9zO-(@#g#gzJdOm$Q%
    zA7aamBBT6!-oafOF}yP`*fzGUh$!aT=T$0s;KDLd)!Ad_m_;rk2etHUb_`Q#vhH!H
    zZPojqjL7^k{dv
    zz^)#y4&MX@H6YO{L_OEa6$M3kh-v?G?g^kH;OW
    zb$(&qikVQO|0E#hXs;7*acT1PAwW0zlZ|MUmU>g7u3HXcM>BSiC7h!1QiAK$_JTk~1tqcOd^;@QdA(_C|AS+*~FtRw{!qYZ}eq{ta{vW#ki*Z1L!-Px+6-%&O3>@z$LF-
    zc;~G58C((fN%n=
    zBCy130$^}160qf)tm9AVCs`)Xg;$W;Ts-RB7$JiNp0_Tjy*zc_>mvX=jI$<^=St@q
    zS^v=EynWv)V>uCnUp6!W%29Jn&xUCl70G+&+zYDUuj0|=sgv`QK=9M_gk&5|H?UB>n|AB#mb>Q^_ML}55q@pD
    z=pN6>#LhG6Y(I^z|^};+E|l4g*F-O%gr2SDM6o(`je3
    zje5cF8z5oeEyg?Hk(L-FgJy?xh#&ES61edmo20NCvAwd1r^VdxVt)K4fa8+*t6zkc2J
    zulZm81kU}>ApFT^M~>g$nAsh`f9C;qQ-4o~Klum5?t{R<&WP_9TQe$LhiFP(;pTgQ
    z`9G*dpKwR+bKH;S*TE?3Uz5w_^P@!7_a1KFHRQSh=N~A?K^hr(+WRf>MYK-p>1Us<~VQ)K-f)JLeHfk`mU|o~u_VR((7E&!g?-{Zag$9&F@r
    z#@?Lpk$`X@5|(E>E%OL@_xGA#mqS&BBj>%cbyvqGTYFHo$O~|-d0GDh9#OI5OKh?W
    zL<1vfldSXeGbn>x!i*Rny$g>w{YwtW^$fZGInp1mk?g=0duy3iTWf_0VZ|CmdhElC
    zo48ClJEn(@ny@t&CogJ3mf!z-%&v0^O($tL<^DNsYLr%KnpS2ou3Je7-d;tq>dV_T
    z#v)O^Ig0wEHdvW1$+(CD=W4P-1Kk%M=+JQ26HU4%L8}@rDg&^Pq2)T=A2y1`XpML=
    z56;`laYdgUd9@3=ZAXw5-t2AnrS^)IUmRkOZ4DfyaR+vO*8f1@?8jPQ>4KX9pm~4~
    zWp|JR$kN&RVQpqEFGMyn3xXTOuyWT6Ic`49*>%h%zahse5;XLK3CPX#{Ies1!`%S)
    z&j1>78p5A3>FqwD6XrKayTH*nzGue>V8WL2FDgs=lhk$coyyLepm;jmyxbVh1|La$wKUdQD
    z0HE^j{JG%}AdmOgzJ;~Fz#q?UctqZ-Li_*7({cCvLVsjuLy7G8BL)AB&ISvAgi3fr
    z75tvkrAJ)w#%uy{W|{MJq#<&@`f_k-kL
    zo)RdNzCxOH;I7YB8{UAD^l@q)S4z|Os!iKkqTi@U+gxWDq&adR$J6(M{>yToJs0bR
    z9JhhD$jl;wOq<>+Hi--w6-BI@ODmt8hy@g5>V$&*g?gdX-+tlNIrx`?pu6&DiC%^G
    zMFLYGhyQv?zbu~;q2KgAl^9Pm58U}%hbsL2^Ye*sn%g%NwcN(W$OdJ0^pJqDlA+z_
    zb_3@lG;~Ay=%9QATBrErL>%pAV8`~>JAho?x4IU+r5yD3bG`mdxuij;K;QlZ#`J8&
    z&-QEtrY^S&Oj-4Jf!{1F@SD$V+pt)I{{TlKa5^9SPrfGL;Wqsxa95Gn|63%>y+gBV
    z^w+;z4{!PZ@Uj2H>Ir<{%>u6-e`3Qezy6yyu)wJXuF$_)6CU`73vWabHvMsV1*#SZ
    z(QW>BP(a`pD{ricw(oZU;5Tnbf%>kC`gd#R`wf*XB-APN$N2tPC*be5eVHmRGpcH<
    ziI|F&kF*EKTR(+!_YRu_4T_QWPdwZ^)>aOfE+RGy3E4VIA-)aJ*W#<*`nE9VCNsVQ
    z>Oghw|%dc6B8%}SSJ6(Cn7;@Q=IRk%kU&AEs~-cLC3>Q5CQ`tZ
    z9In0@&u8uckb|iN50xNB416ce@DJ^)+WiDd&SYwq*_7->=+QTW@0p(;3Mq;e8#-l$Ka@
    z^J-12(%wIg2i9<92R
    zgmE*C+vcSKq{~zmpa_z*W^2S!p!453?~Mv-E`p1=l&F3xt@d+Wa0CQ$uTil
    z^2xy(tG?S1<^k^WIs&HS@>6DcV)+zfXen%$B4he}-mZi}AiJyQMg#J>2~zRUbHo|2
    zsaK?Mm&}2{w0MFO1*hsM$n8nBTSA_WRrfZ+v>M<^wB&N+_@b?SV;$4`Mk(kTd>N;Zo@l!3_v+Dq
    zL#3Vy$(?W~DBR`1vc?U0iExSHY7<;69F#6u%oGxe$6t$8?}plTD!CI10gp@`qoz?+
    zfNL4QF;h;mx_oQaw3JdHSTO>py?bNZ+npck`jyQCWcCfjp20GeKoY
    zyT+NcG&`-i-oS)$?zz?W-VTQ?up!yxC3~*d`du=x1#j_{$QWU{?%txi$qFWHU10Qn
    zauJT%V;Dt_VP!&J_kJ6xu9gLJ0axotF@o%`|NHcZpifFZ<(=JSWPnM9=D@b!Uv(YI
    zfDxYdag5ntKqE_-T~C&{Ux4Z!QbQ@1e-$5iC1kty&Y^<~4FJ`Ju2ap@m6PiOfFoiG
    zk7mEW?j2!IF8D<<<(B7FJwkfym@qSh&i9#{OH4~n%d~4&Vz#_rL&0%Xbhz}|%9VhT
    z++So&Q#ki9Gnj`srglqQjib|tgin2fj2QFh%be8QL=ZF4Is(=FVnUP>}HlsDq1@j-p$ofL7R&SWX)X+m@SIA
    zTdlw4PZ#$d46`l)NO`1joO#+Cb{XmQ+Z-jmHzEoKU4EE}f)nJV0cQ*dhwpSXS9N#n
    z+n8-XKhI0vj764?4O#;inO+47PN-B1@b1vBTp!iEk>c
    zT^`}t+ccTs9@Xj>zC4r2Ev=YpoXH?F;IQT;8!hXS!C@!BCK|ij;Zr7`_H%rKzkK;;
    zG4yN9nCZJ~+_I$8Bst5G%z7987n}|g1|hxKdt!y^!Q3izzr)?Vqe8=E!k^wZ{Os5H
    zF2m{Ac{xqD}3qCO>6=Ld`TI|7R7aG;XA>5$6}YYz!yyh$h-h)y1J>H}~{
    zKRyofqiQ(byi6f|M#XRmDy_|16}N=JRqmHFrM;^Iu~T#G5?Lh(*ufuHsCq{^+mHRzN*Yv;&+$
    zrZBZs$apHdD10Q!d-ARdz6iNjTHB#@Ie(H8_MzIbxhi7Pxvjw>e(LOfWRK?0FW2iX
    z(M<3ZPTw+++fw7L(dfzR-yj4sg`G#oi91<3Mot8`>bpy{@A`NS9g44~__ARVj!84x&l|}8E631y>=ZByfz%N}85KJVpx*H_=bdO|N
    z8<)30&+JC5C-aMv5d6t-ows^(3b{d;u&6JOJeDvQ3L`+Ri@)eBK3}?w!u{wmEbTe4
    z{b^MTo$eG{hM4;KH94vU010`{I{XA3V6IuyX!nk(Z^`AqSQ@-7!RwaO5|n@dAXqly
    z)aAa!qB!RU0w8F*^=AjW#_}nB&>NX9OV`voXiZhtk#+7W&77wcj~$v==Y{{+WR%PYVW;ZQ)U6WUapLFWHqjH>#>33
    zoPB2Y!*9m6YwXSLtg&2|44t%UU20bwnJ#~wUsov%KR4e93Ns4^Djh$QQIAI)D}y8S
    zu2mZ!)(Dxca9T{stUO%}{#^I9--Rh&?VMQ9iDCxtd;}b?80Ou*yNE^GW|8dJtl2`wvY3zq%1nDH?+D7zlK+K5>&g0DZ)
    zLD1rUy)0MDUt5YuV7p#n4(62Q9`&dziN#Et#9nPbtKK?2ygU*J{#G`X*J;LM-%MyyrYw%sD`moa8I!mDhD`K@HIjpUR~W0)Y83PSj||Xa#Y<(92C~WL=_TN9_ide1@v6XMl8`!DgJNt;vTNB4xItMj<;uN@e
    zIqhOrHybD&U7ie$_G8S)*8uBqM??18MQ=r=yy`HEFPaEe
    zEvTtxscHw&;zXKI$m?G9^Ywk&{d;>_Y()~}@W34@N`
    z4K?-$5BA$N3~M_(>6Eu9jXx1n6)vVYV6^-Ucb#;v)9RafW0GAi-m)UAIQM?7VJw)y
    zT3a4dmnw#`Ir5|%UgI$|hlO&}e)4>!a-AdmTt!|Od?xI&Z_Cixf;JCE=W(j%sF~(^
    z9mT*e!kdD5ySvGIBvtbI^iK+wbCJDNUL8)iSdLIxsjpsp8lfbvy2p9F6I+Qq-+FR6
    zCA0N)74EbD%PNb+?@INPBjlYQ&n-a3LPjf6JDl5_whZRpHrRPDRm@3g>c-4wbVp%6
    zveH3fzuS)$#EV+aA}%k6uPy{$iD*DiZ-qH@n8rK6nDXYq?PC42f-=l(Cjq0b9E
    z*!P}BKct%F%Y+)V38zPPp3l#1^YH)?R^@k`kF>&O_o_|1iDf`E>er}b?Z7oW8
    z;#3v&=)L637Ja5Ux1uFCxulJ?NS*Ux7V9}LANSPJ@spieiyKtUm6#t-IV`gyTAS4H
    zLv~u4_w7T(p1Sw?cQby-yH6x`hNsyYQmarYPaZ?Pua+ujr>?}scE7F2v^j8e-Dl!-
    zVj<0W`T+}FRXDg>y>Pai;=*`E-#?<(YFI)=I>1_Zjg|8Wp@a{e|I}N+CBI#c`6o*R
    zOm;-)6>~H5f}(QqmuFOF|01A?Tjq*-l!X+@rg&b`j9G4`V~8FP@r|GuOWBv=*iM$&0v4J>_sj6(VqLf_6iY;P*0#9>ipfh>nvGrhY7A<`QG*5GUw5W
    zzpwil-O^f$Y1Wpo(b-e{OH~2G<$Ec)-JNc5UW*}QEB!K|Dqo=S
    zyY8rlz7F!)&n4=@mF3(nCJ|Hh_cLrHiRyP})UZG)L(kE!~?
    z^Kuoi_oVU1t&}o7i_o@wt?59vQHe93jvW!t728`_dz`_GtQ(MdRlnP3o-mJ-qq)w;
    zBzi{~C@K0;2d(kfLb)$Rc;2RqQ{_^ad}+U4qosRKo-Md=84LSfGS1G+&fO$0ywO#~
    z!s?IE(bA!e(a2ko&g>~HB3$V{0#q7l7=Z62-{vcwVw1>F=Jn8ljc`TNr3UcE%txY^>U7yzZA`^5>vOl@LFLy9i)Ek{%
    zA9yNKp?UWsz=)F!!}b-d_}46lW>0dS?KUNFC%1-c0dh##UYYSyg&9s{u
    z(L-S@d3S=h^!;bJ3qhe(&5L0r#m(mM%|pvB$Dkv*ccW$uLYtcc8S?IqEoLW|CQBWo
    zmZV^7_v7E~jjmg5ui+Fd{Ww777vJ{w=FEI{1=nggDUBEJjqYfA+;>Q8b@0I6^#ag!
    zTx@)EUe1q}XVNdtoanXYZoyP&=g%Op~J?-zX_}Dabk+}LCoPcEV
    zhTrUso~b_WbIUL|(E?9Az`5FKW~wsmt5y08elLFFO3r*i@~~g;*a7jxM|7=KNmj*r
    z)2TQM(=ztA%XzpXbjI;fg{rwDDh_Vv;G<~
    z#h=u8^Exw{*GRvj+L!7o2tXYtAbj5sw~@T|0W&S+*>%eZCHvMSUQ+0
    zrv&9>d+?NeLh382?H!H_F4HN!#Yu%ar^5S7S&s8xff5~~fyOrxsJ1Xt-k)Q4r9!8#
    zOQ>glLlV3_eP@R#L|_@z4Eh;Kd%&1PK71qZ@=_e`_wcamF(ddOwxne_pU%3#dP;wO
    zKiCncJ!3aGHfBVUiu_RKLeA&SjB%o3>5Y@EyNkh=`6Q>3bC&`^?ggm}<<4AA9O&g|
    zX(j^#4cR=im(HFRK2!1oa;KF!CQQ14Kgqqe7ry`DghHta=XrwiL9MFg(8XV=+C)0{
    zt_bclbVRQN+dquV6c?fZt@(*_^12DMSBY-HEKiXlp+31etB+b
    ze1~N#x8N4j^&WNh>fko^b&>Qu7~_#inZ9_Fn2^$axg>FIO#JZ}vdl4Js$_YYGoeri7~9(PpU1Ct
    zb?ODWMSE1R_IswFbE#%B#q+8`35+UiTLv=8#bv!WdVMJ_LU(A~4JY>K8DznovilWg
    zY}#(y5&eRQwM@cWQ_)h_Y{$SODMd^1@H$gt5BQ+HuL+Ro|XM*HWFTDRT{B{L3g
    z^YCrog-&+-i741CWP4%X`Jin;!1F$`V8d~3-vuNRwg??}{~fs%BpQNt{$~>5cd711
    zqT*lWh5woP_}|ii3d91z(CU`8<9sSS8@JDC2-AYkY%koRW4iBvrYboq2o&-dt|
    zc4MH1Izi!?`jLYIUg{nqQ?CNEUb9yG|NSY=T*?7m5HZcwwuLV=PnRU85_?|vm9n|B
    zf!G}FTRR}F$7!y&4UYuvw`trPwKybrqiOAf{npK(M_A@lw0qy0+_U$(JF-;4T*%N9
    zT`;Miuxed(TnB1>o@G6s+Xj|@WZwNMKFq+E6kXRbD?YO_cCzc<3l1q}A!*;B4!~!c
    zIn4kF7PZIM-Ur1Y#f$SF
    z!N&Y;pxJ2^j>N-jKc;#ZF#n_{St5*hPATW*QXMLElKUl&I>v9SfVy~mpLH0*_!#dv
    za$#d-vkx_y3CRTUcS=Q=!yWO1Vj~S-IC`giNA>tgF3GDM*U45`%9|#*
    zRO=0OMcb8$a^WtKRT=hY8Nl005e?sL@2+loR82?*O(t81JW_4)xOO-6*0$n<_A*l)
    z_rz7{Ouq#BCmI0?>!rU7SwZ~pV1INiu$AxuFXos`B@YqVQ1WFDl~zw}3)kwDG!(u-0ajAf(*J(d{7@6IsXIvT4^8
    z*m|+tjBdd6*Hg(X;@ZW!^ygO}0m7$HJTo*?5TPq;;e+cZ26FM=;!%Z>bUzRB_*J|aTLl;=TyAaD(0n+VFy=J
    zVWa&dvFQF!wLZ9|xK1zc6G80DWZg)ngwJ|equ
    z^Ij^q%}yyRITXjds&yQIK3CEu;l#=+9JMi@ccb22V5WA^yTpKErlnI!L$9a@mZgjG
    z=a;W?y}i)+Qt|NRSe|084l!ioK~<(wB4jqyf(R5)HgHijjwaL#H;D*^I!Nro=a7V#
    zG*E`DYubjE@M>B?#cSAKF>-@N&U^qdT?T3lxptQNBT{D@R>|GPtD5Ol00W
    zDj!*4LPQK`!>WtT*Qe&QY1K11r(8e(rfzo{6>l$M9P&@O5606oGGy92-riv`s@68m
    z$=%{5NlLsQX|4l}l9&x^yTv=kz4Lu-$>(e~1{VQ)f$ua5Ua6_4a{ax?6eNO6yyU?=
    zQ+G-+8&==MM#6?PU8l2BB&#p96*Jo;iSviDMaaJ2q1;0n(NU6|MlWL{vuv`HQ8B**
    zjH0+mrw`8WI3l-k4pTAoRLAk+m;o_Gt+{$~2P^>1wA=C8xV9JM!f93fpELMwM5G;V#)a
    z`eUo37Mgq9Dtsx*<%)CSTte*x{apl=1%_aasP-f&ash=G?uvW1@I3JWW+s(tXsx8`gtqJ$wUu*u5+12qRg<2{V!W^fh=umBJsi&A{MzFmQbn
    zb$+dFr23Mo36DS>sUMRf&n+*&6bZSB(X%!~AsSVLLh!TbliyR>k;DG=s~2
    z4{iqEt9`EPW#{uC;ls=Cc$fTbCUUH*5}6NoRZ6`}5B906^a<{XwPLER@l>uQ{;cvB
    z9_mN@w~8fard2b6KRbU_1qL?dhPk#0WEoQVw|}zycx#Zx<^Dt1UfNk-Y1P!Gj7445
    zJR6Q9$Sbhzh5uH-yrJx_;;F*Wxey=38n>1zMlPz7O?}tjF!xKiMnDfR(a#Ax0Tmhp
    z{N)5l<^Rj4v$aS+>~g`qo}{Nk4+Qob000KQN7DhcKws(L^v-+%MxGc-%DJG7?JYts
    zOJB0xz!{yD8biMU!=c8Tw^FiixVd+n4FOQd-p6^xKT)axVK4o;7mvQ3RQEat0F;=#
    z+_&1TRn=+}!h$9}psCZp#0SWY0wp1|jp~xmC;qp?ra!N!2peGKxn{ZGjf&7EssALQIj4
    z=2U?X#{^5LT1`jIdlT#@;Ss@8T_yX(6JtAXxLi;M_5!cu+&bsUmZqc`dB1oK{%pJJ
    zW3bw!L+;|zkh#K(lGort+r%xvS^{I|L|^=}7_i+HFd%Lr
    zK+ndFp0Gg5BkbEfl9w&v>}-mGv|smIV+XvM;0S=fY*75Bh3=ee9l6(v&}!eT$gXy%
    zAHGp{F|x&E+lka$`(4UM?`e(`pqp43wkOUX=sh_<``e{fCfp_>AL+O%ANn;#d5a$$O_VAfZj3sE~=`y)0?ZAyo79D#%HtRB}ipUfKn@
    z>zZ8dn_Xwlcio0!C??1_fR_UcZ9J|`+C>9>bw=n{Jw-F;5JDZh-`W}51l)}G$gYj)
    zaT*lc5ybMtL^GnTDQ2Q5pFju(8-+NPebh}^1jS_EER;DPOU^}Q1{jwn`fC99|L}QW
    zD+Xm~rwt4&RW25EQs9tcgK;3h37(y^bz5U;JBp!W2Pv`tqmC;LYvNkN-0D+`3Kb|W
    zEESamlwA>w5ky3gU9b%e>%BMxkbn}9$f{PZ5~!#NOCSNcY;_5slM;}KSPjdBBt`TF
    zhD}+FQX(NG&|4MlNyMM`M}B1HnKR$|o|$>R_tj%q4a)TfYm%a>mZ1};|H2>l%l0@2
    zaG={C1lfs(%Q}D?pBe5O*tTZ)_Z|9RU_)V(kK>!X*{I`e(8Wfc^>M|@fVUX6v8&a_
    z26vIK?bij*3jvD)(Jf}l8SN2!`t^D0<9fV|7bBVD*xsFM5LJHaT0)_}Z@}g<=JHg!
    zCHXY#25VPeOzFI*iLxXQ58iS3b)#uLqu+)4mvzY_v)JI8Wr68Sbs-NxAt!`wU1a;D
    zkq0}Ud)-IARbE^`iAH_U5Z3&cnWfZtZeO}87{qi#iY
    zq3kMPwlwGdNiUk@wbzKgZ|!6x8>Ak~8YY2KP!)F6+0>XX4oNO;xmizsv`B5k62PYv
    zBidkRDCdUV?cb`_3-F1qb61`mc4UQ$xs>E!5gG~R@YEd@a?Hz!yR-;VpAzp`P2}2#
    z&ZazG+mWQ{fipPjFsM>KBDlqCn<)mb!iq>
    zM{QevhVf>=gH`lP0Y#1lxYOVJq-(I@^T`r_k?ffLOQ3o*R{^+doDH9E6YrR%hOyVi
    z|JR_8Gt&|Ng{GGg^ZPHye*SrK>&tkN7oZ}?DR!3$BIxSq_$)k1O~u(#oUj*8Nj7$t
    z3NIDcI+_?6ruqm!qs|@U(fc1XNW1oge(l|U=DJ7ix~yA_@!YVT=9FwFf-yIE#*(BM
    zu3@rPOpNZ(!&w`zy4>XuL7fu!-aG8%1yHx2Afn8r0D5$y9gPUa#vN?a%5IdM+NgAm
    zTO{UeQ3c{^`0gE^eOZzo@8dOhH}_P+TfH;miXuhjn%NBZqK$xu4VdR0pZ?-21ad%9
    z&v^bIrv)4f057Xz%_d_8W(gjcg{|-(`vF~@nqUp0-&J4Pn7Qs7c6kCeKamNg)^w(xOJ=y
    z5H#wQC#w;+oc%^i*kG$sTUx3ByT6u4a`E<#-F_j2z@g5wA7SQh+`C7?z-WB>+%0L+
    zaF`ix*U(2@APwix+)D%ZQrm_Bw%vZ%hw9al$J=X%?bsP;;C0)Ag{0hs5uE~NzcQ9LdAXwpR~vQH@&pkrosO%Hn?1ug3+7|
    z?WcIok}f6V`TsGKcGj*+Vd2`_HR0>nq2sUCx;1V{UgpkJ`5hOM2XY;a6xm7
    zRpLv*Lf>MT!e;j5402x2_SoR5a~$sRo}zstttX=;yrhxe$z$!Oap62NQ6dww%D4$n
    z8;sDll&J#p(4C1kPIRZ6xc&5O0g<2n<{^+yzOY+Q<^C*jOu&nvwJO*^LLIB+_|*iFATTA-u2dJ{Srk!7xpPb@fZ1
    zTvs8_!{l8h2J)o36=boP-Z+7VHABhsbNNw9iPG-G_E?NBk*0B6G5jE=N)XB2m5j4S
    zEg(ic#JCMvdK`lde*!{eI5cdynA}K!TOyH&^*Q=ElaW(q(__zo=tnVZP|txvN>hXO
    zo_g^RX8KW<@WjJWlJtiMr^#j}-${H;j~*C8^Q_QmBCOL2St900pfAu(dj%yZ?=S2?E)EC5hiqF(h(4^W!(k))ravm4I?KlSb7X6M_cIS}JGf_+A>
    z{E7%O5(W@EEg*g74eyB?K%`O|G%N{`p7B$8sJv7K)FNsyLmjYsAEB?0urDU6kx#0>
    z&Ne#mLyGy7dk^g>tiy#2%@~zd%k;`Tpka3eXxQZ<(icp!Z7ZagUzPu@vWWIUnS6q-
    zvB(9~+IZut!i-Y28H|9Mp!6@CF!-C@m2wE^?fGEC3%e`H0ZG0*(mNyd@>fs|iEH8k!
    zp$AHAr{mmd5AxlVO|)-~%Zf{KL7c;BXdfC%(zZfSmjPq9TfiA+%AFE&NHN*K78ST)
    z@a3RVe+lC8oH5~iTePAXDw@}$<*s-!SvhDC+r@w8N5oA4UA(@SWIFfFke5VSoq!OL
    zFQXBxkRH$!lpgboPx==I9=+SJ;oCG;alE10jhC>m0Hh)5mB
    z)KbQy@YeKfjf;)=kpP2oqj4d|m_17K1VVZ_a7#-xyl0f&xa=!i(}l;p#lE#NgeS*j
    zm9HWX0t{tY)%hZq0=
    
    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 39/54] 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 40/54] 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 41/54] 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 42/54] 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 43/54] 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 -
      • 2025 Volume 1 - 29.*
      • 2024 Volume 4 - 28.*
      • 2024 Volume 3 - 27.*
      • 2024 Volume 2 - 26.*
      • 2024 Volume 1 - 25.*
      • 2023 Volume 4 - 24.*
      • 2023 Volume 3 - 23.*
      • 2023 Volume 2 - 22.*
      • 2023 Volume 1 - 21.*
      • +
        • 2025 Volume 1 - 29.*
        • 2024 Volume 4 - 28.*
        • 2024 Volume 3 - 27.*
        • 2024 Volume 2 - 26.*
        • 2024 Volume 1 - 25.*
        • 2023 Volume 4 - 24.*
        • 2023 Volume 3 - 23.*
        • 2023 Volume 2 - 22.*
        • 2023 Volume 1 - 21.*
        • 2022 Volume 4 - 20.4.*
        • 2022 Volume 3 - 20.3.*
        • 2022 volume 2 - 20.2.*
        • Release Notes -
          • 2025 Volume 1 - 29.*
          • 2024 Volume 4 - 28.*
          • 2024 Volume 3 - 27.*
          • +
            • 2025 Volume 1 - 29.*
            • 2024 Volume 4 - 28.*
            • 2024 Volume 3 - 27.*
            • 2024 Volume 2 - 26.*
            • 2024 Volume 1 - 25.*
            • 2023 Volume 4 - 24.*
            • 2023 Volume 3 - 23.*
            • 2023 Volume 2 - 22.*
            • 2023 Volume 1 - 21.*
            • 2022 Volume 4 - 20.4.*
            • 2022 Volume 3 - 20.3.*
            • 2022 volume 2 - 20.2.* From 2ecff8ea0b68668b763d629f8825a1c0e4821348 Mon Sep 17 00:00:00 2001 From: Gayathri4135 Date: Wed, 7 May 2025 18:13:53 +0530 Subject: [PATCH 44/54] Documentation - Need to correction the content of the ASP.NET topics --- .../grid/EJ2_ASP.MVC/editing/edit.md | 25 ----------------- .../grid/EJ2_ASP.MVC/editing/validation.md | 27 ++++++++++++++++++- .../grid/EJ2_ASP.NETCORE/editing/edit.md | 25 ----------------- .../EJ2_ASP.NETCORE/editing/validation.md | 27 ++++++++++++++++++- 4 files changed, 52 insertions(+), 52 deletions(-) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit.md index 859a7c653e..34535af423 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit.md @@ -192,31 +192,6 @@ In the following code example, the Employee Name is a foreign key column. When e | -------------- | ------------- | | ![Foreign key column edit](../images/editing/on-foreign-key-column-editing.png) | ![After foreign key column edit](../images/editing/after-foreign-key-column-editing.png) | -## Prevent adding duplicate rows in Syncfusion ASP.NET MVC Grid with custom validation - -The Syncfusion ASP.NET MVC Grid allows you to enforce constraints to prevent duplicate rows by customizing the validation logic within the Grid setup. This ensures data integrity by restricting duplicate entries in the **OrderID** column. - -To prevent adding duplicate rows in the Grid, follow these steps: - -1. Implement Custom Validation: Define the `orderIdCustomValidation` function to check whether the entered **OrderID** already exists in the [DataSource](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_DataSource). This allows editing an existing row without triggering a duplicate error. - -2. Add Dynamic Validation Rules: Create the `orderIDRules` object to enforce unique **OrderID** values. Dynamically add this rule to the form during the **save** action. - -3. Handle Validation in the [ActionBegin](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_ActionBegin) event: In the `ActionBegin` event, check if the **requestType** is **save**. Apply the validation rule before saving and cancel the action `args.cancel = true` if the validation fails. - -For server-side validation to prevent adding duplicate rows, you can refer to the detailed guidance provided in our [knowledge base](https://support.syncfusion.com/kb/article/11608/how-to-do-server-side-validation-for-grid-in-asp-net-mvc-application). If you want to display the Grid's validation tooltip instead of the alert used in our knowledge base, you can call the `grid.editModule.formObj.validate()` method in the `Ajax/Fetch` success function to display the Grid's tooltip validation for the server side. - -{% tabs %} -{% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/grid/edit/prevent-add-duplicate/razor %} -{% endhighlight %} -{% highlight c# tabtitle="Edit-temp.cs" %} -{% include code-snippet/grid/edit/prevent-add-duplicate/customvalidation.cs %} -{% endhighlight %} -{% endtabs %} - -![Prevent Duplicate row](../images/editing/prevent-duplicate-row.png) - ## How to perform CRUD action externally Performing CRUD (Create, Read, Update, Delete) actions externally in the Syncfusion® Grid allows you to manipulate grid data outside the grid itself. This can be useful in scenarios where you want to manage data operations programmatically. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/validation.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/validation.md index 1c397c4fba..9d6d24e646 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/validation.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/validation.md @@ -333,4 +333,29 @@ namespace UrlAdaptor.Controllers {% endhighlight %} {% endtabs %} -![Show custom error message](../images/editing/custom-message.png) \ No newline at end of file +![Show custom error message](../images/editing/custom-message.png) + +## Prevent adding duplicate rows with custom validation + +The Syncfusion ASP.NET MVC Grid allows you to enforce constraints to prevent duplicate rows by customizing the validation logic within the Grid setup. This ensures data integrity by restricting duplicate entries in the **OrderID** column. + +To prevent adding duplicate rows in the Grid, follow these steps: + +1. Implement Custom Validation: Define the `orderIdCustomValidation` function to check whether the entered **OrderID** already exists in the [DataSource](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_DataSource). This allows editing an existing row without triggering a duplicate error. + +2. Add Dynamic Validation Rules: Create the `orderIDRules` object to enforce unique **OrderID** values. Dynamically add this rule to the form during the **save** action. + +3. Handle Validation in the [ActionBegin](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_ActionBegin) event: In the `ActionBegin` event, check if the **requestType** is **save**. Apply the validation rule before saving and cancel the action `args.cancel = true` if the validation fails. + +For server-side validation to prevent adding duplicate rows, you can refer to the detailed guidance provided in our [knowledge base](https://support.syncfusion.com/kb/article/11608/how-to-do-server-side-validation-for-grid-in-asp-net-mvc-application). If you want to display the Grid's validation tooltip instead of the alert used in our knowledge base, you can call the `grid.editModule.formObj.validate()` method in the `Ajax/Fetch` success function to display the Grid's tooltip validation for the server side. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/grid/edit/prevent-add-duplicate/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Edit-temp.cs" %} +{% include code-snippet/grid/edit/prevent-add-duplicate/customvalidation.cs %} +{% endhighlight %} +{% endtabs %} + +![Prevent Duplicate row](../images/editing/prevent-duplicate-row.png) \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit.md index 9a7b6caee4..fe38a58ef7 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit.md @@ -192,31 +192,6 @@ In the following code example, the Employee Name is a foreign key column. When e | -------------- | ------------- | | ![Foreign key column edit](../images/editing/on-foreign-key-column-editing.png) | ![After foreign key column edit](../images/editing/after-foreign-key-column-editing.png) | -## Prevent adding duplicate rows in Syncfusion ASP.NET Core Grid with custom validation - -The Syncfusion ASP.NET Core Grid allows you to enforce constraints to prevent duplicate rows by customizing the validation logic within the Grid setup. This ensures data integrity by restricting duplicate entries in the **OrderID** column. - -To prevent adding duplicate rows in the Grid, follow these steps: - -1. Implement Custom Validation: Define the `orderIdCustomValidation` function to check whether the entered **OrderID** already exists in the [dataSource](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_DataSource). This allows editing an existing row without triggering a duplicate error. - -2. Add Dynamic Validation Rules: Create the `orderIDRules` object to enforce unique **OrderID** values. Dynamically add this rule to the form during the **save** action. - -3. Handle Validation in the [actionBegin](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_ActionBegin) event: In the `actionBegin` event, check if the **requestType** is **save**. Apply the validation rule before saving and cancel the action `args.cancel = true` if the validation fails. - -For server-side validation to prevent adding duplicate rows, you can refer to the detailed guidance provided in our [knowledge base](https://support.syncfusion.com/kb/article/11608/how-to-do-server-side-validation-for-grid-in-asp-net-mvc-application). If you want to display the Grid's validation tooltip instead of the alert used in our knowledge base, you can call the `grid.editModule.formObj.validate()` method in the `Ajax/Fetch` success function to display the Grid's tooltip validation for the server side. - -{% tabs %} -{% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/grid/edit/prevent-add-duplicate/tagHelper %} -{% endhighlight %} -{% highlight c# tabtitle="Edit-temp.cs" %} -{% include code-snippet/grid/edit/prevent-add-duplicate/customvalidation.cs %} -{% endhighlight %} -{% endtabs %} - -![Prevent Duplicate row](../images/editing/prevent-duplicate-row.png) - ## How to perform CRUD action externally Performing CRUD (Create, Read, Update, Delete) actions externally in the Syncfusion® Grid allows you to manipulate grid data outside the grid itself. This can be useful in scenarios where you want to manage data operations programmatically. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/validation.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/validation.md index 8fd666ff43..ed4094e96e 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/validation.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/validation.md @@ -337,4 +337,29 @@ namespace UrlAdaptor.Controllers {% endhighlight %} {% endtabs %} -![Show custom error message](../images/editing/custom-message.png) \ No newline at end of file +![Show custom error message](../images/editing/custom-message.png) + +## Prevent adding duplicate rows with custom validation + +The Syncfusion ASP.NET Core Grid allows you to enforce constraints to prevent duplicate rows by customizing the validation logic within the Grid setup. This ensures data integrity by restricting duplicate entries in the **OrderID** column. + +To prevent adding duplicate rows in the Grid, follow these steps: + +1. Implement Custom Validation: Define the `orderIdCustomValidation` function to check whether the entered **OrderID** already exists in the [dataSource](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_DataSource). This allows editing an existing row without triggering a duplicate error. + +2. Add Dynamic Validation Rules: Create the `orderIDRules` object to enforce unique **OrderID** values. Dynamically add this rule to the form during the **save** action. + +3. Handle Validation in the [actionBegin](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_ActionBegin) event: In the `actionBegin` event, check if the **requestType** is **save**. Apply the validation rule before saving and cancel the action `args.cancel = true` if the validation fails. + +For server-side validation to prevent adding duplicate rows, you can refer to the detailed guidance provided in our [knowledge base](https://support.syncfusion.com/kb/article/11608/how-to-do-server-side-validation-for-grid-in-asp-net-mvc-application). If you want to display the Grid's validation tooltip instead of the alert used in our knowledge base, you can call the `grid.editModule.formObj.validate()` method in the `Ajax/Fetch` success function to display the Grid's tooltip validation for the server side. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/edit/prevent-add-duplicate/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Edit-temp.cs" %} +{% include code-snippet/grid/edit/prevent-add-duplicate/customvalidation.cs %} +{% endhighlight %} +{% endtabs %} + +![Prevent Duplicate row](../images/editing/prevent-duplicate-row.png) \ No newline at end of file From 58a2d351e308b8afb9763d3fa984d481cf883c81 Mon Sep 17 00:00:00 2001 From: Yvone-Atieno <95272306+Yvone-Atieno@users.noreply.github.com> Date: Thu, 8 May 2025 10:37:27 +0300 Subject: [PATCH 45/54] removed extra space --- ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md index f9fbf80ba6..9e09014c10 100644 --- a/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md +++ b/ej2-asp-core-mvc/speech-to-text/EJ2_ASP.MVC/appearance.md @@ -1,7 +1,7 @@ --- layout: post title: Appearance in ##Platform_Name## SpeechToText Control | Syncfusion -description: Checkout and learn about appearance in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. +description: Checkout and learn about appearance in Syncfusion Essential ##Platform_Name## SpeechToText control, its elements, and more. platform: ej2-asp-core-mvc control: Appearance publishingplatform: ##Platform_Name## From 0b294453ff3dd02a32295abef06ecf730aab8db2 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Thu, 8 May 2025 14:28:16 +0530 Subject: [PATCH 46/54] 956745: Added the limitation in frozen column and column virtualization. --- ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/frozen-column.md | 1 + ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md | 1 + ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/frozen-column.md | 1 + .../grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md | 1 + 4 files changed, 4 insertions(+) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/frozen-column.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/frozen-column.md index 1b61dadd2c..41ccb6295b 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/frozen-column.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/frozen-column.md @@ -29,6 +29,7 @@ In the following example, the [FrozenColumns](https://help.syncfusion.com/cr/asp > * Frozen Grid support column virtualization feature, which helps to improve the Grid performance while loading a large dataset. > * The frozen feature is supported only for the columns that are visible in the current view. > * You can use both `FrozenColumns` property and [FrozenRows](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_FrozenRows) property in the same application. +> * When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. ## Freeze particular columns diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md index 29422a64f6..be730d6e7d 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md @@ -87,6 +87,7 @@ The following example enable column virtualization using `EnableColumnVirtualiza * Selected column details are only retained within the viewport. When the next set of columns is loaded, the selection for previously visible columns is lost. * The cell selection is not supported for column virtual scrolling. * The **Ctrl + Home** and **Ctrl + End** keys are not supported when using column virtual scrolling. +* When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/frozen-column.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/frozen-column.md index 3464dfef50..0eac4e6fe4 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/frozen-column.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/frozen-column.md @@ -29,6 +29,7 @@ In the following example, the [frozenColumns](https://help.syncfusion.com/cr/asp > * Frozen Grid support column virtualization feature, which helps to improve the Grid performance while loading a large dataset. > * The frozen feature is supported only for the columns that are visible in the current view. > * You can use both `frozenColumns` property and [frozenRows](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.grids.grid.html#Syncfusion_EJ2_Grids_Grid_FrozenRows) property in the same application. +> * When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. ## Freeze particular columns 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 750942de90..1b2323339a 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 @@ -88,6 +88,7 @@ The following example enable column virtualization using `enableColumnVirtualiza * Selected column details are only retained within the viewport. When the next set of columns is loaded, the selection for previously visible columns is lost. * The cell selection is not supported for column virtual scrolling. * The **Ctrl + Home** and **Ctrl + End** keys are not supported when using column virtual scrolling. +* When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering From 3d2194cca6aee98f40eff20068e6442e97723194 Mon Sep 17 00:00:00 2001 From: vinithaJeyakumar Date: Fri, 9 May 2025 17:08:51 +0530 Subject: [PATCH 47/54] 957433: Added the Controller code in the Getting started documentation of RichTextEditor-Hotfix --- .../rich-text-editor/EJ2_ASP.MVC/getting-started.md | 3 +++ .../rich-text-editor/EJ2_ASP.NETCORE/getting-started.md | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/getting-started.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/getting-started.md index 5c2f3dba02..4da48254b3 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/getting-started.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/getting-started.md @@ -91,6 +91,9 @@ Now, add the Syncfusion® ASP.NET MVC Rich T {% highlight razor tabtitle="CSHTML" %} {% include code-snippet/rich-text-editor/basic/default/razor %} {% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic/default/controller.cs %} +{% endhighlight %} {% endtabs %} Press Ctrl+F5 (Windows) or +F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET MVC Rich Text Editor control will be rendered in the default web browser. diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/getting-started.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/getting-started.md index 87d6eda5d3..fc537ea94c 100644 --- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/getting-started.md +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/getting-started.md @@ -98,6 +98,9 @@ Now, add the Syncfusion® ASP.NET Core Rich {% highlight cshtml tabtitle="CSHTML" %} {% include code-snippet/rich-text-editor/basic/default/tagHelper %} {% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic/default/controller.cs %} +{% endhighlight %} {% endtabs %} Press Ctrl+F5 (Windows) or +F5 (macOS) to run the app. Then, the Syncfusion® ASP.NET Core Rich Text Editor control will be rendered in the default web browser. @@ -112,6 +115,9 @@ Configure the toolbar with the tools using items field of the [`toolbarSettings` {% highlight cshtml tabtitle="CSHTML" %} {% include code-snippet/rich-text-editor/basic/toolbar/tagHelper %} {% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/basic/toolbar/controller.cs %} +{% endhighlight %} {% endtabs %} ![ASP.NET Core Rich Text Editor with Toolbar](images/richtexteditor-with-toolbar.png) From 1956f979ce3bf72c35ee58dc5b57c5a549b8f883 Mon Sep 17 00:00:00 2001 From: vikramsundarajan <129823420+vikramsundarajan@users.noreply.github.com> Date: Mon, 12 May 2025 15:43:29 +0530 Subject: [PATCH 48/54] 956745: Removed the limitation from column virtualization. --- ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md | 1 - .../grid/EJ2_ASP.NETCORE/scrolling/virtual-scrolling.md | 1 - 2 files changed, 2 deletions(-) diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md index be730d6e7d..29422a64f6 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/scrolling/virtual-scrolling.md @@ -87,7 +87,6 @@ The following example enable column virtualization using `EnableColumnVirtualiza * Selected column details are only retained within the viewport. When the next set of columns is loaded, the selection for previously visible columns is lost. * The cell selection is not supported for column virtual scrolling. * The **Ctrl + Home** and **Ctrl + End** keys are not supported when using column virtual scrolling. -* When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering 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 1b2323339a..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 @@ -88,7 +88,6 @@ The following example enable column virtualization using `enableColumnVirtualiza * Selected column details are only retained within the viewport. When the next set of columns is loaded, the selection for previously visible columns is lost. * The cell selection is not supported for column virtual scrolling. * The **Ctrl + Home** and **Ctrl + End** keys are not supported when using column virtual scrolling. -* When both frozen columns and column virtualization are enabled, horizontal scrolling using touchpad gestures (e.g., two-finger swipe) is not supported. Users must use the horizontal scrollbar to scroll the Grid content. * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering From b6f9f1070047a245d03bdd2fd157758e9e5a067c Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Tue, 13 May 2025 12:49:37 +0530 Subject: [PATCH 49/54] 957760: Removed Unwanted codes to resolve documentation compilation error in Documentation --- ej2-asp-core-mvc/document-editor/how-to/get-current-word.md | 5 ----- .../document-editor/how-to/get-the-selected-content.md | 4 ---- 2 files changed, 9 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 36ffa42310..88f8d46369 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 @@ -26,7 +26,6 @@ The following example code illustrates how to select and get the current word as {% endhighlight %} {% highlight c# tabtitle="Get-word.cs" %} {% endhighlight %} -{% code-snippet/document-editor-container/get-word/document-editor.cs %} {% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -36,7 +35,6 @@ 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" %} -{% code-snippet/document-editor-container/get-word/document-editor.cs %} {% endhighlight %} {% endtabs %} {% endif %} @@ -52,10 +50,8 @@ The following example code illustrates how to select and get the current paragra {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/document-editor-container/get-paragraph/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-paragraph.cs" %} -{% code-snippet/document-editor-container/get-paragraph/document-editor.cs %} {% endhighlight %} {% endtabs %} @@ -66,7 +62,6 @@ 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" %} -{% code-snippet/document-editor-container/get-paragraph/document-editor.cs %} {% endhighlight %} {% endtabs %} {% endif %} 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 c45d931f0f..81c13923dc 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,6 @@ 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" %} -{% code-snippet/document-editor-container/get-text/document-editor.cs %} {% endhighlight %} {% endtabs %} @@ -35,7 +34,6 @@ 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" %} -{% code-snippet/document-editor-container/get-text/document-editor.cs %} {% endhighlight %} {% endtabs %} {% endif %} @@ -59,7 +57,6 @@ 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" %} -{% code-snippet/document-editor-container/get-sfdt/document-editor.cs %} {% endhighlight %} {% endtabs %} @@ -70,7 +67,6 @@ 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" %} -{% code-snippet/document-editor-container/get-sfdt/document-editor.cs %} {% endhighlight %} {% endtabs %} {% endif %} From 8b67c223782009b9eb2cfe051fb3913154ffc5b6 Mon Sep 17 00:00:00 2001 From: kavitha Muralitharan Date: Tue, 13 May 2025 12:53:02 +0530 Subject: [PATCH 50/54] 957760: Added necessary code --- ej2-asp-core-mvc/document-editor/how-to/get-current-word.md | 1 + 1 file changed, 1 insertion(+) 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 88f8d46369..75b26b8645 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 @@ -50,6 +50,7 @@ The following example code illustrates how to select and get the current paragra {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/get-paragraph/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Get-paragraph.cs" %} {% endhighlight %} From 24747a65367a749fbbbaa094b1ec674e308d1def Mon Sep 17 00:00:00 2001 From: BuvanaS Date: Tue, 13 May 2025 14:14:11 +0530 Subject: [PATCH 51/54] documentation(955267): Chart component Title corrections are made. --- ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/area.md | 6 +++--- ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bar.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/box-whisker.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/bubble.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/candle.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/column.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/error-bar.md | 6 +++--- .../EJ2_ASP.MVC/chart-types/high-low-open-close.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/high-low.md | 10 +++++----- .../chart/EJ2_ASP.MVC/chart-types/histogram.md | 6 +++--- ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/line.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/pareto.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/polar.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/radar.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/range-area.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/range-column.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/range-step-area.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/scatter.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/spline-area.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/spline-range-area.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/spline.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/stack-area100.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/stack-bar100.md | 10 +++++----- .../chart/EJ2_ASP.MVC/chart-types/stack-column100.md | 10 +++++----- .../chart/EJ2_ASP.MVC/chart-types/stack-line100.md | 6 +++--- .../chart/EJ2_ASP.MVC/chart-types/stacked-area.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/stacked-bar.md | 10 +++++----- .../chart/EJ2_ASP.MVC/chart-types/stacked-column.md | 10 +++++----- .../chart/EJ2_ASP.MVC/chart-types/stacked-line.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/stacked-step-area.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/step-area.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/step-line.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/vertical-chart.md | 8 ++++---- .../chart/EJ2_ASP.MVC/chart-types/waterfall.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/area.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/bar.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/box-whisker.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/bubble.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/candle.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/column.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/error-bar.md | 6 +++--- .../EJ2_ASP.NETCORE/chart-types/high-low-open-close.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/high-low.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/histogram.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/line.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/pareto.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/polar.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/radar.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/range-area.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/range-column.md | 6 +++--- .../EJ2_ASP.NETCORE/chart-types/range-step-area.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/scatter.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/spline-area.md | 6 +++--- .../EJ2_ASP.NETCORE/chart-types/spline-range-area.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/spline.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/stack-area100.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/stack-bar100.md | 10 +++++----- .../EJ2_ASP.NETCORE/chart-types/stack-column100.md | 10 +++++----- .../chart/EJ2_ASP.NETCORE/chart-types/stack-line100.md | 6 +++--- .../chart/EJ2_ASP.NETCORE/chart-types/stacked-area.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/stacked-bar.md | 10 +++++----- .../EJ2_ASP.NETCORE/chart-types/stacked-column.md | 10 +++++----- .../chart/EJ2_ASP.NETCORE/chart-types/stacked-line.md | 8 ++++---- .../EJ2_ASP.NETCORE/chart-types/stacked-step-area.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/step-area.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/step-line.md | 8 ++++---- .../EJ2_ASP.NETCORE/chart-types/vertical-chart.md | 8 ++++---- .../chart/EJ2_ASP.NETCORE/chart-types/waterfall.md | 6 +++--- 68 files changed, 241 insertions(+), 241 deletions(-) diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/area.md index 349e25f645..f75cb6410f 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/area.md @@ -1,7 +1,7 @@ --- layout: post -title: Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Area Chart in ##Platform_Name## Charts +description: Learn here all about Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Area in ##Platform_Name## Charts Component +# Area Chart in ##Platform_Name## Charts ## Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bar.md index 2f5f54adba..d5aa81be19 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bar.md @@ -1,7 +1,7 @@ --- layout: post -title: Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Bar Chart in ##Platform_Name## Charts +description: Learn here all about Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Bar chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Bar Charts in ##Platform_Name## Charts Component +# Bar Chart in ##Platform_Name## Charts ## Bar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/box-whisker.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/box-whisker.md index 6982c31ac3..57bff7679d 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/box-whisker.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/box-whisker.md @@ -1,7 +1,7 @@ --- layout: post -title: Box and Whisker Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Box and Whisker Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Box and Whisker Chart in ##Platform_Name## Charts +description: Learn here all about Box and Whisker Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Box and Whisker Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Box and Whisker in ##Platform_Name## Charts Component +# Box and Whisker Chart in ##Platform_Name## Charts -## Box and whisker +## Box and Whisker To render a `box and whisker` series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bubble.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bubble.md index 72a2ca10c4..d8e3cf51d8 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bubble.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/bubble.md @@ -1,7 +1,7 @@ --- layout: post -title: Bubble Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Bubble Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Bubble Chart in ##Platform_Name## Charts +description: Learn here all about Bubble Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Bubble Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Bubble in ##Platform_Name## Charts Component +# Bubble Chart in ##Platform_Name## Charts ## Bubble diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/candle.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/candle.md index d4e6e8c02a..4e1ff94b64 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/candle.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/candle.md @@ -1,7 +1,7 @@ --- layout: post -title: Candle Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Candle Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Candle Chart in ##Platform_Name## Charts +description: Learn here all about Candle Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Candle Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Candle in ##Platform_Name## Charts Component +# Candle Chart in ##Platform_Name## Charts ## Candle diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/column.md index f13d7edf93..990aad600d 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/column.md @@ -1,15 +1,15 @@ --- layout: post -title: Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Column Chart in ##Platform_Name## Charts +description: Learn here all about Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Column chart +control: Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Column Chart in ##Platform_Name## Charts Component +# Column Chart in ##Platform_Name## Charts ## Column diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/error-bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/error-bar.md index ca75ea0475..1b55315295 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/error-bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/error-bar.md @@ -1,7 +1,7 @@ --- layout: post -title: Error Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Error Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Error Bar Chart in ##Platform_Name## Charts +description: Learn here all about Error Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Error Bar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Error Bar in ##Platform_Name## Charts Component +# Error Bar Chart in ##Platform_Name## Charts ## Error Bar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low-open-close.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low-open-close.md index 2bdf02e77f..8cba1b7713 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low-open-close.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low-open-close.md @@ -1,7 +1,7 @@ --- layout: post -title: High Low Open Close Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about High Low Open Close Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: High Low Open Close Chart in ##Platform_Name## Charts +description: Learn here all about High Low Open Close Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: High Low Open Close Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# High Low Open Close in ##Platform_Name## Charts Component +# High Low Open Close Chart in ##Platform_Name## Charts ## High Low Open Close diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low.md index 457f0ac762..57b2212979 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/high-low.md @@ -1,17 +1,17 @@ --- layout: post -title: Hilo Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Hilo Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: High Low Chart in ##Platform_Name## Charts +description: Learn here all about High Low Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Hilo Chart +control: High Low Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Hilo in ##Platform_Name## Charts Component +# High Low Chart in ##Platform_Name## Charts -## Hilo +## High Low To render a `hilo` series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/histogram.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/histogram.md index e493e94cd9..e1892ba122 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/histogram.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/histogram.md @@ -1,7 +1,7 @@ --- layout: post -title: Histogram Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Histogram Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Histogram Chart in ##Platform_Name## Charts +description: Learn here all about Histogram Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Histogram Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Histogram in ##Platform_Name## Charts Component +# Histogram Chart in ##Platform_Name## Charts ## Histogram diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/line.md index f936ea3ea5..9ab996c147 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/line.md @@ -1,7 +1,7 @@ --- layout: post -title: Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Line Chart in ##Platform_Name## Charts +description: Learn here all about Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Line Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Line Chart in ##Platform_Name## Charts Component +# Line Chart in ##Platform_Name## Charts ## Line diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/pareto.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/pareto.md index 080f29e895..f06664602e 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/pareto.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/pareto.md @@ -1,7 +1,7 @@ --- layout: post -title: Pareto Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Pareto Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Pareto Chart in ##Platform_Name## Charts +description: Learn here all about Pareto Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Pareto Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Pareto in ##Platform_Name## Charts Component +# Pareto Chart in ##Platform_Name## Charts ## Pareto diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/polar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/polar.md index c6defbb8ce..ea606a0248 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/polar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/polar.md @@ -1,7 +1,7 @@ --- layout: post -title: Polar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Polar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Polar Chart in ##Platform_Name## Charts +description: Learn here all about Polar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Polar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Polar in ##Platform_Name## Charts Component +# Polar Chart in ##Platform_Name## Charts ## Polar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/radar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/radar.md index 9cbddf734d..c4d7fab9aa 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/radar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/radar.md @@ -1,7 +1,7 @@ --- layout: post -title: Radar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Radar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Radar Chart in ##Platform_Name## Charts +description: Learn here all about Radar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Radar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Radar in ##Platform_Name## Charts Component +# Radar Chart in ##Platform_Name## Charts ## Radar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-area.md index 01cd85a4ae..004a4f00d4 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Area Chart in ##Platform_Name## Charts +description: Learn here all about Range Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Range Area in ##Platform_Name## Charts Component +# Range Area Chart in ##Platform_Name## Charts ## Range Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-column.md index 64ec868aa5..ba12b2bd59 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-column.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Column Chart in ##Platform_Name## Charts +description: Learn here all about Range Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Column Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Range Column in ##Platform_Name## Charts Component +# Range Column Chart in ##Platform_Name## Charts ## Range Column diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-step-area.md index baeade3e62..05dbc6ca63 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/range-step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Range Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Range step area in ##Platform_Name## Charts component +# Range Step Area Chart in ##Platform_Name## Charts -## Range step area +## Range Step Area To render a range step area series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/scatter.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/scatter.md index b8550ed9e7..e6092fa79b 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/scatter.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/scatter.md @@ -1,7 +1,7 @@ --- layout: post -title: Scatter Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Scatter Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Scatter Chart in ##Platform_Name## Charts +description: Learn here all about Scatter Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Scatter Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Scatter in ##Platform_Name## Charts Component +# Scatter Chart in ##Platform_Name## Charts ## Scatter diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-area.md index f808cc90a9..df97ec93e6 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Spline Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Area Chart in ##Platform_Name## Charts +description: Learn here all about Spline Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Spline Area in ##Platform_Name## Charts Component +# Spline Area Chart in ##Platform_Name## Charts ## Spline Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-range-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-range-area.md index 5c7de64688..772d4af8a1 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-range-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline-range-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Spline Range Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Range Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Range Area Chart in ##Platform_Name## Charts +description: Learn here all about Spline Range Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Range Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Spline Range Area in ##Platform_Name## Charts Component +# Spline Range Area Chart in ##Platform_Name## Charts ## Spline Range Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md index 44f2986b1e..da63ee345a 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md @@ -1,7 +1,7 @@ --- layout: post -title: Spline Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Chart in ##Platform_Name## Chart +description: Learn here all about Spline Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Spline in ##Platform_Name## Charts Component +# Spline Chart in ##Platform_Name## Charts ## Spline diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-area100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-area100.md index 98ecbf0d4d..ac4d8113bd 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-area100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-area100.md @@ -1,7 +1,7 @@ --- layout: post -title: 100% Stacked Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Area Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: 100% Stacked Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# 100% Stacked Area in ##Platform_Name## Charts Component +# 100% Stacked Area Chart in ##Platform_Name## Charts ## 100% Stacked Area Chart diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-bar100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-bar100.md index f4fa3854f2..70ece7bce8 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-bar100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-bar100.md @@ -1,17 +1,17 @@ --- layout: post -title: 100% Stacked Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Bar Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: 100% Stacked bar chart +control: 100% Stacked Bar Chart publishingplatform: ##Platform_Name## documentation: ug --- -# 100% Stacked Bar in ##Platform_Name## Charts Component +# 100% Stacked Bar Chart in ##Platform_Name## Charts -## 100% Stacked bar +## 100% Stacked Bar To render a [100% stacked bar](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/100-stacked-bar-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-column100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-column100.md index 130727c86e..c09cf15b08 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-column100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-column100.md @@ -1,17 +1,17 @@ --- layout: post -title: 100% Stacked Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Column Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: 100% Stacked column chart +control: 100% Stacked Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# 100% Stacked Column in ##Platform_Name## Charts Component +# 100% Stacked Column Chart in ##Platform_Name## Charts -## 100% Stacked column +## 100% Stacked Column To render a [100% stacked column](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/100-stacked-column-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-line100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-line100.md index 8fd3c4acb9..303edb4fdc 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-line100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stack-line100.md @@ -1,7 +1,7 @@ --- layout: post -title: 100% Stacked Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Line Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: 100% Stacked Line Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# 100% Stacked Line in ##Platform_Name## Charts Component +# 100% Stacked Line Chart in ##Platform_Name## Charts ## 100% Stacked Line diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-area.md index 64ae3ad106..1347d1f841 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Area Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked area in ##Platform_Name## Charts Component +# Stacked Area Chart in ##Platform_Name## Charts -## Stacked area +## Stacked Area To render a [stacked area](https://www.syncfusion.com/aspnet-mvc-ui-controls/charts/chart-types/stacked-area-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-bar.md index 54e55df40d..7f2a12c144 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-bar.md @@ -1,17 +1,17 @@ --- layout: post -title: Stacked Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Bar Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Stacked bar chart +control: Stacked Bar Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Stacked bar in ##Platform_Name## Charts Component +# Stacked Bar Chart in ##Platform_Name## Charts -## Stacked bar +## Stacked Bar To render a [stacked bar](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stacked-bar-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-column.md index 1668ce921e..51507d7879 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-column.md @@ -1,17 +1,17 @@ --- layout: post -title: Stacked Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Column Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Stacked column chart +control: Stacked Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Stacked column in ##Platform_Name## Charts Component +# Stacked Column Chart in ##Platform_Name## Charts -## Stacked column +## Stacked Column To render a [stacked column](https://www.syncfusion.com/aspnet-mvc-ui-controls/charts/chart-types/stacked-column-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-line.md index 2bec92ccd9..8cc7e98bcf 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-line.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Line Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Line Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked line Chart in ##Platform_Name## Charts Component +# Stacked Line Chart in ##Platform_Name## Charts -## Stacked line +## Stacked Line To render a [stacked line](https://www.syncfusion.com/aspnet-mvc-ui-controls/charts/chart-types/stacked-line-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-step-area.md index 96bd18acf4..5a752b38ee 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/stacked-step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked step area in ##Platform_Name## Charts component +# Stacked Step Area Chart in ##Platform_Name## Charts -## Stacked step area +## Stacked Step Area To render a stacked step area series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-area.md index 005a67c1c0..053f30e283 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Step area in ##Platform_Name## Charts component +# Step Area Chart in ##Platform_Name## Charts -## Step area +## Step Area To render a [step area](https://www.syncfusion.com/aspnet-mvc-ui-controls/charts/chart-types/step-area-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-line.md index f51275b198..bbb2847caf 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/step-line.md @@ -1,7 +1,7 @@ --- layout: post -title: Step Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Step Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Step Line Chart in ##Platform_Name## Charts +description: Learn here all about Step Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Step Line Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Step line chart in ##Platform_Name## Charts component +# Step Line Chart in ##Platform_Name## Charts -## Step line +## Step Line To render a [step line](https://www.syncfusion.com/aspnet-mvc-ui-controls/charts/chart-types/stepline-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/vertical-chart.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/vertical-chart.md index 2bf8ef7fee..468cd603cd 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/vertical-chart.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/vertical-chart.md @@ -1,7 +1,7 @@ --- layout: post -title: Vertical Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Vertical Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Vertical Chart in ##Platform_Name## Charts +description: Learn here all about Vertical Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Vertical Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Vertical Chart in ##Platform_Name## Charts Component +# Vertical Chart in ##Platform_Name## Charts -## Vertical chart +## Vertical Chart To draw a chart in a vertical manner, change the orientation of the axis using the `IsTransposed` property, which is supported by all series types. diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/waterfall.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/waterfall.md index bd91ef2c25..92a6defc4d 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/waterfall.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/waterfall.md @@ -1,7 +1,7 @@ --- layout: post -title: Waterfall Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Waterfall Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Waterfall Chart in ##Platform_Name## Charts +description: Learn here all about Waterfall Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Waterfall Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Waterfall in ##Platform_Name## Charts Component +# Waterfall Chart in ##Platform_Name## Charts ## Waterfall diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/area.md index df8158c593..b39b8a9d3c 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/area.md @@ -1,7 +1,7 @@ --- layout: post -title: Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Area Chart in ##Platform_Name## Charts +description: Learn here all about Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Area in ##Platform_Name## Charts Component +# Area Chart in ##Platform_Name## Charts ## Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bar.md index 7a12462ec4..e53b8e2d9f 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bar.md @@ -1,7 +1,7 @@ --- layout: post -title: Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Bar Chart in ##Platform_Name## Charts +description: Learn here all about Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Bar chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Bar Charts in ##Platform_Name## Charts Component +# Bar Chart in ##Platform_Name## Charts ## Bar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/box-whisker.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/box-whisker.md index 1fec3ae080..3dcfaac5fe 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/box-whisker.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/box-whisker.md @@ -1,7 +1,7 @@ --- layout: post -title: Box and Whisker Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Box and Whisker Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Box and Whisker Chart in ##Platform_Name## Charts +description: Learn here all about Box and Whisker Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Box and Whisker Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Box and Whisker in ##Platform_Name## Charts Component +# Box and Whisker Chart in ##Platform_Name## Charts -## Box and whisker +## Box and Whisker To render a `box and whisker` series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bubble.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bubble.md index 138ce82cd0..4eb43b27b7 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bubble.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/bubble.md @@ -1,7 +1,7 @@ --- layout: post -title: Bubble Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Bubble Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Bubble Chart in ##Platform_Name## Charts +description: Learn here all about Bubble Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Bubble Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Bubble in ##Platform_Name## Charts Component +# Bubble Chart in ##Platform_Name## Charts ## Bubble diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/candle.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/candle.md index c746269562..af114f3d34 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/candle.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/candle.md @@ -1,7 +1,7 @@ --- layout: post -title: Candle Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Candle Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Candle Chart in ##Platform_Name## Charts +description: Learn here all about Candle Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Candle Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Candle in ASP.NET Core Charts Component +# Candle Chart in ASP.NET Core Charts To get started with the ASP.NET Core Candle charts, you can check on this video: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/column.md index c2a439a986..0e79cd0c48 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/column.md @@ -1,15 +1,15 @@ --- layout: post -title: Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Column Chart in ##Platform_Name## Charts +description: Learn here all about Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Column chart +control: Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Column Chart in ##Platform_Name## Charts Component +# Column Chart in ##Platform_Name## Charts ## Column diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/error-bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/error-bar.md index 74a3718f10..0a9b7c3f3b 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/error-bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/error-bar.md @@ -1,7 +1,7 @@ --- layout: post -title: Error Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Error Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Error Bar Chart in ##Platform_Name## Charts +description: Learn here all about Error Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Error Bar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Error Bar in ##Platform_Name## Charts Component +# Error Bar Chart in ##Platform_Name## Charts ## Error Bar diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low-open-close.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low-open-close.md index 5c91735e5d..9c944cc07f 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low-open-close.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low-open-close.md @@ -1,7 +1,7 @@ --- layout: post -title: High Low Open Close Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about High Low Open Close Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: High Low Open Close Chart in ##Platform_Name## Charts +description: Learn here all about High Low Open Close Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: High Low Open Close Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# High Low Open Close in ##Platform_Name## Charts Component +# High Low Open Close Chart in ##Platform_Name## Charts ## High Low Open Close diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low.md index 1d18b0ffe8..a5271c5d08 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/high-low.md @@ -1,15 +1,15 @@ --- layout: post -title: Hilo Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Hilo Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: High Low Chart in ##Platform_Name## Charts +description: Learn here all about High Low Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Hilo Chart +control: High Low Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Hilo in ASP.NET Core Charts Component +# High Low Chart in ASP.NET Core Charts To get started with the ASP.NET Core Hilo charts, you can check on this video: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/histogram.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/histogram.md index 13b76f8b68..f0f6f3ae79 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/histogram.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/histogram.md @@ -1,7 +1,7 @@ --- layout: post -title: Histogram Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Histogram Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Histogram Chart in ##Platform_Name## Charts +description: Learn here all about Histogram Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Histogram Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Histogram in ##Platform_Name## Charts Component +# Histogram Chart in ##Platform_Name## Charts ## Histogram diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/line.md index 91d1913253..ca5d9ca3f4 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/line.md @@ -1,7 +1,7 @@ --- layout: post -title: Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Line Chart in ##Platform_Name## Charts +description: Learn here all about Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Line Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Line Chart in ##Platform_Name## Charts Component +# Line Chart in ##Platform_Name## Charts ## Line diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/pareto.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/pareto.md index 7b548b7ff7..17fef0c936 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/pareto.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/pareto.md @@ -1,7 +1,7 @@ --- layout: post -title: Pareto Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Pareto Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Pareto Chart in ##Platform_Name## Charts +description: Learn here all about Pareto Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Pareto Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Pareto in ##Platform_Name## Charts Component +# Pareto Chart in ##Platform_Name## Charts ## Pareto diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/polar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/polar.md index c3436773d8..fad909c1be 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/polar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/polar.md @@ -1,7 +1,7 @@ --- layout: post -title: Polar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Polar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Polar Chart in ##Platform_Name## Charts +description: Learn here all about Polar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Polar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Polar in ##Platform_Name## Charts Component +# Polar Chart in ##Platform_Name## Charts To get started with the ASP.NET Core Polar charts, you can check on this video: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/radar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/radar.md index 25021580a8..261782a9de 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/radar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/radar.md @@ -1,7 +1,7 @@ --- layout: post -title: Radar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Radar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Radar Chart in ##Platform_Name## Charts +description: Learn here all about Radar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Radar Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Radar in ##Platform_Name## Charts Component +# Radar Chart in ##Platform_Name## Charts To get started with the ASP.NET Core Radar charts, you can check on this video: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-area.md index 12080d99a3..d7046f8348 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Area Chart in ##Platform_Name## Charts +description: Learn here all about Range Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Range Area in ##Platform_Name## Charts Component +# Range Area Chart in ##Platform_Name## Charts ## Range Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-column.md index 0889ec89b1..82788933af 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-column.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Column Chart in ##Platform_Name## Charts +description: Learn here all about Range Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Column Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Range Column in ##Platform_Name## Charts Component +# Range Column Chart in ##Platform_Name## Charts ## Range Column diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-step-area.md index 82da771a09..4140aeb330 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/range-step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Range Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Range Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Range Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Range Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Range Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Range step area in ##Platform_Name## Charts component +# Range Step Area Chart in ##Platform_Name## Charts -## Range step area +## Range Step Area To render a range step area series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/scatter.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/scatter.md index cedbcde4b3..7e85abc0cc 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/scatter.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/scatter.md @@ -1,7 +1,7 @@ --- layout: post -title: Scatter Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Scatter Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Scatter Chart in ##Platform_Name## Charts +description: Learn here all about Scatter Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Scatter Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Scatter in ##Platform_Name## Charts Component +# Scatter Chart in ##Platform_Name## Charts ## Scatter diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-area.md index 713fe171bc..2b8f1cc708 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-area.md @@ -1,14 +1,14 @@ --- layout: post -title: Spline Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Area Chart in ##Platform_Name## Charts +description: Learn here all about Spline Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Area Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Spline Area in ##Platform_Name## Charts Component +# Spline Area Chart in ##Platform_Name## Charts ## Spline Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-range-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-range-area.md index db43230735..a9361ab4f6 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-range-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline-range-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Spline Range Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Range Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Range Area Chart in ##Platform_Name## Charts +description: Learn here all about Spline Range Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Range Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Spline Range Area in ##Platform_Name## Charts Component +# Spline Range Area Chart in ##Platform_Name## Charts ## Spline Range Area diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline.md index 1f157a42af..14d954cf80 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/spline.md @@ -1,7 +1,7 @@ --- layout: post -title: Spline Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Spline Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Spline Chart in ##Platform_Name## Charts +description: Learn here all about Spline Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Spline in ##Platform_Name## Charts Component +# Spline Chart in ##Platform_Name## Charts ## Spline diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-area100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-area100.md index 02da43f12a..2b5da01d75 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-area100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-area100.md @@ -1,7 +1,7 @@ --- layout: post -title: 100% Stacked Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Area Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: 100% Stacked Area Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# 100% Stacked Area in ##Platform_Name## Charts Component +# 100% Stacked Area Chart in ##Platform_Name## Charts ## 100% Stacked Area Chart diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-bar100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-bar100.md index cce7d409e2..f55ec5f0f0 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-bar100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-bar100.md @@ -1,17 +1,17 @@ --- layout: post -title: 100% Stacked Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Bar Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: 100% Stacked bar chart +control: 100% Stacked Bar Chart publishingplatform: ##Platform_Name## documentation: ug --- -# 100% Stacked Bar in ##Platform_Name## Charts Component +# 100% Stacked Bar Chart in ##Platform_Name## Charts -## 100% Stacked bar +## 100% Stacked Bar To render a [100% stacked bar](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/100-stacked-bar-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-column100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-column100.md index 80ce06df77..cab1a53e7e 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-column100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-column100.md @@ -1,17 +1,17 @@ --- layout: post -title: 100% Stacked Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Column Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: 100% Stacked column chart +control: 100% Stacked Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# 100% Stacked Column in ##Platform_Name## Charts Component +# 100% Stacked Column Chart in ##Platform_Name## Charts -## 100% Stacked column +## 100% Stacked Column To render a [100% stacked column](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/100-stacked-column-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-line100.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-line100.md index 340a84afb9..ea781c07da 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-line100.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stack-line100.md @@ -1,7 +1,7 @@ --- layout: post -title: 100% Stacked Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about 100% Stacked Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: 100% Stacked Line Chart in ##Platform_Name## Charts +description: Learn here all about 100% Stacked Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: 100% Stacked Line Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# 100% Stacked Line in ##Platform_Name## Charts Component +# 100% Stacked Line Chart in ##Platform_Name## Charts ## 100% Stacked Line diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-area.md index 89ea6b3e64..456767e114 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Area Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked area in ##Platform_Name## Charts Component +# Stacked Area Chart in ##Platform_Name## Charts -## Stacked area +## Stacked Area To render a [stacked area](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stacked-area-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-bar.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-bar.md index a066facb0c..dad93e78cc 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-bar.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-bar.md @@ -1,17 +1,17 @@ --- layout: post -title: Stacked Bar Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Bar Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Bar Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Bar Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Stacked bar chart +control: Stacked Bar Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Stacked bar in ##Platform_Name## Charts Component +# Stacked Bar Chart in ##Platform_Name## Charts -## Stacked bar +## Stacked Bar To render a [stacked bar](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stacked-bar-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-column.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-column.md index 009dede58e..19a1b6837e 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-column.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-column.md @@ -1,17 +1,17 @@ --- layout: post -title: Stacked Column Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Column Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Column Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Column Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc -control: Stacked column chart +control: Stacked Column Chart publishingplatform: ##Platform_Name## documentation: ug --- -# Stacked column in ##Platform_Name## Charts Component +# Stacked Column Chart in ##Platform_Name## Charts -## Stacked column +## Stacked Column To render a [stacked column](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stacked-column-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-line.md index 265a94898d..e2866e4b3d 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-line.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Line Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Line Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked line Chart in ##Platform_Name## Charts Component +# Stacked Line Chart in ##Platform_Name## Charts -## Stacked line +## Stacked Line To render a [stacked line](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stacked-line-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-step-area.md index ae06c8257d..9a324e4213 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/stacked-step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Stacked Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Stacked Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Stacked Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Stacked Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Stacked Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Stacked step area in ##Platform_Name## Charts component +# Stacked Step Area Chart in ##Platform_Name## Charts -## Stacked step area +## Stacked Step Area To render a stacked step area series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-area.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-area.md index 758c1aa791..fbb9fd69ae 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-area.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-area.md @@ -1,7 +1,7 @@ --- layout: post -title: Step Area Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Step Area Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Step Area Chart in ##Platform_Name## Charts +description: Learn here all about Step Area Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Step Area Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Step area in ##Platform_Name## Charts component +# Step Area Chart in ##Platform_Name## Charts -## Step area +## Step Area To render a [step area](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/step-area-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-line.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-line.md index 049a384405..9d4302c3b1 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-line.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/step-line.md @@ -1,7 +1,7 @@ --- layout: post -title: Step Line Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Step Line Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Step Line Chart in ##Platform_Name## Charts +description: Learn here all about Step Line Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Step Line Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Step line chart in ##Platform_Name## Charts component +# Step Line Chart in ##Platform_Name## Charts -## Step line +## Step Line To render a [step line](https://www.syncfusion.com/aspnet-core-ui-controls/charts/chart-types/stepline-chart) series in your chart, you need to follow a few steps to configure it correctly. Here’s a concise guide on how to do this: diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/vertical-chart.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/vertical-chart.md index 0a6b6583e4..b91953d888 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/vertical-chart.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/vertical-chart.md @@ -1,7 +1,7 @@ --- layout: post -title: Vertical Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Vertical Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Vertical Chart in ##Platform_Name## Charts +description: Learn here all about Vertical Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Vertical Chart publishingplatform: ##Platform_Name## @@ -9,9 +9,9 @@ documentation: ug --- -# Vertical Chart in ##Platform_Name## Charts Component +# Vertical Chart in ##Platform_Name## Charts -## Vertical chart +## Vertical Chart To draw a chart in a vertical manner, change the orientation of the axis using the `isTransposed` property, which is supported by all series types. diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/waterfall.md b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/waterfall.md index 2b516d717c..82086fcc2f 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/waterfall.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.NETCORE/chart-types/waterfall.md @@ -1,7 +1,7 @@ --- layout: post -title: Waterfall Chart in ##Platform_Name## Syncfusion Chart Component -description: Learn here all about Waterfall Chart in Syncfusion ##Platform_Name## Chart component of Syncfusion Essential JS 2 and more. +title: Waterfall Chart in ##Platform_Name## Charts +description: Learn here all about Waterfall Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Waterfall Chart publishingplatform: ##Platform_Name## @@ -9,7 +9,7 @@ documentation: ug --- -# Waterfall in ##Platform_Name## Charts Component +# Waterfall Chart in ##Platform_Name## Charts ## Waterfall From 81a4286549441f45b8be6a6dbe0125cd630c0cca Mon Sep 17 00:00:00 2001 From: BuvanaS Date: Tue, 13 May 2025 14:24:30 +0530 Subject: [PATCH 52/54] documentation(955267): Chart component Title corrections are made. --- ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md index da63ee345a..53d17c5501 100644 --- a/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md +++ b/ej2-asp-core-mvc/chart/EJ2_ASP.MVC/chart-types/spline.md @@ -1,6 +1,6 @@ --- layout: post -title: Spline Chart in ##Platform_Name## Chart +title: Spline Chart in ##Platform_Name## Charts description: Learn here all about Spline Chart in Syncfusion ##Platform_Name## Charts component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Spline Chart From 0b45c4e15cde9625298762a704798d5f881ec85c Mon Sep 17 00:00:00 2001 From: PrasanthMadhaiyan <98938528+PrasanthMadhaiyan@users.noreply.github.com> Date: Wed, 14 May 2025 18:08:16 +0530 Subject: [PATCH 53/54] 958054: Need to add a note section when setting args.useFormPost = false in the FileManager component --- .../file-manager/how-to/pass-custom-value-to-server.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ej2-asp-core-mvc/file-manager/how-to/pass-custom-value-to-server.md b/ej2-asp-core-mvc/file-manager/how-to/pass-custom-value-to-server.md index 98ac96279a..a650986e4e 100644 --- a/ej2-asp-core-mvc/file-manager/how-to/pass-custom-value-to-server.md +++ b/ej2-asp-core-mvc/file-manager/how-to/pass-custom-value-to-server.md @@ -179,6 +179,8 @@ public object Download([FromBody] FileManagerDirectoryContent args) ``` +> **Note:** When setting **args.useFormPost = false**, ensure that the server-side download method uses the MIME type **"application/octet-stream"** in a case-sensitive manner, matching the expected format exactly. + ## 4. For GetImage Operation For the **GetImage** operation, use the **beforeImageLoad** event to pass custom value. Since the **GetImage** operation doesn't support custom headers in HTTP requests, pass the custom values along with **imageUrl** using query parameters instead. From 806a9c370134c264b8b29bf4730c81c2eb886516 Mon Sep 17 00:00:00 2001 From: Bhuvaneshwari-SF4208 Date: Wed, 14 May 2025 22:40:50 +0530 Subject: [PATCH 54/54] 956287: Updated the insertImageSettings: Add the new image types to the allowedTypes array. --- .../EJ2_ASP.NETCORE/insert-image-media/insert-images.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 950062f721..168aa65b8e 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 @@ -252,7 +252,7 @@ You can allow the specific images alone to be uploaded using the the allowedType ``` cshtml - allowedTypes="@(new string[] {".jpg"})" + allowedTypes="@(new string[] {".jpg", ".png", ".jpeg" })" ```

    nk^L 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%0DX3z{fSp8L$KA5Q0LxruubIw*d` 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�y)340zTenXPPTy7m9nf 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СHxHPM8=2mZN&ddEcrxwqUU%DLIa? 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