diff --git a/Jenkinsfile b/Jenkinsfile
index dd47e4d1e..175d29f41 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -74,7 +74,7 @@ if(currentBuild.result != 'FAILURE')
stage 'Delete Workspace'
- def files = findFiles(glob: '**/cireports/spellcheck/*.*')
+ def files = findFiles(glob: '**/cireports/*.*')
if(files.size() > 0)
{
diff --git a/ej2-javascript-toc.html b/ej2-javascript-toc.html
index 16caf6574..340894b3d 100644
--- a/ej2-javascript-toc.html
+++ b/ej2-javascript-toc.html
@@ -987,6 +987,12 @@
Visio Integration
UML Sequence Diagram
+ Collaborative Editing
+
+
Accessibility
Commands
Undo and Redo
@@ -3043,7 +3049,20 @@
Release Notes
- - 2026 Volume 1 - 33.*
- 2025 Volume 4 - 32.*
- 2025 Volume 3 - 31.*
+
- 2026 Volume 1 - 33.*
+
+
+ - 2025 Volume 4 - 32.*
+ - 2025 Volume 3 - 31.*
- Weekly Release
- 31.2.10
- 31.2.5
- 31.2.4
diff --git a/ej2-javascript/Release-notes/33.1.45.md b/ej2-javascript/Release-notes/33.1.45.md
new file mode 100644
index 000000000..24c319260
--- /dev/null
+++ b/ej2-javascript/Release-notes/33.1.45.md
@@ -0,0 +1,98 @@
+---
+title: Essential Studio for ##Platform_Name## Release Notes - v33.1.45
+description: Learn here about the controls in the Essential Studio for ##Platform_Name## Weekly Release - Release Notes - v33.1.45
+platform: ej2-javascript
+documentation: ug
+---
+
+# Essential Studio for ##Platform_Name## - v33.1.45 Release Notes
+
+{% include release-info.html date="March 24, 2026" version="v33.1.45" passed="74069" failed="0" %}
+
+{% directory path: _includes/release-notes/v33.1.45 %}
+
+{% 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 | 113 | 113 | 0 | All Passed |
+| AI Assist View | 431 | 431 | 0 | All Passed |
+| App Bar | 67 | 67 | 0 | All Passed |
+| AutoComplete | 200 | 200 | 0 | All Passed |
+| Breadcrumb | 160 | 160 | 0 | All Passed |
+| Bullet Chart | 169 | 169 | 0 | All Passed |
+| Button | 145 | 145 | 0 | All Passed |
+| ButtonGroup | 120 | 120 | 0 | All Passed |
+| calendar | 178 | 178 | 0 | All Passed |
+| Carousel | 61 | 61 | 0 | All Passed |
+| Chart | 7484 | 7484 | 0 | All Passed |
+| Chat UI | 689 | 689 | 0 | All Passed |
+| Checkbox | 37 | 37 | 0 | All Passed |
+| CircularGauge | 429 | 429 | 0 | All Passed |
+| ColorPicker | 130 | 130 | 0 | All Passed |
+| Combo Box | 146 | 146 | 0 | All Passed |
+| Common | 906 | 906 | 0 | All Passed |
+| Context Menu | 105 | 105 | 0 | All Passed |
+| Data Grid | 4137 | 4137 | 0 | All Passed |
+| Date Picker | 430 | 430 | 0 | All Passed |
+| Date Range Picker | 515 | 515 | 0 | All Passed |
+| Date Time Picker | 326 | 326 | 0 | All Passed |
+| Diagram | 16672 | 16672 | 0 | All Passed |
+| Dialog | 72 | 72 | 0 | All Passed |
+| DropDown Button | 132 | 132 | 0 | All Passed |
+| Dropdown List | 207 | 207 | 0 | All Passed |
+| Dropdown Tree | 108 | 108 | 0 | All Passed |
+| File Manager | 2197 | 2197 | 0 | All Passed |
+| Floating Action Button | 174 | 174 | 0 | All Passed |
+| Gantt | 5161 | 5161 | 0 | All Passed |
+| HeatMap Chart | 639 | 639 | 0 | All Passed |
+| Image Editor | 1653 | 1653 | 0 | All Passed |
+| In-place Editor | 643 | 643 | 0 | All Passed |
+| Kanban | 268 | 268 | 0 | All Passed |
+| LinearGauge | 426 | 426 | 0 | All Passed |
+| Listbox | 115 | 115 | 0 | All Passed |
+| ListView | 81 | 81 | 0 | All Passed |
+| Maps | 1386 | 1386 | 0 | All Passed |
+| Mention | 49 | 49 | 0 | All Passed |
+| Menu | 187 | 187 | 0 | All Passed |
+| Multicolumn Combo Box | 256 | 256 | 0 | All Passed |
+| Multiselect Dropdown | 448 | 448 | 0 | All Passed |
+| OTP Input | 240 | 240 | 0 | All Passed |
+| Pivot Table | 5369 | 5369 | 0 | All Passed |
+| Progress Bar | 83 | 83 | 0 | All Passed |
+| Progress Button | 132 | 132 | 0 | All Passed |
+| Query Builder | 480 | 480 | 0 | All Passed |
+| RadioButton | 45 | 45 | 0 | All Passed |
+| RangeNavigator | 140 | 140 | 0 | All Passed |
+| Rating | 198 | 198 | 0 | All Passed |
+| Ribbon | 625 | 625 | 0 | All Passed |
+| Rich Text Editor | 5138 | 5138 | 0 | All Passed |
+| schedule | 4722 | 4722 | 0 | All Passed |
+| sidebar | 91 | 91 | 0 | All Passed |
+| Signature | 105 | 105 | 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 |
+| Speech To Text | 200 | 200 | 0 | All Passed |
+| Speed Dial | 366 | 366 | 0 | All Passed |
+| Split Button | 144 | 144 | 0 | All Passed |
+| Stepper | 91 | 91 | 0 | All Passed |
+| Stock Chart | 379 | 379 | 0 | All Passed |
+| Tab | 69 | 69 | 0 | All Passed |
+| Text Area | 112 | 112 | 0 | All Passed |
+| TextBox | 66 | 66 | 0 | All Passed |
+| Time Picker | 180 | 180 | 0 | All Passed |
+| Timeline | 213 | 213 | 0 | All Passed |
+| Toast | 139 | 139 | 0 | All Passed |
+| Toolbar | 141 | 141 | 0 | All Passed |
+| ToolTip | 132 | 132 | 0 | All Passed |
+| TreeGrid | 4916 | 4916 | 0 | All Passed |
+| Treemap | 327 | 327 | 0 | All Passed |
+| Treeview | 371 | 371 | 0 | All Passed |
\ No newline at end of file
diff --git a/ej2-javascript/Release-notes/33.1.46.md b/ej2-javascript/Release-notes/33.1.46.md
new file mode 100644
index 000000000..93b6a41ca
--- /dev/null
+++ b/ej2-javascript/Release-notes/33.1.46.md
@@ -0,0 +1,98 @@
+---
+title: Essential Studio for ##Platform_Name## Release Notes - v33.1.46
+description: Learn here about the controls in the Essential Studio for ##Platform_Name## Weekly Release - Release Notes - v33.1.46
+platform: ej2-javascript
+documentation: ug
+---
+
+# Essential Studio for ##Platform_Name## - v33.1.46 Release Notes
+
+{% include release-info.html date="March 31, 2026" version="v33.1.46" passed="74136" failed="0" %}
+
+{% directory path: _includes/release-notes/v33.1.46 %}
+
+{% 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 | 113 | 113 | 0 | All Passed |
+| AI Assist View | 431 | 431 | 0 | All Passed |
+| App Bar | 67 | 67 | 0 | All Passed |
+| AutoComplete | 200 | 200 | 0 | All Passed |
+| Breadcrumb | 160 | 160 | 0 | All Passed |
+| Bullet Chart | 169 | 169 | 0 | All Passed |
+| Button | 145 | 145 | 0 | All Passed |
+| ButtonGroup | 120 | 120 | 0 | All Passed |
+| calendar | 178 | 178 | 0 | All Passed |
+| Carousel | 61 | 61 | 0 | All Passed |
+| Chart | 7484 | 7484 | 0 | All Passed |
+| Chat UI | 689 | 689 | 0 | All Passed |
+| Checkbox | 37 | 37 | 0 | All Passed |
+| CircularGauge | 429 | 429 | 0 | All Passed |
+| ColorPicker | 130 | 130 | 0 | All Passed |
+| Combo Box | 146 | 146 | 0 | All Passed |
+| Common | 906 | 906 | 0 | All Passed |
+| Context Menu | 105 | 105 | 0 | All Passed |
+| Data Grid | 4137 | 4137 | 0 | All Passed |
+| Date Picker | 431 | 431 | 0 | All Passed |
+| Date Range Picker | 515 | 515 | 0 | All Passed |
+| Date Time Picker | 326 | 326 | 0 | All Passed |
+| Diagram | 16692 | 16692 | 0 | All Passed |
+| Dialog | 72 | 72 | 0 | All Passed |
+| DropDown Button | 132 | 132 | 0 | All Passed |
+| Dropdown List | 210 | 210 | 0 | All Passed |
+| Dropdown Tree | 109 | 109 | 0 | All Passed |
+| File Manager | 2197 | 2197 | 0 | All Passed |
+| Floating Action Button | 174 | 174 | 0 | All Passed |
+| Gantt | 5166 | 5166 | 0 | All Passed |
+| HeatMap Chart | 643 | 643 | 0 | All Passed |
+| Image Editor | 1653 | 1653 | 0 | All Passed |
+| In-place Editor | 643 | 643 | 0 | All Passed |
+| Kanban | 268 | 268 | 0 | All Passed |
+| LinearGauge | 426 | 426 | 0 | All Passed |
+| Listbox | 115 | 115 | 0 | All Passed |
+| ListView | 81 | 81 | 0 | All Passed |
+| Maps | 1386 | 1386 | 0 | All Passed |
+| Mention | 49 | 49 | 0 | All Passed |
+| Menu | 187 | 187 | 0 | All Passed |
+| Multicolumn Combo Box | 256 | 256 | 0 | All Passed |
+| Multiselect Dropdown | 448 | 448 | 0 | All Passed |
+| OTP Input | 240 | 240 | 0 | All Passed |
+| Pivot Table | 5369 | 5369 | 0 | All Passed |
+| Progress Bar | 83 | 83 | 0 | All Passed |
+| Progress Button | 132 | 132 | 0 | All Passed |
+| Query Builder | 480 | 480 | 0 | All Passed |
+| RadioButton | 45 | 45 | 0 | All Passed |
+| RangeNavigator | 140 | 140 | 0 | All Passed |
+| Rating | 198 | 198 | 0 | All Passed |
+| Ribbon | 625 | 625 | 0 | All Passed |
+| Rich Text Editor | 5138 | 5138 | 0 | All Passed |
+| schedule | 4723 | 4723 | 0 | All Passed |
+| sidebar | 91 | 91 | 0 | All Passed |
+| Signature | 105 | 105 | 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 |
+| Speech To Text | 200 | 200 | 0 | All Passed |
+| Speed Dial | 366 | 366 | 0 | All Passed |
+| Split Button | 144 | 144 | 0 | All Passed |
+| Stepper | 91 | 91 | 0 | All Passed |
+| Stock Chart | 379 | 379 | 0 | All Passed |
+| Tab | 69 | 69 | 0 | All Passed |
+| Text Area | 112 | 112 | 0 | All Passed |
+| TextBox | 66 | 66 | 0 | All Passed |
+| Time Picker | 180 | 180 | 0 | All Passed |
+| Timeline | 213 | 213 | 0 | All Passed |
+| Toast | 139 | 139 | 0 | All Passed |
+| Toolbar | 141 | 141 | 0 | All Passed |
+| ToolTip | 132 | 132 | 0 | All Passed |
+| TreeGrid | 4948 | 4948 | 0 | All Passed |
+| Treemap | 327 | 327 | 0 | All Passed |
+| Treeview | 371 | 371 | 0 | All Passed |
\ No newline at end of file
diff --git a/ej2-javascript/Release-notes/33.1.47.md b/ej2-javascript/Release-notes/33.1.47.md
new file mode 100644
index 000000000..fc9c0bc46
--- /dev/null
+++ b/ej2-javascript/Release-notes/33.1.47.md
@@ -0,0 +1,99 @@
+---
+title: Essential Studio for ##Platform_Name## Release Notes - v33.1.47
+description: Learn here about the controls in the Essential Studio for ##Platform_Name## Weekly Release - Release Notes - v33.1.47
+platform: ej2-javascript
+documentation: ug
+---
+
+# Essential Studio for ##Platform_Name## - v33.1.47 Release Notes
+
+{% include release-info.html date="April 07, 2026" version="v33.1.47" passed="74987" failed="0" %}
+
+{% directory path: _includes/release-notes/v33.1.47 %}
+
+{% 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 | 112 | 112 | 0 | All Passed |
+| AI Assist View | 431 | 431 | 0 | All Passed |
+| App Bar | 68 | 68 | 0 | All Passed |
+| AutoComplete | 200 | 200 | 0 | All Passed |
+| Breadcrumb | 160 | 160 | 0 | All Passed |
+| Bullet Chart | 169 | 169 | 0 | All Passed |
+| Button | 145 | 145 | 0 | All Passed |
+| ButtonGroup | 120 | 120 | 0 | All Passed |
+| calendar | 178 | 178 | 0 | All Passed |
+| Carousel | 62 | 62 | 0 | All Passed |
+| Chart | 7823 | 7823 | 0 | All Passed |
+| Chat UI | 689 | 689 | 0 | All Passed |
+| Checkbox | 37 | 37 | 0 | All Passed |
+| CircularGauge | 432 | 432 | 0 | All Passed |
+| ColorPicker | 130 | 130 | 0 | All Passed |
+| Combo Box | 146 | 146 | 0 | All Passed |
+| Common | 906 | 906 | 0 | All Passed |
+| Context Menu | 106 | 106 | 0 | All Passed |
+| Dashboard layout | 30 | 30 | 0 | All Passed |
+| Data Grid | 4137 | 4137 | 0 | All Passed |
+| Date Picker | 431 | 431 | 0 | All Passed |
+| Date Range Picker | 515 | 515 | 0 | All Passed |
+| Date Time Picker | 326 | 326 | 0 | All Passed |
+| Diagram | 16910 | 16910 | 0 | All Passed |
+| Dialog | 74 | 74 | 0 | All Passed |
+| DropDown Button | 132 | 132 | 0 | All Passed |
+| Dropdown List | 210 | 210 | 0 | All Passed |
+| Dropdown Tree | 109 | 109 | 0 | All Passed |
+| File Manager | 2198 | 2198 | 0 | All Passed |
+| Floating Action Button | 174 | 174 | 0 | All Passed |
+| Gantt | 5352 | 5352 | 0 | All Passed |
+| HeatMap Chart | 677 | 677 | 0 | All Passed |
+| Image Editor | 1653 | 1653 | 0 | All Passed |
+| In-place Editor | 643 | 643 | 0 | All Passed |
+| Kanban | 268 | 268 | 0 | All Passed |
+| LinearGauge | 427 | 427 | 0 | All Passed |
+| Listbox | 115 | 115 | 0 | All Passed |
+| ListView | 84 | 84 | 0 | All Passed |
+| Maps | 1387 | 1387 | 0 | All Passed |
+| Mention | 49 | 49 | 0 | All Passed |
+| Menu | 187 | 187 | 0 | All Passed |
+| Multicolumn Combo Box | 256 | 256 | 0 | All Passed |
+| Multiselect Dropdown | 452 | 452 | 0 | All Passed |
+| OTP Input | 240 | 240 | 0 | All Passed |
+| Pivot Table | 5371 | 5371 | 0 | All Passed |
+| Progress Bar | 83 | 83 | 0 | All Passed |
+| Progress Button | 132 | 132 | 0 | All Passed |
+| Query Builder | 480 | 480 | 0 | All Passed |
+| RadioButton | 45 | 45 | 0 | All Passed |
+| RangeNavigator | 140 | 140 | 0 | All Passed |
+| Rating | 198 | 198 | 0 | All Passed |
+| Ribbon | 625 | 625 | 0 | All Passed |
+| Rich Text Editor | 5138 | 5138 | 0 | All Passed |
+| schedule | 4733 | 4733 | 0 | All Passed |
+| sidebar | 94 | 94 | 0 | All Passed |
+| Signature | 105 | 105 | 0 | All Passed |
+| Skeleton | 144 | 144 | 0 | All Passed |
+| Slider | 147 | 147 | 0 | All Passed |
+| SmithChart | 49 | 49 | 0 | All Passed |
+| Sparkline | 58 | 58 | 0 | All Passed |
+| Speech To Text | 200 | 200 | 0 | All Passed |
+| Speed Dial | 366 | 366 | 0 | All Passed |
+| Split Button | 145 | 145 | 0 | All Passed |
+| Stepper | 91 | 91 | 0 | All Passed |
+| Stock Chart | 379 | 379 | 0 | All Passed |
+| Tab | 71 | 71 | 0 | All Passed |
+| Text Area | 112 | 112 | 0 | All Passed |
+| TextBox | 66 | 66 | 0 | All Passed |
+| Time Picker | 180 | 180 | 0 | All Passed |
+| Timeline | 213 | 213 | 0 | All Passed |
+| Toast | 139 | 139 | 0 | All Passed |
+| Toolbar | 141 | 141 | 0 | All Passed |
+| ToolTip | 138 | 138 | 0 | All Passed |
+| TreeGrid | 4948 | 4948 | 0 | All Passed |
+| Treemap | 329 | 329 | 0 | All Passed |
+| Treeview | 371 | 371 | 0 | All Passed |
\ No newline at end of file
diff --git a/ej2-javascript/Release-notes/33.1.49.md b/ej2-javascript/Release-notes/33.1.49.md
new file mode 100644
index 000000000..a499fa9ce
--- /dev/null
+++ b/ej2-javascript/Release-notes/33.1.49.md
@@ -0,0 +1,99 @@
+---
+title: Essential Studio for ##Platform_Name## Release Notes - v33.1.49
+description: Learn here about the controls in the Essential Studio for ##Platform_Name## Weekly Release - Release Notes - v33.1.49
+platform: ej2-javascript
+documentation: ug
+---
+
+# Essential Studio for ##Platform_Name## - v33.1.49 Release Notes
+
+{% include release-info.html date="April 14, 2026" version="v33.1.49" passed="75322" failed="0" %}
+
+{% directory path: _includes/release-notes/v33.1.49 %}
+
+{% 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 | 113 | 113 | 0 | All Passed |
+| AI Assist View | 431 | 431 | 0 | All Passed |
+| App Bar | 68 | 68 | 0 | All Passed |
+| AutoComplete | 200 | 200 | 0 | All Passed |
+| Breadcrumb | 160 | 160 | 0 | All Passed |
+| Bullet Chart | 169 | 169 | 0 | All Passed |
+| Button | 145 | 145 | 0 | All Passed |
+| ButtonGroup | 120 | 120 | 0 | All Passed |
+| calendar | 178 | 178 | 0 | All Passed |
+| Carousel | 62 | 62 | 0 | All Passed |
+| Chart | 7999 | 7999 | 0 | All Passed |
+| Chat UI | 689 | 689 | 0 | All Passed |
+| Checkbox | 37 | 37 | 0 | All Passed |
+| CircularGauge | 432 | 432 | 0 | All Passed |
+| ColorPicker | 130 | 130 | 0 | All Passed |
+| Combo Box | 148 | 148 | 0 | All Passed |
+| Common | 906 | 906 | 0 | All Passed |
+| Context Menu | 106 | 106 | 0 | All Passed |
+| Dashboard layout | 30 | 30 | 0 | All Passed |
+| Data Grid | 4139 | 4139 | 0 | All Passed |
+| Date Picker | 431 | 431 | 0 | All Passed |
+| Date Range Picker | 515 | 515 | 0 | All Passed |
+| Date Time Picker | 326 | 326 | 0 | All Passed |
+| Diagram | 16910 | 16910 | 0 | All Passed |
+| Dialog | 74 | 74 | 0 | All Passed |
+| DropDown Button | 132 | 132 | 0 | All Passed |
+| Dropdown List | 210 | 210 | 0 | All Passed |
+| Dropdown Tree | 109 | 109 | 0 | All Passed |
+| File Manager | 2198 | 2198 | 0 | All Passed |
+| Floating Action Button | 174 | 174 | 0 | All Passed |
+| Gantt | 5486 | 5486 | 0 | All Passed |
+| HeatMap Chart | 677 | 677 | 0 | All Passed |
+| Image Editor | 1653 | 1653 | 0 | All Passed |
+| In-place Editor | 643 | 643 | 0 | All Passed |
+| Kanban | 268 | 268 | 0 | All Passed |
+| LinearGauge | 427 | 427 | 0 | All Passed |
+| Listbox | 115 | 115 | 0 | All Passed |
+| ListView | 84 | 84 | 0 | All Passed |
+| Maps | 1387 | 1387 | 0 | All Passed |
+| Mention | 50 | 50 | 0 | All Passed |
+| Menu | 187 | 187 | 0 | All Passed |
+| Multicolumn Combo Box | 257 | 257 | 0 | All Passed |
+| Multiselect Dropdown | 453 | 453 | 0 | All Passed |
+| OTP Input | 240 | 240 | 0 | All Passed |
+| Pivot Table | 5371 | 5371 | 0 | All Passed |
+| Progress Bar | 83 | 83 | 0 | All Passed |
+| Progress Button | 132 | 132 | 0 | All Passed |
+| Query Builder | 480 | 480 | 0 | All Passed |
+| RadioButton | 45 | 45 | 0 | All Passed |
+| RangeNavigator | 140 | 140 | 0 | All Passed |
+| Rating | 198 | 198 | 0 | All Passed |
+| Ribbon | 625 | 625 | 0 | All Passed |
+| Rich Text Editor | 5138 | 5138 | 0 | All Passed |
+| schedule | 4733 | 4733 | 0 | All Passed |
+| sidebar | 94 | 94 | 0 | All Passed |
+| Signature | 105 | 105 | 0 | All Passed |
+| Skeleton | 144 | 144 | 0 | All Passed |
+| Slider | 147 | 147 | 0 | All Passed |
+| SmithChart | 49 | 49 | 0 | All Passed |
+| Sparkline | 58 | 58 | 0 | All Passed |
+| Speech To Text | 200 | 200 | 0 | All Passed |
+| Speed Dial | 366 | 366 | 0 | All Passed |
+| Split Button | 145 | 145 | 0 | All Passed |
+| Stepper | 91 | 91 | 0 | All Passed |
+| Stock Chart | 379 | 379 | 0 | All Passed |
+| Tab | 71 | 71 | 0 | All Passed |
+| Text Area | 112 | 112 | 0 | All Passed |
+| TextBox | 66 | 66 | 0 | All Passed |
+| Time Picker | 180 | 180 | 0 | All Passed |
+| Timeline | 213 | 213 | 0 | All Passed |
+| Toast | 139 | 139 | 0 | All Passed |
+| Toolbar | 141 | 141 | 0 | All Passed |
+| ToolTip | 138 | 138 | 0 | All Passed |
+| TreeGrid | 4965 | 4965 | 0 | All Passed |
+| Treemap | 329 | 329 | 0 | All Passed |
+| Treeview | 371 | 371 | 0 | All Passed |
\ No newline at end of file
diff --git a/ej2-javascript/chart/tool-tip.md b/ej2-javascript/chart/tool-tip.md
index 45524cf2e..810a9d5bd 100644
--- a/ej2-javascript/chart/tool-tip.md
+++ b/ej2-javascript/chart/tool-tip.md
@@ -247,10 +247,14 @@ The split tooltip displays a separate tooltip for each series at the same data p
Enable this feature by setting the [`split`](../api/chart/tooltipSettingsModel#split) property to **true**:
+<<<<<<< HEAD
+=======
+
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
```js
tooltip: {
- enable: true,
- split: true
+ enable: true,
+ split: true
}
```
diff --git a/ej2-javascript/chat-ui/ts/getting-started.md b/ej2-javascript/chat-ui/ts/getting-started.md
index 8a868647d..b417bf794 100644
--- a/ej2-javascript/chat-ui/ts/getting-started.md
+++ b/ej2-javascript/chat-ui/ts/getting-started.md
@@ -123,15 +123,26 @@ Then, import the Chat UI control in your `app.ts` file, and initialize it with t
{% tabs %}
{% highlight ts tabtitle="app.ts" %}
+<<<<<<< HEAD
import { ChatUI, UserModel } from "@syncfusion/ej2-interactive-chat";
+=======
+import { ChatUI,UserModel } from "@syncfusion/ej2-interactive-chat";
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
+let currentUserModel: UserModel = {
+ id: "user1",
+ user: "Albert"
+};
// Initializes the Chat UI control
+<<<<<<< HEAD
let currentUserModel: UserModel = {
id: "user1",
user: "Albert"
};
// Initializes the Chat UI control
+=======
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
let chatUI: ChatUI = new ChatUI({
user: currentUserModel
});
diff --git a/ej2-javascript/code-snippet/chart/chart-types-cs474/index.ts b/ej2-javascript/code-snippet/chart/chart-types-cs474/index.ts
index 383efb016..51b3d9ea2 100644
--- a/ej2-javascript/code-snippet/chart/chart-types-cs474/index.ts
+++ b/ej2-javascript/code-snippet/chart/chart-types-cs474/index.ts
@@ -1,4 +1,7 @@
+<<<<<<< HEAD
/* eslint-disable @typescript-eslint/tslint/config */
+=======
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
import {
AccumulationChart, AccumulationDataLabel, AccumulationLegend,
AccumulationTooltip, PieSeries, IAccLegendRenderEventArgs
@@ -7,7 +10,11 @@ import {
AccumulationChart.Inject(AccumulationDataLabel, AccumulationLegend, AccumulationTooltip, PieSeries);
+<<<<<<< HEAD
const StatisticsDetails:any = [
+=======
+const StatisticsDetails= [
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
{ Browser: 'Chrome', Users: 37, Color: '#a16ee5' },
{ Browser: 'UC Browser', Users: 17, Color: '#f7ce69' },
{ Browser: 'iPhone', Users: 19, Color: '#55a5c2' },
@@ -51,8 +58,15 @@ const chart = new AccumulationChart({
}],
legendRender: (args: IAccLegendRenderEventArgs) => {
+<<<<<<< HEAD
const points = (chart.series[0] as any).points;
const pt = points.find((p: any) => p.x === args.text);
+=======
+ const points = (chart.series[0]).points;
+ const pt = points.find(
+ (p: { x: string | number | Date; y: number }) => p.x === args.text
+ );
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
args.template = args.template
@@ -61,4 +75,8 @@ const chart = new AccumulationChart({
}
});
+<<<<<<< HEAD
chart.appendTo('#container');
+=======
+chart.appendTo('#container');
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.css b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.css
new file mode 100644
index 000000000..15a08a877
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.css
@@ -0,0 +1,18 @@
+#container {
+ visibility: hidden;
+}
+
+#loader {
+ color: #008cff;
+ font-family: 'Helvetica Neue','calibiri';
+ font-size: 14px;
+ height: 40px;
+ left: 45%;
+ position: absolute;
+ top: 45%;
+ width: 30%;
+}
+
+#diagram {
+ display: block;
+}
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.js b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.js
new file mode 100644
index 000000000..29f98c72f
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.js
@@ -0,0 +1,57 @@
+// Version tracking for optimistic concurrency
+let userVersion = 0;
+
+// Initialize diagram with enableCollaborativeEditing enabled
+let diagram = new ej.diagrams.Diagram({
+ width: '100%',
+ height: '700px',
+ enableCollaborativeEditing: true,
+
+ historyChange: function(args) {
+ if (args) {
+ let diagramChanges = diagram.getDiagramUpdates(args);
+ if (diagramChanges && diagramChanges.length > 0) {
+ let editedElements = getEditedElements(args);
+ // Send changes with version and edited element IDs
+ connection.invoke("BroadcastToOtherUsers", diagramChanges, userVersion, editedElements, roomName)
+ .catch(err => console.error("Send failed:", err));
+ }
+ }
+ }
+});
+
+diagram.appendTo('#diagram');
+
+// Listen for remote changes with version tracking
+connection.on("ReceiveData", (diagramChanges, serverVersion) => {
+ if (diagramChanges && diagramChanges.length > 0) {
+ applyRemoteDiagramChanges(diagramChanges);
+ // Update user version to server version after applying changes
+ userVersion = serverVersion;
+ }
+});
+
+// Listen for conflict notifications
+connection.on("ShowConflict", () => {
+ // Show notification to inform user their update was rejected due to conflict
+ alert("Your changes conflicted with another user's updates and were not applied. Please refresh to see the latest version.");
+});
+
+// Listen for explicit version updates
+connection.on("UpdateVersion", (serverVersion) => {
+ userVersion = serverVersion;
+});
+
+// Apply changes received from other users
+function applyRemoteDiagramChanges(diagramChanges) {
+ // Sets diagram updates to current diagram
+ diagram.setDiagramUpdates(diagramChanges);
+}
+
+// Extract edited element IDs from history args
+function getEditedElements(args) {
+ let editedElements = [];
+ // Extract and return IDs of affected nodes/connectors from args
+ // TODO: implement extraction logic based on HistoryChangedEventArgs
+ return editedElements;
+}
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.ts b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.ts
new file mode 100644
index 000000000..b8d9fb2ef
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/index.ts
@@ -0,0 +1,60 @@
+import { Diagram, Node, Connector, DiagramElement } from '@syncfusion/ej2-diagrams';
+import * as signalR from "@microsoft/signalr";
+
+// Version tracking for optimistic concurrency
+let userVersion: number = 0;
+
+// Initialize diagram with enableCollaborativeEditing enabled
+let diagram: Diagram = new Diagram({
+ width: '100%',
+ height: '700px',
+ enableCollaborativeEditing: true,
+
+ historyChange: function(args: any): void {
+ if (args) {
+ let diagramChanges = diagram.getDiagramUpdates(args);
+ if (diagramChanges && diagramChanges.length > 0) {
+ let editedElements = getEditedElements(args);
+ // Send changes with version and edited element IDs
+ connection?.invoke("BroadcastToOtherUsers", diagramChanges, userVersion, editedElements, roomName)
+ .catch((err: Error) => console.error("Send failed:", err));
+ }
+ }
+ }
+});
+
+diagram.appendTo('#diagram');
+
+// Listen for remote changes with version tracking
+connection?.on("ReceiveData", (diagramChanges: any[], serverVersion: number) => {
+ if (diagramChanges && diagramChanges.length > 0) {
+ applyRemoteDiagramChanges(diagramChanges);
+ // Update user version to server version after applying changes
+ userVersion = serverVersion;
+ }
+});
+
+// Listen for conflict notifications
+connection?.on("ShowConflict", () => {
+ // Show notification to inform user their update was rejected due to conflict
+ alert("Your changes conflicted with another user's updates and were not applied. Please refresh to see the latest version.");
+});
+
+// Listen for explicit version updates
+connection?.on("UpdateVersion", (serverVersion: number) => {
+ userVersion = serverVersion;
+});
+
+// Apply changes received from other users
+function applyRemoteDiagramChanges(diagramChanges: any[]): void {
+ // Sets diagram updates to current diagram
+ diagram.setDiagramUpdates(diagramChanges);
+}
+
+// Extract edited element IDs from history args
+function getEditedElements(args: any): string[] {
+ let editedElements: string[] = [];
+ // Extract and return IDs of affected nodes/connectors from args
+ // TODO: implement extraction logic based on HistoryChangedEventArgs
+ return editedElements;
+}
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/js/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/js/index.html
new file mode 100644
index 000000000..75be01539
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/js/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/ts/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/ts/index.html
new file mode 100644
index 000000000..d360819c0
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-conflict-policy/ts/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.css b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.css
new file mode 100644
index 000000000..15a08a877
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.css
@@ -0,0 +1,18 @@
+#container {
+ visibility: hidden;
+}
+
+#loader {
+ color: #008cff;
+ font-family: 'Helvetica Neue','calibiri';
+ font-size: 14px;
+ height: 40px;
+ left: 45%;
+ position: absolute;
+ top: 45%;
+ width: 30%;
+}
+
+#diagram {
+ display: block;
+}
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.js b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.js
new file mode 100644
index 000000000..d8d67dbf1
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.js
@@ -0,0 +1,30 @@
+// Initialize the diagram with enableCollaborativeEditing enabled
+let diagram = new ej.diagrams.Diagram({
+ width: '100%',
+ height: '700px',
+ nodes: [],
+ connectors: [],
+ enableCollaborativeEditing: true,
+
+ // Listen to history changes
+ historyChange: function(args) {
+ if (args) {
+ // Get diagram updates (incremental changes) and send to hub
+ let diagramChanges = diagram.getDiagramUpdates(args);
+ // When enableCollaborativeEditing is enabled, retrieve diagramChanges only after the group action completes (startGroup/endGroup).
+ if (diagramChanges && diagramChanges.length > 0) {
+ connection.invoke("BroadcastToOtherUsers", diagramChanges, roomName)
+ .catch(err => console.error("Send failed:", err));
+ }
+ }
+ }
+});
+
+diagram.appendTo('#diagram');
+
+// Listen for remote changes from other users
+connection.on("ReceiveData", (diagramChanges) => {
+ if (diagramChanges && diagramChanges.length > 0) {
+ diagram.setDiagramUpdates(diagramChanges);
+ }
+});
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.ts b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.ts
new file mode 100644
index 000000000..218170d00
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/index.ts
@@ -0,0 +1,32 @@
+import { Diagram, Node, Connector, DiagramElement } from '@syncfusion/ej2-diagrams';
+
+// Initialize the diagram with enableCollaborativeEditing enabled
+let diagram: Diagram = new Diagram({
+ width: '100%',
+ height: '700px',
+ nodes: [],
+ connectors: [],
+ enableCollaborativeEditing: true,
+
+ // Listen to history changes
+ historyChange: function(args: any): void {
+ if (args) {
+ // Get diagram updates (incremental changes) and send to hub
+ let diagramChanges = diagram.getDiagramUpdates(args);
+ // When enableCollaborativeEditing is enabled, retrieve diagramChanges only after the group action completes (startGroup/endGroup).
+ if (diagramChanges && diagramChanges.length > 0) {
+ connection?.invoke("BroadcastToOtherUsers", diagramChanges, roomName)
+ .catch((err: Error) => console.error("Send failed:", err));
+ }
+ }
+ }
+});
+
+diagram.appendTo('#diagram');
+
+// Listen for remote changes from other users
+connection?.on("ReceiveData", (diagramChanges: any[]) => {
+ if (diagramChanges && diagramChanges.length > 0) {
+ diagram.setDiagramUpdates(diagramChanges);
+ }
+});
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/js/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/js/index.html
new file mode 100644
index 000000000..75be01539
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/js/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/ts/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/ts/index.html
new file mode 100644
index 000000000..d360819c0
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-diagram-changes/ts/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.css b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.css
new file mode 100644
index 000000000..15a08a877
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.css
@@ -0,0 +1,18 @@
+#container {
+ visibility: hidden;
+}
+
+#loader {
+ color: #008cff;
+ font-family: 'Helvetica Neue','calibiri';
+ font-size: 14px;
+ height: 40px;
+ left: 45%;
+ position: absolute;
+ top: 45%;
+ width: 30%;
+}
+
+#diagram {
+ display: block;
+}
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.js b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.js
new file mode 100644
index 000000000..506f59fb2
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.js
@@ -0,0 +1,46 @@
+// Initialize SignalR connection
+let connection = null;
+let roomName = "Syncfusion";
+let connectionId = null;
+
+function initializeSignalRConnection() {
+ if (connection === null) {
+ // Create connection
+ connection = new signalR.HubConnectionBuilder()
+ .withUrl("<>", {
+ skipNegotiation: true,
+ transport: signalR.HttpTransportType.WebSockets
+ })
+ .withAutomaticReconnect()
+ .build();
+
+ // Triggered when the connection to the SignalR Hub is successfully established
+ connection.on("OnConnectedAsync", onConnectedAsync);
+
+ // Start the connection
+ connection.start()
+ .then(() => {
+ console.log("Connected to SignalR Hub");
+ })
+ .catch((error) => {
+ console.error("Connection failed:", error);
+ });
+ }
+}
+
+function onConnectedAsync(id) {
+ if (id && id.length > 0) {
+ connectionId = id;
+ console.log("Connection ID:", connectionId);
+ // Join the room after connection is established
+ connection.invoke("JoinDiagram", roomName)
+ .catch((error) => {
+ console.error("JoinDiagram failed:", error);
+ });
+ }
+}
+
+// Initialize connection when document is ready
+document.addEventListener("DOMContentLoaded", function() {
+ initializeSignalRConnection();
+});
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.ts b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.ts
new file mode 100644
index 000000000..59bc0040e
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/index.ts
@@ -0,0 +1,48 @@
+import * as signalR from "@microsoft/signalr";
+
+// Initialize SignalR connection
+let connection: signalR.HubConnection | null = null;
+let roomName: string = "Syncfusion";
+let connectionId: string | null = null;
+
+function initializeSignalRConnection(): void {
+ if (connection === null) {
+ // Create connection
+ connection = new signalR.HubConnectionBuilder()
+ .withUrl("<>", {
+ skipNegotiation: true,
+ transport: signalR.HttpTransportType.WebSockets
+ })
+ .withAutomaticReconnect()
+ .build();
+
+ // Triggered when the connection to the SignalR Hub is successfully established
+ connection.on("OnConnectedAsync", onConnectedAsync);
+
+ // Start the connection
+ connection.start()
+ .then(() => {
+ console.log("Connected to SignalR Hub");
+ })
+ .catch((error: Error) => {
+ console.error("Connection failed:", error);
+ });
+ }
+}
+
+function onConnectedAsync(id: string): void {
+ if (id && id.length > 0) {
+ connectionId = id;
+ console.log("Connection ID:", connectionId);
+ // Join the room after connection is established
+ connection?.invoke("JoinDiagram", roomName)
+ .catch((error: Error) => {
+ console.error("JoinDiagram failed:", error);
+ });
+ }
+}
+
+// Initialize connection when document is ready
+document.addEventListener("DOMContentLoaded", function() {
+ initializeSignalRConnection();
+});
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/js/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/js/index.html
new file mode 100644
index 000000000..75be01539
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/js/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/ts/index.html b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/ts/index.html
new file mode 100644
index 000000000..d360819c0
--- /dev/null
+++ b/ej2-javascript/code-snippet/diagram/collaborative-editing-signalr-config/ts/index.html
@@ -0,0 +1,36 @@
+
+
+
+ EJ2 Diagram
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/js/index.html b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/js/index.html
index e851e897a..1b94fa4d0 100644
--- a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/js/index.html
+++ b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/js/index.html
@@ -8,12 +8,23 @@
+<<<<<<< HEAD
+=======
+
+
+
+
+
+
+
+
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
diff --git a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/ts/index.html b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/ts/index.html
index b6fdbe444..6c18a2aad 100644
--- a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/ts/index.html
+++ b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/gemini-ai/ts/index.html
@@ -8,12 +8,23 @@
+<<<<<<< HEAD
+=======
+
+
+
+
+
+
+
+
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
diff --git a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/js/index.html b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/js/index.html
index a2462b5ef..65f76399a 100644
--- a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/js/index.html
+++ b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/js/index.html
@@ -8,12 +8,23 @@
+<<<<<<< HEAD
+=======
+
+
+
+
+
+
+
+
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
diff --git a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/ts/index.html b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/ts/index.html
index ad400ce12..fbafb11b4 100644
--- a/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/ts/index.html
+++ b/ej2-javascript/code-snippet/inline-ai-assist/ai-integrations/lite-llm/ts/index.html
@@ -8,12 +8,23 @@
+<<<<<<< HEAD
+=======
+
+
+
+
+
+
+
+
+>>>>>>> e37f115121f915d649ead0f12c6aac170faa1144
+
+
+
+
+
+
+
+
+
+
+
+