diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/start-trial-download-offline-installer.PNG b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/start-trial-download-offline-installer.PNG index 6a3c886aea..919367703d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/start-trial-download-offline-installer.PNG and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/start-trial-download-offline-installer.PNG differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-1.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-1.png index bd346c8104..c40f4a3b8d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-1.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-1.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-2.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-2.png index 1a8ef3e489..d41e71863b 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-2.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-3.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-3.png index eaee024f8d..bcb855fbc0 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-3.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-3.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-4.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-4.png index c5acdce561..fa714076e3 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-4.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-5.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-5.png index bf790bdf10..8ce26c6116 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-5.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-7.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-7.png index c7e9ce9dd3..9eb26ac252 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-7.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-7.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-8.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-8.png index 4a5b0a8eb6..cb609bc83f 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-8.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-9.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-9.png index f16926e525..0cc5df1ab9 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-9.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/offline-installer/images/webofflineinstaller-9.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/start-trial-download-web-installer.PNG b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/start-trial-download-web-installer.PNG index 5f2f415362..03348886ef 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/start-trial-download-web-installer.PNG and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/start-trial-download-web-installer.PNG differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-1.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-1.png index 9b8cc0be20..c164fb85a1 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-1.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-1.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-10.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-10.png index 1a055d8241..d30eb51f2d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-10.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-10.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-11.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-11.png index 9c85a9a24d..7dc0cc5552 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-11.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-11.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-12.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-12.png index 4a265e969c..ae345d7c70 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-12.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-12.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-13.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-13.png index a460cc2f08..dd8f7c26a7 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-13.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-13.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-2.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-2.png index 111a09cb04..758747fa1b 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-2.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-3.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-3.png index ef16d4dc69..f91f8bc597 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-3.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-3.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-4.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-4.png index 1c42b7ade0..c9eaa9f49e 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-4.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-5.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-5.png index 43276da4df..c02ee9c6ac 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-5.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-6.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-6.png index c0f8f1d8a3..cbbe1fdf0c 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-6.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-6.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-8.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-8.png index fb2049719d..75c9dd89b5 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-8.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-9.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-9.png index 3156ed95db..e84d042277 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-9.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-9.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-2.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-2.png index f31b55a4ed..c9eaa9f49e 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-2.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-3.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-3.png index ef16d4dc69..f91f8bc597 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-3.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-3.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-4.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-4.png index c0f8f1d8a3..cbbe1fdf0c 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-4.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-5.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-5.png index 3e09e29a86..2e4311ea65 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-5.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-6.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-6.png index 3156ed95db..e84d042277 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-6.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-6.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-7.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-7.png index f93fb583de..6d298e322d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-7.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-7.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-8.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-8.png index f0bfcedef6..66ff3366d1 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-8.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/installation/web-installer/images/webinstaller-uninstall-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.MVC/licensing/images/get-community-license-key.png b/ej2-asp-core-mvc/EJ2_ASP.MVC/licensing/images/get-community-license-key.png index 96a049c2a8..5bfd1cb0cb 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.MVC/licensing/images/get-community-license-key.png and b/ej2-asp-core-mvc/EJ2_ASP.MVC/licensing/images/get-community-license-key.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-1.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-1.png index 1917a7263b..23fc077a12 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-1.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-1.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-2.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-2.png index 8cc6ffb736..7ffc49b400 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-2.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-3.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-3.png index 66efaf7a16..4ce1768cd4 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-3.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-3.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-4.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-4.png index 7b8e399ad7..59156466db 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-4.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-5.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-5.png index c00677e57b..9f68b616d4 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-5.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-7.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-7.png index cc36b688ad..7ff92480ec 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-7.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-7.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-8.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-8.png index 6e38db6010..c4810cb33a 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-8.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-9.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-9.png index 5f12878507..2fa5df0650 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-9.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/offline-9.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/start-trial-download-offline-installer.PNG b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/start-trial-download-offline-installer.PNG index 5932b2c42f..85a38639c6 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/start-trial-download-offline-installer.PNG and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/offline-installer/images/start-trial-download-offline-installer.PNG differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-1.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-1.png index d5212a608c..2870bd4594 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-1.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-1.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-10.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-10.png index 1a055d8241..d30eb51f2d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-10.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-10.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-11.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-11.png index e8e7d86af6..5bee9c15cf 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-11.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-11.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-12.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-12.png index 3aa458a897..50f18ca4aa 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-12.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-12.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-13.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-13.png index 6a997ec90e..9cf8010d32 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-13.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-13.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-2.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-2.png index 89058cf8e8..808e1f2aff 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-2.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-3.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-3.png index 08dda0cc59..7477645175 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-3.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-3.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-4.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-4.png index 018318a243..ce9ecbdac1 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-4.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-5.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-5.png index 43276da4df..4485c5b0c9 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-5.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-6.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-6.png index 37845713fc..cb3faa77fc 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-6.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-6.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-8.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-8.png index 18302de5ae..9d01fea521 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-8.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-9.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-9.png index 89c0b2df4a..d06e1c82b5 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-9.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-Installation-9.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-1.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-1.png index 24bf7ff578..2870bd4594 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-1.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-1.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-10.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-10.png index 1a055d8241..d30eb51f2d 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-10.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-10.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-11.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-11.png index ea67238a1d..a7da4d3a07 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-11.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-11.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-12.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-12.png index 96f7db3725..6a18514f4b 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-12.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-12.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-2.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-2.png index 89058cf8e8..808e1f2aff 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-2.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-2.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-4.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-4.png index 69773183ea..a44a10762f 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-4.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-4.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-5.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-5.png index 08dda0cc59..7477645175 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-5.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-5.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-6.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-6.png index 37845713fc..cb3faa77fc 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-6.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-6.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-8.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-8.png index 18302de5ae..6fa5133405 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-8.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-8.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-9.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-9.png index 89c0b2df4a..d06e1c82b5 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-9.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/Webinstaller-uninstallation-9.png differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/start-trial-download-web-installer.PNG b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/start-trial-download-web-installer.PNG index 752a3b7fee..2eb6b93623 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/start-trial-download-web-installer.PNG and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/installation/web-installer/images/start-trial-download-web-installer.PNG differ diff --git a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/licensing/images/get-community-license-key.png b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/licensing/images/get-community-license-key.png index 96a049c2a8..5bfd1cb0cb 100644 Binary files a/ej2-asp-core-mvc/EJ2_ASP.NETCORE/licensing/images/get-community-license-key.png and b/ej2-asp-core-mvc/EJ2_ASP.NETCORE/licensing/images/get-community-license-key.png differ diff --git a/ej2-asp-core-mvc/Release-notes/29.2.11.md b/ej2-asp-core-mvc/Release-notes/29.2.11.md new file mode 100644 index 0000000000..b72908302d --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/29.2.11.md @@ -0,0 +1,106 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="June 17, 2025" version="v29.2.11" passed="210489" failed="0" %} + +{% directory path: _includes/release-notes/v29.2.11 %} + +{% 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 | 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 | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Carousel | 61 | 61 | 0 | All Passed | +| Chart | 3884 | 3884 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| Checkbox | 37 | 37 | 0 | All Passed | +| CircularGauge | 426 | 426 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 685 | 685 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Dashboard layout | 31 | 31 | 0 | All Passed | +| Data Grid | 2739 | 2739 | 0 | All Passed | +| Date Picker | 422 | 422 | 0 | All Passed | +| Date Range Picker | 419 | 419 | 0 | All Passed | +| Date Time Picker | 322 | 322 | 0 | All Passed | +| Diagram | 18619 | 18619 | 0 | All Passed | +| Dialog | 58 | 58 | 0 | All Passed | +| Document Editor | 3668 | 3668 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 104 | 104 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 2137 | 2137 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| ListView | 83 | 83 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Mention | 35 | 35 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 310 | 310 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17966 | 17966 | 0 | All Passed | +| Pivot Table | 1632 | 1632 | 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 | 45 | 45 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 487 | 487 | 0 | All Passed | +| Rich Text Editor | 4562 | 4562 | 0 | All Passed | +| schedule | 4576 | 4576 | 0 | All Passed | +| sidebar | 88 | 88 | 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 | +| Spreadsheet | 9965 | 9965 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 185 | 185 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| TextBox | 54 | 54 | 0 | All Passed | +| Time Picker | 178 | 178 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 131 | 131 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 2839 | 2839 | 0 | All Passed | +| Treemap | 263 | 263 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| Metafilerenderer | 848 | 848 | 0 | All Passed | +| PDF | 1519 | 1519 | 0 | All Passed | +| Presentation | 99339 | 99339 | 0 | All Passed | +| XlsIO | 17086 | 17086 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/30.1.38.md b/ej2-asp-core-mvc/Release-notes/30.1.38.md new file mode 100644 index 0000000000..893a0fcb8e --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/30.1.38.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 02, 2025" version="v30.1.38" %} + +{% directory path: _includes/release-notes/v30.1.38 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/30.1.39.md b/ej2-asp-core-mvc/Release-notes/30.1.39.md new file mode 100644 index 0000000000..f83cb702e5 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/30.1.39.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 08, 2025" version="v30.1.39" %} + +{% directory path: _includes/release-notes/v30.1.39 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/30.1.40.md b/ej2-asp-core-mvc/Release-notes/30.1.40.md new file mode 100644 index 0000000000..d88ee717f2 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/30.1.40.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 15, 2025" version="v30.1.40" %} + +{% directory path: _includes/release-notes/v30.1.40 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/30.1.41.md b/ej2-asp-core-mvc/Release-notes/30.1.41.md new file mode 100644 index 0000000000..772014b349 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/30.1.41.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 22, 2025" version="v30.1.41" %} + +{% directory path: _includes/release-notes/v30.1.41 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/30.1.42.md b/ej2-asp-core-mvc/Release-notes/30.1.42.md new file mode 100644 index 0000000000..446bdd2a2b --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/30.1.42.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 29, 2025" version="v30.1.42" %} + +{% directory path: _includes/release-notes/v30.1.42 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.37.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.37.md index 98153d40b8..b3784b3e27 100644 --- a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.37.md +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.37.md @@ -1,11 +1,12 @@ --- -title: 2025 Volume 2 Main Release Release Notes -description: 2025 Volume 2 Main Release Release Notes -platform: platform: ej2-asp-core-mvc +title: Essential Studio for ##Platform_Name## 2025 Volume 2 Main Release Release Notes +description: Essential Studio for ##Platform_Name## 2025 Volume 2 Main Release Release Notes +platform: ej2-asp-core-mvc documentation: ug --- -# 2025 Volume 2 Main Release Release Notes + +# Essential Studio for ##Platform_Name## Release Notes {% include release-info.html date="June 25,2025" version="v30.1.37" passed="197739" failed="0" %} diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.38.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.38.md new file mode 100644 index 0000000000..6f97298a89 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.38.md @@ -0,0 +1,92 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 02, 2025" version="v30.1.38" passed="240416" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.38 %} + +{% 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 | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 165 | 165 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 3284 | 3284 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 137 | 137 | 0 | All Passed | +| Common | 713 | 713 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2736 | 2736 | 0 | All Passed | +| Date Picker | 422 | 422 | 0 | All Passed | +| Date Range Picker | 419 | 419 | 0 | All Passed | +| Date Time Picker | 322 | 322 | 0 | All Passed | +| Diagram | 18619 | 18619 | 0 | All Passed | +| Document Editor | 3668 | 3668 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2196 | 2196 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 2992 | 2992 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 310 | 310 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17966 | 17966 | 0 | All Passed | +| Pivot Table | 2714 | 2714 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 487 | 487 | 0 | All Passed | +| Rich Text Editor | 4520 | 4520 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10031 | 10031 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 265 | 265 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 154 | 154 | 0 | All Passed | +| Toolbar | 125 | 125 | 0 | All Passed | +| ToolTip | 147 | 147 | 0 | All Passed | +| TreeGrid | 3116 | 3116 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 344 | 344 | 0 | All Passed | +| DocIO | 38659 | 38659 | 0 | All Passed | +| PDF | 14268 | 14268 | 0 | All Passed | +| Presentation | 50968 | 50968 | 0 | All Passed | +| XlsIO | 43985 | 43985 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.39.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.39.md new file mode 100644 index 0000000000..3781f74fb1 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.39.md @@ -0,0 +1,93 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 08, 2025" version="v30.1.39" passed="239057" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.39 %} + +{% 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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 2302 | 2302 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 1173 | 1173 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2736 | 2736 | 0 | All Passed | +| Date Picker | 422 | 422 | 0 | All Passed | +| Date Range Picker | 419 | 419 | 0 | All Passed | +| Date Time Picker | 322 | 322 | 0 | All Passed | +| Diagram | 18619 | 18619 | 0 | All Passed | +| Document Editor | 3988 | 3988 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 104 | 104 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 2999 | 2999 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 310 | 310 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17966 | 17966 | 0 | All Passed | +| Pivot Table | 1640 | 1640 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 487 | 487 | 0 | All Passed | +| Rich Text Editor | 4094 | 4094 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 185 | 185 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 179 | 179 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 131 | 131 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 1764 | 1764 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 39729 | 39729 | 0 | All Passed | +| PDF | 14275 | 14275 | 0 | All Passed | +| Presentation | 50971 | 50971 | 0 | All Passed | +| XlsIO | 44065 | 44065 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.40.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.40.md new file mode 100644 index 0000000000..d88ee717f2 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.40.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 15, 2025" version="v30.1.40" %} + +{% directory path: _includes/release-notes/v30.1.40 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.41.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.41.md new file mode 100644 index 0000000000..044d2bb474 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.41.md @@ -0,0 +1,92 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 22, 2025" version="v30.1.41" passed="257667" failed="0" %} + +{% directory path: _includes/release-notes/v30.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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 4371 | 4371 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 614 | 614 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2759 | 2759 | 0 | All Passed | +| Date Picker | 425 | 425 | 0 | All Passed | +| Date Range Picker | 420 | 420 | 0 | All Passed | +| Date Time Picker | 323 | 323 | 0 | All Passed | +| Diagram | 19122 | 19122 | 0 | All Passed | +| Document Editor | 4015 | 4015 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 3004 | 3004 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 360 | 360 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17901 | 17901 | 0 | All Passed | +| Pivot Table | 3801 | 3801 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 496 | 496 | 0 | All Passed | +| Rich Text Editor | 4439 | 4439 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 192 | 192 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 180 | 180 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 132 | 132 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 3445 | 3445 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 52165 | 52165 | 0 | All Passed | +| PDF | 14320 | 14320 | 0 | All Passed | +| Presentation | 50974 | 50974 | 0 | All Passed | +| XlsIO | 44065 | 44065 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.42.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.42.md new file mode 100644 index 0000000000..684b64068c --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.MVC/30.1.42.md @@ -0,0 +1,93 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 29, 2025" version="v30.1.42" passed="248215" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.42 %} + +{% 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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 4494 | 4494 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 713 | 713 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2751 | 2751 | 0 | All Passed | +| Date Picker | 425 | 425 | 0 | All Passed | +| Date Range Picker | 420 | 420 | 0 | All Passed | +| Date Time Picker | 323 | 323 | 0 | All Passed | +| Diagram | 19122 | 19122 | 0 | All Passed | +| Document Editor | 4206 | 4206 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 3011 | 3011 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1247 | 1247 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 360 | 360 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 18612 | 18612 | 0 | All Passed | +| Pivot Table | 5294 | 5294 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 140 | 140 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 496 | 496 | 0 | All Passed | +| Rich Text Editor | 4544 | 4544 | 0 | All Passed | +| schedule | 4600 | 4600 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stepper | 104 | 104 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 192 | 192 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 180 | 180 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 132 | 132 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 3471 | 3471 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 39817 | 39817 | 0 | All Passed | +| PDF | 14345 | 14345 | 0 | All Passed | +| Presentation | 50976 | 50976 | 0 | All Passed | +| XlsIO | 44102 | 44102 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.37.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.37.md index 9c34f7c646..406152e6ed 100644 --- a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.37.md +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.37.md @@ -1,11 +1,11 @@ --- -title: 2025 Volume 2 Main Release Release Notes -description: 2025 Volume 2 Main Release Release Notes -platform: platform: ej2-asp-core-mvc +title: Essential Studio for ##Platform_Name## 2025 Volume 2 Main Release Release Notes +description: Essential Studio for ##Platform_Name## 2025 Volume 2 Main Release Release Notes +platform: ej2-asp-core-mvc documentation: ug --- -# 2025 Volume 2 Main Release Release Notes +# Essential Studio for ##Platform_Name## Release Notes {% include release-info.html date="June 25,2025" version="v30.1.37" passed="196608" failed="0" %} diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.38.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.38.md new file mode 100644 index 0000000000..d4e5cb246b --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.38.md @@ -0,0 +1,93 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 02, 2025" version="v30.1.38" passed="193837" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.38 %} + +{% 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 | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 165 | 165 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 3284 | 3284 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 137 | 137 | 0 | All Passed | +| Common | 713 | 713 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2736 | 2736 | 0 | All Passed | +| Date Picker | 422 | 422 | 0 | All Passed | +| Date Range Picker | 419 | 419 | 0 | All Passed | +| Date Time Picker | 322 | 322 | 0 | All Passed | +| Diagram | 18619 | 18619 | 0 | All Passed | +| Document Editor | 3668 | 3668 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2196 | 2196 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 2992 | 2992 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 310 | 310 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17966 | 17966 | 0 | All Passed | +| Pivot Table | 2714 | 2714 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 487 | 487 | 0 | All Passed | +| Rich Text Editor | 4520 | 4520 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10031 | 10031 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 265 | 265 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 154 | 154 | 0 | All Passed | +| Toolbar | 125 | 125 | 0 | All Passed | +| ToolTip | 147 | 147 | 0 | All Passed | +| TreeGrid | 3116 | 3116 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 344 | 344 | 0 | All Passed | +| DocIO | 16250 | 16250 | 0 | All Passed | +| Metafilerenderer | 853 | 853 | 0 | All Passed | +| PDF | 12782 | 12782 | 0 | All Passed | +| Presentation | 54259 | 54259 | 0 | All Passed | +| XlsIO | 17157 | 17157 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.39.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.39.md new file mode 100644 index 0000000000..ebda59b7e4 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.39.md @@ -0,0 +1,94 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 08, 2025" version="v30.1.39" passed="191764" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.39 %} + +{% 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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 2302 | 2302 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 1173 | 1173 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2736 | 2736 | 0 | All Passed | +| Date Picker | 422 | 422 | 0 | All Passed | +| Date Range Picker | 419 | 419 | 0 | All Passed | +| Date Time Picker | 322 | 322 | 0 | All Passed | +| Diagram | 18619 | 18619 | 0 | All Passed | +| Document Editor | 3988 | 3988 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 104 | 104 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 2999 | 2999 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 310 | 310 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17966 | 17966 | 0 | All Passed | +| Pivot Table | 1640 | 1640 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 487 | 487 | 0 | All Passed | +| Rich Text Editor | 4094 | 4094 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stepper | 138 | 138 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 185 | 185 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 179 | 179 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 131 | 131 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 1764 | 1764 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 16284 | 16284 | 0 | All Passed | +| Metafilerenderer | 853 | 853 | 0 | All Passed | +| PDF | 13114 | 13114 | 0 | All Passed | +| Presentation | 54261 | 54261 | 0 | All Passed | +| XlsIO | 17235 | 17235 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.40.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.40.md new file mode 100644 index 0000000000..d88ee717f2 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.40.md @@ -0,0 +1,16 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 15, 2025" version="v30.1.40" %} + +{% directory path: _includes/release-notes/v30.1.40 %} + +{% include {{file.url}} %} + +{% enddirectory %} \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.41.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.41.md new file mode 100644 index 0000000000..3f88d21eff --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.41.md @@ -0,0 +1,93 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 22, 2025" version="v30.1.41" passed="197553" failed="0" %} + +{% directory path: _includes/release-notes/v30.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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 4371 | 4371 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 614 | 614 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2759 | 2759 | 0 | All Passed | +| Date Picker | 425 | 425 | 0 | All Passed | +| Date Range Picker | 420 | 420 | 0 | All Passed | +| Date Time Picker | 323 | 323 | 0 | All Passed | +| Diagram | 19122 | 19122 | 0 | All Passed | +| Document Editor | 4015 | 4015 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 3004 | 3004 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1290 | 1290 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 360 | 360 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 17901 | 17901 | 0 | All Passed | +| Pivot Table | 3801 | 3801 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 138 | 138 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 496 | 496 | 0 | All Passed | +| Rich Text Editor | 4439 | 4439 | 0 | All Passed | +| schedule | 4578 | 4578 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 192 | 192 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 180 | 180 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 132 | 132 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 3445 | 3445 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 16348 | 16348 | 0 | All Passed | +| Metafilerenderer | 853 | 853 | 0 | All Passed | +| PDF | 12710 | 12710 | 0 | All Passed | +| Presentation | 54264 | 54264 | 0 | All Passed | +| XlsIO | 17235 | 17235 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.42.md b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.42.md new file mode 100644 index 0000000000..e576d0a7e5 --- /dev/null +++ b/ej2-asp-core-mvc/Release-notes/EJ2_ASP.NETCORE/30.1.42.md @@ -0,0 +1,94 @@ +--- +title: Essential Studio for ##Platform_Name## Weekly Release Release Notes +description: Essential Studio for ##Platform_Name## Weekly Release Release Notes +platform: ej2-asp-core-mvc +documentation: ug +--- + +# Essential Studio for ##Platform_Name## Release Notes + +{% include release-info.html date="July 29, 2025" version="v30.1.42" passed="200462" failed="0" %} + +{% directory path: _includes/release-notes/v30.1.42 %} + +{% 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 | 205 | 205 | 0 | All Passed | +| AI Assist View | 431 | 431 | 0 | All Passed | +| AutoComplete | 200 | 200 | 0 | All Passed | +| Breadcrumb | 160 | 160 | 0 | All Passed | +| Bullet Chart | 164 | 164 | 0 | All Passed | +| Button | 145 | 145 | 0 | All Passed | +| ButtonGroup | 120 | 120 | 0 | All Passed | +| calendar | 177 | 177 | 0 | All Passed | +| Chart | 4494 | 4494 | 0 | All Passed | +| Chat UI | 184 | 184 | 0 | All Passed | +| CircularGauge | 429 | 429 | 0 | All Passed | +| ColorPicker | 130 | 130 | 0 | All Passed | +| Combo Box | 136 | 136 | 0 | All Passed | +| Common | 713 | 713 | 0 | All Passed | +| Context Menu | 105 | 105 | 0 | All Passed | +| Data Grid | 2751 | 2751 | 0 | All Passed | +| Date Picker | 425 | 425 | 0 | All Passed | +| Date Range Picker | 420 | 420 | 0 | All Passed | +| Date Time Picker | 323 | 323 | 0 | All Passed | +| Diagram | 19122 | 19122 | 0 | All Passed | +| Document Editor | 4206 | 4206 | 0 | All Passed | +| DropDown Button | 132 | 132 | 0 | All Passed | +| Dropdown List | 191 | 191 | 0 | All Passed | +| Dropdown Tree | 105 | 105 | 0 | All Passed | +| File Manager | 2187 | 2187 | 0 | All Passed | +| Floating Action Button | 174 | 174 | 0 | All Passed | +| Gantt | 3011 | 3011 | 0 | All Passed | +| HeatMap Chart | 478 | 478 | 0 | All Passed | +| Image Editor | 1653 | 1653 | 0 | All Passed | +| In-place Editor | 642 | 642 | 0 | All Passed | +| Kanban | 268 | 268 | 0 | All Passed | +| LinearGauge | 426 | 426 | 0 | All Passed | +| Listbox | 115 | 115 | 0 | All Passed | +| Maps | 1247 | 1247 | 0 | All Passed | +| Menu | 187 | 187 | 0 | All Passed | +| Multicolumn Combo Box | 254 | 254 | 0 | All Passed | +| Multiselect Dropdown | 360 | 360 | 0 | All Passed | +| OTP Input | 240 | 240 | 0 | All Passed | +| PDF Viewer | 18612 | 18612 | 0 | All Passed | +| Pivot Table | 5294 | 5294 | 0 | All Passed | +| Progress Button | 132 | 132 | 0 | All Passed | +| Query Builder | 480 | 480 | 0 | All Passed | +| RangeNavigator | 140 | 140 | 0 | All Passed | +| Rating | 201 | 201 | 0 | All Passed | +| Ribbon | 496 | 496 | 0 | All Passed | +| Rich Text Editor | 4544 | 4544 | 0 | All Passed | +| schedule | 4600 | 4600 | 0 | All Passed | +| Signature | 105 | 105 | 0 | All Passed | +| Skeleton | 144 | 144 | 0 | All Passed | +| Slider | 147 | 147 | 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 | +| Spreadsheet | 10372 | 10372 | 0 | All Passed | +| Stepper | 104 | 104 | 0 | All Passed | +| Stock Chart | 379 | 379 | 0 | All Passed | +| Tab | 192 | 192 | 0 | All Passed | +| Text Area | 107 | 107 | 0 | All Passed | +| Time Picker | 180 | 180 | 0 | All Passed | +| Timeline | 213 | 213 | 0 | All Passed | +| Toast | 139 | 139 | 0 | All Passed | +| Toolbar | 132 | 132 | 0 | All Passed | +| ToolTip | 131 | 131 | 0 | All Passed | +| TreeGrid | 3471 | 3471 | 0 | All Passed | +| Treemap | 264 | 264 | 0 | All Passed | +| Treeview | 370 | 370 | 0 | All Passed | +| DocIO | 16352 | 16352 | 0 | All Passed | +| Metafilerenderer | 863 | 863 | 0 | All Passed | +| PDF | 12737 | 12737 | 0 | All Passed | +| Presentation | 54266 | 54266 | 0 | All Passed | +| XlsIO | 17269 | 17269 | 0 | All Passed | \ No newline at end of file diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/appearance.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/appearance.md new file mode 100644 index 0000000000..b9b1632c75 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/appearance.md @@ -0,0 +1,65 @@ +--- +layout: post +title: Appearance in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about appearance with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Appearance in ##Platform_Name## Block Editor control + +The Block Editor control provides various appearance customization options to match your application's design requirements. These properties allow you to control the visual styling, layout, and overall look and feel of the editor. + +## Setting width and height + +You can specify the width and height for the Block Editor control using the [Width](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Width) and [Height](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Height) properties. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Width("100%").Height("80vh").Render() +
+ +// Or with specific pixel values +
+ @Html.EJS().BlockEditor("block-editor").Width("800px").Height("500px").Render() +
+ +``` + +## Setting readonly mode + +You can utilize the [Readonly](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_ReadOnly) property to control whether the editor is in read-only mode. When set to `true`, users cannot edit the content but can still view it. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").ReadOnly(true).Render() +
+ +``` + +## Customization using CSS Class + +You can use the [CssClass](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_CssClass) property to customize the appearance of the Block Editor control. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").CssClass("custom-editor-theme").Width("600px").Height("400px").Render() +
+ +``` + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/appearance/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Appearance.cs" %} +{% include code-snippet/block-editor/appearance/appearance.cs %} +{% endhighlight %} +{% endtabs %} + +![Appearance](images/appearance.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/blocks.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/blocks.md new file mode 100644 index 0000000000..ebd34491cf --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/blocks.md @@ -0,0 +1,472 @@ +--- +layout: post +title: Blocks in ##Platform_Name## Block Editor control | Syncfusion +description: Checkout and learn about Blocks with ##Platform_Name## Block Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Blocks in ##Platform_Name## Block Editor control + +The Block Editor control enables you to create block-based content editing solution using various types of blocks. The [Blocks](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Blocks.html) property allows you to define and manage the content structure of your editor. + +## Blocks + +Blocks are the fundamental building elements of the Block Editor. Each block represents a distinct content unit such as a `paragraph`, `heading`, `list`, or specialized content like `code snippets` or `images`. The Block Editor organizes content as a collection of `blocks`, allowing for better structure and formatting options. + +You can configure blocks with various properties such as [Id](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Id), [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Type), [Content](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Content), [Children](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Children) and more to create rich, structured editor. + +## Block types + +The Block Editor supports multiple block types. Each block type offers different formatting and functionality options: + +| Built-in Block Types | Description | +|-----------------------------------------|---------------------------------------------------| +| Paragraph | Default block type for regular text content. | +| Heading1 to Heading4 | Different levels of headings for document structure.| +| CheckList | Interactive to-do lists with checkable items. | +| BulletList | Unordered lists with bullet points. | +| NumberedList | Ordered lists with sequential numbering. | +| Code | Formatted code blocks with syntax highlighting. | +| Quote | Styled block for quotations. | +| Callout | Highlighted block for important information. | +| Divider | Horizontal separator line. | +| ToggleParagraph and ToggleHeading1-4 | Collapsible content blocks. | +| Image | Block for displaying images. | +| Template | Predefined custom templates. | + +### Configure block type + +The Block Editor supports several block types through the `BlockType` enum. +You can configure the type of each block using the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property. The block type determines the appearance and behavior of the content. By default, the block type is set to `Paragraph`. + +### Configure paragraph block + +You can render Paragraph blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Paragraph`. Paragraph blocks are the most common type, used for regular text content. They provide standard text formatting options and serve as the default block type. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Paragraph.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/paragraph.cs %} +{% endhighlight %} +{% endtabs %} + +![Paragraph Block](images/block-paragraph.png) + +### Configure heading block + +You can render Heading blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Heading1`, `Heading2`, `Heading3`, or `Heading4`. Heading blocks (Heading1 to Heading4) are used to create document titles and section headers of varying importance. These blocks help structure your content hierarchically, making it easier to read and navigate. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Heading.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/heading-block/heading.cs %} +{% endhighlight %} +{% endtabs %} + +![Heading Block](images/block-heading.png) + +### Configure toggle blocks + +You can render Toggle blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `ToggleParagraph` or `ToggleHeading1` to `ToggleHeading4`. Toggle blocks allow users to expand or collapse sections, providing a way to hide or show content as needed. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Toggle.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/toggle-block/toggle.cs %} +{% endhighlight %} +{% endtabs %} + +![Toggle Block](images/block-toggle.png) + +### Configure list blocks + +You can render List blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `BulletList`, `NumberedList`, or `Checklist`. Bullet lists and numbered lists are ideal for unordered and ordered items, respectively, while checklist blocks enable interactive to-do lists with checkable items. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="List.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/list-block/list.cs %} +{% endhighlight %} +{% endtabs %} + +![List Block](images/block-list.png) + +### Configure code block + +You can render Code blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Code`. By setting the `CodeSettings` property, you can configure the languages available for syntax highlighting and the default language. The default language is 'javascript'. + +> Refer to the [CodeSettings](#configure-code-settings) section for more details about the code settings. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Code.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/code-block/code.cs %} +{% endhighlight %} +{% endtabs %} + +![Code Block](images/block-code.png) + +### Configure quote block + +You can render Quote blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Quote`. Quote blocks are specially styled for quotations or excerpts. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Quote.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/quote-block/quote.cs %} +{% endhighlight %} +{% endtabs %} + +![Quote Block](images/block-quote.png) + +### Configure callout block + +You can render Callout blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Callout`. They're useful for notes, warnings, or tips that require special attention. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Callout.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/callout-block/callout.cs %} +{% endhighlight %} +{% endtabs %} + +![Callout Block](images/block-callout.png) + +### Configure divider block + +Divider blocks insert horizontal lines that separate different sections of content. You can render Divider blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Divider`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Divider.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/divider-block/divider.cs %} +{% endhighlight %} +{% endtabs %} + +![Divider Block](images/block-divider.png) + +### Configure image block + +You can render Image blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Image`. By setting the [ImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_ImageSettings) property, you can configure the image source, allowed file types, and display dimensions etc. + +> Refer to the [ImageSettings](#configure-image-settings) section for more details about the image settings. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/image-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Image.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/image-block/image.cs %} +{% endhighlight %} +{% endtabs %} + +![Image Block](images/block-image.png) + +### Adding template + +You can render Template blocks by setting the [Type](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockType.html) property as `Template`. Template blocks enable you to use predefined content structures or custom templates. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Template.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/template-block/template.cs %} +{% endhighlight %} +{% endtabs %} + +![Template Block](images/block-template.png) + +## Configure content + +Content in the Block Editor is managed through the [Content](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Content) property of blocks. + +Each content can have properties like `Id`, `Type`, `Content`, `Styles`, and more to customize the appearance and behavior of your text. + +### Setting content type + +You can specify the type of content using the `Type` property. The Block Editor supports several content types through the `ContentType` enum: + +| Built-in Content Type | Description | +|------------------------|-------------------------------------| +| Text | Represents plain text content. | +| Link | Represents a hyperlink. | +| Code | Represents a code snippet. | +| Mention | Represents a user mention. | +| Label | Represents a label or tag. | + +By default, the content type is set to `Text`. + +#### Configure text content + +You can configure Text content by setting the type property to `Text`. The default content type is `Text`. + +#### Configure hyperlink + +You can configure hyperlink content by setting the type property to `Link` and providing the link details through the `LinkSettings` property. + +The `LinkSettings` property allows you to specify the URL and whether the link should open in a new window. + +> Refer to the [LinkSettings](#configure-link-settings) section for more details about the link settings. + +#### Configure inline code + +You can configure inline code content by setting the type property to `Code`. Code content is used for inline code snippets within regular text. + +#### Configure mention + +Mentions are references to users or entities that can be inserted into your content. You can configure mention content by setting the type property to `Mention`. + +Mentions are typically triggered by the `@` character and are linked to the `Users` collection defined in the Block Editor. + +#### Configure Label + +You can configure label content by setting the type property to `Label`. + +By default, labels are triggered by the `$` character. You can customize the label settings using the `LabelSettings` property to define the label items and trigger character. + +> Refer to the [LabelSettings](#configuring-labelSettings) section for more details about the label settings. + +### Setting content styles + +The Block Editor allows you to customize the appearance of content using the `Styles` property. This property provides rich formatting options to style your text and content elements. + +The `Styles` property supports the following formatting options: + +| Style Property | Description | Default Value | +|---------------|-------------|---------------| +| bold | Makes the text bold | false | +| italic | Makes the text italicized | false | +| underline | Adds an underline to the text | false | +| strikethrough | Adds a line through the text | false | +| color | Sets the text color (HEX or RGBA format) | '' | +| bgColor | Sets the background color for the text | '' | +| superscript | Displays the text as superscript | false | +| subscript | Displays the text as subscript | false | +| uppercase | Converts the text to uppercase | false | +| lowercase | Converts the text to lowercase | false | +| custom | Adds custom CSS styles to the text | '' | + +You can apply one or more of these styles to any content element for rich text formatting: + +### Configure link settings +Link settings control the behavior and properties of hyperlinks in your content. You can configure link settings using the `LinkSettings` property. + +The `LinkSettings` property supports the following options: + +| Option | Description | Default Value | +|--------------|-----------------------------------------------------------------------------|---------------| +| url | Specifies the URL of the link. | '' | +| openInNewWindow | Specifies whether the link should open in a new window/tab. | false | + +## Configure indent + +You can specify the indentation level of a block using the [Indent](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Indent) property. This property accepts a numeric value that determines how deeply a block is nested from the left margin. + +By default, the [Indent](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Indent) property is set to `0`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/indent/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Indent.cs" %} +{% include code-snippet/block-editor/blocks/indent/indent.cs %} +{% endhighlight %} +{% endtabs %} + +![Block Indent](images/block-indent.png) + +## Configure checked state + +For blocks that support selection states such as `CheckList`, you can configure the checked state using the [IsChecked](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_IsChecked) property. + +By default, the [IsChecked](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_IsChecked) property is set to `false`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/isChecked/razor %} +{% endhighlight %} +{% highlight c# tabtitle="IsChecked.cs" %} +{% include code-snippet/block-editor/blocks/isChecked/ischecked.cs %} +{% endhighlight %} +{% endtabs %} + +![Block isChecked](images/block-ischecked.png) + +## Configure expanded state + +You can control whether a block is expanded or collapsed using the [IsExpanded](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_IsExpanded) property. By default, this property is set to `false`, meaning the block will be collapsed initially. This setting is only applicable to Toggle blocks. + +## Configure CSS class + +You can apply custom styling to individual blocks using the [CssClass](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_CssClass) property. This property accepts a string containing one or more CSS class names. + +Custom CSS classes allow you to define specialized styling for specific blocks in your editor. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/cssClass/razor %} +{% endhighlight %} +{% highlight c# tabtitle="CssClass.cs" %} +{% include code-snippet/block-editor/blocks/cssClass/cssclass.cs %} +{% endhighlight %} +{% endtabs %} + +![Block cssClass](images/block-cssClass.png) + +## Configure image settings + +For Image blocks, you can configure various aspects using the [ImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_ImageSettings) property. By using this property, you can set the image source, dimensions, save format, allowed file types, and more. + +The [ImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_ImageSettings) property supports the following options: + +| Property | Description | Default Value | +|----------|-------------|---------------| +| src | URL or data URI of the image | '' | +| saveFormat | Format to save the image ('Base64' or 'Blob') | 'Base64' | +| allowedTypes | Array of allowed file extensions | ['.jpg', '.jpeg', '.png'] | +| width | Width of the image (px or %) | '' | +| height | Height of the image (px or %) | '' | +| minWidth | Minimum width for resizing (px or string) | 40 | +| maxWidth | Maximum width for resizing (px or string) | '' | +| minHeight | Minimum height for resizing (px or string) | 40 | +| maxHeight | Maximum height for resizing (px or string) | '' | +| altText | Alternative text for the image | '' | +| cssClass | CSS class(es) to apply to the image | '' | +| readOnly | Prevents modification of the image | false | + +These settings give you fine-grained control over how images appear and behave within your Block Editor. + +## Configure code settings + +For Code blocks, you can configure syntax highlighting and language options using the [CodeSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_CodeSettings) property. + +The [CodeSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_CodeSettings) property supports the following options: + +| Property | Description | Default Value | +|----------|-------------|---------------| +| languages | Array of language options for syntax highlighting | [] | +| defaultLanguage | The default language to use for syntax highlighting | 'javascript' | + +Each language object in the `languages` array should have: +- `language`: The language value used for syntax highlighting +- `label`: The display name shown in the language selector + +## Configuring label settings + +The [LabelSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_LabelSettings) property of the Block Editor provides options for configuring how labels work in your editor. It allows you to define the trigger character and available label items. + +### Built-in items + +The Block Editor comes with offers different built-in options. These include: + +- **Progress**: In-progress, On-hold, Done +- **Priority**: High, Medium, Low + +### Customize label + +You can customize the labels by using the [LabelSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_LabelSettings) property. + +#### Trigger Character configuration + +You can use the `triggerChar` property to specify the character that will trigger the label suggestions popup while typing. The default trigger character is `$`. + +### Label items configuration + +The `labelItems` array allows you to define the available labels in your editor. Each label item can have the following properties: + +| Property | Description | +|-------------|---------------------------------------------| +| `id` | Unique identifier for the label | +| `text` | Display text for the label | +| `groupHeader` | Category/group name for organizing labels | +| `labelColor` | Background color of the label | +| `iconCss` | CSS class for an icon to display with label | + + +When users type the trigger character followed by text, a popup will appear showing matching label items from which they can select. The selected label will be inserted into the content as a Label content item. + +#### Using labels with group headers + +Labels with the same `groupHeader` value will be grouped together in the label selection popup: + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/label-settings/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Label.cs" %} +{% include code-snippet/block-editor/blocks/label-settings/label.cs %} +{% endhighlight %} +{% endtabs %} + +![Block label-settings](images/block-label.png) + +## Configure template + +The Block Editor allows you to use custom templates for specialized content using the [Template](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Template) property. Templates can be defined as strings, functions, or HTML elements. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Template.cs" %} +{% include code-snippet/block-editor/blocks/blockTypes/template-block/template.cs %} +{% endhighlight %} +{% endtabs %} + +![Template Block](images/block-template.png) + +## Configure placeholder + +You can configure placeholder text for block using the [Placeholder](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Placeholder) property. This text appears when the block is empty. The default placeholder for the paragraph block is `Write something or ‘/’ for commands.`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/placeholder/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Placeholder.cs" %} +{% include code-snippet/block-editor/blocks/placeholder/placeholder.cs %} +{% endhighlight %} +{% endtabs %} + +![Block placeholder](images/block-placeholder.png) + +## Configure children + +The Block Editor supports hierarchical content structures through the [Children](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_Children) property. This property allows you to create nested blocks, which is applicable only for Callout and Toggle blocks. + +Child blocks can be configured with all the same properties as top-level blocks. + +### Configure parent id + +For proper hierarchy, you should ensure that the [ParentId](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.Block.html#Syncfusion_EJ2_BlockEditor_Block_ParentId) of each child block matches the `Id` of its parent block. This structure helps maintain the nested relationships within the editor. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/blocks/children/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Children.cs" %} +{% include code-snippet/block-editor/blocks/children/children.cs %} +{% endhighlight %} +{% endtabs %} + +![Block children](images/block-children.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/drag-drop.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/drag-drop.md new file mode 100644 index 0000000000..f9b1e4b2d3 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/drag-drop.md @@ -0,0 +1,40 @@ +--- +layout: post +title: Drag and drop in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Drag and drop with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Drag and drop in ##Platform_Name## Block Editor control + +The drag and drop feature in Block Editor allows users to easily rearrange blocks within the editor by dragging them to different positions. + +## Enable Drag and Drop + +You can control drag and drop operations within Block Editor using the [EnableDragAndDrop](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_EnableDragAndDrop) property. By default, it is set to `true`. + +## Dragging blocks + +When drag and drop is enabled, users can rearrange blocks in the following ways: + +The Block Editor supports both single and multiple block dragging. Users can drag individual blocks or select multiple blocks and drag them together to a new position. + +- **Single Block Dragging**: For single block, users can hover over a block to reveal the drag handle, then click and drag to move it to a new position. + +- **Multiple Block Dragging**: For multiple blocks, users first select the blocks they want to move. Once selected, users can drag the entire group to a new position. + +During the drag operation, the editor provides visual cues to indicate where the blocks will be positioned when dropped. This helps users precisely place blocks where they want it. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/drag-drop/razor %} +{% endhighlight %} +{% highlight c# tabtitle="DragDrop.cs" %} +{% include code-snippet/block-editor/drag-drop/dragdrop.cs %} +{% endhighlight %} +{% endtabs %} + +![Drag and Drop](images/drag-drop.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/editor-menus.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/editor-menus.md new file mode 100644 index 0000000000..7bc1b7117c --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/editor-menus.md @@ -0,0 +1,192 @@ +--- +layout: post +title: Editor Menus in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Editor Menus with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Editor Menus in ##Platform_Name## Block Editor control + +The Block Editor control provides several interactive menus to enhance content creation and editing. These menus offer quick access to various commands and formatting options. + +## Slash command menu + +The Slash Command menu allows users to quickly insert or transform blocks by typing `/` followed by a command. This provides an efficient, keyboard-driven way to interact with the editor. + +### Built-in items + +The Slash Command menu comes with a set of pre-defined commands for all block types: + +- **Headings(Level 1 to 4)**: to insert respective heading blocks. +- **Lists(Bullet, Numbered, Checklist)**: for different list types. +- **Paragraph**: for standard text blocks. +- **Image**: for media insertion. +- **Toggle**: for collapsible content. +- **Callout**: for highlighting important information. +- **Utility(Divider, Quote, Code)**: for other utility blocks. + +### Customize Slash command menu + +You can utilize the [CommandMenu](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_CommandMenu) property on the Block Editor control to customize the Slash Command menu to include your own custom commands and other modifications. + +#### Show or hide tooltip + +By default, the tooltip is displayed when the user hovers over the command item. You can show or hide the tooltip using the [EnableTooltip](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.CommandMenuSettings.html#Syncfusion_EJ2_BlockEditor_CommandMenuSettings_EnableTooltip) property on the command menu settings. + +### Events + +The following events are available in the Slash Command menu. + +|Name|Args|Description| +|---|---|---| +|[Open](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.CommandMenuSettings.html#Syncfusion_EJ2_BlockEditor_CommandMenuSettings_Open)|CommandMenuOpenEventArgs|Triggers when the command menu is opened.| +|[Close](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.CommandMenuSettings.html#Syncfusion_EJ2_BlockEditor_CommandMenuSettings_Close)|CommandMenuCloseEventArgs|Triggers when the command menu is closed.| +|[QueryFiltering](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.CommandMenuSettings.html#Syncfusion_EJ2_BlockEditor_CommandMenuSettings_QueryFiltering)|CommandQueryFilteringEventArgs|Triggers when the user types to filter the command menu items.| +|[ItemClicked](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.CommandMenuSettings.html#Syncfusion_EJ2_BlockEditor_CommandMenuSettings_ItemClicked)|CommandItemClickedEventArgs|Triggers when the user clicks on a command menu item.| + +Below example demonstrates the customization of the Slash Command menu. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/editor-menus/slash-command/razor %} +{% endhighlight %} +{% highlight c# tabtitle="SlashCommand.cs" %} +{% include code-snippet/block-editor/editor-menus/slash-command/slashCommand.cs %} +{% endhighlight %} +{% endtabs %} + +![Slash Command](images/editor-slashcommand.png) + +## Context menu + +The Context menu appears when a user right-clicks within a specific block. It provides context-aware actions relevant to the clicked block or content. + +### Built-in items + +The Context menu offers different built-in options: + +- **Undo/Redo**: Undo and redo actions. +- **Cut/Copy/Paste**: Standard clipboard actions. +- **Indent**: Increase or decrease the indent level of the selected block. +- **Link**: Add or edit a hyperlink. + +### Customize Context menu + +You can utilize the [ContextMenu](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_ContextMenu) property on the Block Editor to customize the Context menu to add specific actions or modify existing ones based on the application needs. + +### Events + +The following events are available in the Context menu. + +|Name|Args|Description| +|---|---|---| +|[BeforeOpen](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.ContextMenuSettings.html#Syncfusion_EJ2_BlockEditor_ContextMenuSettings_BeforeOpen)|ContextMenuBeforeOpenEventArgs|Triggers before the context menu opens.| +|[Open](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.ContextMenuSettings.html#Syncfusion_EJ2_BlockEditor_ContextMenuSettings_Open)|ContextMenuOpenEventArgs|Triggers when the context menu is opened.| +|[BeforeClose](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.ContextMenuSettings.html#Syncfusion_EJ2_BlockEditor_ContextMenuSettings_BeforeClose)|ContextMenuBeforeCloseEventArgs|Triggers before the context menu closes.| +|[Close](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.ContextMenuSettings.html#Syncfusion_EJ2_BlockEditor_ContextMenuSettings_Close)|ContextMenuCloseEventArgs|Triggers when the context menu is closed.| +|[ItemClick](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.ContextMenuSettings.html#Syncfusion_EJ2_BlockEditor_ContextMenuSettings_ItemClick)|ContextMenuItemClickEventArgs|Triggers when a context menu item is clicked.| + +Below example demonstrates the customization of the Context menu. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/editor-menus/context-menu/razor %} +{% endhighlight %} +{% highlight c# tabtitle="ContextMenu.cs" %} +{% include code-snippet/block-editor/editor-menus/context-menu/contextMenu.cs %} +{% endhighlight %} +{% endtabs %} + +![Context Menu](images/editor-contextmenu.png) + +## Block action menu + +The Block Action menu typically appears next to a block when you hover over it and click on the drag handle icon, offering quick actions specific to that block. + +### Built-in items + +The Block Action menu provides convenient actions for managing individual blocks: + +- **Duplicate**: Create a copy of the current block. +- **Delete**: Remove the block from the editor. +- **Move Up**: Move the block one level up in the hierarchy. +- **Move Down**: Move the block one level down in the hierarchy. + +### Customize Block action menu + +You can utilize the [BlockActionsMenu](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockActionsMenu) property on the block editor to customize the Block action menu to include block-specific commands relevant to your application. This allows for highly tailored user experiences. + +#### Show or hide tooltip + +By default, the tooltip is displayed when the user hovers over the action item. You can show or hide the tooltip using the [EnableTooltip](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockActionMenuSettings.html#Syncfusion_EJ2_BlockEditor_BlockActionMenuSettings_EnableTooltip) property on the block action menu settings. + +### Events + +The following events are available in the Block action menu. + +|Name|Args|Description| +|---|---|---| +|[Open](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockActionMenuSettings.html#Syncfusion_EJ2_BlockEditor_BlockActionMenuSettings_Open)|Block actionMenuOpenEventArgs|Triggers when the block action menu is opened.| +|[Close](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockActionMenuSettings.html#Syncfusion_EJ2_BlockEditor_BlockActionMenuSettings_Close)|Block actionMenuCloseEventArgs|Triggers when the block action menu is closed.| +|[ItemClick](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockActionMenuSettings.html#Syncfusion_EJ2_BlockEditor_BlockActionMenuSettings_ItemClick)|Block actionMenuItemClickEventArgs|Triggers when a block action menu item is clicked.| + +Below example demonstrates the customization of the Block action menu. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/editor-menus/block-action/razor %} +{% endhighlight %} +{% highlight c# tabtitle="BlockAction.cs" %} +{% include code-snippet/block-editor/editor-menus/block-action/blockAction.cs %} +{% endhighlight %} +{% endtabs %} + +![Block Action](images/editor-blockaction.png) + +## Inline Toolbar + +The Inline Toolbar appears when a text is selected in the editor, providing quick access to common text formatting actions that apply to the inline content. + +### Built-in items + +The Inline Toolbar includes below built-in formatting options: + +- **Text Styles**: Bold, Italic, Underline, Strikethrough. +- **Superscript/Subscript**: For mathematical or scientific notations. +- **Case Conversion**: Uppercase, Lowercase. +- **Text Color**: Change text color. +- **Background Color**: Change background color. + +### Customize Inline Toolbar + +You can utilize the [InlineToolbar](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_InlineToolbar) property on the Block Editor to customize the Inline Toolbar to add or remove formatting options based on your application's needs. + +Below example demonstrates how to customize the Inline Toolbar. + +#### Show or hide tooltip + +By default, the tooltip is displayed when the user hovers over the toolbar item. You can show or hide the tooltip using the [EnableTooltip](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.InlineToolbarSettings.html#Syncfusion_EJ2_BlockEditor_InlineToolbarSettings_EnableTooltip) property on the inline toolbar settings. + +### Events + +The following events are available in the Inline Toolbar. + +|Name|Args|Description| +|---|---|---| +|[Open](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.InlineToolbarSettings.html#Syncfusion_EJ2_BlockEditor_InlineToolbarSettings_Close)|ToolbarOpenEventArgs|Triggers when the inline toolbar is opened.| +|[Close](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.InlineToolbarSettings.html#Syncfusion_EJ2_BlockEditor_InlineToolbarSettings_Close)|ToolbarCloseEventArgs|Triggers when the inline toolbar is closed.| +|[ItemClicked](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.InlineToolbarSettings.html#Syncfusion_EJ2_BlockEditor_InlineToolbarSettings_ItemClicked)|ToolbarItemClickedEventArgs|Triggers when the user clicks on an inline toolbar item.| + +Below example demonstrates the customization of the Inline Toolbar. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/editor-menus/inline-toolbar/razor %} +{% endhighlight %} +{% highlight c# tabtitle="InlineToolbar.cs" %} +{% include code-snippet/block-editor/editor-menus/inline-toolbar/inlineToolbar.cs %} +{% endhighlight %} +{% endtabs %} diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/events.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/events.md new file mode 100644 index 0000000000..05ba365b06 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/events.md @@ -0,0 +1,284 @@ +--- +layout: post +title: Events in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Events with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Events in ##Platform_Name## Block Editor control + +The Block Editor control provides a comprehensive set of events that allow you to monitor and respond to various user interactions and editor state changes. These events enable you to implement custom behaviors, validation, logging, and integration with other systems. + +## Created + +The [Created](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Created) event is triggered when the Block Editor control is successfully initialized and ready for use. This event is useful for performing setup operations or initializing additional features after the editor is created. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("created").Render() +
+ + + +``` + +## ContentChanged + +The [ContentChanged](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_ContentChanged) event is triggered whenever the content within the editor is modified. This includes content additions, deletions, or any structural modifications to the document. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("contentChanged").Render() +
+ + + +``` + +## SelectionChanged + +The [SelectionChanged](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_SelectionChanged) event is triggered when the user's text selection changes within the editor. This can be useful for updating UI elements based on the current selection. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("selectionChanged").Render() +
+ + + +``` + +## UndoRedoPerformed + +The [UndoRedoPerformed](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_UndoRedoPerformed) event is triggered when an undo or redo operation is executed. This event provides information about the action performed and the state before and after the operation. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("undoRedoPerformed").Render() +
+ + + +``` + +## BlockAdded + +The [BlockAdded](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockAdded) event is triggered when a new block is added to the editor. This includes blocks added through user interaction, paste operations, or programmatic insertion. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockAdded").Render() +
+ + + +``` + +## BlockRemoved + +The [BlockRemoved](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockRemoved) event is triggered when a block is removed from the editor. This can occur through user deletion, cut operations, or programmatic removal. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockRemoved").Render() +
+ + + +``` + +## BlockMoved + +The [BlockMoved](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockMoved) event is triggered when blocks are moved from one position to another within the editor. This includes drag-and-drop operations, through keyboard shortcuts or programmatic block reordering. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockMoved").Render() +
+ + + +``` + +## BlockDragStart + +The [BlockDragStart](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDragStart) event is triggered at the beginning of a block drag operation, providing information about the blocks being dragged and their initial position. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockDragStart").Render() +
+ + + +``` + +## BlockDrag + +The [BlockDrag](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDrag) event is triggered during a drag operation, providing information about the blocks being dragged and their current position. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockDrag").Render() +
+ + + +``` + +## BlockDrop + +The [BlockDrop](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDrop) event is triggered when blocks are successfully dropped at their destination during a drag-and-drop operation. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blockDrop").Render() +
+ + + +``` + +## Focus + +The [Focus](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Focus) event is triggered when the editor gains focus. This is useful for updating UI states and managing editor interactions. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("focus").Render() +
+ + + +``` + +## Blur + +The [Blur](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Blur) event is triggered when the editor loses focus. This is commonly used for auto-saving content or hiding UI elements. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("blur").Render() +
+ + + +``` + +## KeyActionExecuted + +The [KeyActionExecuted](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_KeyActionExecuted) event is triggered when a keyboard shortcut is executed. This provides information about the key combination used and the corresponding action performed. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("keyActionExecuted").Render() +
+ + + +``` + +## BeforePaste + +The [BeforePaste](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BeforePaste) event is triggered before content is pasted into the editor. This event allows you to modify or cancel the paste operation. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("beforePaste").Render() +
+ + + +``` + +## AfterPaste + +The [AfterPaste](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_AfterPaste) event is triggered after content has been successfully pasted into the editor. This is useful for post-processing pasted content or updating related UI elements. + +```cshtml + +
+ @Html.EJS().BlockEditor("block-editor").Created("afterPaste").Render() +
+ + + +``` diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/getting-started.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/getting-started.md index 588efe090d..db785a86e0 100644 --- a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/getting-started.md +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/getting-started.md @@ -57,7 +57,7 @@ Here, the theme and script is referred using CDN inside the `` of `~/Pages ... - + diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/globalization.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/globalization.md new file mode 100644 index 0000000000..426a7715f6 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/globalization.md @@ -0,0 +1,75 @@ +--- +layout: post +title: Globalization in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Globalization with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Globalization in ##Platform_Name## Block Editor control + +## Localization + +The Block Editor can be localized to any culture by defining the text of the Block Editor in the corresponding culture. The default locale of the Block Editor is `en` (English). The following table represents the default text of the Block Editor in `en` culture. + +|KEY|Text| +|----|----| +|`paragraph`|Write something or '/' for commands.| +|`heading1`|Heading 1| +|`heading2`|Heading 2| +|`heading3`|Heading 3| +|`heading4`|Heading 4| +|`toggleParagraph`|Toggle Paragraph| +|`toggleHeading1`|Toggle Heading 1| +|`toggleHeading2`|Toggle Heading 2| +|`toggleHeading3`|Toggle Heading 3| +|`toggleHeading4`|Toggle Heading 4| +|`bulletList`|Add item| +|`numberedList`|Add item| +|`checkList`|Todo| +|`callout`|Write a callout| +|`addIconTooltip`|Click to insert below| +|`dragIconTooltipActionMenu`|Click to open| +|`dragIconTooltip`|(Hold to drag)| +|`insertLink`|Insert Link| +|`linkText`|Text| +|`linkTextPlaceholder`|Link text| +|`linkUrl`|URL| +|`linkUrlPlaceholder`|https://example.com| +|`linkTitle`|Title| +|`linkTitlePlaceholder`|Link title| +|`linkOpenInNewWindow`|Open in new window| +|`linkInsert`|Insert| +|`linkRemove`|Remove| +|`linkCancel`|Cancel| +|`codeCopyTooltip`|Copy code| + +The below example shows adding the German culture locale(`de-DE`) + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/globalization/locale/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Locale.cs" %} +{% include code-snippet/block-editor/globalization/locale/locale.cs %} +{% endhighlight %} +{% endtabs %} + +![Locale](images/locale.png) + +## RTL + +RTL provides an option to switch the text direction and layout of the Block Editor control from right to left by setting the [EnableRtl](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_EnableRtl) property to `true`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/globalization/rtl/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Rtl.cs" %} +{% include code-snippet/block-editor/globalization/rtl/rtl.cs %} +{% endhighlight %} +{% endtabs %} + +![RTL](images/rtl.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/keyboard-shortcuts.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/keyboard-shortcuts.md new file mode 100644 index 0000000000..a318c9635c --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/keyboard-shortcuts.md @@ -0,0 +1,102 @@ +--- +layout: post +title: Keyboard Shortcuts in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Keyboard Shortcuts with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Keyboard Shortcuts in ##Platform_Name## Block Editor control + +The Block Editor control provides comprehensive keyboard shortcuts to enhance productivity and streamline content creation. These shortcuts are organized into different categories based on their functionality, allowing users to quickly access various features without relying on mouse interactions. + +## Content editing and formatting + +These keyboard shortcuts allow for quick access to content editing features like bold, italic, and text formatting options. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Bold | Ctrl + B | + B | +| Italic | Ctrl + I | + I | +| Underline | Ctrl + U | + U | +| Strikethrough | Ctrl + Shift + X | + + X | +| Insert Link | Ctrl + K | + K | + +## Block creation and management + +These shortcuts enable quick creation of different block types and management of existing blocks. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Create Paragraph | Ctrl + Alt + P | + + P | +| Create CheckList | Ctrl + Shift + 7 | + + 7 | +| Create Bullet List | Ctrl + Shift + 8 | + + 8 | +| Create Numbered List | Ctrl + Shift + 9 | + + 9 | +| Create Heading 1 | Ctrl + Alt + 1 | + + 1 | +| Create Heading 2 | Ctrl + Alt + 2 | + + 2 | +| Create Heading 3 | Ctrl + Alt + 3 | + + 3 | +| Create Heading 4 | Ctrl + Alt + 4 | + + 4 | +| Create Quote | Ctrl + Alt + Q | + + Q | +| Create Code Block | Ctrl + Alt + K | + + K | +| Create Callout | Ctrl + Alt + C | + + C | +| Insert Image | Ctrl + Alt + / | + + / | +| Insert Divider | Ctrl + Shift + - | + + - | + +## Block level actions + +These shortcuts provide quick access to block-specific actions like duplication, deletion, indentation and movement. +[For indent, both ctrl+] and tab are supported. For outdent, both ctrl+[ and shift+tab are supported.] + +| Actions | Windows | Mac | +|---------|---------|-----| +| Duplicate Block | Ctrl + D | + D | +| Delete Block | Ctrl + Shift + D | + + D | +| Move Block Up | Ctrl + Shift + | + + | +| Move Block Down | Ctrl + Shift + | + + | +| Increase Indent | Ctrl + ] or Tab | + ] or Tab | +| Decrease Indent | Ctrl + [ or Shift + Tab | + [ or + Tab | + +## General editor operations + +These shortcuts cover general editor functionality including undo/redo operations and clipboard actions. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Undo | Ctrl + Z | + Z | +| Redo | Ctrl + Y | + Y | +| Cut | Ctrl + X | + X | +| Copy | Ctrl + C | + C | +| Paste | Ctrl + V | + V | +| Print | Ctrl + P | + P | + +## Customizing keyboard shortcuts + +You can customize menu level shortcuts such as `Slash Command Menu`, `Block Action Menu` and `Context Menu` on the respective menu settings config by modifying it's `shortcut` property. + +For other operations, you can customize the keyboard shortcuts by configuring the [KeyConfig](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_KeyConfig) property when initializing the Block Editor control. This allows you to override default shortcuts or add new ones according to your application's requirements. + +In the below example, the shortcut for bold formatting is changed to Alt + B and for italic formatting to Alt + I. + +```cshtml +
+ @Html.EJS().BlockEditor("block-editor").KeyConfig(ViewData["keyConfig"]).Render() +
+``` +```cs +using Syncfusion.EJ2.BlockEditor; + +public object keyConfig { get; set; } + +public ActionResult Result() +{ + keyConfig = new + { + bold = "alt+b", + italic = "alt+i" + }; + ViewData["keyConfig"] = keyConfig; + return View(); +} +``` diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/methods.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/methods.md new file mode 100644 index 0000000000..d9132f4b77 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/methods.md @@ -0,0 +1,293 @@ +--- +layout: post +title: Methods in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Methods with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Methods in ##Platform_Name## Block Editor control + +The Block Editor control provides a comprehensive set of public methods that allow you to programmatically interact with and manipulate the editor content. These methods enable you to add, remove, update, and manage blocks, as well as control selection, formatting, and other editor operations. + +## Block Management Methods + +### Adding a block + +You can add a new block to the editor at a specified position using the `addBlock` method. You can also insert the block before or after a target block. + +```cs +// Add a new paragraph block after a specific block +const newBlock = { + id: 'new-block', + type: 'Paragraph', + content: [ + { + type: "Text", + content: 'This is a newly added block' + } + ] +}; + +blockEditorObj.addBlock(newBlock, 'target-block-id', true); // true = after, false = before + +``` + +### Removing a block + +You can remove a block from the editor using the `removeBlock` method. + +```cs +// Remove a block by its ID +blockEditorObj.removeBlock('block-to-remove-id'); +``` + +### Moving a block + +You can move a block from one position to another within the editor using the `moveBlock` method. + +```cs +// Move a block to a new position +blockEditorObj.moveBlock('source-block-id', 'target-block-id'); +``` + +### Updating a block + +You can update the properties of an existing block using the `updateBlock` method. Only the specified properties are modified while others remain unchanged. Returns `true` if the update was successful, `false` otherwise. + +```cs +// Update block properties +blockEditorObj.updateBlock('block-id', { + isChecked: true +}); +``` + +### Getting a block + +You can retrieve a block model by its unique identifier using the `getBlock` method. Returns `null` if the block is not found. + +```cs +// Get a specific block +blockEditorObj.getBlock('block-id'); +``` + +### Getting block count + +You can utilize the `getBlockCount` method to retrieve the total number of blocks in the editor. + +```cs +// Get total block count +blockEditorObj.getBlockCount(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Block.cs" %} +{% include code-snippet/block-editor/methods/block/block.cs %} +{% endhighlight %} +{% endtabs %} + +![Block Method](images/method-block.png) + +## Selection and Cursor Methods + +### Setting text selection + +You can set the text selection within a specific content element using start and end positions with the `setSelection` method. + +```cs +// Select text from position 5 to 15 in a content element +blockEditorObj.setSelection('content-element-id', 5, 15); +``` + +### Setting cursor position + +You can place the cursor at a specific position within a block using the `setCursorPosition` method. + +```cs +// Set cursor at position 10 in a block +blockEditorObj.setCursorPosition('block-id', 10); +``` + +### Getting selected blocks + +You can retrieve the currently selected blocks in the editor using the `getSelectedBlocks` method. Returns `null` if no blocks are selected. + +```cs +// Get all selected blocks +blockEditorObj.getSelectedBlocks(); +``` + +### Getting selection range + +You can get the current selection range in the editor using the `getRange` method. This method returns a `Range` object representing the selected text. Returns `null` if no selection is active. + +```cs +// Get current selection range +blockEditorObj.getRange(); +``` + +### Setting selection range + +You can set the selection range in the editor using the `selectRange` method. This method accepts a `Range` object that defines the start and end positions of the selection within the editor. + +```cs +// Create and select a custom range +blockEditorObj.selectRange(customRange); +``` + +### Selecting a block + +You can select a specific block in the editor using the `selectBlock` method. + +```cs +// Select a complete block +blockEditorObj.selectBlock('block-id'); +``` + +### Selecting all blocks + +You can select all blocks in the editor using the `selectAllBlocks` method. + +```cs +// Select all content in the editor +blockEditorObj.selectAllBlocks(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/selection/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Selection.cs" %} +{% include code-snippet/block-editor/methods/selection/selection.cs %} +{% endhighlight %} +{% endtabs %} + +![Selection Method](images/method-selection.png) + +## Focus Management Methods + +### FocusIn + +You can utilize the `focusIn` method to give focus to the editor. This method ensures that the editor is ready for user input. + +```cs +// Focus the editor +blockEditorObj.focusIn(); +``` + +### FocusOut + +You can remove focus from the editor using the focusOut method. This method clears any active selections and makes the editor inactive for user input. + +```cs +// Remove focus from the editor +blockEditorObj.focusOut(); +``` + +## Formatting Methods + +### Executing toolbar action + +You can execute a built-in toolbar formatting command using the `executeToolbarAction` method. This method is used to apply formatting such as bold, italic, or color to the selected text. + +```cs +// Apply bold formatting +blockEditorObj.executeToolbarAction(BuiltInToolbar.Bold); + +// Apply color formatting with a specific value +blockEditorObj.executeToolbarAction(BuiltInToolbar.Color, '#ff0000'); +``` + +### Enabling toolbar items + +You can enable specific toolbar items in the inline toolbar using the `enableToolbarItems` method. This method accepts a single item or an array of items to be enabled. + +```cs +// Enable specific toolbar item +blockEditorObj.enableToolbarItems('bold'); + +// Work with multiple items +blockEditorObj.enableToolbarItems(['bold', 'italic', 'underline']); +``` + +### Disabling toolbar items + +You can disable specific toolbar items in the inline toolbar using the `disableToolbarItems` method. This method accepts a single item or an array of items to be disabled. + +```cs +// Disable specific toolbar items +blockEditorObj.disableToolbarItems('bold'); + +// Work with multiple items +blockEditorObj.disableToolbarItems(['bold', 'italic', 'underline']); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/formatting/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Formatting.cs" %} +{% include code-snippet/block-editor/methods/formatting/formatting.cs %} +{% endhighlight %} +{% endtabs %} + +![Formatting Method](images/method-formatting.png) + +## Data Export Methods + +### Getting data as JSON + +You can export the editor content in JSON format using the `getDataAsJson` method. This method allows you to export all blocks or a specific block. + +```cs +// Get all blocks as JSON +const allBlocks = blockEditorObj.getDataAsJson(); + +// Get a specific block as JSON +const specificBlock = blockEditorObj.getDataAsJson('block-id'); +``` + +### Getting data as HTML + +You can export the editor content in HTML format using the `getDataAsHtml` method. This method allows you to export all blocks or a specific block. + +```cs +// Get all blocks as HTML +const allBlocksHtml: string = blockEditorObj.getDataAsHtml(); + +// Get a specific block as HTML +const specificBlockHtml: string = blockEditorObj.getDataAsHtml('block-id'); +``` + +### Printing editor content + +You can print the editor content using the `print` method. This method opens a print dialog with the current editor content formatted for printing. + +```cs +// Print the editor content +blockEditorObj.print(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/data/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Data.cs" %} +{% include code-snippet/block-editor/methods/data/data.cs %} +{% endhighlight %} +{% endtabs %} + +![Data Method](images/method-data.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/paste-cleanup.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/paste-cleanup.md new file mode 100644 index 0000000000..774bf08b17 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.MVC/paste-cleanup.md @@ -0,0 +1,108 @@ +--- +layout: post +title: Undo redo in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about undo redo with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Paste Clean-up in ##Platform_Name## Block Editor control + +The Block Editor control provides robust paste clean-up functionalities to ensure that pasted content integrates seamlessly and maintains consistency with the editor's styling and structure. This helps in removing unwanted formatting, scripts, or elements often copied from external sources like web pages or word processors. + +You can configure the paste settings using the [PasteSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) property in the Block Editor control. This property allows you to define various options to control how content is pasted into the editor. + +## Configuring allowed styles + +The [AllowedStyles](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_AllowedStyles) property in the [PasteSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) model allows you to define which CSS styles are permitted when content is pasted into the editor. Any style not included in this list will be stripped from the pasted content. This ensures that only desired visual attributes are preserved, maintaining a clean and consistent look. + +By default, following styles are allowed: + +['font-weight', 'font-style', 'text-decoration', 'text-transform']. + +In the below example, only `font-weight` and `font-style` styles will be retained from the pasted content. All other inline styles will be removed. + +```cshtml +@{ + var allowedStyles = new string[] { "font-style", "font-weight" }; +} +
+ @Html.EJS().BlockEditor("block-editor").PasteSettings(new PasteSettings() { AllowedStyles = allowedStyles }).Render() +
+``` + +## Setting denied tags + +The [DeniedTags](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_DeniedTags) property in [PasteSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) enables you to specify HTML tags that should be completely removed from the pasted content. This is particularly useful for stripping out potentially problematic or irrelevant tags, such as `script` tags, `iframe`s, or any other elements you don't want to allow in the editor. By default, the [DeniedTags](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_DeniedTags) property is an empty array, meaning no tags are removed by default. + +In the below example, any ` + +``` + +## ContentChanged + +The [contentChanged](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_ContentChanged) event is triggered whenever the content within the editor is modified. This includes content additions, deletions, or any structural modifications to the document. + +```cshtml + +
+ +
+ + + +``` + +## SelectionChanged + +The [selectionChanged](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_SelectionChanged) event is triggered when the user's text selection changes within the editor. This can be useful for updating UI elements based on the current selection. + +```cshtml + +
+ +
+ + + +``` + +## UndoRedoPerformed + +The [undoRedoPerformed](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_UndoRedoPerformed) event is triggered when an undo or redo operation is executed. This event provides information about the action performed and the state before and after the operation. + +```cshtml + +
+ +
+ + + +``` + +## BlockAdded + +The [blockAdded](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockAdded) event is triggered when a new block is added to the editor. This includes blocks added through user interaction, paste operations, or programmatic insertion. + +```cshtml + +
+ +
+ + + +``` + +## BlockRemoved + +The [blockRemoved](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockRemoved) lockRemoved` event is triggered when a block is removed from the editor. This can occur through user deletion, cut operations, or programmatic removal. + +```cshtml + +
+ +
+ + + +``` + +## BlockMoved + +The [blockMoved](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockMoved) event is triggered when blocks are moved from one position to another within the editor. This includes drag-and-drop operations, through keyboard shortcuts or programmatic block reordering. + +```cshtml + +
+ +
+ + + +``` + +## BlockDragStart + +The [blockDragStart](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDragStart) event is triggered at the beginning of a block drag operation, providing information about the blocks being dragged and their initial position. + +```cshtml + +
+ +
+ + + +``` + +## BlockDrag + +The [blockDrag](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDrag) event is triggered during a drag operation, providing information about the blocks being dragged and their current position. + +```cshtml + +
+ +
+ + + +``` + +## BlockDrop + +The [blockDrop](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BlockDrop) event is triggered when blocks are successfully dropped at their destination during a drag-and-drop operation. + +```cshtml + +
+ +
+ + + +``` + +## Focus + +The [focus](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Focus) event is triggered when the editor gains focus. This is useful for updating UI states and managing editor interactions. + +```cshtml + +
+ +
+ + + +``` + +## Blur + +The [blur](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_Blur) event is triggered when the editor loses focus. This is commonly used for auto-saving content or hiding UI elements. + +```cshtml + +
+ +
+ + + +``` + +## KeyActionExecuted + +The [keyActionExecuted](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_KeyActionExecuted) event is triggered when a keyboard shortcut is executed. This provides information about the key combination used and the corresponding action performed. + +```cshtml + +
+ +
+ + + +``` + +## BeforePaste + +The [beforePaste](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_BeforePaste) event is triggered before content is pasted into the editor. This event allows you to modify or cancel the paste operation. + +```cshtml + +
+ +
+ + + +``` + +## AfterPaste + +The [afterPaste](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_AfterPaste) event is triggered after content has been successfully pasted into the editor. This is useful for post-processing pasted content or updating related UI elements. + +```cshtml + +
+ +
+ + + +``` diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/getting-started.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/getting-started.md index c9680e7b30..867728814f 100644 --- a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/getting-started.md +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/getting-started.md @@ -59,7 +59,7 @@ Here, the theme and script is referred using CDN inside the `` of `~/Pages ... - + diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/globalization.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/globalization.md new file mode 100644 index 0000000000..9466755dd5 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/globalization.md @@ -0,0 +1,75 @@ +--- +layout: post +title: Globalization in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Globalization with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Globalization in ##Platform_Name## Block Editor control + +## Localization + +The Block Editor can be localized to any culture by defining the text of the Block Editor in the corresponding culture. The default locale of the Block Editor is `en` (English). The following table represents the default text of the Block Editor in `en` culture. + +|KEY|Text| +|----|----| +|`paragraph`|Write something or '/' for commands.| +|`heading1`|Heading 1| +|`heading2`|Heading 2| +|`heading3`|Heading 3| +|`heading4`|Heading 4| +|`toggleParagraph`|Toggle Paragraph| +|`toggleHeading1`|Toggle Heading 1| +|`toggleHeading2`|Toggle Heading 2| +|`toggleHeading3`|Toggle Heading 3| +|`toggleHeading4`|Toggle Heading 4| +|`bulletList`|Add item| +|`numberedList`|Add item| +|`checkList`|Todo| +|`callout`|Write a callout| +|`addIconTooltip`|Click to insert below| +|`dragIconTooltipActionMenu`|Click to open| +|`dragIconTooltip`|(Hold to drag)| +|`insertLink`|Insert Link| +|`linkText`|Text| +|`linkTextPlaceholder`|Link text| +|`linkUrl`|URL| +|`linkUrlPlaceholder`|https://example.com| +|`linkTitle`|Title| +|`linkTitlePlaceholder`|Link title| +|`linkOpenInNewWindow`|Open in new window| +|`linkInsert`|Insert| +|`linkRemove`|Remove| +|`linkCancel`|Cancel| +|`codeCopyTooltip`|Copy code| + +The below example shows adding the German culture locale(`de-DE`) + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/globalization/locale/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Locale.cs" %} +{% include code-snippet/block-editor/globalization/locale/locale.cs %} +{% endhighlight %} +{% endtabs %} + +![Locale](images/locale.png) + +## RTL + +RTL provides an option to switch the text direction and layout of the Block Editor control from right to left by setting the [enableRtl](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_EnableRtl) property to `true`. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/globalization/rtl/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Rtl.cs" %} +{% include code-snippet/block-editor/globalization/rtl/rtl.cs %} +{% endhighlight %} +{% endtabs %} + +![RTL](images/rtl.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/keyboard-shortcuts.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/keyboard-shortcuts.md new file mode 100644 index 0000000000..bbceb0e0b7 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/keyboard-shortcuts.md @@ -0,0 +1,102 @@ +--- +layout: post +title: Keyboard Shortcuts in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Keyboard Shortcuts with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Keyboard Shortcuts in ##Platform_Name## Block Editor control + +The Block Editor control provides comprehensive keyboard shortcuts to enhance productivity and streamline content creation. These shortcuts are organized into different categories based on their functionality, allowing users to quickly access various features without relying on mouse interactions. + +## Content editing and formatting + +These keyboard shortcuts allow for quick access to content editing features like bold, italic, and text formatting options. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Bold | Ctrl + B | + B | +| Italic | Ctrl + I | + I | +| Underline | Ctrl + U | + U | +| Strikethrough | Ctrl + Shift + X | + + X | +| Insert Link | Ctrl + K | + K | + +## Block creation and management + +These shortcuts enable quick creation of different block types and management of existing blocks. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Create Paragraph | Ctrl + Alt + P | + + P | +| Create CheckList | Ctrl + Shift + 7 | + + 7 | +| Create Bullet List | Ctrl + Shift + 8 | + + 8 | +| Create Numbered List | Ctrl + Shift + 9 | + + 9 | +| Create Heading 1 | Ctrl + Alt + 1 | + + 1 | +| Create Heading 2 | Ctrl + Alt + 2 | + + 2 | +| Create Heading 3 | Ctrl + Alt + 3 | + + 3 | +| Create Heading 4 | Ctrl + Alt + 4 | + + 4 | +| Create Quote | Ctrl + Alt + Q | + + Q | +| Create Code Block | Ctrl + Alt + K | + + K | +| Create Callout | Ctrl + Alt + C | + + C | +| Insert Image | Ctrl + Alt + / | + + / | +| Insert Divider | Ctrl + Shift + - | + + - | + +## Block level actions + +These shortcuts provide quick access to block-specific actions like duplication, deletion, indentation and movement. +[For indent, both ctrl+] and tab are supported. For outdent, both ctrl+[ and shift+tab are supported.] + +| Actions | Windows | Mac | +|---------|---------|-----| +| Duplicate Block | Ctrl + D | + D | +| Delete Block | Ctrl + Shift + D | + + D | +| Move Block Up | Ctrl + Shift + | + + | +| Move Block Down | Ctrl + Shift + | + + | +| Increase Indent | Ctrl + ] or Tab | + ] or Tab | +| Decrease Indent | Ctrl + [ or Shift + Tab | + [ or + Tab | + +## General editor operations + +These shortcuts cover general editor functionality including undo/redo operations and clipboard actions. + +| Actions | Windows | Mac | +|---------|---------|-----| +| Undo | Ctrl + Z | + Z | +| Redo | Ctrl + Y | + Y | +| Cut | Ctrl + X | + X | +| Copy | Ctrl + C | + C | +| Paste | Ctrl + V | + V | +| Print | Ctrl + P | + P | + +## Customizing keyboard shortcuts + +You can customize menu level shortcuts such as `Slash Command Menu`, `Block Action Menu` and `Context Menu` on the respective menu settings config by modifying it's `shortcut` property. + +For other operations, you can customize the keyboard shortcuts by configuring the [keyConfig](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.BlockEditor.html#Syncfusion_EJ2_BlockEditor_BlockEditor_KeyConfig) property when initializing the Block Editor control. This allows you to override default shortcuts or add new ones according to your application's requirements. + +In the below example, the shortcut for bold formatting is changed to Alt + B and for italic formatting to Alt + I. + +```cshtml +
+ +
+``` +```cs +using Syncfusion.EJ2.BlockEditor; + +public object keyConfig { get; set; } + +public ActionResult Result() +{ + keyConfig = new + { + bold = "alt+b", + italic = "alt+i" + }; + ViewData["keyConfig"] = keyConfig; + return View(); +} +``` \ No newline at end of file diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/methods.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/methods.md new file mode 100644 index 0000000000..0124112727 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/methods.md @@ -0,0 +1,293 @@ +--- +layout: post +title: Methods in ##Platform_Name## Block Editor Control | Syncfusion +description: Checkout and learn about Methods with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-asp-core-mvc +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Methods in ##Platform_Name## Block Editor control + +The Block Editor control provides a comprehensive set of public methods that allow you to programmatically interact with and manipulate the editor content. These methods enable you to add, remove, update, and manage blocks, as well as control selection, formatting, and other editor operations. + +## Block Management Methods + +### Adding a block + +You can add a new block to the editor at a specified position using the `addBlock` method. You can also insert the block before or after a target block. + +```cs +// Add a new paragraph block after a specific block +const newBlock = { + id: 'new-block', + type: 'Paragraph', + content: [ + { + type: "Text", + content: 'This is a newly added block' + } + ] +}; + +blockEditorObj.addBlock(newBlock, 'target-block-id', true); // true = after, false = before + +``` + +### Removing a block + +You can remove a block from the editor using the `removeBlock` method. + +```cs +// Remove a block by its ID +blockEditorObj.removeBlock('block-to-remove-id'); +``` + +### Moving a block + +You can move a block from one position to another within the editor using the `moveBlock` method. + +```cs +// Move a block to a new position +blockEditorObj.moveBlock('source-block-id', 'target-block-id'); +``` + +### Updating a block + +You can update the properties of an existing block using the `updateBlock` method. Only the specified properties are modified while others remain unchanged. Returns `true` if the update was successful, `false` otherwise. + +```cs +// Update block properties +blockEditorObj.updateBlock('block-id', { + isChecked: true +}); +``` + +### Getting a block + +You can retrieve a block model by its unique identifier using the `getBlock` method. Returns `null` if the block is not found. + +```cs +// Get a specific block +blockEditorObj.getBlock('block-id'); +``` + +### Getting block count + +You can utilize the `getBlockCount` method to retrieve the total number of blocks in the editor. + +```cs +// Get total block count +blockEditorObj.getBlockCount(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/block/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Block.cs" %} +{% include code-snippet/block-editor/methods/block/block.cs %} +{% endhighlight %} +{% endtabs %} + +![Block Method](images/method-block.png) + +## Selection and Cursor Methods + +### Setting text selection + +You can set the text selection within a specific content element using start and end positions with the `setSelection` method. + +```cs +// Select text from position 5 to 15 in a content element +blockEditorObj.setSelection('content-element-id', 5, 15); +``` + +### Setting cursor position + +You can place the cursor at a specific position within a block using the `setCursorPosition` method. + +```cs +// Set cursor at position 10 in a block +blockEditorObj.setCursorPosition('block-id', 10); +``` + +### Getting selected blocks + +You can retrieve the currently selected blocks in the editor using the `getSelectedBlocks` method. Returns `null` if no blocks are selected. + +```cs +// Get all selected blocks +blockEditorObj.getSelectedBlocks(); +``` + +### Getting selection range + +You can get the current selection range in the editor using the `getRange` method. This method returns a `Range` object representing the selected text. Returns `null` if no selection is active. + +```cs +// Get current selection range +blockEditorObj.getRange(); +``` + +### Setting selection range + +You can set the selection range in the editor using the `selectRange` method. This method accepts a `Range` object that defines the start and end positions of the selection within the editor. + +```cs +// Create and select a custom range +blockEditorObj.selectRange(customRange); +``` + +### Selecting a block + +You can select a specific block in the editor using the `selectBlock` method. + +```cs +// Select a complete block +blockEditorObj.selectBlock('block-id'); +``` + +### Selecting all blocks + +You can select all blocks in the editor using the `selectAllBlocks` method. + +```cs +// Select all content in the editor +blockEditorObj.selectAllBlocks(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/selection/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Selection.cs" %} +{% include code-snippet/block-editor/methods/selection/selection.cs %} +{% endhighlight %} +{% endtabs %} + +![Selection Method](images/method-selection.png) + +## Focus Management Methods + +### FocusIn + +You can utilize the `focusIn` method to give focus to the editor. This method ensures that the editor is ready for user input. + +```cs +// Focus the editor +blockEditorObj.focusIn(); +``` + +### FocusOut + +You can remove focus from the editor using the focusOut method. This method clears any active selections and makes the editor inactive for user input. + +```cs +// Remove focus from the editor +blockEditorObj.focusOut(); +``` + +## Formatting Methods + +### Executing toolbar action + +You can execute a built-in toolbar formatting command using the `executeToolbarAction` method. This method is used to apply formatting such as bold, italic, or color to the selected text. + +```cs +// Apply bold formatting +blockEditorObj.executeToolbarAction(BuiltInToolbar.Bold); + +// Apply color formatting with a specific value +blockEditorObj.executeToolbarAction(BuiltInToolbar.Color, '#ff0000'); +``` + +### Enabling toolbar items + +You can enable specific toolbar items in the inline toolbar using the `enableToolbarItems` method. This method accepts a single item or an array of items to be enabled. + +```cs +// Enable specific toolbar item +blockEditorObj.enableToolbarItems('bold'); + +// Work with multiple items +blockEditorObj.enableToolbarItems(['bold', 'italic', 'underline']); +``` + +### Disabling toolbar items + +You can disable specific toolbar items in the inline toolbar using the `disableToolbarItems` method. This method accepts a single item or an array of items to be disabled. + +```cs +// Disable specific toolbar items +blockEditorObj.disableToolbarItems('bold'); + +// Work with multiple items +blockEditorObj.disableToolbarItems(['bold', 'italic', 'underline']); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/formatting/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Formatting.cs" %} +{% include code-snippet/block-editor/methods/formatting/formatting.cs %} +{% endhighlight %} +{% endtabs %} + +![Formatting Method](images/method-formatting.png) + +## Data Export Methods + +### Getting data as JSON + +You can export the editor content in JSON format using the `getDataAsJson` method. This method allows you to export all blocks or a specific block. + +```cs +// Get all blocks as JSON +const allBlocks = blockEditorObj.getDataAsJson(); + +// Get a specific block as JSON +const specificBlock = blockEditorObj.getDataAsJson('block-id'); +``` + +### Getting data as HTML + +You can export the editor content in HTML format using the `getDataAsHtml` method. This method allows you to export all blocks or a specific block. + +```cs +// Get all blocks as HTML +const allBlocksHtml: string = blockEditorObj.getDataAsHtml(); + +// Get a specific block as HTML +const specificBlockHtml: string = blockEditorObj.getDataAsHtml('block-id'); +``` + +### Printing editor content + +You can print the editor content using the `print` method. This method opens a print dialog with the current editor content formatted for printing. + +```cs +// Print the editor content +blockEditorObj.print(); +``` + +Below example demonstrates the usage of the above methods. + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/block-editor/methods/data/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Data.cs" %} +{% include code-snippet/block-editor/methods/data/data.cs %} +{% endhighlight %} +{% endtabs %} + +![Data Method](images/method-data.png) diff --git a/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/paste-cleanup.md b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/paste-cleanup.md new file mode 100644 index 0000000000..e8ee2e39b7 --- /dev/null +++ b/ej2-asp-core-mvc/block-editor/EJ2_ASP.NETCORE/paste-cleanup.md @@ -0,0 +1,121 @@ +--- +layout: post +title: Paste Clean-up in ##Platform_Name## Block Editor control | Syncfusion +description: Checkout and learn about paste clean-up with Syncfusion Essential ##Platform_Name## BlockEditor control, its elements, and more details. +platform: ej2-javascript +control: Block Editor +publishingplatform: ##Platform_Name## +documentation: ug +domainurl: ##DomainURL## +--- + +# Paste Clean-up in ##Platform_Name## Block Editor control + +The Block Editor control provides robust paste clean-up functionalities to ensure that pasted content integrates seamlessly and maintains consistency with the editor's styling and structure. This helps in removing unwanted formatting, scripts, or elements often copied from external sources like web pages or word processors. + +You can configure the paste settings using the [e-blockeditor-pastesettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) tag helper in the Block Editor control. This property allows you to define various options to control how content is pasted into the editor. + +## Configuring allowed styles + +The [allowedStyles](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_AllowedStyles) property in the [e-blockeditor-pastesettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) tag helper allows you to define which CSS styles are permitted when content is pasted into the editor. Any style not included in this list will be stripped from the pasted content. This ensures that only desired visual attributes are preserved, maintaining a clean and consistent look. + +By default, following styles are allowed: + +['font-weight', 'font-style', 'text-decoration', 'text-transform']. + +In the below example, only `font-weight` and `font-style` styles will be retained from the pasted content. All other inline styles will be removed. + +```cshtml + +@{ + var allowedStyles = new string[] { "font-weight", "font-style" }; +} +
+ + + +
+ +``` + +## Setting denied tags + +The [deniedTags](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_DeniedTags) property in [e-blockeditor-pastesettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html) tag helper enables you to specify HTML tags that should be completely removed from the pasted content. This is particularly useful for stripping out potentially problematic or irrelevant tags, such as `script` tags, `iframe`s, or any other elements you don't want to allow in the editor. By default, the [deniedTags](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.BlockEditor.PasteSettings.html#Syncfusion_EJ2_BlockEditor_PasteSettings_DeniedTags) property is an empty array, meaning no tags are removed by default. + +In the below example, any ` + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/appearance/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/appearance/tagHelper new file mode 100644 index 0000000000..03eeed476a --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/appearance/tagHelper @@ -0,0 +1,174 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+

Appearance Configuration Demo

+
+ + +
+
+

Current Status: Editable, Default Theme

+
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/callout.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/callout.cs new file mode 100644 index 0000000000..ff5ebcc086 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/callout.cs @@ -0,0 +1,27 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Callout() +{ + BlocksData.Add(new Block() { + Type = "Callout", + Children = new List() + { + new Block() + { + Id = "callout-content-1", + Type = "Paragraph", + Content = new List(){ + new{ + id = "callout-content-1", + type = "Text", + content = "Important information: This is a callout block used to highlight important content." + } + } + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/tagHelper new file mode 100644 index 0000000000..60b28f3f4d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/callout-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/code.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/code.cs new file mode 100644 index 0000000000..738633748c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/code.cs @@ -0,0 +1,48 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Code() +{ + BlocksData.Add(new Block() + { + Type = "Code", + Content = new List() + { + new + { + type = "Text", + content = "function greeting() {\n console.log(\"Hello, world!\");\n}" + } + }, + CodeSettings = new + { + defaultLanguage = "javascript", + languages = new List() + { + new + { + label = "JavaScript", + language = "javascript" + }, + new + { + label = "TypeScript", + language = "typescript" + }, + new + { + label = "HTML", + language = "html" + }, + new + { + label = "CSS", + language = "css" + } + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/tagHelper new file mode 100644 index 0000000000..93d55db21b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/code-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/divider.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/divider.cs new file mode 100644 index 0000000000..ac8a094124 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/divider.cs @@ -0,0 +1,37 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Divider() +{ + BlocksData.Add(new Block() + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This section discusses the features of the Block Editor." + } + } + }); + BlocksData.Add(new Block() + { + Type = "Divider" + }); + BlocksData.Add(new Block() + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This section covers implementation details and usage examples." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/tagHelper new file mode 100644 index 0000000000..35d8fec1f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/divider-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/heading.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/heading.cs new file mode 100644 index 0000000000..e713094c36 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/heading.cs @@ -0,0 +1,57 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Heading() +{ + BlocksData.Add(new Block + { + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Main Document Title" + } + } + }); + BlocksData.Add(new Block + { + Type = "Heading2", + Content = new List() + { + new + { + type = "Text", + content = "Chapter Overview" + } + } + }); + BlocksData.Add(new Block + { + Type = "Heading3", + Content = new List() + { + new + { + type = "Text", + content = "Section Introduction" + } + } + }); + BlocksData.Add(new Block + { + Type = "Heading4", + Content = new List() + { + new + { + type = "Text", + content = "Sub-section Details" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/tagHelper new file mode 100644 index 0000000000..35d8fec1f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/heading-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/image.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/image.cs new file mode 100644 index 0000000000..db9c449f5c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/image.cs @@ -0,0 +1,30 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Image() +{ + BlocksData.Add(new Block + { + Type = "Image", + ImageSettings = new + { + src = "https://cdn.syncfusion.com/ej2/richtexteditor-resources/RTE-Overview.png", + altText = "Sample image" + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "You can customize images further by configuring properties like allowedTypes for file upload restrictions, saveFormat for storage preferences, and cssClass for custom styling." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/tagHelper new file mode 100644 index 0000000000..55e5e6b08f --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/image-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/list.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/list.cs new file mode 100644 index 0000000000..00fec95469 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/list.cs @@ -0,0 +1,59 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult List() +{ + BlocksData.Add(new Block + { + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "Features of the Block Editor" + } + } + }); + BlocksData.Add(new Block + { + Type = "NumberedList", + Content = new List() + { + new + { + type = "Text", + content = "Step 1: Initialize the Block Editor" + } + } + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "Review documentation" + } + }, + IsChecked = true + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "Implement drag and drop functionality" + } + }, + IsChecked = false + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/tagHelper new file mode 100644 index 0000000000..906573e08a --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/list-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/paragraph.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/paragraph.cs new file mode 100644 index 0000000000..76953671b7 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/paragraph.cs @@ -0,0 +1,21 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Paragraph() +{ + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is a paragraph block example." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/tagHelper new file mode 100644 index 0000000000..35d8fec1f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/paragraph-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/quote.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/quote.cs new file mode 100644 index 0000000000..73654fdf91 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/quote.cs @@ -0,0 +1,21 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Quote() +{ + BlocksData.Add(new Block + { + Type = "Quote", + Content = new List() + { + new + { + type = "Text", + content = "The greatest glory in living lies not in never falling, but in rising every time we fall." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/tagHelper new file mode 100644 index 0000000000..35d8fec1f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/quote-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/razor new file mode 100644 index 0000000000..aa9cf48fa0 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/razor @@ -0,0 +1,40 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/tagHelper new file mode 100644 index 0000000000..bf587345d0 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/tagHelper @@ -0,0 +1,47 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/template.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/template.cs new file mode 100644 index 0000000000..68066374e7 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/template-block/template.cs @@ -0,0 +1,14 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Template() +{ + BlocksData.Add(new Block + { + Type = "Template", + Template = "
\r\n
\r\n 📢\r\n

Important Announcement

\r\n
\r\n
\r\n

The system will be undergoing maintenance on Saturday from 2:00 AM to 4:00 AM.

\r\n

Please save your work before this time to prevent any data loss.

\r\n
\r\n
" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/tagHelper new file mode 100644 index 0000000000..d168dd8348 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/toggle.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/toggle.cs new file mode 100644 index 0000000000..1bc2a21a42 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/blockTypes/toggle-block/toggle.cs @@ -0,0 +1,65 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Toggle() +{ + BlocksData.Add(new Block + { + Type = "ToggleHeading1", + Content = new List() + { + new + { + type = "Text", + content = "Collapsible Section" + } + }, + IsExpanded = true, + Children = new List() + { + new Block() + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This content is inside a toggle section and can be collapsed." + } + } + } + } + }); + BlocksData.Add(new Block + { + Type = "ToggleParagraph", + Content = new List() + { + new + { + type = "Text", + content = "Toggle paragraph section" + } + }, + IsExpanded = false, + Children = new List() + { + new Block() + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This content is initially hidden because isExpanded is set to false." + } + } + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/children.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/children.cs new file mode 100644 index 0000000000..6fae514fa4 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/children.cs @@ -0,0 +1,91 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Children() +{ + BlocksData.Add(new Block + { + Id = "security-callout", + Type = "Callout", + Children = new List() + { + new Block() + { + Id = "security-title", + Parentid = "security-callout", + Type = "Heading3", + Content = new List() + { + new + { + type = "Text", + content = "Security Notice" + } + } + } + } + }); + BlocksData.Add(new Block + { + Id = "security-warning", + ParentId = "security-callout", + Type = "Paragraph", + Content = new List() + { + new + { + id = "paragraph1-content", + type = "Text", + content = "Always validate user input before processing to prevent security vulnerabilities." + } + } + }); + BlocksData.Add(new Block + { + Id = "security-tips", + ParentId = "security-callout", + Type = "Paragraph", + Indent = 1, + Content = new List() + { + new + { + type = "Text", + content = "Use HTTPS for all data transmission" + } + } + }); + BlocksData.Add(new Block + { + Id = "security-tips-2", + ParentId = "security-callout", + Type = "Paragraph", + Indent = 1, + Content = new List() + { + new + { + type = "Text", + content = "Implement proper authentication mechanisms" + } + } + }); + BlocksData.Add(new Block + { + Id = "security-tips-3", + ParentId = "security-callout", + Type = "Paragraph", + Indent = 1, + Content = new List() + { + new + { + type = "Text", + content = "Regularly update dependencies and libraries" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/tagHelper new file mode 100644 index 0000000000..4635367f7e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/children/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/cssclass.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/cssclass.cs new file mode 100644 index 0000000000..7c39f097dd --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/cssclass.cs @@ -0,0 +1,97 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult CssClass() +{ + BlocksData.Add(new Block + { + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Custom CSS Classes in Block Editor" + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + content = "Default paragraph block" + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is an info block" + } + }, + CssClass = "info-block" + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is a warning block" + } + }, + CssClass = "warning-block" + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is a success block" + } + }, + CssClass = "success-block" + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is an error block" + } + }, + CssClass = "error-block" + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is a custom font block" + } + }, + CssClass = "custom-font" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/razor new file mode 100644 index 0000000000..a366261e4c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/razor @@ -0,0 +1,52 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/tagHelper new file mode 100644 index 0000000000..897aadc78d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/cssClass/tagHelper @@ -0,0 +1,59 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/indent.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/indent.cs new file mode 100644 index 0000000000..bacf725d11 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/indent.cs @@ -0,0 +1,60 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Indent() +{ + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + content = "This is a paragraph with no indentation (indent: 0)" + } + }, + Indent = 0 + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This paragraph has one level of indentation (indent: 1)" + } + }, + Indent = 1 + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This paragraph has two levels of indentation (indent: 2)" + } + }, + Indent = 2 + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Back to no indentation" + } + }, + Indent = 0 + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/tagHelper new file mode 100644 index 0000000000..32807f8690 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/indent/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/ischecked.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/ischecked.cs new file mode 100644 index 0000000000..6c35e10f5c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/ischecked.cs @@ -0,0 +1,72 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult IsChecked() +{ + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + content = "Task List:" + } + } + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "Completed task (checked)" + } + }, + IsChecked = true + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "Pending task (unchecked)" + } + }, + IsChecked = false + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "High priority task" + } + }, + IsChecked = true + }); + BlocksData.Add(new Block + { + Type = "CheckList", + Content = new List() + { + new + { + type = "Text", + content = "Low priority task" + } + }, + IsChecked = false + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/tagHelper new file mode 100644 index 0000000000..906573e08a --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/isChecked/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/label.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/label.cs new file mode 100644 index 0000000000..9aa379de25 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/label.cs @@ -0,0 +1,181 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); +public LabelSettingsModel labelSettings { get; set; } +private List labelItems { get; set; } + +public ActionResult Label() +{ + BlocksData.Add(new Block + { + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Project Planning with Custom Labels" + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Type # to add status labels to your tasks." + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Fix homepage layout issue - " + }, + new + { + type = "Label", + id = "bug" + }, + new + { + type = "Text", + content = " " + }, + new + { + type = "Label", + id = "high" + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Update user documentation - " + }, + new + { + type = "Label", + id = "task" + }, + new + { + type = "Text", + content = "" + }, + new + { + type = "Label", + id = "medium" + } + } + }); + BlocksData.Add(new Block + { + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Implement payment gateway - " + }, + new + { + type = "Label", + id = "feature" + }, + new + { + type = "Text", + content = "" + }, + new + { + type = "Label", + id = "critical" + } + } + }); + labelItems = new List() + { + new + { + id = "bug", + text = "Bug", + labelColor = "#ff5252", + groupHeader = "Status" + }, + new + { + id = "task", + text = "Task", + labelColor = "#90caf9", + groupHeader = "Status" + }, + new + { + id = "feature", + text = "Feature", + labelColor = "#81c784", + groupHeader = "Status" + }, + new + { + id = "enhancement", + text = "Enhancement", + labelColor = "#ba68c8", + groupHeader = "Status" + }, + new + { + id = "low", + text = "Low Priority", + labelColor = "#c5e1a5", + groupHeader = "Priority" + }, + new + { + id = "medium", + text = "Medium Priority", + labelColor = "#fff59d", + groupHeader = "Priority" + }, + new + { + id = "high", + text = "High Priority", + labelColor = "#ffab91", + groupHeader = "Priority" + }, + new + { + id = "critical", + text = "Critical", + labelColor = "#ef9a9a", + groupHeader = "Priority" + } + }; + labelSettings = new object() + { + triggerChar = "#", + labelItems = labelItems + }; + ViewBag.labelSettings = labelSettings; + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/razor new file mode 100644 index 0000000000..326ce3d29d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).LabelSettings(ViewBag["labelSettings"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/tagHelper new file mode 100644 index 0000000000..5a5a3c31f8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/label-settings/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/placeholder.cs b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/placeholder.cs new file mode 100644 index 0000000000..e0f301fdc8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/placeholder.cs @@ -0,0 +1,27 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Placeholder() +{ + BlocksData.Add(new Block() { + Type = "Paragraph", + Content = new List(){ + new{ + type = "Text", + content = "This is a sample paragraph block." + } + } + }); + BlocksData.Add(new Block() { + Type = "Paragraph", + Content = new List(){ + new{ + type = "Text", + placeholder = "Start typing your notes or press \"/\" for commands..." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/razor b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/razor new file mode 100644 index 0000000000..88dc542283 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/tagHelper new file mode 100644 index 0000000000..35d8fec1f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/blocks/placeholder/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/dragdrop.cs b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/dragdrop.cs new file mode 100644 index 0000000000..19e3846536 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/dragdrop.cs @@ -0,0 +1,64 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult DragDrop() +{ + BlocksData.Add(new Block() { + Id = "block-1", + Type = "Heading1", + Content = new List() + { + new{ + type = "Text", + content = "Drag and Drop Demo" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-2", + Type = "Paragraph", + Content = new List() + { + new { + type = "Text", + content = "Try rearranging blocks by dragging the handle that appears when hovering over them. You can drag a single block or select multiple blocks to drag them together." + } + } + }); + BlocksData.Add(new Block() { + Id = "block-3", + Type = "BulletList", + Content = new List() + { + new { + type = "Text", + content = "Drag and drop is enabled by default" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-4", + Type = "NumberedList", + Content = new List() + { + new { + type = "Text", + content = "You can select multiple blocks and drag them together" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-5", + Type = "NumberedList", + Content = new List() + { + new { + type = "Text", + content = "Try dragging this block to rearrange the content" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/razor b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/razor new file mode 100644 index 0000000000..ba292477f6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).EnableDragAndDrop(true).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/tagHelper new file mode 100644 index 0000000000..6f74970708 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/drag-drop/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/blockAction.cs b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/blockAction.cs new file mode 100644 index 0000000000..2d37bd9e23 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/blockAction.cs @@ -0,0 +1,70 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); +public List BlockItems { get; set; } +public BlockActionMenuSettings BlockActionMenuSettings { get; set; } + +public ActionResult BlockAction() +{ + BlocksData.Add(new Block() { + Id = "title-block", + Type = "Heading1", + Content = new List() + { + new { + type = "Text", + content = "Block Action Menu Demo" + } + } + }); + BlocksData.Add(new Block() + { + Id = "intro-block", + Type = "Quote", + Content = new List() + { + new { + type = "Text", + content = "Hover over any block and click the drag handle icon to see custom actions." + } + } + }); + BlockItems = new List() + { + new + { + id = "highlight-action", + label = "Highlight Block", + iconCss = "e-icons e-highlight", + tooltip = "Highlight this block" + }, + new + { + id = "copy-content-action", + label = "Copy Content", + iconCss = "e-icons e-copy", + tooltip = "Copy block content to clipboard" + }, + new + { + id = "block-info-action", + label = "Block Info", + tooltip = "Show block information" + } + }; + BlockActionMenuSettings = new BlockActionMenuSettings() + { + Enable = true, + EnableTooltip = false, + PopupHeight = "110px", + PopupWidth = "180px", + Open = "open", + Close = "close", + ItemClick = "itemClick", + Items = BlockItems + }; + ViewData.BlockActionMenuSettings = BlockActionMenuSettings; + ViewBag.BlockItems = BlockItems; + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/razor b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/razor new file mode 100644 index 0000000000..6c044fc17e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/razor @@ -0,0 +1,81 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).BlockActionsMenu((BlockActionMenuSettings)ViewData["BlockActionMenuSettings"]).Render() +
+

Block Action Menu Configuration Demo

+
+

Instructions:

+
    +
  1. + Hover over any block in the editor to see the block action menu +
  2. +
  3. Click on the action menu icon (⋮) next to any block
  4. +
  5. Notice the custom popup size, action items and disabled tooltips
  6. +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/tagHelper new file mode 100644 index 0000000000..3809abb581 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/block-action/tagHelper @@ -0,0 +1,88 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Block Action Menu Configuration Demo

+
+

Instructions:

+
    +
  1. + Hover over any block in the editor to see the block action menu +
  2. +
  3. Click on the action menu icon (⋮) next to any block
  4. +
  5. Notice the custom popup size, action items and disabled tooltips
  6. +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/contextMenu.cs b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/contextMenu.cs new file mode 100644 index 0000000000..15cd77439f --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/contextMenu.cs @@ -0,0 +1,104 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } +public List ContextMenuItems { get; set; } +public ContextMenuSettings ContextMenuSettings { get; set; } + +public ActionResult ContextMenu() +{ + var Items1 = new List(){ + new { + id = "bold-item", + text = "Bold", + iconCss = "e-icons e-bold", + }, + new { + id = "italic-item", + text = "Italic", + iconCss = "e-icons e-italic", + }, + new { + id = "underline-item", + text = "Underline", + iconCss = "e-icons e-underline", + } + }; + var Items2 = new List(){ + new { + id = "export-json", + text = "Export as JSON", + iconCss = "e-icons e-file-json", + }, + new { + id = "export-html", + text = "Export as HTML", + iconCss = "e-icons e-file-html", + }, + new { + id = "export-pdf", + text = "Export as PDF", + iconCss = "e-icons e-file-pdf", + } + }; + ContextMenuItems = new List + { + new { + id = "format-menu", + text = "Format", + iconCss = "e-icons e-format-painter", + items = Items1 + }, + new { separator = true }, + new { + id = "statistics-item", + text = "Block Statistics", + iconCss = "e-icons e-chart" + }, + new { + id = "export-item", + text = "Export Options", + iconCss = "e-icons e-export", + items = Items2 + } + }; + BlocksData = new List + { + new Block + { + Id = "title-block", + Type = "Heading1", + Content = new List + { + new { type = "Text", content = "Context Menu Demo" } + } + }, + new Block + { + Id = "intro-block", + Type = "Quote", + Content = new List + { + new + { + type = "Text", + content = "Right-click anywhere in this editor to open the custom context menu. Try different areas and blocks." + } + } + } + }; + ContextMenuSettings = new ContextMenuSettings() + { + Enable = true, + ShowItemOnClick = true, + BeforeClose = "beforeClose", + BeforeOpen = "beforeOpen", + Open = "open", + Close = "close", + ItemClick = "itemClick", + Items = ContextMenuItems + }; + ViewData["ContextMenuItems"] = ContextMenuItems; + ViewData["ContextMenuSettings"] = ContextMenuSettings; + ViewData["BlocksData"] = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/razor b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/razor new file mode 100644 index 0000000000..997c5f12d2 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/razor @@ -0,0 +1,86 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).ContextMenu((ContextMenuSettings)ViewData["ContextMenuSettings"]).Render() +
+

Context Menu Configuration Demo

+
+

Instructions:

+
    +
  1. Right-click anywhere in the editor to open the context menu
  2. +
  3. Notice the custom popup size, menu items and disabled tooltips
  4. +
  5. Try clicking on items with submenus (they appear on click, not hover)
  6. +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/tagHelper new file mode 100644 index 0000000000..5d6e8e428d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/context-menu/tagHelper @@ -0,0 +1,86 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Context Menu Configuration Demo

+
+

Instructions:

+
    +
  1. Right-click anywhere in the editor to open the context menu
  2. +
  3. Notice the custom popup size, menu items and disabled tooltips
  4. +
  5. Try clicking on items with submenus (they appear on click, not hover)
  6. +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/inlineToolbar.cs b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/inlineToolbar.cs new file mode 100644 index 0000000000..132215809d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/inlineToolbar.cs @@ -0,0 +1,63 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } +public List InlineToolbarItems { get; set; } +public InlineToolbarSettings InlineToolbarSettings { get; set; } + +public ActionResult InlineToolbar() +{ + InlineToolbarItems = new List + { + new { + id = "clear", + iconCss = "e-icons e-format-painter", + item = "Custom", + tooltip = "Format Painter" + }, + new { + id = "highlight", + iconCss = "e-icons e-highlight", + item = "Custom", + tooltip = "Highlight" + } + }; + BlocksData = new List + { + new Block + { + Id = "title-block", + Type = "Heading1", + Content = new List + { + new { type = "Text", content = "Inline Toolbar Demo" } + } + }, + new Block + { + Id = "intro-block", + Type = "Quote", + Content = new List + { + new + { + type = "Text", + content = "Select any text in the editor to open the Inline Toolbar" + } + } + } + }; + InlineToolbarSettings = new InlineToolbarSettings() + { + Enable = true, + EnableTooltip = true, + Width = "80px", + Open = "open", + Close = "close", + ItemClicked = "itemClicked", + Items = InlineToolbarItems + }; + ViewData["InlineToolbarItems"] = InlineToolbarItems; + ViewData["InlineToolbarSettings"] = InlineToolbarSettings; + ViewData["BlocksData"] = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/razor b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/razor new file mode 100644 index 0000000000..e0849376fe --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/razor @@ -0,0 +1,78 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).InlineToolbar((InlineToolbarSettings)ViewData["InlineToolbarSettings"]).Render() +
+

Inline Toolbar Configuration Demo

+
+

Instructions:

+
    +
  1. Select any text in the editor to open the Inline Toolbar
  2. +
  3. Notice the custom popup size, toolbar items and enabled tooltips
  4. +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/tagHelper new file mode 100644 index 0000000000..4b7da0b05c --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/inline-toolbar/tagHelper @@ -0,0 +1,85 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Inline Toolbar Configuration Demo

+
+

Instructions:

+
    +
  1. Select any text in the editor to open the Inline Toolbar
  2. +
  3. Notice the custom popup size, toolbar items and enabled tooltips
  4. +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/razor b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/razor new file mode 100644 index 0000000000..e30d0bf822 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/razor @@ -0,0 +1,85 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).CommandMenu((CommandMenuSettings)ViewData["CommandMenuSettings"]).Render() +
+

Slash Command Menu Configuration Demo

+
+

Instructions:

+
    +
  1. + Click in the editor below and type "/" to open the slash command + menu +
  2. +
  3. Notice the custom popup size, commands and disabled tooltips
  4. +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/slashCommand.cs b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/slashCommand.cs new file mode 100644 index 0000000000..d85f694297 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/slashCommand.cs @@ -0,0 +1,54 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } +public List CommandMenuItems { get; set; } +public CommandMenuSettings CommandMenuSettings { get; set; } + +public ActionResult SlashCommand() +{ + CommandMenuItems = new List + { + new + { + id = "line-cmd", + type = "Divider", + groupHeader = "Utility", + label = "Insert a Line", + iconCss = "e-icons e-divider", + }, + new + { + id = "timestamp-cmd", + groupHeader = "Actions", + label = "Insert Timestamp", + iconCss = "e-icons e-schedule", + } + }; + BlocksData = new List + { + new Block + { + Id = "Paragraph", + Type = "Paragraph", + Content = new List + { + new { type = "Text", content = "Type \"/\" anywhere in this editor to open the custom slash command menu." } + } + } + }; + CommandMenuSettings = new CommandMenuSettings() + { + EnableTooltip = false, + PopupWidth = "350px", + PopupHeight = "400px", + Open = "open", + Close = "close", + ItemClicked = "itemClicked", + QueryFiltering = "queryFiltering", + Commands = CommandMenuItems + }; + ViewData["CommandMenuItems"] = CommandMenuItems; + ViewData["CommandMenuSettings"] = CommandMenuSettings; + ViewData["BlocksData"] = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/tagHelper new file mode 100644 index 0000000000..d13092c96d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/editor-menus/slash-command/tagHelper @@ -0,0 +1,92 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Slash Command Menu Configuration Demo

+
+

Instructions:

+
    +
  1. + Click in the editor below and type "/" to open the slash command + menu +
  2. +
  3. Notice the custom popup size, commands and disabled tooltips
  4. +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/razor b/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/razor index 8234fa4e85..80e2cacaad 100644 --- a/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/razor +++ b/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/razor @@ -6,6 +6,6 @@ \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/tagHelper index 4d951e1d53..10284caeb9 100644 --- a/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/block-editor/getting-started/tagHelper @@ -6,6 +6,6 @@ \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/locale.cs b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/locale.cs new file mode 100644 index 0000000000..884702c565 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/locale.cs @@ -0,0 +1,36 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Locale() +{ + BlocksData.Add(new Block() { + Id = "block-1", + Type = "Heading1", + Content = new List() + { + new{ + type = "Text", + content = "Sample Heading" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-2", + Type = "Paragraph", + Content = new List() + { + new { + type = "Text", + content = "This is a sample paragraph block." + } + } + }); + BlocksData.Add(new Block() + { + Id = "block-3", + Type = "Paragraph" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/razor b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/razor new file mode 100644 index 0000000000..060e3ae7cf --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).Locale("de").Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/tagHelper new file mode 100644 index 0000000000..0809ecf451 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/locale/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/razor b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/razor new file mode 100644 index 0000000000..a637d5639e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).EnableRtl(true).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/rtl.cs b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/rtl.cs new file mode 100644 index 0000000000..87b2047639 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/rtl.cs @@ -0,0 +1,36 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Rtl() +{ + BlocksData.Add(new Block() { + Id = "block-1", + Type = "Heading1", + Content = new List() + { + new{ + type = "Text", + content = "Sample Heading" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-2", + Type = "Paragraph", + Content = new List() + { + new { + type = "Text", + content = "This is a sample paragraph block." + } + } + }); + BlocksData.Add(new Block() + { + Id = "block-3", + Type = "Paragraph" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/tagHelper new file mode 100644 index 0000000000..336f6ed949 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/globalization/rtl/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/block.cs b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/block.cs new file mode 100644 index 0000000000..4c720a83ee --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/block.cs @@ -0,0 +1,48 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Block() +{ + BlocksData.Add( new Block + { + Id = "block-1", + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Sample Heading" + } + } + }); + BlocksData.Add(new Block + { + Id = "block-2", + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is a sample paragraph block." + } + } + }); + BlocksData.Add(new Block + { + Id = "block-3", + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is another paragraph block." + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/razor b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/razor new file mode 100644 index 0000000000..f7e9f86ecc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/razor @@ -0,0 +1,135 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).Created("onCreated").Render() +
+

Block Management Methods

+
+ + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/tagHelper new file mode 100644 index 0000000000..0e558a62ea --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/block/tagHelper @@ -0,0 +1,145 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+

Block Management Methods

+
+ + + + + + +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/data.cs b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/data.cs new file mode 100644 index 0000000000..a9609365ef --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/data.cs @@ -0,0 +1,100 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Data() +{ + BlocksData.Add(new Block + { + Id = "title-block", + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Document Export Demo" + } + } + }); + BlocksData.Add(new Block + { + Id = "intro-paragraph", + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This document demonstrates the data export capabilities of the Block Editor. You can export content as JSON or HTML formats." + } + } + }); + BlocksData.Add(new Block + { + Id = "features-heading", + Type = "Heading2", + Content = new List() + { + new + { + type = "Text", + content = "Export Features" + } + } + }); + BlocksData.Add(new Block + { + Id = "features-list", + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "JSON export for data processing" + } + } + }); + BlocksData.Add(new Block + { + Id = "features-list-2", + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "HTML export for web display" + } + } + }); + BlocksData.Add(new Block + { + Id = "features-list-3", + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "Print functionality for hard copies" + } + } + }); + BlocksData.Add(new Block + { + Id = "code-example", + Type = "Code", + Content = new List() + { + new + { + type = "Text", + content = "var data = editor.getDataAsJson();\nconsole.log(data);" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/razor b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/razor new file mode 100644 index 0000000000..3279f44ed9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/razor @@ -0,0 +1,109 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).Created("onCreated").Render() +
+

Data Export Methods

+
+ + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/tagHelper new file mode 100644 index 0000000000..444422c1ee --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/data/tagHelper @@ -0,0 +1,116 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+

Data Export Methods

+
+ + + + + +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/formatting.cs b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/formatting.cs new file mode 100644 index 0000000000..8f0e359935 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/formatting.cs @@ -0,0 +1,48 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Formatting() +{ + BlocksData.Add(new Block + { + Id = "sample-heading", + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Formatting Demo" + } + } + }); + BlocksData.Add(new Block + { + Id = "sample-paragraph-1", + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "Select this text and apply different formatting options using the buttons below. You can make text bold or change colors for the text." + } + } + }); + BlocksData.Add(new Block + { + Id = "sample-list", + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "List item for formatting demonstration" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/razor b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/razor new file mode 100644 index 0000000000..95d2923900 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/razor @@ -0,0 +1,116 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).Created("onCreated").Render() +
+

Formatting Methods

+
+ + + + +
+
+

Instructions: Select some text in the editor first, then click the formatting buttons to see the effects.

+
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/tagHelper new file mode 100644 index 0000000000..cf5a7e4c5b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/formatting/tagHelper @@ -0,0 +1,124 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+

Formatting Methods

+
+ + + + +
+
+

Instructions: Select some text in the editor first, then click the formatting buttons to see the effects.

+
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/razor b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/razor new file mode 100644 index 0000000000..33e35935bd --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/razor @@ -0,0 +1,153 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).Created("onCreated").Render() +
+

Selection and Cursor Methods

+
+ + + + + + + +
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/selection.cs b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/selection.cs new file mode 100644 index 0000000000..c2e59db170 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/selection.cs @@ -0,0 +1,62 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult Selection() +{ + BlocksData.Add(new Block + { + Id = "heading-block", + Type = "Heading1", + Content = new List() + { + new + { + type = "Text", + content = "Welcome to Block Editor" + } + } + }); + BlocksData.Add(new Block + { + Id = "paragraph-1", + Type = "Paragraph", + Content = new List() + { + new + { + id = "paragraph1-content", + type = "Text", + content = "This is the first paragraph with some sample text content for selection demonstration." + } + } + }); + BlocksData.Add(new Block + { + Id = "paragraph-2", + Type = "Paragraph", + Content = new List() + { + new + { + type = "Text", + content = "This is the second paragraph that can be used for various selection operations." + } + } + }); + BlocksData.Add(new Block + { + Id = "list-block", + Type = "BulletList", + Content = new List() + { + new + { + type = "Text", + content = "First list item" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/tagHelper new file mode 100644 index 0000000000..0c8654a4e8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/methods/selection/tagHelper @@ -0,0 +1,161 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+

Selection and Cursor Methods

+
+ + + + + + + +
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/allowedstyle.cs b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/allowedstyle.cs new file mode 100644 index 0000000000..f1085e46f7 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/allowedstyle.cs @@ -0,0 +1,14 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult AllowedStyle() +{ + BlocksData.Add(new Block() + { + Id = "demo-block", + Type = "Paragraph" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/razor b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/razor new file mode 100644 index 0000000000..2b46b98624 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/razor @@ -0,0 +1,94 @@ +@using Syncfusion.EJ2.BlockEditor + +@{ + var allowedStyles = new string[] { "text-decoration" }; + var deniedTags = new string[] { "script", "iframe" }; + var displayText = string.Format( + @"Paste Cleanup Settings Active: +- Allowed Styles: ['{0}'] +- Denied Tags: ['{1}'] +Copy content from the test area above and paste it into the editor to see the cleanup in action.", + string.Join("', '", allowedStyles), + string.Join("', '", deniedTags) + ); + +} + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).PasteSettings(new PasteSettings() { AllowedStyles = allowedStyles, DeniedTags = deniedTags }).AfterPaste("function(e){ displayOutput(`After Paste Event: Processed content length: ${e.content.length} characters`); }").Created("onEditorCreated").Render() +
+

Test Content to Copy and Paste:

+
+
+

Formatted Heading

+

+ This is a bold paragraph with + italic text and + underlined content. +

+ + +
+ Heavy text and + colored text +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/tagHelper new file mode 100644 index 0000000000..31f5b9db78 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/allowedStyle/tagHelper @@ -0,0 +1,103 @@ +@using Syncfusion.EJ2.BlockEditor + +@{ + var allowedStyles = new string[] { "text-decoration" }; + var deniedTags = new string[] { "script", "iframe" }; + var displayText = string.Format( + @"Paste Cleanup Settings Active: +- Allowed Styles: ['{0}'] +- Denied Tags: ['{1}'] +Copy content from the test area above and paste it into the editor to see the cleanup in action.", + string.Join("', '", allowedStyles), + string.Join("', '", deniedTags) + ); + +} + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Test Content to Copy and Paste:

+
+
+

Formatted Heading

+

+ This is a bold paragraph with + italic text and + underlined content. +

+ + +
+ Heavy text and + colored text +
+
+
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/plaintext.cs b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/plaintext.cs new file mode 100644 index 0000000000..d9e55a76b0 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/plaintext.cs @@ -0,0 +1,14 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult PlainText() +{ + BlocksData.Add(new Block() + { + Id = "demo-block", + Type = "Paragraph" + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/razor b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/razor new file mode 100644 index 0000000000..c837c942c5 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/razor @@ -0,0 +1,92 @@ +@using Syncfusion.EJ2.BlockEditor + +@{ + var keepFormat = false; + var plainText = true; + var displayText = string.Format( + @"Paste Cleanup Settings Active: +- Keep Format: ['{0}'] +- Plain Text: ['{1}'] + Copy content from the test area above and paste it into the editor to see the cleanup in action.", + string.Join("', '", keepFormat), + string.Join("', '", plainText) + ); + +} + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewData["BlocksData"]).PasteSettings(new PasteSettings() { KeepFormat = false, PlainText = true }).AfterPaste("function(e){ displayOutput(`After Paste Event: Processed content length: ${e.content.length} characters`); }").Created("onEditorCreated").Render() +
+

Test Content to Copy and Paste:

+
+
+

Formatted Heading

+

+ This is a bold paragraph with + italic text and + underlined content. +

+
+ Heavy text and + colored text +
+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/tagHelper new file mode 100644 index 0000000000..b983fc9cd3 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/paste-cleanup/plainText/tagHelper @@ -0,0 +1,101 @@ +@using Syncfusion.EJ2.BlockEditor + +@{ + var keepFormat = false; + var plainText = true; + var displayText = string.Format( + @"Paste Cleanup Settings Active: +- Keep Format: ['{0}'] +- Plain Text: ['{1}'] +Copy content from the test area above and paste it into the editor to see the cleanup in action.", + string.Join("', '", keepFormat), + string.Join("', '", plainText) + ); + +} + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + + +
+

Test Content to Copy and Paste:

+
+
+

Formatted Heading

+

+ This is a bold paragraph with + italic text and + underlined content. +

+
+ Heavy text and + colored text +
+
+
+
+
+
+ + + + diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/razor b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/razor new file mode 100644 index 0000000000..4b389bc85d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/razor @@ -0,0 +1,11 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ @Html.EJS().BlockEditor("block-editor").Blocks((List)ViewBag["BlocksData"]).UndoRedoStack(20).Render() +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/tagHelper b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/tagHelper new file mode 100644 index 0000000000..76921630ff --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/tagHelper @@ -0,0 +1,18 @@ +@using Syncfusion.EJ2.BlockEditor + +
+ + + @foreach (var block in ViewBag.BlocksData) + { + + } + + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/undoredo.cs b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/undoredo.cs new file mode 100644 index 0000000000..65852d73f1 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/block-editor/undo-redo/undoredo.cs @@ -0,0 +1,43 @@ +using Syncfusion.EJ2.BlockEditor; + +public List BlocksData { get; set; } = new List(); + +public ActionResult UndoRedo() +{ + BlocksData.Add(new Block() { + Id = "block-1", + Type = "Heading1", + Content = new List() + { + new{ + type = "Text", + content = "Undo/Redo Demo" + } + } + }); + BlocksData.Add(new Block() { + Id = "block-2", + Type = "Paragraph", + Content = new List() + { + new { + type = "Text", + content = "Try adding new blocks or modifying content below:" + } + } + }); + BlocksData.Add(new Block() + { + Id = "block-3", + Type = "Paragraph", + Content = new List() + { + new { + type = "Text", + content = "1. Undo stack set to maximum 40 actions\n2. Press Ctrl+Z to undo\n3. Press Ctrl+Y to redo\n4. Actions include text edits, block moves, additions, deletions" + } + } + }); + ViewBag.BlocksData = BlocksData; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/lastValueLabelCustomization.cs b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/lastValueLabelCustomization.cs new file mode 100644 index 0000000000..af0de66a7b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/lastValueLabelCustomization.cs @@ -0,0 +1,20 @@ +public ActionResult Index() + { + List chartData = new List + { + new LastValueLabelChartData {x= 2005, y= 28 }, + new LastValueLabelChartData{ x= 2006, y= 25 }, + new LastValueLabelChartData{ x= 2007, y= 26 }, + new LastValueLabelChartData{ x= 2008, y= 27 }, + new LastValueLabelChartData{ x= 2009, y= 32 }, + new LastValueLabelChartData{ x= 2010, y= 35 }, + new LastValueLabelChartData{ x= 2011, y= 40 } + }; + ViewBag.dataSource = chartData; + return View(); + } + public class LastValueLabelChartData +{ + public double x; + public double y; + } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/razor b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/razor new file mode 100644 index 0000000000..74aab1c081 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/razor @@ -0,0 +1,15 @@ +@Html.EJS().Chart("container").Series(series => + { + series.Type(Syncfusion.EJ2.Charts.ChartSeriesType.Column). + Marker(marker => marker.Visible(false).DataLabel(dataLabel => dataLabel.Visible(true))). + XName("x"). + YName("y"). + DataSource(ViewBag.dataSource). + Animation(animation => animation.Enable(true)). + LastValueLabel(lastValueLabel => lastValueLabel.Enable(true).Background("blue").LineColor("red").LineWidth("2").DashArray("5,5").Rx(10).Ry(10).Border(br => br.Width(2).Color("red").Font(font => font.Color("white").Size("12px").FontWeight("bold")))). + Name("series1").Add(); + }). + PrimaryXAxis(px => px.Interval(1).Title("Year")). + PrimaryYAxis(py => py.LabelFormat("{value}%").Title("Efficiency")). + Tooltip(tooltip => tooltip.Enable(true)).Width("90%"). + Title("Efficiency of oil-fired power production").Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/tagHelper b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/tagHelper new file mode 100644 index 0000000000..883b3a0955 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label-customization/tagHelper @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label/lastValueLabel.cs b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/lastValueLabel.cs new file mode 100644 index 0000000000..af0de66a7b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/lastValueLabel.cs @@ -0,0 +1,20 @@ +public ActionResult Index() + { + List chartData = new List + { + new LastValueLabelChartData {x= 2005, y= 28 }, + new LastValueLabelChartData{ x= 2006, y= 25 }, + new LastValueLabelChartData{ x= 2007, y= 26 }, + new LastValueLabelChartData{ x= 2008, y= 27 }, + new LastValueLabelChartData{ x= 2009, y= 32 }, + new LastValueLabelChartData{ x= 2010, y= 35 }, + new LastValueLabelChartData{ x= 2011, y= 40 } + }; + ViewBag.dataSource = chartData; + return View(); + } + public class LastValueLabelChartData +{ + public double x; + public double y; + } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label/razor b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/razor new file mode 100644 index 0000000000..ba42d66863 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/razor @@ -0,0 +1,15 @@ +@Html.EJS().Chart("container").Series(series => + { + series.Type(Syncfusion.EJ2.Charts.ChartSeriesType.Column). + Marker(marker => marker.Visible(false).DataLabel(dataLabel => dataLabel.Visible(true))). + XName("x"). + YName("y"). + DataSource(ViewBag.dataSource). + Animation(animation => animation.Enable(true)). + LastValueLabel(lastValueLabel => lastValueLabel.Enable(true)). + Name("series1").Add(); + }). + PrimaryXAxis(px => px.Interval(1).Title("Year")). + PrimaryYAxis(py => py.LabelFormat("{value}%").Title("Efficiency")). + Tooltip(tooltip => tooltip.Enable(true)).Width("90%"). + Title("Efficiency of oil-fired power production").Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/chart/last-value-label/tagHelper b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/tagHelper new file mode 100644 index 0000000000..bbedf75163 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/chart/last-value-label/tagHelper @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/razor new file mode 100644 index 0000000000..f7aec5e3eb --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/razor @@ -0,0 +1,11 @@ +@Html.EJS().DocumentEditorContainer("container").ToolbarMode("Ribbon").EnableToolbar(true).BackstageMenu(new { + text = "File", + backButton = new { text = "close" }, + items = new object[] { + new { id = "new", text = "New", iconCss = "e-icons e-de-ctnr-new" } + } + }).Render() + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/tagHelper new file mode 100644 index 0000000000..317ecf5faa --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-backstage/tagHelper @@ -0,0 +1,12 @@ +> + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/razor b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/razor new file mode 100644 index 0000000000..efeaf0dfc8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/razor @@ -0,0 +1,14 @@ +@Html.EJS().DocumentEditorContainer("container").ToolbarMode("Ribbon").EnableToolbar(true).FileMenuItems(new object[] { + "New", + "Print", + new { text = "Export", id = "custom_item", iconCss = "e-icons e-export" } + }).FileMenuItemClick("onFileMenuItemClick").Render() + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/tagHelper b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/tagHelper new file mode 100644 index 0000000000..160f5f7712 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/document-editor-container/customize-ribbon-file/tagHelper @@ -0,0 +1,15 @@ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/razor b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/razor new file mode 100644 index 0000000000..dd845193d4 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/razor @@ -0,0 +1,26 @@ + + @(Html.EJS().Gantt("WBSColumn").DataSource((IEnumerable)ViewData["DataSource"]).Height("550px") + .TaskFields(ts => ts.Id("TaskId").Name("TaskName").StartDate("StartDate").EndDate("EndDate").Duration("Duration").Progress("Progress").Dependency("Predecessor").ParentID("ParentID")) + .EnableWBS(true).EnableAutoWbsUpdate(true) + .Toolbar(new List { "Add", "Edit", "Update", "Delete", "Cancel", "ExpandAll", "CollapseAll" }) + .EditSettings(es => es.AllowAdding(true).AllowEditing(true).AllowDeleting(true).AllowTaskbarEditing(true).ShowDeleteConfirmDialog(true)) + .AllowSorting(true).EnableContextMenu(true).AllowSelection(true).TreeColumnIndex(2).AllowPdfExport(true) + .SplitterSettings(sp => sp.ColumnIndex(4)) + .SelectionSettings(ss => ss.Mode(Syncfusion.EJ2.Grids.SelectionMode.Row).Type(Syncfusion.EJ2.Grids.SelectionType.Single).EnableToggle(false)) + .TooltipSettings(ts => ts.ShowTooltip(true)) + .FilterSettings(fs => fs.Type(Syncfusion.EJ2.Gantt.FilterType.Menu)) + .TimelineSettings(tl => tl.ShowTooltip(true).TopTier(tt => tt.Format("MMM dd, yyyy").Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Week)).BottomTier(bt => bt.Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Day))) + .HighlightWeekends(true).AllowFiltering(true).GridLines(Syncfusion.EJ2.Gantt.GridLine.Both) + .LabelSettings(ls => ls.TaskLabel("${Progress}%")).TaskbarHeight(20).RowHeight(40).AllowUnscheduledTasks(true) + .EventMarkers(em => { em.Day("04/02/2024").Label("Project Initiation").Add(); }) + .ProjectStartDate("03/31/2024").ProjectEndDate("05/30/2024") + .Columns(col => { + col.Field("TaskId").Visible(false).Add(); + col.Field("WBSCode").Width(150).Add(); + col.Field("TaskName").Width(260).HeaderText("Task Name").AllowReordering(false).Add(); + col.Field("StartDate").HeaderText("Start Date").Width(140).Add(); + col.Field("WBSPredecessor").Width(190).HeaderText("WBS Predecessor").Add(); + col.Field("Duration").HeaderText("Duration").AllowEditing(false).Add(); + col.Field("Progress").HeaderText("Progress").Add(); + }).Render()) + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/tagHelper b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/tagHelper new file mode 100644 index 0000000000..6feee4e124 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/tagHelper @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/wbsColumn.cs b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/wbsColumn.cs new file mode 100644 index 0000000000..c1c1c501bc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumn/wbsColumn.cs @@ -0,0 +1,5 @@ +public IActionResult Index() +{ + ViewBag.DataSource = GanttData.WBSData(); + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/razor b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/razor new file mode 100644 index 0000000000..2c236763b6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/razor @@ -0,0 +1,45 @@ + + @(Html.EJS().Gantt("WBSColumn").DataSource((IEnumerable)ViewData["DataSource"]).Height("550px") + .TaskFields(ts => ts.Id("TaskId").Name("TaskName").StartDate("StartDate").EndDate("EndDate").Duration("Duration").Progress("Progress").Dependency("Predecessor").ParentID("ParentID")) + .EnableWBS(true).EnableAutoWbsUpdate(false) + .Toolbar(new List { "Add", "Edit", "Update", "Delete", "Cancel", "ExpandAll", "CollapseAll" }) + .EditSettings(es => es.AllowAdding(true).AllowEditing(true).AllowDeleting(true).AllowTaskbarEditing(true).ShowDeleteConfirmDialog(true)) + .AllowSorting(true).EnableContextMenu(true).AllowSelection(true).TreeColumnIndex(2).AllowPdfExport(true) + .SplitterSettings(sp => sp.ColumnIndex(4)) + .SelectionSettings(ss => ss.Mode(Syncfusion.EJ2.Grids.SelectionMode.Row).Type(Syncfusion.EJ2.Grids.SelectionType.Single).EnableToggle(false)) + .TooltipSettings(ts => ts.ShowTooltip(true)) + .FilterSettings(fs => fs.Type(Syncfusion.EJ2.Gantt.FilterType.Menu)) + .TimelineSettings(tl => tl.ShowTooltip(true).TopTier(tt => tt.Format("MMM dd, yyyy").Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Week)).BottomTier(bt => bt.Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Day))) + .HighlightWeekends(true).AllowFiltering(true).GridLines(Syncfusion.EJ2.Gantt.GridLine.Both) + .LabelSettings(ls => ls.TaskLabel("${Progress}%")).TaskbarHeight(20).RowHeight(40).AllowUnscheduledTasks(true) + .EventMarkers(em => { em.Day("04/02/2024").Label("Project Initiation").Add(); }) + .ProjectStartDate("03/31/2024").ProjectEndDate("05/30/2024") + .Columns(col => { + col.Field("TaskId").Visible(false).Add(); + col.Field("WBSCode").Width(150).Add(); + col.Field("TaskName").Width(260).HeaderText("Task Name").AllowReordering(false).Add(); + col.Field("StartDate").HeaderText("Start Date").Width(140).Add(); + col.Field("WBSPredecessor").Width(190).HeaderText("WBS Predecessor").Add(); + col.Field("Duration").HeaderText("Duration").AllowEditing(false).Add(); + col.Field("Progress").HeaderText("Progress").Add(); + }).Render()) + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/tagHelper b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/tagHelper new file mode 100644 index 0000000000..0fcf94b5ff --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/tagHelper @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/wbsColumnEvents.cs b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/wbsColumnEvents.cs new file mode 100644 index 0000000000..c1c1c501bc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/columns/wbsColumnEvents/wbsColumnEvents.cs @@ -0,0 +1,5 @@ +public IActionResult Index() +{ + ViewBag.DataSource = GanttData.WBSData(); + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/constraints.cs b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/constraints.cs new file mode 100644 index 0000000000..ab928f419d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/constraints.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using EJ2MVCSampleBrowser.Models; +using EJ2MVCSampleBrowser.Controllers.Schedule; + + +namespace EJ2MVCSampleBrowser.Controllers.Gantt +{ + public partial class GanttChartController : Controller + { + + public ActionResult Constraints() + { + ViewData["DataSource"] = GanttData.ConstraintData(); + return View(); + } + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/razor b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/razor new file mode 100644 index 0000000000..14a91ee2f5 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/razor @@ -0,0 +1,22 @@ +@(Html.EJS().Gantt("Constraint").DataSource((IEnumerable)ViewData["DataSource"]).Height("450px") +.TaskFields(ts => ts.Id("TaskId").Name("TaskName").StartDate("StartDate").EndDate("EndDate").Duration("Duration").Progress("Progress").Dependency("Predecessor").ParentID("ParentID").Notes("info").ConstraintDate("ConstraintDate").ConstraintType("ConstraintType")) +.Toolbar(new List { "Add", "Edit", "Update", "Delete", "Cancel", "ExpandAll", "CollapseAll", "Indent", "Outdent" }) +.EditSettings(es => es.AllowAdding(true).AllowEditing(true).AllowDeleting(true).AllowTaskbarEditing(true).ShowDeleteConfirmDialog(true)) +.AllowSelection(true).GridLines(Syncfusion.EJ2.Gantt.GridLine.Both).HighlightWeekends(true).TreeColumnIndex(1) +.TimelineSettings(ts => ts.TopTier(tt => tt.Format("MMM dd, yyyy").Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Week)).BottomTier(bt => bt.Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Day))) +.EventMarkers(em => { em.Day("03/25/2025").Label("Project StartDate").Add(); em.Day("08/31/2025").Label("Project EndDate").Add(); }) +.Columns(col => { + col.Field("TaskId").Visible(false).Add(); + col.Field("TaskName").HeaderText("Job Name").Width(200).ClipMode(Syncfusion.EJ2.Grids.ClipMode.EllipsisWithTooltip).Add(); + col.Field("StartDate").Add(); + col.Field("Duration").Add(); + col.Field("ConstraintType").HeaderText("Constraint Type").Width(180).Add(); + col.Field("ConstraintDate").HeaderText("Constraint Date").Add(); + col.Field("EndDate").Add(); + col.Field("Predecessor").Add(); + col.Field("Progress").Add(); +}) +.LabelSettings(ls => ls.LeftLabel("TaskName").RightLabel("#rightLabel")) +.SplitterSettings(sp => sp.ColumnIndex(4)) +.ProjectStartDate("03/25/2025").ProjectEndDate("09/01/2025") +.Render()) diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/tagHelper b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/tagHelper new file mode 100644 index 0000000000..f9fb57bbed --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs1/tagHelper @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/constraintsPopup.cs b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/constraintsPopup.cs new file mode 100644 index 0000000000..ab928f419d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/constraintsPopup.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.Mvc; +using EJ2MVCSampleBrowser.Models; +using EJ2MVCSampleBrowser.Controllers.Schedule; + + +namespace EJ2MVCSampleBrowser.Controllers.Gantt +{ + public partial class GanttChartController : Controller + { + + public ActionResult Constraints() + { + ViewData["DataSource"] = GanttData.ConstraintData(); + return View(); + } + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/razor b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/razor new file mode 100644 index 0000000000..ec6a94f8b4 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/razor @@ -0,0 +1,32 @@ +@(Html.EJS().Gantt("Constraint").DataSource((IEnumerable)ViewData["DataSource"]).Height("450px") +.TaskFields(ts => ts.Id("TaskId").Name("TaskName").StartDate("StartDate").EndDate("EndDate").Duration("Duration").Progress("Progress").Dependency("Predecessor").ParentID("ParentID").Notes("info").ConstraintDate("ConstraintDate").ConstraintType("ConstraintType")) +.Toolbar(new List { "Add", "Edit", "Update", "Delete", "Cancel", "ExpandAll", "CollapseAll", "Indent", "Outdent" }) +.EditSettings(es => es.AllowAdding(true).AllowEditing(true).AllowDeleting(true).AllowTaskbarEditing(true).ShowDeleteConfirmDialog(true)) +.AllowSelection(true).GridLines(Syncfusion.EJ2.Gantt.GridLine.Both).HighlightWeekends(true).TreeColumnIndex(1) +.TimelineSettings(ts => ts.TopTier(tt => tt.Format("MMM dd, yyyy").Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Week)).BottomTier(bt => bt.Unit(Syncfusion.EJ2.Gantt.TimelineViewMode.Day))) +.EventMarkers(em => { em.Day("03/25/2025").Label("Project StartDate").Add(); em.Day("08/31/2025").Label("Project EndDate").Add(); }) +.Columns(col => { + col.Field("TaskId").Visible(false).Add(); + col.Field("TaskName").HeaderText("Job Name").Width(200).ClipMode(Syncfusion.EJ2.Grids.ClipMode.EllipsisWithTooltip).Add(); + col.Field("StartDate").Add(); + col.Field("Duration").Add(); + col.Field("ConstraintType").HeaderText("Constraint Type").Width(180).Add(); + col.Field("ConstraintDate").HeaderText("Constraint Date").Add(); + col.Field("EndDate").Add(); + col.Field("Predecessor").Add(); + col.Field("Progress").Add(); +}) +.LabelSettings(ls => ls.LeftLabel("TaskName").RightLabel("#rightLabel")) +.ActionBegin("ActionBegin") +.SplitterSettings(sp => sp.ColumnIndex(4)) +.ProjectStartDate("03/25/2025").ProjectEndDate("09/01/2025") +.Render()) + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/tagHelper b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/tagHelper new file mode 100644 index 0000000000..648782b30d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/gantt/task-scheduling/task-constraints-cs2/tagHelper @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chart.cs b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chart.cs new file mode 100644 index 0000000000..d4d1d96bb6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chart.cs @@ -0,0 +1,38 @@ +public ActionResult Index() +{ + var Order = SalesService.GetSalesData(); + ViewBag.DataSource = Order; + return View(); +} + +public class SalesData +{ + public string Product { get; set; } + public string Month { get; set; } + public int Online { get; set; } + public int Retail { get; set; } + public int Total { get; set; } +} + + +public class SalesService +{ + public static List GetSalesData() + { + return new List + { + new SalesData { Product = "Laptop", Month = "January", Online = 1500, Retail = 2000, Total = 3500 }, + new SalesData { Product = "Mobile", Month = "February", Online = 1600, Retail = 2500, Total = 4100 }, + new SalesData { Product = "Tablet", Month = "March", Online = 1800, Retail = 2200, Total = 4000 }, + new SalesData { Product = "Smartwatch", Month = "April", Online = 2000, Retail = 2100, Total = 4100 }, + new SalesData { Product = "Camera", Month = "May", Online = 2200, Retail = 2300, Total = 4500 }, + new SalesData { Product = "Headphones", Month = "June", Online = 1700, Retail = 1800, Total = 3500 }, + new SalesData { Product = "Smart Speaker", Month = "July", Online = 1900, Retail = 2000, Total = 3900 }, + new SalesData { Product = "Printer", Month = "August", Online = 2100, Retail = 1900, Total = 4000 }, + new SalesData { Product = "Monitor", Month = "September", Online = 2000, Retail = 1900, Total = 3900 }, + new SalesData { Product = "Keyboard", Month = "October", Online = 1600, Retail = 1700, Total = 3300 }, + new SalesData { Product = "Mouse", Month = "November", Online = 1700, Retail = 1600, Total = 3300 }, + new SalesData { Product = "Router", Month = "December", Online = 1800, Retail = 2000, Total = 3800 } + }; + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chartcore.cs b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chartcore.cs new file mode 100644 index 0000000000..ba9da53d05 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/chartcore.cs @@ -0,0 +1,36 @@ +public void OnGet() +{ + ViewData["Datasource"] = SalesService.GetSalesData(); +} + +public class SalesData +{ + public string Product { get; set; } + public string Month { get; set; } + public int Online { get; set; } + public int Retail { get; set; } + public int Total { get; set; } +} + + +public class SalesService +{ + public static List GetSalesData() + { + return new List + { + new SalesData { Product = "Laptop", Month = "January", Online = 1500, Retail = 2000, Total = 3500 }, + new SalesData { Product = "Mobile", Month = "February", Online = 1600, Retail = 2500, Total = 4100 }, + new SalesData { Product = "Tablet", Month = "March", Online = 1800, Retail = 2200, Total = 4000 }, + new SalesData { Product = "Smartwatch", Month = "April", Online = 2000, Retail = 2100, Total = 4100 }, + new SalesData { Product = "Camera", Month = "May", Online = 2200, Retail = 2300, Total = 4500 }, + new SalesData { Product = "Headphones", Month = "June", Online = 1700, Retail = 1800, Total = 3500 }, + new SalesData { Product = "Smart Speaker", Month = "July", Online = 1900, Retail = 2000, Total = 3900 }, + new SalesData { Product = "Printer", Month = "August", Online = 2100, Retail = 1900, Total = 4000 }, + new SalesData { Product = "Monitor", Month = "September", Online = 2000, Retail = 1900, Total = 3900 }, + new SalesData { Product = "Keyboard", Month = "October", Online = 1600, Retail = 1700, Total = 3300 }, + new SalesData { Product = "Mouse", Month = "November", Online = 1700, Retail = 1600, Total = 3300 }, + new SalesData { Product = "Router", Month = "December", Online = 1800, Retail = 2000, Total = 3800 } + }; + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/razor b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/razor new file mode 100644 index 0000000000..66c63b0d2e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/razor @@ -0,0 +1,46 @@ +@Html.EJS().Grid("Grid").DataSource((IEnumerable)ViewBag.dataSource).Height(418).Columns(col => +{ + col.Type("checkbox").Width("50").Add(); + col.Field("Product").HeaderText("Products").Width(200).Add(); + col.Field("Month").HeaderText("Month").Width(150).Add(); + col.Field("Online").HeaderText("Online").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); + col.Field("Retail").HeaderText("Retail").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); + col.Field("Total").HeaderText("Total").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); +}).AllowSelection(true).SelectionSettings(select => select.Type(Syncfusion.EJ2.Grids.SelectionType.Multiple)).ContextMenuItems(new List() { "Bar", "StackingBar", "StackingBar100", "Pie", "Column", "StackingColumn", "StackingColumn100", "Line", "StackingLine", "StackingLine100", "Area", "StackingArea", "StackingArea100", "Scatter" }).ContextMenuClick("contextMenuClick").Created("created").Render() + + diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/tagHelper new file mode 100644 index 0000000000..bd26bfd6dc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion/tagHelper @@ -0,0 +1,55 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chart.cs b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chart.cs new file mode 100644 index 0000000000..d4d1d96bb6 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chart.cs @@ -0,0 +1,38 @@ +public ActionResult Index() +{ + var Order = SalesService.GetSalesData(); + ViewBag.DataSource = Order; + return View(); +} + +public class SalesData +{ + public string Product { get; set; } + public string Month { get; set; } + public int Online { get; set; } + public int Retail { get; set; } + public int Total { get; set; } +} + + +public class SalesService +{ + public static List GetSalesData() + { + return new List + { + new SalesData { Product = "Laptop", Month = "January", Online = 1500, Retail = 2000, Total = 3500 }, + new SalesData { Product = "Mobile", Month = "February", Online = 1600, Retail = 2500, Total = 4100 }, + new SalesData { Product = "Tablet", Month = "March", Online = 1800, Retail = 2200, Total = 4000 }, + new SalesData { Product = "Smartwatch", Month = "April", Online = 2000, Retail = 2100, Total = 4100 }, + new SalesData { Product = "Camera", Month = "May", Online = 2200, Retail = 2300, Total = 4500 }, + new SalesData { Product = "Headphones", Month = "June", Online = 1700, Retail = 1800, Total = 3500 }, + new SalesData { Product = "Smart Speaker", Month = "July", Online = 1900, Retail = 2000, Total = 3900 }, + new SalesData { Product = "Printer", Month = "August", Online = 2100, Retail = 1900, Total = 4000 }, + new SalesData { Product = "Monitor", Month = "September", Online = 2000, Retail = 1900, Total = 3900 }, + new SalesData { Product = "Keyboard", Month = "October", Online = 1600, Retail = 1700, Total = 3300 }, + new SalesData { Product = "Mouse", Month = "November", Online = 1700, Retail = 1600, Total = 3300 }, + new SalesData { Product = "Router", Month = "December", Online = 1800, Retail = 2000, Total = 3800 } + }; + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chartcore.cs b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chartcore.cs new file mode 100644 index 0000000000..ba9da53d05 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/chartcore.cs @@ -0,0 +1,36 @@ +public void OnGet() +{ + ViewData["Datasource"] = SalesService.GetSalesData(); +} + +public class SalesData +{ + public string Product { get; set; } + public string Month { get; set; } + public int Online { get; set; } + public int Retail { get; set; } + public int Total { get; set; } +} + + +public class SalesService +{ + public static List GetSalesData() + { + return new List + { + new SalesData { Product = "Laptop", Month = "January", Online = 1500, Retail = 2000, Total = 3500 }, + new SalesData { Product = "Mobile", Month = "February", Online = 1600, Retail = 2500, Total = 4100 }, + new SalesData { Product = "Tablet", Month = "March", Online = 1800, Retail = 2200, Total = 4000 }, + new SalesData { Product = "Smartwatch", Month = "April", Online = 2000, Retail = 2100, Total = 4100 }, + new SalesData { Product = "Camera", Month = "May", Online = 2200, Retail = 2300, Total = 4500 }, + new SalesData { Product = "Headphones", Month = "June", Online = 1700, Retail = 1800, Total = 3500 }, + new SalesData { Product = "Smart Speaker", Month = "July", Online = 1900, Retail = 2000, Total = 3900 }, + new SalesData { Product = "Printer", Month = "August", Online = 2100, Retail = 1900, Total = 4000 }, + new SalesData { Product = "Monitor", Month = "September", Online = 2000, Retail = 1900, Total = 3900 }, + new SalesData { Product = "Keyboard", Month = "October", Online = 1600, Retail = 1700, Total = 3300 }, + new SalesData { Product = "Mouse", Month = "November", Online = 1700, Retail = 1600, Total = 3300 }, + new SalesData { Product = "Router", Month = "December", Online = 1800, Retail = 2000, Total = 3800 } + }; + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/razor b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/razor new file mode 100644 index 0000000000..e8ad8c97dc --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/razor @@ -0,0 +1,92 @@ +@Html.EJS().Grid("Grid").DataSource((IEnumerable)ViewBag.dataSource).Height(418).Columns(col => +{ + col.Type("checkbox").Width("50").Add(); + col.Field("Product").HeaderText("Products").Width(200).Add(); + col.Field("Month").HeaderText("Month").Width(150).Add(); + col.Field("Online").HeaderText("Online").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); + col.Field("Retail").HeaderText("Retail").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); + col.Field("Total").HeaderText("Total").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Width(160).Add(); +}).AllowSelection(true).SelectionSettings(select => select.Type(Syncfusion.EJ2.Grids.SelectionType.Multiple))ContextMenuItems(new List() { "Bar", "StackingBar", "StackingBar100", "Pie", "Column", "StackingColumn", "StackingColumn100", "Line", "StackingLine", "StackingLine100", "Area", "StackingArea", "StackingArea100", "Scatter" }).ContextMenuClick("contextMenuClick").Created("created").Render() + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/tagHelper new file mode 100644 index 0000000000..0a84ff917e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/chart-intergartion1/tagHelper @@ -0,0 +1,99 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/razor b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/razor new file mode 100644 index 0000000000..8418d5e5a8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/razor @@ -0,0 +1,31 @@ +
+ @Html.EJS().Button("reorderColumn").CssClass("e-info").Content("Reorder Column").Render() + @Html.EJS().Button("reorderChildColumn").CssClass("e-info").Content("Reorder Stacked ChildColumn").Render() +
+@Html.EJS().Grid("Grid").DataSource((IEnumerable)ViewBag.DataSource).AllowReordering().Columns(col => +{ +col.Field("OrderID").HeaderText("Order ID").Width("120").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add(); +col.Field("CustomerID").HeaderText("Customer ID").Width("100").Add(); +col.Field("Freight").HeaderText("Freight").Width("120").Format("C2").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add(); +col.HeaderText("Order Details").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Columns(new List() { new Syncfusion.EJ2.Grids.GridColumn { Field = "OrderDate", Width = "150", HeaderText = "Order Date", Format="yMd"}, + new Syncfusion.EJ2.Grids.GridColumn { Field = "EmployeeID", Width = "130", HeaderText = "EmployeeID" } }).Add(); +col.HeaderText("Shipped Details").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Center).Columns(new List() { new Syncfusion.EJ2.Grids.GridColumn { Field = "ShipName", Width = "140"}, + new Syncfusion.EJ2.Grids.GridColumn { Field = "ShipCountry", Width = "145", HeaderText = "Ship Country", MinWidth="10", EditType="dropdownedit" } }).Add(); +}).Render() + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/reorder.cs b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/reorder.cs new file mode 100644 index 0000000000..a313f00f64 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/reorder.cs @@ -0,0 +1,6 @@ +public IActionResult Index() +{ + var Order = OrdersDetails.GetAllRecords(); + ViewBag.DataSource = Order; + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/tagHelper new file mode 100644 index 0000000000..d778249345 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/columns/reorderColumnByModel/tagHelper @@ -0,0 +1,34 @@ +
+ + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/razor b/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/razor index 288dce215a..6612d4f5e1 100644 --- a/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/razor +++ b/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/razor @@ -6,18 +6,21 @@ col.Field("ShipName").HeaderText("Ship Name").Width("150").ValidationRules(new { required = "true"}).Add(); col.Field("ShipCountry").HeaderText("Ship Country").EditType("dropdownedit").Width("150").ValidationRules(new { required = "true"}).Add(); }).AllowPaging().Load("load").EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).Mode(Syncfusion.EJ2.Grids.EditMode.Normal); }).Toolbar(new List() { "Add", "Edit", "Delete", "Update", "Cancel" }).Render() + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/tagHelper index e446be345b..4a22bb1101 100644 --- a/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/grid/edit/inline-single/tagHelper @@ -13,13 +13,15 @@ { var grid = document.getElementById("grid").ej2_instances[0]; grid.element.addEventListener('mouseup', (event) => { - if (event.target.classList.contains("e-rowcell")) { - if (grid.isEdit) - grid.endEdit(); + if (event.target.classList.contains("e-rowcell")) { + if (grid.isEdit) + { + grid.endEdit(); + } let index= parseInt((event.target).getAttribute("Index")); grid.selectRow(index); grid.startEdit(); - }; + } }); } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/razor b/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/razor index b4d4889386..8498a51172 100644 --- a/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/razor +++ b/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/razor @@ -39,20 +39,27 @@ } } function actionComplete(args) { + var grid = document.getElementById("Search").ej2_instances[0]; if (args.requestType === 'refresh') { - var grid = document.getElementById("Search").ej2_instances[0]; var searchBar = document.querySelector('#' + grid.element.id + '_searchbar'); if (searchBar) { if (this.valueAssign) { searchBar.value = this.values || ''; this.valueAssign = false; - } else if (removeQuery) { + } else if (this.removeQuery && searchBar.value=='') { searchBar.value = '' grid.query = new ej.data.Query(); - removeQuery = false; + this.removeQuery = false; grid.refresh(); } } + document.getElementById(grid.element.id + '_searchbar').addEventListener('keyup', (args) => { + if (args.target.value === '' && (args.key === 'Enter' || args.key === 'Backspace')) { + grid.query = new ej.data.Query(); + removeQuery = false; + grid.refresh(); + } + }); } } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/tagHelper index a064627729..3802f2acf9 100644 --- a/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/grid/search/search-multiple-keywords/tagHelper @@ -41,20 +41,27 @@ } } function actionComplete(args) { + var grid = document.getElementById("Search").ej2_instances[0]; if (args.requestType === 'refresh') { - var grid = document.getElementById("Search").ej2_instances[0]; var searchBar = document.querySelector('#' + grid.element.id + '_searchbar'); if (searchBar) { if (this.valueAssign) { searchBar.value = this.values || ''; this.valueAssign = false; - } else if (removeQuery) { + } else if (this.removeQuery && searchBar.value=='') { searchBar.value = '' grid.query = new ej.data.Query(); - removeQuery = false; + this.removeQuery = false; grid.refresh(); } } + document.getElementById(grid.element.id + '_searchbar').addEventListener('keyup', (args) => { + if (args.target.value === '' && (args.key === 'Enter' || args.key === 'Backspace')) { + grid.query = new ej.data.Query(); + removeQuery = false; + grid.refresh(); + } + }); } } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/custom-items.cs b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/custom-items.cs new file mode 100644 index 0000000000..c6453b0c1e --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/custom-items.cs @@ -0,0 +1,5 @@ +public IActionResult Index() +{ + ViewBag.dataSource = OrderDetails.GetAllRecords(); + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/razor b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/razor new file mode 100644 index 0000000000..ac4a2cea73 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/razor @@ -0,0 +1,42 @@ + +@{ + var shipCities = new string[] { + "Reims", + "Münster", + "Rio de Janeiro", + "Lyon", + "Charleroi", + "Bern", + "Genève", + "San Cristóbal", + "Graz", + "México D.F.", + "Albuquerque", + "Köln", + }; + ViewBag.data = shipCities; +} + +@Html.EJS().Grid("grid").DataSource((IEnumerable)ViewBag.dataSource).Toolbar(new List{ +"Add", "Edit", "Delete", +new { template = "#toolbar-template", align = "Left", tooltipText = "Custom Component Autocomplete" }, +}).EditSettings(edit => { edit.AllowAdding(true).AllowEditing(true).AllowDeleting(true).Mode(Syncfusion.EJ2.Grids.EditMode.Normal); }).Columns(col => +{ + col.Field("OrderID").HeaderText("Order ID").IsPrimaryKey(true).Width("120").TextAlign(Syncfusion.EJ2.Grids.TextAlign.Right).Add(); + col.Field("CustomerID").HeaderText("Customer Name").Width("150").Add(); + col.Field("ShipCity").HeaderText("Ship City").Width("150").Add(); + col.Field("ShipName").HeaderText("Ship Name").Width("150").Add(); +}).Height("270px").Render() + +
+ @Html.EJS().AutoComplete("shipCityValue").Placeholder("Search ShipCity").DataSource((IEnumerable)ViewBag.data).Change("onChange").Render() + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/tagHelper b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/tagHelper new file mode 100644 index 0000000000..57da593651 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/grid/toolbar/custom-toolbar-items/tagHelper @@ -0,0 +1,40 @@ + +@{ + var data = new string[] { + "Reims", + "Münster", + "Rio de Janeiro", + "Lyon", + "Charleroi", + "Bern", + "Genève", + "San Cristóbal", + "Graz", + "México D.F.", + "Albuquerque", + "Köln", + }; +} + + + + + + + + + + +
+ + +
+ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/default.cs b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/default.cs new file mode 100644 index 0000000000..aa9ed51b46 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/default.cs @@ -0,0 +1,4 @@ +public ActionResult Default() +{ + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/razor b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/razor new file mode 100644 index 0000000000..fe525ad73b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/razor @@ -0,0 +1,81 @@ +
+ @Html.EJS().ImageEditor("image-editor").Created("created").Toolbar(new string[] { }).Width("550px").Height("350px").ShowQuickAccessToolbar(false).Render() +
+ @Html.EJS().Button("addText").CssClass("e-primary").Content("Add Text").Click("addTextHandler").Render() +
+ + + + + + + + +
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/tagHelper b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/tagHelper new file mode 100644 index 0000000000..cc04e66a9b --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/annotation/text-CS1/tagHelper @@ -0,0 +1,86 @@ +@{ + var imageTool = new string[] { }; +} + +
+ +
+ +
+ + + + + + + + +
+
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/default.cs b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/default.cs new file mode 100644 index 0000000000..aa9ed51b46 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/default.cs @@ -0,0 +1,4 @@ +public ActionResult Default() +{ + return View(); +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/razor b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/razor new file mode 100644 index 0000000000..f822a31b96 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/razor @@ -0,0 +1,49 @@ +
+ @Html.EJS().ImageEditor("image-editor").Created("created").Toolbar(new string[] { }).Width("550px").Height("350px").Render() +
+ @Html.EJS().Button("contain").CssClass("e-primary").Content("Fit to Width (Aspect Ratio)").Click("contain").Render() + @Html.EJS().Button("cover").CssClass("e-primary").Content("Cover (Aspect Ratio)").Click("cover").Render() + @Html.EJS().Button("stretch").CssClass("e-primary").Content("Stretch / Shrink").Click("stretch").Render() +
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/tagHelper b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/tagHelper new file mode 100644 index 0000000000..84e39bdd83 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/image-editor/open-save/open-image-CS7/tagHelper @@ -0,0 +1,56 @@ +@{ + var toolbar = new string[] { }; +} + +
+ +
+ + + +
+
+ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/excel-export/blob-export/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/excel-export/blob-export/razor index d295e1c38d..eafd3fd502 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/excel-export/blob-export/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/excel-export/blob-export/razor @@ -23,7 +23,7 @@ } function exportComplete(args) { if (args.promise !== null) { - args.promise.then((e: { blobData: Blob }) => { + args.promise.then((e) => { console.log(e.blobData); }); } diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/cell-template.cs b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/cell-template.cs index a6bd749135..e4574d84d0 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/cell-template.cs +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/cell-template.cs @@ -2,5 +2,69 @@ public ActionResult Index() { var data = GetPivotData(); ViewBag.DataSource = data; + ViewBag.drilledMembers = new string[] { "FY 2015", "FY 2016" }; return View(); +} + +public class PivotData +{ + public string Year { get; set; } + public string HalfYear { get; set; } + public string EnerType { get; set; } // "Biomass" + public string EneSource { get; set; } // "Bio-diesel", "Ethanol Fuel", etc. + public decimal ProCost { get; set; } + + private static List pivotDataList = new List(); + + public static List GetPivotData() + { + List pivotData = new List(); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 438 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 275 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Wastage", ProCost = 252 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Wood", ProCost = 78 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 167 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 183 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 183 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Wastage", ProCost = 91 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H1 FY 2015", EnerType = "Biomass", EneSource = "Wood", ProCost = 53 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H2 FY 2015", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 271 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H2 FY 2015", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 92 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H2 FY 2015", EnerType = "Biomass", EneSource = "Wastage", ProCost = 161 }); + pivotData.Add(new PivotData { Year = "FY 2015", HalfYear = "H2 FY 2015", EnerType = "Biomass", EneSource = "Wood", ProCost = 25 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 344 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 331 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Wastage", ProCost = 335 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Wood", ProCost = 126 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 135 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 153 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Wastage", ProCost = 147 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Biomass", EneSource = "Wood", ProCost = 76 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 209 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 158 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Biomass", EneSource = "Wastage", ProCost = 188 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Biomass", EneSource = "Wood", ProCost = 50 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Biomass", EneSource = "Bio-diesel", ProCost = 565 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Biomass", EneSource = "Ethanol Fuel", ProCost = 401 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Biomass", EneSource = "Wastage", ProCost = 367 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Biomass", EneSource = "Wood", ProCost = 122 }); + + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Free energy", EneSource = "Geo-thermal", ProCost = 230 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Free energy", EneSource = "Hydro-electric", ProCost = 200 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Free energy", EneSource = "Solar", ProCost = 170 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H1 FY 2016", EnerType = "Free energy", EneSource = "Wind", ProCost = 150 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Free energy", EneSource = "Geo-thermal", ProCost = 240 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Free energy", EneSource = "Hydro-electric", ProCost = 210 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Free energy", EneSource = "Solar", ProCost = 180 }); + pivotData.Add(new PivotData { Year = "FY 2016", HalfYear = "H2 FY 2016", EnerType = "Free energy", EneSource = "Wind", ProCost = 160 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Free energy", EneSource = "Geo-thermal", ProCost = 260 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Free energy", EneSource = "Hydro-electric", ProCost = 220 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Free energy", EneSource = "Solar", ProCost = 190 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H1 FY 2017", EnerType = "Free energy", EneSource = "Wind", ProCost = 170 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Free energy", EneSource = "Geo-thermal", ProCost = 270 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Free energy", EneSource = "Hydro-electric", ProCost = 230 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Free energy", EneSource = "Solar", ProCost = 200 }); + pivotData.Add(new PivotData { Year = "FY 2017", HalfYear = "H2 FY 2017", EnerType = "Free energy", EneSource = "Wind", ProCost = 180 }); + return pivotData; + } } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/razor index 2996825651..0d798a0e9e 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/cell-template/razor @@ -1,102 +1,154 @@ @using Syncfusion.EJ2.PivotView @Html.EJS().PivotView("pivotview").Width("100%").Height("300").DataBound("trend").DataSourceSettings(dataSourceSettings => dataSourceSettings.DataSource((IEnumerable)ViewBag.DataSource).ExpandAll(true).EnableSorting(true) - .DrilledMembers(drilledmembers =>{ + .DrilledMembers(drilledmembers => + { drilledmembers.Name("Year").Items(ViewBag.drilledMembers).Add(); }) - .FormatSettings(formatsettings => { - formatsettings.Name("ProCost").Format("C0").Add(); + .FormatSettings(formatsettings => + { + formatsettings.Name("ProCost").Format("C0").Add(); }) - .Rows(rows => { - rows.Name("Year").Caption("Year").Add(); rows.Name("HalfYear").Caption("Half Year").Add(); + .Rows(rows => + { + rows.Name("Year").Caption("Year").Add(); rows.Name("HalfYear").Caption("Half Year").Add(); }) - .Columns(columns => { - columns.Name("EnerType").Caption("Energy Type").Add(); columns.Name("EneSource").Caption("Energy Source").Add(); + .Columns(columns => + { + columns.Name("EnerType").Caption("Energy Type").Add(); columns.Name("EneSource").Caption("Energy Source").Add(); }) - .Values(values => { - values.Name("ProCost").Caption("Revenue Growth").Add(); - })).GridSettings(new PivotViewGridSettings { ColumnWidth = 140 }).CellTemplate("${getCellContent(data)}").Render() + .Values(values => + { + values.Name("ProCost").Caption("Revenue Growth").Add(); + })).GridSettings(new PivotViewGridSettings { ColumnWidth = 140 }).DataBound("trend").CellTemplate("${getCellContent(data)}").Render() - \ No newline at end of file + } + /* jshint ignore:end */ + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/pdf-headercell/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/pdf-headercell/razor index 5a6756c42e..19664cbf3f 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/pdf-headercell/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/grid-customization/pdf-headercell/razor @@ -1,5 +1,7 @@ @using Syncfusion.EJ2.PivotView +@Html.EJS().Button("pdf").Content("Pdf Export").IsPrimary(true).Render() + @Html.EJS().PivotView("PivotView").Height("300").DataSourceSettings(dataSourceSettings => dataSourceSettings.DataSource((IEnumerable)ViewBag.DataSource).ExpandAll(false) .FormatSettings(formatsettings => { @@ -13,8 +15,14 @@ }).Values(values => { values.Name("Sold").Caption("Units Sold").Add(); values.Name("Amount").Caption("Sold Amount").Add(); -})).GridSettings(gridSettings => gridSettings.PdfHeaderCellInfo("pdfHeaderCell")).Render() +})).GridSettings(gridSettings => gridSettings.PdfHeaderQueryCellInfo("pdfHeaderCell")).Render() + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/number-formatting/toolbar/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/number-formatting/toolbar/razor index f607d2b867..825d0abc5e 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/number-formatting/toolbar/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/number-formatting/toolbar/razor @@ -13,7 +13,7 @@ { filters.Name("Product_Categories").Caption("Product Categories").Add(); })).GridSettings(new PivotViewGridSettings { ColumnWidth = 140 }).DisplayOption(new PivotViewDisplayOption { View = View.Both }).Toolbar(new List -() { "New", "Save", "SaveAs", "Rename", "Remove", "Load", "Grid", "Chart", "Export", "SubTotal", "GrandTotal", "ConditionalFormatting", "NumberFormatting" "FieldList" }).SaveReport("saveReport").LoadReport("loadReport").FetchReport("fetchReport").RenameReport("renameReport").RemoveReport("removeReport").NewReport("newReport").Render() +() { "New", "Save", "SaveAs", "Rename", "Remove", "Load", "Grid", "Chart", "Export", "SubTotal", "GrandTotal", "ConditionalFormatting", "NumberFormatting", "FieldList" }).SaveReport("saveReport").LoadReport("loadReport").FetchReport("fetchReport").RenameReport("renameReport").RemoveReport("removeReport").NewReport("newReport").Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/save-load-json/tagHelper b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/save-load-json/tagHelper index 1f5a0fff85..ff86646089 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/save-load-json/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/save-load-json/tagHelper @@ -1,4 +1,4 @@ - + @@ -24,11 +24,6 @@ Save
Load
\ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-export/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-export/razor index 4dc9917b58..da295b367a 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-export/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-export/razor @@ -116,49 +116,47 @@ }, false); } function beforeExport(args) { - args.pdfExportProperties = { - header: { - fromTop: 0, - height: 130, - contents: [ - { - type: 'Text', - value: "Pivot Table", - position: { x: 0, y: 50 }, - } - ] - }, - footer: { - contents: [ - { - type: 'Text', - value: "Thank You", - style: { textBrushColor: '#FF0000', fontSize: 13, dashStyle: 'Solid', hAlign: 'Center' } - } - ] - } - }; - args.excelExportProperties = { - header: { - headerRows: 2, - rows: [ - { - cells: [ - { - colSpan: 4, - value: 'Pivot Table', - style: { - fontColor: '#C67878', - fontSize: 20, - hAlign: 'Center', - bold: true, - underline: true, - }, - }, - ], - }, - ], - }, - }; + args.excelExportProperties = { + header: { + headerRows: 2, + rows: [ + { cells: [{ colSpan: 4, value: "Pivot Table", style: { fontColor: '#C67878', fontSize: 20, hAlign: 'Center', bold: true, underline: true } }] } + ] + }, + footer: { + footerRows: 4, + rows: [ + { cells: [{ colSpan: 4, value: "Thank you for your business!", style: { hAlign: 'Center', bold: true } }] }, + { cells: [{ colSpan: 4, value: "!Visit Again!", style: { hAlign: 'Center', bold: true } }] } + ] + } + }; + args.pdfExportProperties = { + header: { + fromTop: 0, + height: 130, + contents: [ + { + type: 'Text', + value: "Pivot Table", + position: { x: 0, y: 50 }, + style: { textBrushColor: '#000000', fontSize: 13, dashStyle: 'Solid', hAlign: 'Center' } + } + ] + }, + footer: { + fromBottom: 160, + height: 150, + contents: [ + { + type: 'PageNumber', + pageNumberType: 'Arabic', + format: 'Page {$current} of {$total}', + position: { x: 0, y: 25 }, + style: { textBrushColor: '#02007a', fontSize: 15 } + } + ] + } + }; } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-template/tool-temp/razor b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-template/tool-temp/razor index ba77f5f787..a17b11d978 100644 --- a/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-template/tool-temp/razor +++ b/ej2-asp-core-mvc/code-snippet/pivot-table/toolbar/toolbar-template/tool-temp/razor @@ -4,8 +4,8 @@ @Html.EJS().Button("collapsebtn").Content("Collapse ALL").CssClass("e-flat").IsPrimary(true).Render() - @Html.EJS().PivotView("PivotGrid").Width("100%").Height("300").ShowToolbar(true).DataSourceSettings(dataSourceSettings => dataSourceSettings.DataSource((IEnumerable - )ViewBag.Data) + @Html.EJS().PivotView("Pivotview").Width("100%").Height("300").ShowToolbar(true).DataSourceSettings(dataSource => dataSource.DataSource((IEnumerable + )ViewBag.DataSource) .FormatSettings(formatsettings => { formatsettings.Name("Amount").Format("C0").MaximumSignificantDigits(10).MinimumSignificantDigits(1).UseGrouping(true).Add(); @@ -21,11 +21,11 @@ })).GridSettings(new Syncfusion.EJ2.PivotView.PivotViewGridSettings { ColumnWidth = 140 }).ToolbarTemplate("#template").Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/controller.cs index 3852e9f833..49da303a80 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/controller.cs +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/controller.cs @@ -3,7 +3,7 @@ public class HomeController : Controller public ActionResult Index() { - ViewBag.items = new[] { "Audio" }; + ViewBag.items = new[] { "Audio", "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "Blockquote", "OrderedList", "UnorderedList", "|", "CreateLink", "CreateTable", "Image", "|", "SourceCode", "|", "Undo", "Redo" }; return View(); } } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/razor index 44cb029a20..0663c4736a 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/razor +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/razor @@ -1,11 +1 @@ -@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertAudioSettings(obj => obj.SaveUrl("https://aspnetmvc.syncfusion.com/services/api/uploadbox/Save").Path("../Files/")).FileUploading("onFileUploading").Render() - - \ No newline at end of file +@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertAudioSettings(obj => obj.MaxFileSize(30000000)).Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/tagHelper index 3a12aee0a8..aa92ccedfa 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-audio-size/tagHelper @@ -1,14 +1,4 @@ - + - - - \ No newline at end of file + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/controller.cs new file mode 100644 index 0000000000..b2668ddef9 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/controller.cs @@ -0,0 +1,9 @@ +public class HomeController : Controller +{ + + public ActionResult Index() + { + ViewBag.items = new[] { "Iamge", "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "Blockquote", "OrderedList", "UnorderedList", "|", "CreateLink", "CreateTable", "|", "SourceCode", "|", "Undo", "Redo" }; + return View(); + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/razor new file mode 100644 index 0000000000..38fd72381d --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/razor @@ -0,0 +1 @@ +@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertImageSettings(obj => obj.MaxFileSize(30000000)).Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/tagHelper new file mode 100644 index 0000000000..38f2724dfa --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-image-size/tagHelper @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/controller.cs index fc20d44a45..dd9dee9522 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/controller.cs +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/controller.cs @@ -3,7 +3,7 @@ public class HomeController : Controller public ActionResult Index() { - ViewBag.items = new[] { "Video" }; + ViewBag.items = new[] { "Video", "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "Blockquote", "OrderedList", "UnorderedList", "|", "CreateLink", "CreateTable", "Image", "|", "SourceCode", "|", "Undo", "Redo" }; return View(); } } \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/razor index ca0a4f75a6..c8169ca255 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/razor +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/razor @@ -1,11 +1 @@ -@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertVideoSettings(obj => obj.SaveUrl("https://aspnetmvc.syncfusion.com/services/api/uploadbox/Save").Path("../Files/")).FileUploading("onFileUploading").Render() - - \ No newline at end of file +@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertVideoSettings(obj => obj.MaxFileSize(30000000)).Render() \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/tagHelper index c5a5857fa3..b23ec00c9c 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/tagHelper +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/check-video-size/tagHelper @@ -1,14 +1,4 @@ - + - - - \ No newline at end of file + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/controller.cs new file mode 100644 index 0000000000..e48b667d74 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/controller.cs @@ -0,0 +1,8 @@ +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
"; + return View(); + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/razor new file mode 100644 index 0000000000..848d9952d4 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/razor @@ -0,0 +1,10 @@ +@Html.EJS().RichTextEditor("clear-undo-redo").Value(ViewBag.value).Render() + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/tagHelper new file mode 100644 index 0000000000..84641b65fd --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/clear-undo-redo/tagHelper @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/controller.cs new file mode 100644 index 0000000000..e9947e12af --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/controller.cs @@ -0,0 +1,15 @@ +public class HomeController : Controller +{ + + public ActionResult Index() + { + ViewBag.items = new[] { "Undo", "Redo", "|", "CodeBlock", "|", "Bold", "Italic", "Underline", "StrikeThrough", "InlineCode", "|", "CreateLink", "Image", "CreateTable", "Blockquote", "|", "BulletFormatList", "NumberFormatList", "|", "Formats", "Alignments", "|", "Outdent", "Indent", "|", + "FontColor", "BackgroundColor", "FontName", "FontSize", "|", "LowerCase", "UpperCase", "|", "EmojiPicker", "|", "SourceCode" }; + ViewBag.languages = new[] { + new {label= "HTML", language= "html"}, + new {label= "JavaScript", language= "javascript"}, + new {label= "CSS", language= "css"}, + new {label= "Plain Text", language= "plaintext"}}; + return View(); + } +} diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/razor new file mode 100644 index 0000000000..3eb1113555 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/razor @@ -0,0 +1 @@ +@Html.EJS().RichTextEditor("code-block").ToolbarSettings(e => { e.Items((object)ViewBag.items); }).CodeBlockSettings(e => { e.Languages((object)ViewBag.languages); e.DefaultLanguage("plaintext"); }).Placeholder("Type something...").Render() diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/tagHelper new file mode 100644 index 0000000000..b67e70aa23 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/code-block/tagHelper @@ -0,0 +1,4 @@ + + + + diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/controller.cs b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/controller.cs new file mode 100644 index 0000000000..25f3291dfa --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/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.items = new[] { "HorizontalLine", "|", "Bold", "Italic", "Underline", "|", "Formats", "Alignments", "Blockquote", "OrderedList", "UnorderedList", "|", "CreateLink", "Image", "|", "SourceCode", "Undo", "Redo" }; + + return View(); + } +} \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/razor new file mode 100644 index 0000000000..b35f26faa8 --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/razor @@ -0,0 +1 @@ +@Html.EJS().RichTextEditor("horizontalLine").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/horizontal-line/tagHelper b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/tagHelper new file mode 100644 index 0000000000..ad0519e03f --- /dev/null +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/horizontal-line/tagHelper @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/ej2-asp-core-mvc/code-snippet/rich-text-editor/image-authenticate/razor b/ej2-asp-core-mvc/code-snippet/rich-text-editor/image-authenticate/razor index 1f15afada3..e0decc28c0 100644 --- a/ej2-asp-core-mvc/code-snippet/rich-text-editor/image-authenticate/razor +++ b/ej2-asp-core-mvc/code-snippet/rich-text-editor/image-authenticate/razor @@ -1,7 +1,7 @@ -@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertImageSettings(obj => obj.SaveUrl("/Home/SaveFiles").FileUploading("onFileUploading").Path("../Files/")).Render() +@Html.EJS().RichTextEditor("editor").ToolbarSettings(e => e.Items((object)ViewBag.items)).InsertImageSettings(obj => obj.SaveUrl("/Home/SaveFiles").ImageUploading("onImageUploading").Path("../Files/")).Render() +``` + +## Ribbon Layouts + +Document Editor provides two different Ribbon layouts: + +- **Classic**: A traditional Office-like ribbon with detailed grouping and larger icons +- **Simplified**: A more compact ribbon design with streamlined controls + +By default, `ribbonLayout` is set to `Simplified`. + +The following code shows the how to configure the ribbon layout in Document Editor: + +```typescript + +@Html.EJS().DocumentEditorContainer("container").ToolbarMode("Ribbon").RibbonLayout("Classic").ServiceUrl("api/documenteditor/").Render() + +``` + +## See Also + +* [How to customize the ribbon](../document-editor/how-to/customize-ribbon) \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/EJ2_ASP.NETCORE/ribbon.md b/ej2-asp-core-mvc/document-editor/EJ2_ASP.NETCORE/ribbon.md new file mode 100644 index 0000000000..a91059e671 --- /dev/null +++ b/ej2-asp-core-mvc/document-editor/EJ2_ASP.NETCORE/ribbon.md @@ -0,0 +1,58 @@ +--- +layout: post +title: Ribbon in ##Platform_Name## Document editor control | Syncfusion +description: Learn here all about the Ribbon UI in Syncfusion ##Platform_Name## Document editor control, how to switch between Ribbon and Toolbar modes. +platform: ej2-asp-core-mvc +control: Ribbon +publishingplatform: ##Platform_Name## +documentation: ug +domainurl: ##DomainURL## +--- + +# Ribbon in ##Platform_Name## Document Editor Control + +The Document Editor provides a modern Ribbon interface similar to Microsoft Word's interface. This Ribbon UI provides an efficient and intuitive way to access editing features, organizing commands within well-structured tabs and groups to enhance your document editing experience. Additionally, the Ribbon interface supports contextual tabs. Contextual tabs appear only when certain elements, such as tables, images, or headers/footers, are selected in the document. + +You can switch between the classic **Toolbar** and the new **Ribbon** UI, and you can also choose between **Classic** and **Simplified** ribbon layouts. + +## Enable Ribbon Mode + +To enable Ribbon in Document Editor, use the `toolbarMode` property of `DocumentEditorContainer`. The available toolbar modes are: + +- **'Toolbar'** - The traditional toolbar UI. +- **'Ribbon'** - The Ribbon UI, which provides a tabbed interface with grouped commands. + +By default, `toolbarMode` is `Toolbar`. + +The following code shows the how to enable the `Ribbon` in Document Editor. + +```typescript + + + +``` + +## Ribbon Layouts + +Document Editor provides two different Ribbon layouts: + +- **Classic**: A traditional Office-like ribbon with detailed grouping and larger icons +- **Simplified**: A more compact ribbon design with streamlined controls + +By default, `ribbonLayout` is set to `Simplified`. + +The following code shows the how to configure the ribbon layout in Document Editor: + +```typescript + + + +``` + +## See Also + +* [How to customize the ribbon](../document-editor/how-to/customize-ribbon) \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/how-to/customize-ribbon.md b/ej2-asp-core-mvc/document-editor/how-to/customize-ribbon.md new file mode 100644 index 0000000000..0371f94d03 --- /dev/null +++ b/ej2-asp-core-mvc/document-editor/how-to/customize-ribbon.md @@ -0,0 +1,277 @@ +--- +layout: post +title: Customize Ribbon in ##Platform_Name## Document Editor | Syncfusion +description: Learn how to customize the ribbon in Syncfusion ##Platform_Name## Document Editor - file menu, backstage, tabs, groups, and items. +platform: ej2-asp-core-mvc +control: Ribbon Customization +publishingplatform: ##Platform_Name## +documentation: ug +domainurl: ##DomainURL## +--- + +# Customize Ribbon in ##Platform_Name## Document Editor + +The Syncfusion Document Editor provides an extensive and flexible API to customize the built-in ribbon UI. You can: + +- Customize the File menu. +- Add the Backstage menu instead of File menu. +- Show, hide, or add Ribbon tabs. +- Show, hide, or add groups within tabs. +- Show, hide, add, enable, or disable items within groups. + +Below are detailed examples for each ribbon customization scenario. + +## File Menu Customization + +Document Editor provides APIs to remove existing File menu items and add new custom items based on your requirements. You can modify the File menu using the `fileMenuItems` property. + +In below code example, In the example below, the "Open" and "Export" items have been removed from the File Menu Items, and new custom items have been added. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-ribbon-file/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-ribbon-file.cs" %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-ribbon-file/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-ribbon-file.cs" %} +{% endhighlight %} +{% endtabs %} + +{% endif %} + +## Backstage Menu Customization + +The Document Editor provides an `backStageMenu` API to add a backstage menu. When the backstage menu is enabled, the default File menu items are automatically hidden. + +The following code example shows how to add the backstage menu items. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-ribbon-backstage/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-ribbon-backstage.cs" %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/document-editor-container/customize-ribbon-backstage/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Customize-ribbon-backstage.cs" %} +{% endhighlight %} +{% endtabs %} + +{% endif %} + +Refer this documentation know more about [`backstage items`](https://ej2.syncfusion.com/documentation/ribbon/backstage) + +## Tab Customization + +You can customize the ribbon tabs in the Document Editor by showing, hiding, or adding tabs according to your application's requirements. + +### Show/Hide Tab + +Document editor provides the `showTab` API to show and hide the existing tab using existing `RibbonTabType` and `tabId`. + +The following code example how to show/hide existing tab using existing tab type and tab id. + +```typescript + +// To hide the Home tab using the built-in `RibbonTabType` +container.ribbon.showTab('Home', false); + +// To hide a tab by its tab id (for example, a custom tab) +container.ribbon.showTab('custom_tab', false); +``` + +### Add Tab + +The Document Editor provides the `addTab` API, which allows you to insert a new custom tab either between existing tabs or at the end of the ribbon tabs. + +```typescript + + + +``` + +## Group Customization + +You can also customize ribbon groups within a tab to better organize commands or add new functionalities as per your needs. + +### Show/Hide Group + +Document Editor provides an `showGroup` API to show or hide existing groups within a ribbon tab. + +The following code example show how to show/hide the group using group Id or `RibbonGroupInfo`. + +```typescript + +// To hide the clipboard group using group index +container.ribbon.showGroup({tabId: 'Home', index: 1} , false); + +// To show the clipboard group using group index +container.ribbon.showGroup({tabId: 'Home', index: 1} , true); + +// To hide the group using id +container.ribbon.showGroup('custom_group', false); + +``` + +### Add Group + +To extend the ribbon's functionality, you can add custom groups to any tab. This allows you to organize related commands together within a tab. + +```typescript + + + +``` + +## Item Customization + +You can customize individual items within ribbon groups. This includes showing, hiding, enabling, disabling, or adding new items to any group within a ribbon tab. + +### Show/Hide Item + +Using `showItems` API in Document editor ribbon to enable/disable the existing item. Here, you can specify the item Id or `RibbonItemInfo`. + +The following code example show how to show/hide the item using item Id or `RibbonItemInfo`. + +```typescript +// To hide the Bold and Italic items using ribbon item information +container.ribbon.showItems({ tabId: 'Home', groupIndex: 2, itemIndexes: [5, 6] } , false); + +// To show the Bold and Italic items using ribbon item information +container.ribbon.showItems({ tabId: 'Home', groupIndex: 2, itemIndexes: [5, 6] } , true); + +// To hide the item using item id +container.ribbon.showItems('custom_item', false); +``` + +### Enable/Disable Item + +Using `enableItems` API in Document editor ribbon to enable/disable the existing item. + +```typescript +// To disable the underline using ribbon item info +container.ribbon.enableItems({ tabId: 'Home', groupIndex: 2, itemIndexes: [7] },false); + +// To enable the underline using ribbon item info +container.ribbon.enableItems({ tabId: 'Home', groupIndex: 2, itemIndexes: [7] },true); + +// To disable the item using id +container.ribbon.enableItems('custom_item', false); + +``` + +### Add Item + +You can use the `addItem` API in the Document Editor ribbon to add a new item. Additionally, you can specify the target tab and group where the new item should be placed. + +```typescript + + + +``` + + +## Related Links + +- [File menu Customization Demo](https://ej2.syncfusion.com/demos/#/material/document-editor/ribbon-customization) \ No newline at end of file diff --git a/ej2-asp-core-mvc/document-editor/styles.md b/ej2-asp-core-mvc/document-editor/styles.md index c47435895e..fd48345911 100644 --- a/ej2-asp-core-mvc/document-editor/styles.md +++ b/ej2-asp-core-mvc/document-editor/styles.md @@ -1,6 +1,6 @@ --- layout: post -title: Styles in ##Platform_Name## Document Editor Component +title: Styles in ##Platform_Name## Document Editor Component | Syncfusion description: Learn here all about styles in Syncfusion ##Platform_Name## Document Editor component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Styles @@ -80,7 +80,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/character-style/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Character-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -89,7 +90,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/character-style/razor %} {% endhighlight %} {% highlight c# tabtitle="Character-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} @@ -103,7 +105,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/paragraph-style/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Paragraph-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -112,7 +115,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/paragraph-style/razor %} {% endhighlight %} {% highlight c# tabtitle="Paragraph-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} @@ -126,7 +130,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/linked-style/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Linked-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% elsif page.publishingplatform == "aspnet-mvc" %} @@ -135,7 +140,8 @@ New Styles are defined and added to the style collection of the document. In thi {% include code-snippet/document-editor/linked-style/razor %} {% endhighlight %} {% highlight c# tabtitle="Linked-style.cs" %} -{% endhighlight %}{% endtabs %} +{% endhighlight %} +{% endtabs %} {% endif %} @@ -155,3 +161,14 @@ documenteditor.editor.applyStyle('New Linked'); //Clear direct formatting and apply the specified style documenteditor.editor.applyStyle('New Linked', true); ``` + +## Get Styles + +You can get the styles in the document using the below code snippet. + +```typescript +//Get paragraph styles +var paragraphStyles = documentEditor.getStyles('Paragraph'); +//Get character styles +var characterStyles = documentEditor.getStyles('Character'); +``` diff --git a/ej2-asp-core-mvc/document-editor/text-format.md b/ej2-asp-core-mvc/document-editor/text-format.md index a3e466ac07..801d14c72b 100644 --- a/ej2-asp-core-mvc/document-editor/text-format.md +++ b/ej2-asp-core-mvc/document-editor/text-format.md @@ -106,6 +106,14 @@ You can make a subscript or superscript text as normal using the following code. documenteditor.selection.characterFormat.baselineAlignment='Normal'; ``` +## Change case + +You can apply different case formatting based on the selected text. Refer to the following sample code. + +```typescript +documenteditor.editor.changeCase('Uppercase'|'Lowercase'|'SentenceCase'|'ToggleCase'|'CapitalizeEachWord'); +``` + ## Size The size of selected text can be get or set using the following code. @@ -182,6 +190,6 @@ documenteditor.selection.characterFormat.highlightColor= '#FFC0CB'; ## See Also -* [Feature modules](../document-editor/feature-module/) -* [Font dialog](../document-editor/dialog/#font-dialog) -* [Keyboard shortcuts](../document-editor/keyboard-shortcut/) \ No newline at end of file +* [Feature modules](../document-editor/feature-module) +* [Font dialog](../document-editor/dialog#font-dialog) +* [Keyboard shortcuts](../document-editor/keyboard-shortcut) \ No newline at end of file diff --git a/ej2-asp-core-mvc/file-manager/flat-data.md b/ej2-asp-core-mvc/file-manager/flat-data.md index b67713a538..15130da5d7 100644 --- a/ej2-asp-core-mvc/file-manager/flat-data.md +++ b/ej2-asp-core-mvc/file-manager/flat-data.md @@ -34,6 +34,8 @@ The File Manager can be populated with local data that contains the array of [Fi To render the root-level folder, specify the `parentId` as null, or there is no need to specify the `parentId` in the array of `FileSystemData` objects. +The `type` field in the flat data source must not be `null`. This field identifies whether the item is a file or a folder, and it also specifies the file type. + {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} {% include code-snippet/file-manager/flat-data/razor %} @@ -67,6 +69,7 @@ The File Manager can be populated with local data that contains the array of [Fi To render the root-level folder, specify the `parentId` as null, or there is no need to specify the `parentId` in the array of `FileSystemData` objects. +The `type` field in the flat data source must not be `null`. This field identifies whether the item is a file or a folder, and it also specifies the file type. {% if page.publishingplatform == "aspnet-core" %} @@ -94,4 +97,4 @@ To render the root-level folder, specify the `parentId` as null, or there is no {% endhighlight %} {% endtabs %} -{% endif %} \ No newline at end of file +{% endif %} 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..59a10368c0 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 @@ -181,7 +181,7 @@ public object Download([FromBody] FileManagerDirectoryContent args) ## 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. +For the **GetImage** operation, use the **beforeImageLoad** event. Inside this event, set **useImageAsUrl** to false to instruct the FileManager not to load the image directly via its URL but instead to use a fetch request. Here, attach the **Authorization** header with the value **User1** within the beforeSend event of the ajaxSettings. {% if page.publishingplatform == "aspnet-core" %} ```ts @@ -200,7 +200,14 @@ For the **GetImage** operation, use the **beforeImageLoad** event to pass custom @@ -222,38 +229,31 @@ For the **GetImage** operation, use the **beforeImageLoad** event to pass custom ``` {% endif %} -In server-side, you can able to get the custom query parameter value using **Authorization** in `GetImage` method. To get the custom query parameter value, extend the `FileManagerDirectoryContent` class and add the custom property **Authorization**. - +In server-side, `GetImage` method access the **Authorization** header from the incoming HTTP request and perform the necessary operations. ```typescript -public class FileManagerAccessController : Controller +// gets the image(s) from the given path +[Route("GetImage")] +public object GetImage([FromBody] FileManagerDirectoryContent args) { - ... - public class FileManagerDirectoryContent1 : FileManagerDirectoryContent - { - public string Authorization { get; set; } - } - ... - - // gets the image(s) from the given path - [Route("GetImage")] - public IActionResult GetImage(FileManagerDirectoryContent1 args) - { - var header = args.Authorization; - return this.operation.GetImage(args.Path, args.Id, false, null, null); - } - - ... + var header = args.Authorization; + return this.operation.GetImage(args.Path, args.Id, false, null, null); } - ``` > **Note:** View the complete [Github sample](https://github.com/SyncfusionExamples/How-to-pass-custom-values-from-client-to-server-in-filemanager) which includes all the above event along with service code for passing custom values to server. diff --git a/ej2-asp-core-mvc/gantt/columns/wbs-column.md b/ej2-asp-core-mvc/gantt/columns/wbs-column.md new file mode 100644 index 0000000000..d4817f49f4 --- /dev/null +++ b/ej2-asp-core-mvc/gantt/columns/wbs-column.md @@ -0,0 +1,80 @@ +--- +layout: post +title: Work Breakdown Structure (WBS) in Syncfusion ##Platform_Name## Gantt Component +description: Learn how to enable and manage WBS codes in the Syncfusion ##Platform_Name## Gantt component to improve task hierarchy visualization and project tracking. +platform: ej2-asp-core-mvc +control: WBS Column +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Work Breakdown Structure (WBS) in Gantt Control + +The Work Breakdown Structure (WBS) is a hierarchical numbering system that assigns unique and structured codes to each task, reflecting their positions within the overall project. This feature ensures data consistency and a clear, organized project view during operations such as sorting, filtering, editing, and drag-and-drop. + +## Configuration and implementation + +To enable and configure WBS in your Gantt component: + +- **Enable WBS Codes**: Set the [`EnableWBS`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.Gantt.html#Syncfusion_EJ2_Gantt_Gantt_EnableWBS) property to `true` to automatically generate unique task codes and their predecessors. +- **Auto-Update Codes**: Set the [`EnableAutoWbsUpdate`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.Gantt.html#Syncfusion_EJ2_Gantt_Gantt_EnableAutoWbsUpdate) property to `true` to maintain WBS code accuracy during operations like sorting, filtering, editing, or drag-and-drop. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/gantt/columns/wbsColumn/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="WbsColumn.cs" %} +{% include code-snippet/gantt/columns/wbsColumn/wbsColumn.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/gantt/columns/wbsColumn/razor %} +{% endhighlight %} +{% highlight c# tabtitle="WbsColumn.cs" %} +{% include code-snippet/gantt/columns/wbsColumn/wbsColumn.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Managing WBS code updates + +For better performance, you can control when WBS codes are updated by using the [`ActionBegin`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.Gantt.html#Syncfusion_EJ2_Gantt_Gantt_ActionBegin) and [`DataBound`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.Gantt.html#Syncfusion_EJ2_Gantt_Gantt_DataBound) events. This is particularly useful during actions like dragging and dropping rows. + +In the following example, WBS auto-update is enabled only during the **row drag and drop** action using these events. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/gantt/columns/wbsColumnEvents/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="WbsColumnEvents.cs" %} +{% include code-snippet/gantt/columns/wbsColumnEvents/wbsColumnEvents.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/gantt/columns/wbsColumnEvents/razor %} +{% endhighlight %} +{% highlight c# tabtitle="WbsColumnEvents.cs" %} +{% include code-snippet/gantt/columns/wbsColumnEvents/wbsColumnEvents.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +## Limitations + +The WBS feature has a few limitations in the Gantt component: + +- Editing of the WBS code and WBS predecessor columns is not supported. +- Load on demand is not supported with the WBS feature. +- WBS Code and WBS Predecessor fields cannot be mapped directly from the data source. \ No newline at end of file diff --git a/ej2-asp-core-mvc/gantt/task-constraints.md b/ej2-asp-core-mvc/gantt/task-constraints.md new file mode 100644 index 0000000000..c52d426e96 --- /dev/null +++ b/ej2-asp-core-mvc/gantt/task-constraints.md @@ -0,0 +1,205 @@ +--- +layout: post +title: Task Constraints in Syncfusion ##Platform_Name## Gantt Component +description: Learn how to implement and manage task constraints in the Syncfusion ##Platform_Name## Gantt component to enforce scheduling rules and dependencies. +platform: ej2-asp-core-mvc +control: Constraints +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Task Constraints in Gantt Control + +Task constraints define rules that control when a task is allowed to start or finish in the project timeline. They help ensure that tasks follow a logical sequence, align with fixed deadlines, and make efficient use of resources. Constraints also support planning for real-world limitations like material delays, team availability, or mandatory compliance dates—making your schedule more realistic and reliable. + +--- + +## Benefits of using task constraints + +Task constraints help guide the schedule of each task by applying real-world rules. They serve critical planning purposes and offer the following benefits: +- **Enforce Task Logic**: Ensure tasks follow a defined sequence, especially when one cannot begin until another ends. +- **Align with Milestones**: Anchor key tasks to fixed dates such as launches, reviews, or audits. +- **Avoid Resource Conflicts**: Prevent tasks from overlapping when they rely on the same resources or teams. +- **Support Scenario Planning**: Modify constraints to test "what-if" situations and explore how delays or accelerations affect the timeline. +- **Meet Business and Compliance Deadlines**: Guarantee that mandatory deadlines are met and ensure the schedule supports regulatory timelines. +- **Improve Planning Accuracy**: Account for real-world limitations like material availability or stakeholder input windows. + +--- + +## Understanding task constraint types + +| Constraint Type | Description | Example Use Case | +|------------------------------|-----------------------------------------------------------------------------|----------------------------------------------------------------------------------| +| **As Soon As Possible (ASAP)** | Starts the task immediately once its dependencies are cleared. | Begin development as soon as design is approved. | +| **As Late As Possible (ALAP)** | Delays the task until the last possible moment without affecting successors. | Apply polish to UI just before release to use the latest assets. | +| **Must Start On (MSO)** | Requires the task to begin on a fixed, non-negotiable date. | Partner company begins integration on July 1st per contract. | +| **Must Finish On (MFO)** | Requires the task to end on a fixed date, regardless of its dependencies. | Submit compliance documentation by March 31 due to government regulations. | +| **Start No Earlier Than (SNET)** | Prevents a task from starting before a certain date. | A campaign cannot begin until regulatory approval on August 15. | +| **Start No Later Than (SNLT)** | Requires a task to start on or before a given date. | Financial reviews must begin by September 1 to meet reporting cycles. | +| **Finish No Earlier Than (FNET)** | Ensures the task does not finish before a certain date. | Training can’t end before all participants have completed onboarding. | +| **Finish No Later Than (FNLT)** | Ensures task completion on or before a specific date. | QA testing must be done by July 25 to meet release deadlines. | + +--- + +## Configuration and implementation + +To enable and manage task constraints in the Gantt component, you need to configure specific fields under the `TaskFields` mapping. These fields tell the Gantt component which type of constraint to apply and the relevant date to enforce it. + +### Step 1: Define taskFields mappings + +In your Gantt component configuration, map the following fields: + +{% if page.publishingplatform == "aspnet-core" %} +{% raw %} +```cshtml +TaskFields.Id = "taskId" +TaskFields.Name = "taskName" +TaskFields.StartDate = "startDate" +TaskFields.EndDate = "endDate" +TaskFields.ConstraintType = "constraintType" // Specifies the type of constraint (e.g., 2 for MustStartOn) +TaskFields.ConstraintDate = "constraintDate" // Specifies the relevant date for the constraint +``` +{% endraw %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} +{% raw %} +```razor +TaskFields.Id = "taskId" +TaskFields.Name = "taskName" +TaskFields.StartDate = "startDate" +TaskFields.EndDate = "endDate" +TaskFields.ConstraintType = "constraintType" // Specifies the type of constraint (e.g., 2 for MustStartOn) +TaskFields.ConstraintDate = "constraintDate" // Specifies the relevant date for the constraint +``` +{% endraw %} +{% endif %} + +These mappings ensure that each task can interpret and apply its constraints correctly based on your data source. + +### Step 2: Provide constraint data + +In your project data source, ensure that each task includes values for the [`ConstraintType`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.TaskFieldsModel.html#Syncfusion_EJ2_Gantt_TaskFieldsModel_ConstraintType) and [`ConstraintDate`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Gantt.TaskFieldsModel.html#Syncfusion_EJ2_Gantt_TaskFieldsModel_ConstraintDate) fields if constraints need to be applied. + +#### Example data format: + +```json +{ + "taskId": 1, + "taskName": "Design Approval", + "startDate": new DateTime(2025, 7, 1), + "endDate": new DateTime(2025, 7, 2), + "constraintType": 2, + "constraintDate": new DateTime(2025, 7, 1) +} +``` + +This task is constrained to must start on July 1, 2025. + +{% if page.publishingplatform == "aspnet-core" %} +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs1/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Constraints.cs" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs1/constraints.cs %} +{% endhighlight %} +{% endtabs %} +{% elsif page.publishingplatform == "aspnet-mvc" %} +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs1/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Constraints.cs" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs1/constraints.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +### Managing scheduling conflicts due to constraint violations + +When scheduling changes conflict with applied constraints, the Gantt component shows a violation popup to alert users. This validation applies specifically to strict constraint types: +- MustStartOn +- MustFinishOn +- StartNoLaterThan +- FinishNoLaterThan + +#### Programmatic conflict management + +You can intercept constraint violations using the `ActionBegin` event. When the event’s `RequestType` is `"ValidateTaskViolation"`, set specific flags in `args.ValidateMode` to determine how conflicts are handled. + +##### Supported flags + +| Flag | Description | +|-----------------------------|--------------------------------------------------------------| +| RespectMustStartOn | If true, silently rejects violations of MustStartOn. | +| RespectMustFinishOn | If true, silently cancels changes violating MustFinishOn. | +| RespectStartNoLaterThan | If true, blocks updates violating StartNoLaterThan. | +| RespectFinishNoLaterThan | If true, blocks changes violating FinishNoLaterThan. | + +> **Defaults**: All flags default to `false`, meaning violations show a popup. Setting a flag to `true` enables silent + + enforcement (i.e., the user’s update is canceled without interruption). + +#### Example setup + +{% if page.publishingplatform == "aspnet-core" %} +```cshtml +ActionBegin="ActionBeginHandler" +``` +```c# +public void ActionBeginHandler(Syncfusion.EJ2.Gantt.GanttActionEventArgs args) +{ + if (args.RequestType == "ValidateTaskViolation") + { + args.ValidateMode = new + { + RespectMustStartOn = true, + RespectMustFinishOn = true, + RespectStartNoLaterThan = true, + RespectFinishNoLaterThan = true + }; + } +} +``` +{% elsif page.publishingplatform == "aspnet-mvc" %} +```razor +ActionBegin="ActionBeginHandler" +``` +```c# +public void ActionBeginHandler(Syncfusion.EJ2.Gantt.GanttActionEventArgs args) +{ + if (args.RequestType == "ValidateTaskViolation") + { + args.ValidateMode = new + { + RespectMustStartOn = true, + RespectMustFinishOn = true, + RespectStartNoLaterThan = true, + RespectFinishNoLaterThan = true + }; + } +} +``` +{% endif %} + +In the following example, we have **disabled the `MustStartOn` violation popup** by setting `RespectMustStartOn` to `true`. + +{% if page.publishingplatform == "aspnet-core" %} +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs2/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="ConstraintsPopup.cs" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs2/constraintsPopup.cs %} +{% endhighlight %} +{% endtabs %} +{% elsif page.publishingplatform == "aspnet-mvc" %} +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs2/razor %} +{% endhighlight %} +{% highlight c# tabtitle="ConstraintsPopup.cs" %} +{% include code-snippet/gantt/task-scheduling/task-constraints-cs2/constraintsPopup.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/column-reorder.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/column-reorder.md index 0972c63e83..f5ad5b059c 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/column-reorder.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/columns/column-reorder.md @@ -115,6 +115,30 @@ Here is an example of how to use the `reorderColumns` method to reorder single c ![Reorder column based on field names](../images/column-reorder/column-reorder-field.gif) +### Reorder columns using the column model (ideal for stacked headers) + +Previously, column reordering in the Grid was handled using methods like `reorderColumnByIndex`, `reorderColumns`, and `reorderColumnByTargetIndex`. These methods allowed reordering based on field names or index positions and were suitable for simple, flat column structures. + +To reorder stacked header columns, use the `reorderByColumnModel` method. It enables reordering by passing complete column model objects. This method is specifically designed to support `stacked header columns`, but it also works with normal column configurations. + +The `reorderColumnByModel` method accepts two arguments: + +* **fromColumn**: The column object that you want to move. +* **toColumn**: The target column object before which the **fromColumn** should be placed. + +In this example, **Order Details** is moved before **Customer Name**, and **Ship Country** is moved before **Ship Name** within **Ship Details**, showing how `reorderColumnByModel` method reorders both normal and stacked header columns using a button click. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/columns/reorderColumnByModel/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Reorder.cs" %} +{% include code-snippet/grid/columns/reorderColumnByModel/reorder.cs %} +{% endhighlight %} +{% endtabs %} + +![Column reorder by columnmodel](../images/column-reorder/columreorderByColumnModel.gif) + ## Reorder events When reordering columns in the Syncfusion® ASP.NET MVC Grid component, you may want to take some specific action in response to the drag and drop events. To handle these events, you can define event handlers for the following events: @@ -136,4 +160,4 @@ In the following example, we have implemented the `ColumnDragStart`, `ColumnDrag {% endhighlight %} {% endtabs %} -![Reorder events](../images/column-reorder/column-reorder-events.gif) +![Reorder events](../images/column-reorder/column-reorder-events.gif) \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/data-binding/data-binding.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/data-binding/data-binding.md index ec4d91a742..1b89bc79d5 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/data-binding/data-binding.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/data-binding/data-binding.md @@ -257,7 +257,7 @@ The following example demonstrates how to prevent local time zone conversion for ![Prevent to convert local time zone format](../images/databinding/local-time.gif) -## How to set custom headers using a custom adaptor in Syncfusion ASP.NET MVC Grid +## How to set custom headers using a custom adaptor Custom headers in HTTP requests are used to send additional information such as authentication tokens, API keys, or metadata required by the server. These headers improve security and enable better control over data communication. In the Syncfusion ASP.NET MVC Grid, custom headers can be added when making API requests, ensuring that each request carries the necessary information for server-side validation and processing. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit-types.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit-types.md index 2c3c8cadd0..ad2d924d79 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit-types.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/editing/edit-types.md @@ -513,13 +513,13 @@ The following example demonstrates how to render a Upload control in the **Emplo ![Render Upload component in edit form](../images/editing/edit-types-upload.jpeg) -### Render AutoComplete component in edit form +### Render AutoComplete in edit form -The Syncfusion® Grid allows you to render the AutoComplete component within the edit form by using the cell edit template feature.This feature enables you to select values from a predefined list during the editing of a specific column. It is especially valuable when you need to provide a dropdown-like auto-suggestion and input assistance for data entry in the Grid's columns. +The Syncfusion ASP.NET MVC Grid allows you to render the AutoComplete within the edit form by using the cell edit template feature.This feature enables you to select values from a predefined list during the editing of a specific column. It is especially valuable when you need to provide a dropdown-like auto-suggestion and input assistance for data entry in the Grid's columns. -To achieve this, you need to utilize the `Columns->Edit->Params` property along with a defined object that specifies the necessary functions for creating, reading, and writing the auto complete component. +To achieve this, you need to define the cell edit template for the column using the `Edit` property. This property specifies the necessary functions for creating, reading, and writing the AutoComplete into the specific column. -The following example demonstrates how to render a Autocomplete component in the **CustomerID** column: +The following example demonstrates how to render a Autocomplete in the **CustomerID** column: {% tabs %} {% highlight razor tabtitle="CSHTML" %} @@ -532,11 +532,11 @@ The following example demonstrates how to render a Autocomplete component in the ![Render auto complete component](../images/editing/render-auto-complete.png) -### Render cascading DropDownList component in edit form +### Render cascading DropDownList in edit form -The Syncfusion® Grid allows you to render the cascading DropDownList within the edit form by using the cell edit template feature.This feature is especially useful when you need to establish a hierarchy of options, such as choosing a country and then selecting a state based on the chosen country. +The Syncfusion ASP.NET MVC Grid allows you to render the cascading DropDownList within the edit form by using the cell edit template feature.This feature is especially useful when you need to establish a hierarchy of options, such as choosing a country and then selecting a state based on the chosen country. -To achieve this, you need to utilize the `Columns->Edit->Params` property along with a defined object that specifies the necessary functions for creating, reading, and writing the auto complete component. +To achieve this, you need to define the cell edit template for the column using the `Edit` property. This property specifies the necessary functions for creating, reading, and writing the cascading DropDownList. In the below demo, cascading DropDownList rendered for **ShipCountry** and **ShipState** column. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/integrate-chart-in-grid.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/integrate-chart-in-grid.md new file mode 100644 index 0000000000..6a42601140 --- /dev/null +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/integrate-chart-in-grid.md @@ -0,0 +1,363 @@ +--- +layout: post +title: Integrate Chart in Syncfusion ##Platform_Name## Grid +description: Learn here all about integrate Chart in Syncfusion ##Platform_Name## Grid of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Integrate Chart +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Integrate Chart in Syncfusion ASP.NET MVC Grid + +The Grid and Chart Integration feature in Syncfusion allows users to visualize tabular data in a graphical format by linking the Grid with the Chart.This feature allows seamless integration with Charts to visualize selected data interactively. You can generate various Chart types such as bar, line, or pie directly from Grid data using the [ContextMenu](https://ej2.syncfusion.com/aspnetmvc/documentation/grid/context-menu) feature. This feature is particularly useful in scenarios where tabular data can be better understood through graphical representation. + +This feature is particularly useful in dashboards, reporting tools, and data-driven applications where both tabular and visual representations of data are required. + +## Steps for Chart integration + +To integrate Charts into your Grid, follow these steps: + +### Create ASP.NET MVC application with HTML helper + +* [Create a Project using Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/getting-started#create-your-first-app) + +* [Create a Project using Syncfusion ASP.NET MVC Extension](https://ej2.syncfusion.com/aspnetmvc/documentation/getting-started/project-template) + +### Install ASP.NET MVC package in the application + +To add `ASP.NET MVC` controls in the application, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search for [Syncfusion.EJ2.MVC5](https://www.nuget.org/packages/Syncfusion.EJ2.MVC5) and then install it. + +{% tabs %} +{% highlight C# tabtitle="Package Manager" %} + +Install-Package Syncfusion.EJ2.MVC5 -Version {{ site.ej2version }} + +{% endhighlight %} +{% endtabs %} + +N> Syncfusion ASP.NET MVC controls are available in [nuget.org.](https://www.nuget.org/packages?q=syncfusion.EJ2) Refer to [NuGet packages topic](https://ej2.syncfusion.com/aspnetmvc/documentation/nuget-packages) to learn more about installing NuGet packages in various OS environments. The Syncfusion.EJ2.MVC5 NuGet package has dependencies, [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) for JSON serialization and [Syncfusion.Licensing](https://www.nuget.org/packages/Syncfusion.Licensing/) for validating Syncfusion license key. + +### Add namespace + +Add **Syncfusion.EJ2** namespace reference in `Web.config` under `Views` folder. + +``` + + + +``` + +### Add stylesheet and script resources + +Here, the theme and script is referred using CDN inside the `` of `~/Pages/Shared/_Layout.cshtml` file as follows, + +{% tabs %} +{% highlight cshtml tabtitle="~/_Layout.cshtml" %} + + + ... + + + + + + +{% endhighlight %} +{% endtabs %} + +N> Checkout the [Themes topic](https://ej2.syncfusion.com/aspnetmvc/documentation/appearance/theme) to learn different ways (CDN, NPM package, and [CRG](https://ej2.syncfusion.com/aspnetmvc/documentation/common/custom-resource-generator)) to refer styles in ASP.NET MVC application, and to have the expected appearance for Syncfusion ASP.NET MVC controls. Checkout the [Adding Script Reference](https://ej2.syncfusion.com/aspnetmvc/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your ASP.NET MVC application. + +### Register Syncfusion script manager + +Also, register the script manager `EJS().ScriptManager()` at the end of `` in the `~/Pages/Shared/_Layout.cshtml` file as follows. + +{% tabs %} +{% highlight cshtml tabtitle="~/_Layout.cshtml" %} + + +... + + @Html.EJS().ScriptManager() + + +{% endhighlight %} +{% endtabs %} + +### Chart integration via Context Menu in Grid + +This section explains how to dynamically render Charts based on user interactions within the Syncfusion ASP.NET MVC Grid using the context menu. Users can **right-click** on selected rows and choose from various Chart types such as bar, pie, line Charts etc to visualize the data instantly. This feature enhances interactivity and provides a seamless analytical experience. + +For example, in a sales dashboard, you can select sales records for specific products and instantly view a comparative bar or pie Chart illustrating online sales versus retail sales or revenue trends over several month. This functionality helps improve decision-making by providing immediate visual feedback. + +Steps to be followed to integrate Chart into Grid via Context Menu: + +**Step 1: Define Chart options to Grid Context Menu:** + +Add Chart visualization options as context menu items within the Grid configuration using [ContextMenuItems](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuItems) property. These items allow you to right-click on selected rows and choose a Chart type to visualize the data. + +```cs + +@Html.EJS().Grid("Grid").DataSource((IEnumerable)ViewBag.dataSource).Height(418).Columns(col => +{ + +}).ContextMenuItems(new List() { + "Bar", "StackingBar", "StackingBar100", "Pie", + "Column", "StackingColumn", "StackingColumn100", + "Line", "StackingLine", "StackingLine100", "Area", + "StackingArea", "StackingArea100", "Scatter" +}).Render() + +``` + +**Step 2: Initialize GridChart instance on Grid creation:** + +Inside the Grid’s [Created](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_Created) event, instantiate a **GridChart** object. This instance will be used to render Charts dynamically based on the selected Grid data. + +```cs + +function created() { + var grid = document.getElementById("Grid").ej2_instances[0]; + gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true, + enableRtl: grid.enableRtl, + allowExport: true, + locale: grid.locale, + updateChartSettings: updateChartSettings + }); +} + +``` +This ensures that the Chart instance is ready as soon as the Grid is initialized, allowing seamless interaction through the context menu. + +**Step 3: Handle context menu click to render Chart:** + +Use the [ContextMenuClick](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuClick) event to detect which Chart type was selected and render the Chart accordingly using the `gridChart.render()` method. + +`ContextMenuClick` event passes the below arguments: + + * `args.chartType:` The selected Chart type. + + * `args.gridInstance:` The current Grid instance. + + * `args.records:` The selected data records to be visualized in the Chart. + +* Use the `gridChart.render` to render the Chart. It accepts three arguments discussed below: + + * `chartArgs`: Contains Grid instance, [Chart type](https://ej2.syncfusion.com/aspnetmvc/documentation/chart/chart-types), and selected records. + + * `chartModel:` This specifies various Chart configurations related to the appearance and behavior of the Chart. The model allows you to configure axes, labels, legends, tooltips, and other Chart attributes. Refer to Syncfusion's Chart Model for detailed configurations, options, and customization possibilities. + + * `categorySeries:` This specifies the fields in your data used for [categories](https://ej2.syncfusion.com/aspnetmvc/documentation/chart/category-axis) and [series](https://ej2.syncfusion.com/aspnetmvc/documentation/chart/chart-series) in the Chart. + + * Category fields: Define the grouping axis. + * Series fields: Define the actual values plotted on the Chart. + + +```cs + +function contextMenuClick(args) +{ + // Check if the Chart type is defined in the clicked context menu item. + if (args.chartType) + { + // Prepare the Chart arguments including the Grid instance, Chart type, and records to plot. + const chartArgs = { + gridInstance: (args.gridInstance), + chartType: args.chartType, + records: (args.records), + }; + + // Set up the Chart model configurations. + const chartModel = { + primaryXAxis: { + valueType: 'Category', + labelRotation: 315, + } + }; + + // Combine both Chart models into a single model for rendering. + const model = { + chart: chartModel, + accumulationChart: {} + }; + + // Determine fields for category and series data in the Chart. + const categorySeries = { + category: ['Product', 'Month'], + series: ['Online', 'Retail'] + }; + + // Render the Chart using the configured arguments and models. + // The render function uses the defined chartArgs, model, and categorySeries to display the Chart. + gridChart.render(chartArgs, model, categorySeries); + } +} + +``` + +The following complete example demonstrates how to integrate Charts into a Grid context menu using the `ContextMenuClick` event with `gridChart.render` method: + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/chart-intergartion/razor %} +{% endhighlight %} +{% highlight c# tabtitle="chart.cs" %} +{% include code-snippet/grid/chart-intergartion/chart.cs %} +{% endhighlight %} +{% endtabs %} + +![Chart integration via Context Menu in Grid](../images/GridChart1.gif) + +## Enable export functionality in GridChart + +The export functionality in GridChart allows Charts to be saved or shared externally in various formats. This is particularly useful for preserving visualized data or including Charts in reports and presentations. + +To enable this feature, set the `allowExport` property to true when creating the **GridChart** instance. Once enabled, an export option appears in the Chart popup toolbar, allowing the Chart to be exported in various formats such as PDF, CSV, Print, JPEG, XLSX, SVG, and PNG. + +The following code snippet demonstrates how to enable export functionality in **GridChart**: + +```cs + +gridChart = new ej.gridchart.GridChart({ + allowExport: true +}); + +``` + +## Enable property panel in GridChart + +The property panel in GridChart provides a built-in interface to modify Chart settings dynamically at runtime. By default, the property panel is disabled. To enable it, set the `enablePropertyPanel` option to true during the instantiation of the **GridChart** object. Here’s how to do it: + +```cs + +gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true +}); + +``` + +When enabled, the property panel appears alongside the Chart popup and offers three main configuration sections: + +* **Chart Types:** Choose from a variety of Chart types, including Column, Line, Pie, and others. + +* **Chart Data:** Configure the category axis and series fields for data visualization. + +* **Formatting Options:** Adjust styling properties such as Chart style, title style, legend appearance, series settings, and axes formatting. + + * **Chart Style:** + + * **Margin :** Adjust the [margins](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Charts.ChartMargin.html#properties) around the Chart (top, bottom, left, right) for better layout spacing. + * **Color**: Set distinct colors for different Chart elements to improve visual clarity. + + * **Title Style** + + * **Legend** - Toggle the visibility of the legend and customize its font, size, color, and position. + * **Series** - Enable/disable tooltips and customize [Series](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Charts.ChartSeries.html) color and data labels based on categories such as online, retail, or revenue. + + * **Axes:** - Select axes as either category or value type, and customize: + + * Reverse Order to change the data sequence. + * **Title:** Adjust text, font, size, color, and rotation. + * **Label:** Modify text, font, size, color, and rotation for better label presentation. + +**Customize the Chart model:** + +You can customize the [Chart](https://ej2.syncfusion.com/aspnetmvc/documentation/chart/getting-started) by defining a `chartModel` object in the `chart` property of the `model` object within the [ContextMenuClick](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuClick) event .This allows you to configure various Chart properties such as axes, margins, tooltips, titles, and more. Additionally, you can use the [events](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Charts.Chart.html#properties) of the Chart within the `chartModel` configuration to apply further customizations when the Chart is rendered. + +To customize [Accumulation Charts](https://ej2.syncfusion.com/aspnetmvc/documentation/accumulation-chart/getting-started) (such as Pie), use the `accumulationChart` property of the `model` object. This property allows you to configure Chart options like titles, legends, data labels, and visual styles tailored for accumulation-type visualizations. You can also use Accumulation Chart [events](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Charts.AccumulationChart.html#properties) to apply additional customizations when the Chart is rendered. + +The following code snippets demonstrate how to achieve this: + +```cs + +function contextMenuClick(args) { + if (args.chartType) { + const chartModel = { + primaryXAxis: { + valueType: 'Category', + labelRotation: 315, + }, + margin: { + top: 20, + bottom: 20, + right: 20, + left: 20 + }, + tooltip: { + enable: true, + textStyle: { + size: '16px', + fontFamily: 'Arial, Helvetica, sans-serif' + } + }, + title: 'Sales Data', + titleStyle: { + size: '24px', + fontFamily: 'Arial, Helvetica, sans-serif', + fontWeight: 'Bold' + }, + subTitle: 'Sales data for various products over the months', + load: (args) => { + if (args.chart.titleStyle) { + args.chart.titleStyle.color = '#1976d2'; + } + } + }; + const accumulationChartModel= { + title :'Sales Distribution' + }; + const model = { + chart: chartModel, + accumulationChart: accumulationChartModel + }; + } +} + +``` + +You can also programmatically update the Chart’s appearance using the `updateChartSettings` event provided by the **GridChart** integration. This event is triggered when you modify Chart properties through the Chart popup’s property panel. This is useful for applying custom themes, adjusting axis settings, or modifying series styles. + +The following code snippet demonstrates how to dynamically customize Chart margins and restrict their values to a minimum of 20 using the `updateChartSettings` event. + +```cs + +function created() { + var grid = document.getElementById("Grid").ej2_instances[0]; + gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true, + enableRtl: grid.enableRtl, + allowExport: true, + locale: grid.locale, + updateChartSettings: updateChartSettings + }); +} + +function updateChartSettings(args) { + const chart = args.changes.chart; + if (!chart) return; + + // Restrict margin values to minimum 20. + const margin = chart.margin; + if (margin) { + if (margin.top < 20) margin.top = 20; + if (margin.bottom < 20) margin.bottom = 20; + if (margin.left < 20) margin.left = 20; + if (margin.right < 20) margin.right = 20; + } +} + +``` + +The following complete example demonstrates how to enable the property panel by setting `enablePropertyPanel` to **true**, customize the Chart using the `chartModel` within `ContextMenuClick` event, and dynamically control or customize the behavior of the `updateChartSettings` event. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/chart-intergartion1/razor %} +{% endhighlight %} +{% highlight c# tabtitle="chart.cs" %} +{% include code-snippet/grid/chart-intergartion1/chart.cs %} +{% endhighlight %} +{% endtabs %} + +![Chart integration](../images/GridChart2.gif) \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/row/detail-template.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/row/detail-template.md index 7fae2d682d..2799002d18 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/row/detail-template.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/row/detail-template.md @@ -99,7 +99,6 @@ Detail template is not supported with the following features: * Frozen rows and columns * Immutable mode -* Infinite scrolling * Virtual scrolling * Print * Row template 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..333464bed1 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 @@ -90,24 +90,21 @@ The following example enable column virtualization using `EnableColumnVirtualiza * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering - 3. Column chooser - 4. Auto-fit - 5. Print - 6. Clipboard - 7. Column menu - Column chooser, AutofitAll + 3. Auto-fit + 4. Print + 5. Clipboard + 6. Column menu - AutofitAll * Column virtual scrolling is not compatible with the following feature 1. Grouping 2. Colspan 3. Batch editing - 4. Column with infinite scrolling - 6. Stacked header - 7. Row template - 8. Detail template - 9. Hierarchy grid - 10. Autofill - 11. Column chooser - 12. Page + 4. Stacked header + 5. Row template + 6. Detail template + 7. Hierarchy grid + 8. Autofill + 9. Page ## Browser height limitation in virtual scrolling and solution @@ -244,4 +241,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/aspnetmvc/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/aspnetmvc/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 diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/tool-bar/tool-bar-items.md b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/tool-bar/tool-bar-items.md index 0bbe8dc48d..77e3145bd7 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/tool-bar/tool-bar-items.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.MVC/tool-bar/tool-bar-items.md @@ -133,6 +133,25 @@ The following example demonstrates, how to use both built-in and custom toolbar ![Both built-in and custom items in toolbar](../images/toolbar/custom-items.png) +## Add custom components to the Grid toolbar using template + +The Syncfusion ASP.NET MVC Grid provides the flexibility to customize its toolbar by embedding custom components using the `Template` property of the `ItemModel`. This feature allows developers to add UI elements such as buttons, dropdowns, or input controls directly into the toolbar, alongside built-in actions like **Add**, **Edit**, and **Delete**. + +In the following example, an [AutoComplete](https://ej2.syncfusion.com/aspnetmvc/documentation/auto-complete/getting-started) is defined as a custom toolbar item using the `Template` property. The `AutoComplete` is populated with unique values from the `ShipCity` field of the Grid data. When you select a value from the `AutoComplete`, the Grid is filtered to display only the records that match the selected city. Once the Grid is rendered, the custom `AutoComplete` appears as part of the toolbar, allowing you to interact with both standard and custom toolbar elements. + +Additionally, the [Change](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.DropDowns.AutoComplete.html#Syncfusion_EJ2_DropDowns_AutoComplete_Change) event of the `AutoComplete` is used to trigger a search operation within the Grid. When you select or type a value, the event handler invokes the Grid’s `search` method, dynamically filtering the displayed records in the **ShipCity** column based on the input. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/toolbar/custom-toolbar-items/razor %} +{% endhighlight %} +{% highlight c# tabtitle="builtin-custom-items.cs" %} +{% include code-snippet/grid/toolbar/custom-toolbar-items/custom-items.cs %} +{% endhighlight %} +{% endtabs %} + +![Custom components to the Grid toolbar using template](../images/toolbar/custom-toolbar-image.gif) + ## Custom toolbar items in a specific position Customizing the position of a custom toolbar within the Syncfusion ASP.NET MVC Grid involves modifying the default placement of the custom toolbar items. This enables you to precisely control the positioning of each custom toolbar item according to your specific requirements and desired layout within the Grid. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/column-reorder.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/column-reorder.md index 3edb37d191..f62961d906 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/column-reorder.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/columns/column-reorder.md @@ -115,6 +115,30 @@ Here is an example of how to use the `reorderColumns` method to reorder single c ![Reorder column based on field names](../images/column-reorder/column-reorder-field.gif) +### Reorder columns using the column model (ideal for stacked headers) + +Previously, column reordering in the Grid was handled using methods like `reorderColumnByIndex`, `reorderColumns`, and `reorderColumnByTargetIndex`. These methods allowed reordering based on field names or index positions and were suitable for simple, flat column structures. + +To reorder stacked header columns, use the `reorderByColumnModel` method. It enables reordering by passing complete column model objects. This method is specifically designed to support `stacked header columns`, but it also works with normal column configurations. + +The `reorderColumnByModel` method accepts two arguments: + +* **fromColumn**: The column object that you want to move. +* **toColumn**: The target column object before which the **fromColumn** should be placed. + +In this example, **Order Details** is moved before **Customer Name**, and **Ship Country** is moved before **Ship Name** within **Ship Details**, showing how `reorderColumnByModel` method reorders both normal and stacked header columns using a button click. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/columns/reorderColumnByModel/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Reorder.cs" %} +{% include code-snippet/grid/columns/reorderColumnByModel/reorder.cs %} +{% endhighlight %} +{% endtabs %} + +![Column reorder by columnmodel](../images/column-reorder/columreorderByColumnModel.gif) + ## Reorder events When reordering columns in the Syncfusion® ASP.NET Core Grid component, you may want to take some specific action in response to the drag and drop events. To handle these events, you can define event handlers for the following events: diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/data-binding/data-binding.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/data-binding/data-binding.md index dd4d3a3e90..786b5a4311 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/data-binding/data-binding.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/data-binding/data-binding.md @@ -257,7 +257,7 @@ The following example demonstrates how to prevent local time zone conversion for ![Prevent to convert local time zone format](../images/databinding/local-time.gif) -## How to set custom headers using a custom adaptor in Syncfusion ASP.NET Core Grid +## How to set custom headers using a custom adaptor Custom headers in HTTP requests are used to send additional information such as authentication tokens, API keys, or metadata required by the server. These headers improve security and enable better control over data communication. In the Syncfusion ASP.NET Core Grid, custom headers can be added when making API requests, ensuring that each request carries the necessary information for server-side validation and processing. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit-types.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit-types.md index bf06556839..4dceadcbf7 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit-types.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/editing/edit-types.md @@ -513,13 +513,13 @@ The following example demonstrates how to render a Upload control in the **Emplo ![Render Upload component in edit form](../images/editing/edit-types-upload.jpeg) -### Render AutoComplete component in edit form +### Render AutoComplete in edit form -The Syncfusion® Grid allows you to render the AutoComplete component within the edit form by using the cell edit template feature.This feature enables you to select values from a predefined list during the editing of a specific column. It is especially valuable when you need to provide a dropdown-like auto-suggestion and input assistance for data entry in the Grid's columns. +The Syncfusion ASP.NET Core Grid allows you to render the AutoComplete within the edit form by using the cell edit template feature.This feature enables you to select values from a predefined list during the editing of a specific column. It is especially valuable when you need to provide a dropdown-like auto-suggestion and input assistance for data entry in the Grid's columns. -To achieve this, you need to utilize the `columns->edit->params` property along with a defined object that specifies the necessary functions for creating, reading, and writing the auto complete component. +To achieve this, you need to define the cell edit template for the column using the `edit` property. This property specifies the necessary functions for creating, reading, and writing the AutoComplete into the specific column. -The following example demonstrates how to render a Autocomplete component in the **CustomerID** column: +The following example demonstrates how to render a Autocomplete in the **CustomerID** column: {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} @@ -532,11 +532,11 @@ The following example demonstrates how to render a Autocomplete component in the ![Render auto complete component](../images/editing/render-auto-complete.png) -### Render cascading DropDownList component in edit form +### Render cascading DropDownList in edit form -The Syncfusion® Grid allows you to render the cascading DropDownList within the edit form by using the cell edit template feature.This feature is especially useful when you need to establish a hierarchy of options, such as choosing a country and then selecting a state based on the chosen country. +The Syncfusion ASP.NET Core Grid allows you to render the cascading DropDownList within the edit form by using the cell edit template feature.This feature is especially useful when you need to establish a hierarchy of options, such as choosing a country and then selecting a state based on the chosen country. -To achieve this, you need to utilize the `columns->edit->params` property along with a defined object that specifies the necessary functions for creating, reading, and writing the auto complete component. +To achieve this, you need to define the cell edit template for the column using the `edit` property. This property specifies the necessary functions for creating, reading, and writing the cascading DropDownList. In the below demo, cascading DropDownList rendered for **ShipCountry** and **ShipState** column. diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/integrate-chart-in-grid.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/integrate-chart-in-grid.md new file mode 100644 index 0000000000..8e9475ed8d --- /dev/null +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/integrate-chart-in-grid.md @@ -0,0 +1,366 @@ +--- +layout: post +title: Integrate Chart in Syncfusion ##Platform_Name## Grid +description: Learn here all about integrate Chart in Syncfusion ##Platform_Name## Grid of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Integrate Chart +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Integrate Chart in Syncfusion ASP.NET Core Grid + +The Grid and Chart Integration feature in Syncfusion allows users to visualize tabular data in a graphical format by linking the Grid with the Chart.This feature allows seamless integration with Charts to visualize selected data interactively. You can generate various Chart types such as bar, line, or pie directly from Grid data using the [ContextMenu](https://ej2.syncfusion.com/aspnetcore/documentation/grid/context-menu) feature. This feature is particularly useful in scenarios where tabular data can be better understood through graphical representation. + +This feature is particularly useful in dashboards, reporting tools, and data-driven applications where both tabular and visual representations of data are required. + +## Steps for Chart integration + +To integrate Charts into your Grid, follow these steps: + +### Create ASP.NET Core web application with Razor pages + +* [Create a Project using Microsoft Templates](https://learn.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/razor-pages-start?view=aspnetcore-8.0&tabs=visual-studio#create-a-razor-pages-web-app) + +* [Create a Project using Syncfusion ASP.NET Core Extension](https://ej2.syncfusion.com/aspnetcore/documentation/getting-started/project-template) + +### Install ASP.NET Core package in the application + +To add `ASP.NET Core` controls in the application, open the NuGet package manager in Visual Studio (Tools → NuGet Package Manager → Manage NuGet Packages for Solution), search for [Syncfusion.EJ2.AspNet.Core](https://www.nuget.org/packages/Syncfusion.EJ2.AspNet.Core/) and then install it. Alternatively, you can utilize the following package manager command to achieve the same. + +{% tabs %} +{% highlight C# tabtitle="Package Manager" %} + +Install-Package Syncfusion.EJ2.AspNet.Core -Version {{ site.releaseversion }} + +{% endhighlight %} +{% endtabs %} + +N> Syncfusion ASP.NET Core controls are available in [nuget.org.](https://www.nuget.org/packages?q=syncfusion.EJ2) Refer to [NuGet packages topic](https://ej2.syncfusion.com/aspnetcore/documentation/nuget-packages) to learn more about installing NuGet packages in various OS environments. The Syncfusion.EJ2.AspNet.Core NuGet package has dependencies, [Newtonsoft.Json](https://www.nuget.org/packages/Newtonsoft.Json/) for JSON serialization and [Syncfusion.Licensing](https://www.nuget.org/packages/Syncfusion.Licensing/) for validating Syncfusion license key. + +### Add Syncfusion ASP.NET Core tag helper + +Open `~/Pages/_ViewImports.cshtml` file and import the `Syncfusion.EJ2` TagHelper. + +{% tabs %} +{% highlight C# tabtitle="~/_ViewImports.cshtml" %} + +@addTagHelper *, Syncfusion.EJ2 + +{% endhighlight %} +{% endtabs %} + +### Add stylesheet and script resources + +Here, the theme and script is referred using CDN inside the `` of `~/Pages/Shared/_Layout.cshtml` file as follows, + +{% tabs %} +{% highlight cshtml tabtitle="~/_Layout.cshtml" %} + + + ... + + + + + + +{% endhighlight %} +{% endtabs %} + +N> Checkout the [Themes topic](https://ej2.syncfusion.com/aspnetcore/documentation/appearance/theme) to learn different ways ([CDN](https://ej2.syncfusion.com/aspnetcore/documentation/common/adding-script-references#cdn-reference), [NPM package](https://ej2.syncfusion.com/aspnetcore/documentation/common/adding-script-references#node-package-manager-npm), and [CRG](https://ej2.syncfusion.com/aspnetcore/documentation/common/custom-resource-generator)) to refer styles in ASP.NET Core application, and to have the expected appearance for Syncfusion ASP.NET Core controls. + +N> Checkout the [Adding Script Reference](https://ej2.syncfusion.com/aspnetcore/documentation/common/adding-script-references) topic to learn different approaches for adding script references in your ASP.NET Core application. + +### Register Syncfusion script manager + +Also, register the script manager `` at the end of `` in the ASP.NET Core application as follows. + +{% tabs %} +{% highlight cshtml tabtitle="~/_Layout.cshtml" %} + + + ... + + + + +{% endhighlight %} +{% endtabs %} + +### Chart integration via Context Menu in Grid + +This section explains how to dynamically render Charts based on user interactions within the Syncfusion ASP.NET Core Grid using the context menu. Users can **right-click** on selected rows and choose from various Chart types such as bar, pie, line Charts etc to visualize the data instantly. This feature enhances interactivity and provides a seamless analytical experience. + +For example, in a sales dashboard, you can select sales records for specific products and instantly view a comparative bar or pie Chart illustrating online sales versus retail sales or revenue trends over several month. This functionality helps improve decision-making by providing immediate visual feedback. + +Steps to be followed to integrate Chart into Grid via Context Menu: + + +**Step 1: Define Chart options to Grid Context Menu:** + +Add Chart visualization options as context menu items within the Grid configuration using [contextMenuItems](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuItems) property. These items allow you to right-click on selected rows and choose a Chart type to visualize the data. + +```cs + + + +``` + +**Step 2: Initialize GridChart instance on Grid creation:** + +Inside the Grid’s [created](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_Created) event, instantiate a **GridChart** object. This instance will be used to render Charts dynamically based on the selected Grid data. + +```cs + +function created() { + var grid = document.getElementById("Grid").ej2_instances[0]; + gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true, + enableRtl: grid.enableRtl, + allowExport: true, + locale: grid.locale, + updateChartSettings: updateChartSettings + }); +} + +``` +This ensures that the Chart instance is ready as soon as the Grid is initialized, allowing seamless interaction through the context menu. + +**Step 3: Handle context menu click to render Chart:** + +Use the [contextMenuClick](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuClick) event to detect which Chart type was selected and render the Chart accordingly using the `gridChart.render()` method. + +`contextMenuClick` event passes the below arguments: + + * `args.chartType:` The selected Chart type. + + * `args.gridInstance:` The current Grid instance. + + * `args.records:` The selected data records to be visualized in the Chart. + +* Use the `gridChart.render` to render the Chart. It accepts three arguments discussed below: + + * `chartArgs`: Contains Grid instance, [Chart type](https://ej2.syncfusion.com/aspnetcore/documentation/chart/chart-types), and selected records. + + * `chartModel:` This specifies various Chart configurations related to the appearance and behavior of the Chart. The model allows you to configure axes, labels, legends, tooltips, and other Chart attributes. Refer to Syncfusion's Chart Model for detailed configurations, options, and customization possibilities. + + * `categorySeries:` This specifies the fields in your data used for [categories](https://ej2.syncfusion.com/aspnetcore/documentation/chart/category-axis) and [series](https://ej2.syncfusion.com/aspnetcore/documentation/chart/chart-series) in the Chart. + + * Category fields: Define the grouping axis. + * Series fields: Define the actual values plotted on the Chart. + + +```cs + +function contextMenuClick(args) +{ + // Check if the Chart type is defined in the clicked context menu item. + if (args.chartType) + { + // Prepare the Chart arguments including the Grid instance, Chart type, and records to plot. + const chartArgs = { + gridInstance: (args.gridInstance), + chartType: args.chartType, + records: (args.records), + }; + + // Set up the Chart model configurations. + const chartModel = { + primaryXAxis: { + valueType: 'Category', + labelRotation: 315, + } + }; + + // Combine both Chart models into a single model for rendering. + const model = { + chart: chartModel, + accumulationChart: {} + }; + + // Determine fields for category and series data in the Chart. + const categorySeries = { + category: ['Product', 'Month'], + series: ['Online', 'Retail'] + }; + + // Render the Chart using the configured arguments and models. + // The render function uses the defined chartArgs, model, and categorySeries to display the Chart. + gridChart.render(chartArgs, model, categorySeries); + } +} + +``` + +The following complete example demonstrates how to integrate Charts into a Grid context menu using the `contextMenuClick` event with `gridChart.render` method: + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/chart-intergartion/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="chart.cs" %} +{% include code-snippet/grid/chart-intergartion/chartcore.cs %} +{% endhighlight %} +{% endtabs %} + +![Chart integration via Context Menu in Grid](../images/GridChart1.gif) + +## Enable export functionality in GridChart + +The export functionality in GridChart allows Charts to be saved or shared externally in various formats. This is particularly useful for preserving visualized data or including Charts in reports and presentations. + +To enable this feature, set the `allowExport` property to true when creating the **GridChart** instance. Once enabled, an export option appears in the Chart popup toolbar, allowing the Chart to be exported in various formats such as PDF, CSV, Print, JPEG, XLSX, SVG, and PNG. + +The following code snippet demonstrates how to enable export functionality in **GridChart**: + +```cs + +gridChart = new ej.gridchart.GridChart({ + allowExport: true +}); + +``` + +## Enable property panel in GridChart + +The property panel in GridChart provides a built-in interface to modify Chart settings dynamically at runtime. By default, the property panel is disabled. To enable it, set the `enablePropertyPanel` option to true during the instantiation of the **GridChart** object. Here’s how to do it: + +```cs + +gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true +}); + +``` + +When enabled, the property panel appears alongside the Chart popup and offers three main configuration sections: + +* **Chart Types:** Choose from a variety of Chart types, including Column, Line, Pie, and others. + +* **Chart Data:** Configure the category axis and series fields for data visualization. + +* **Formatting Options:** Adjust styling properties such as Chart style, title style, legend appearance, series settings, and axes formatting. + + * **Chart Style:** + + * **Margin :** Adjust the [margins](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Charts.ChartMargin.html#properties) around the Chart (top, bottom, left, right) for better layout spacing. + * **Color**: Set distinct colors for different Chart elements to improve visual clarity. + + * **Title Style** + + * **Legend** - Toggle the visibility of the legend and customize its font, size, color, and position. + * **Series** - Enable/disable tooltips and customize [Series](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Charts.ChartSeries.html#properties) color and data labels based on categories such as online, retail, or revenue. + + * **Axes:** - Select axes as either category or value type, and customize: + + * Reverse Order to change the data sequence. + * **Title:** Adjust text, font, size, color, and rotation. + * **Label:** Modify text, font, size, color, and rotation for better label presentation. + +**Customize the Chart model:** + +You can customize the [Chart](https://ej2.syncfusion.com/aspnetcore/documentation/chart/getting-started) by defining a `chartModel` object in the `chart` property of the `model` object within the [contextMenuClick](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Grids.Grid.html#Syncfusion_EJ2_Grids_Grid_ContextMenuClick) event .This allows you to configure various Chart properties such as axes, margins, tooltips, titles, and more. Additionally, you can use the [events](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Charts.Chart.html#properties) of the Chart within the `chartModel` configuration to apply further customizations when the Chart is rendered. + +To customize [Accumulation Charts](https://ej2.syncfusion.com/aspnetcore/documentation/accumulation-chart/getting-started) (such as Pie), use the `accumulationChart` property of the `model` object. This property allows you to configure Chart options like titles, legends, data labels, and visual styles tailored for accumulation-type visualizations. You can also use Accumulation Chart [events](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Charts.AccumulationChart.html#properties) to apply additional customizations when the Chart is rendered. + +The following code snippets demonstrate how to achieve this: + +```cs + +function contextMenuClick(args) { + if (args.chartType) { + const chartModel = { + primaryXAxis: { + valueType: 'Category', + labelRotation: 315, + }, + margin: { + top: 20, + bottom: 20, + right: 20, + left: 20 + }, + tooltip: { + enable: true, + textStyle: { + size: '16px', + fontFamily: 'Arial, Helvetica, sans-serif' + } + }, + title: 'Sales Data', + titleStyle: { + size: '24px', + fontFamily: 'Arial, Helvetica, sans-serif', + fontWeight: 'Bold' + }, + subTitle: 'Sales data for various products over the months', + load: (args) => { + if (args.chart.titleStyle) { + args.chart.titleStyle.color = '#1976d2'; + } + } + }; + const accumulationChartModel= { + title :'Sales Distribution' + }; + const model = { + chart: chartModel, + accumulationChart: accumulationChartModel + }; + } +} + +``` + +You can also programmatically update the Chart’s appearance using the `updateChartSettings` event provided by the **GridChart** integration. This event is triggered when you modify Chart properties through the Chart popup’s property panel. This is useful for applying custom themes, adjusting axis settings, or modifying series styles. + +The following code snippet demonstrates how to dynamically customize Chart margins and restrict their values to a minimum of 20 using the `updateChartSettings` event. + +```cs + +function created() { + var grid = document.getElementById("Grid").ej2_instances[0]; + gridChart = new ej.gridchart.GridChart({ + enablePropertyPanel: true, + enableRtl: grid.enableRtl, + allowExport: true, + locale: grid.locale, + updateChartSettings: updateChartSettings + }); +} + +function updateChartSettings(args) { + const chart = args.changes.chart; + if (!chart) return; + + // Restrict margin values to minimum 20. + const margin = chart.margin; + if (margin) { + if (margin.top < 20) margin.top = 20; + if (margin.bottom < 20) margin.bottom = 20; + if (margin.left < 20) margin.left = 20; + if (margin.right < 20) margin.right = 20; + } +} + +``` + +The following complete example demonstrates how to enable the property panel by setting `enablePropertyPanel` to **true**, customize the Chart using the `chartModel` within `contextMenuClick` event, and dynamically control or customize the behavior of the `updateChartSettings` event. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/chart-intergartion1/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="chart.cs" %} +{% include code-snippet/grid/chart-intergartion1/chartcore.cs %} +{% endhighlight %} +{% endtabs %} + +![Chart integration](../images/GridChart2.gif) \ No newline at end of file diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/row/detail-template.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/row/detail-template.md index c0f53fd152..ad79ca5638 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/row/detail-template.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/row/detail-template.md @@ -97,7 +97,6 @@ Detail template is not supported with the following features: * Frozen rows and columns * Immutable mode -* Infinite scrolling * Virtual scrolling * Print * Row template 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..84b0504aac 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 @@ -91,24 +91,21 @@ The following example enable column virtualization using `enableColumnVirtualiza * The following features are compatible with column virtualization and work within the viewport: 1. Column resizing 2. Column reordering - 3. Column chooser - 4. Auto-fit - 5. Print - 6. Clipboard - 7. Column menu - Column chooser, AutofitAll + 3. Auto-fit + 4. Print + 5. Clipboard + 6. Column menu - AutofitAll * Column virtual scrolling is not compatible with the following feature 1. Grouping 2. Colspan 3. Batch editing - 4. Column with infinite scrolling - 6. Stacked header - 7. Row template - 8. Detail template - 9. Hierarchy grid - 10. Autofill - 11. Column chooser - 12. Page + 4. Stacked header + 5. Row template + 6. Detail template + 7. Hierarchy grid + 8. Autofill + 9. Page ## Browser height limitation in virtual scrolling and solution diff --git a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/tool-bar/tool-bar-items.md b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/tool-bar/tool-bar-items.md index 149b8efc5e..dfb3647328 100644 --- a/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/tool-bar/tool-bar-items.md +++ b/ej2-asp-core-mvc/grid/EJ2_ASP.NETCORE/tool-bar/tool-bar-items.md @@ -135,6 +135,25 @@ The following example demonstrates, how to use both built-in and custom toolbar ![Both built-in and custom items in toolbar](../images/toolbar/custom-items.png) +## Add custom components to the Grid toolbar using template + +The Syncfusion ASP.NET Core Grid provides the flexibility to customize its toolbar by embedding custom components using the `template` property of the `ItemModel`. This feature allows developers to add UI elements such as buttons, dropdowns, or input controls directly into the toolbar, alongside built-in actions like **Add**, **Edit**, and **Delete**. + +In the following example, an [AutoComplete](https://ej2.syncfusion.com/aspnetcore/documentation/auto-complete/getting-started) is defined as a custom toolbar item using the `template` property. The `AutoComplete` is populated with unique values from the `ShipCity` field of the Grid data. When you select a value from the `AutoComplete`, the Grid is filtered to display only the records that match the selected city. Once the Grid is rendered, the custom `AutoComplete` appears as part of the toolbar, allowing you to interact with both standard and custom toolbar elements. + +Additionally, the [change](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.DropDowns.AutoComplete.html#Syncfusion_EJ2_DropDowns_AutoComplete_Change) event of the `AutoComplete` is used to trigger a search operation within the Grid. When you select or type a value, the event handler invokes the Grid’s `search` method, dynamically filtering the displayed records in the **ShipCity** column based on the input. + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/grid/toolbar/custom-toolbar-items/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="builtin-custom-items.cs" %} +{% include code-snippet/grid/toolbar/custom-toolbar-items/custom-items.cs %} +{% endhighlight %} +{% endtabs %} + +![Custom components to the Grid toolbar using template](../images/toolbar/custom-toolbar-image.gif) + ## Custom toolbar items in a specific position Customizing the position of a custom toolbar within the Syncfusion ASP.NET Core Grid involves modifying the default placement of the custom toolbar items. This enables you to precisely control the positioning of each custom toolbar item according to your specific requirements and desired layout within the Grid. diff --git a/ej2-asp-core-mvc/grid/images/GridChart1.gif b/ej2-asp-core-mvc/grid/images/GridChart1.gif new file mode 100644 index 0000000000..c86167c99d Binary files /dev/null and b/ej2-asp-core-mvc/grid/images/GridChart1.gif differ diff --git a/ej2-asp-core-mvc/grid/images/GridChart2.gif b/ej2-asp-core-mvc/grid/images/GridChart2.gif new file mode 100644 index 0000000000..8d989be587 Binary files /dev/null and b/ej2-asp-core-mvc/grid/images/GridChart2.gif differ diff --git a/ej2-asp-core-mvc/grid/images/column-reorder/columreorderByColumnModel.gif b/ej2-asp-core-mvc/grid/images/column-reorder/columreorderByColumnModel.gif new file mode 100644 index 0000000000..091fe2b7bd Binary files /dev/null and b/ej2-asp-core-mvc/grid/images/column-reorder/columreorderByColumnModel.gif differ diff --git a/ej2-asp-core-mvc/grid/images/toolbar/custom-toolbar-image.gif b/ej2-asp-core-mvc/grid/images/toolbar/custom-toolbar-image.gif new file mode 100644 index 0000000000..e5345fd13e Binary files /dev/null and b/ej2-asp-core-mvc/grid/images/toolbar/custom-toolbar-image.gif differ diff --git a/ej2-asp-core-mvc/image-editor/annotation.md b/ej2-asp-core-mvc/image-editor/annotation.md index d908b12f18..2bad2e4ba7 100644 --- a/ej2-asp-core-mvc/image-editor/annotation.md +++ b/ej2-asp-core-mvc/image-editor/annotation.md @@ -50,6 +50,10 @@ The `drawText` method in the Image Editor allows you to insert a text annotation * transformCollection: Specifies the transform collection of the text annotation. +* underline — Specifies whether the text should be underlined. + +* strikethrough — Specifies whether the text should have a strikethrough. + By utilizing the DrawText method with these parameters, you can precisely position and customize text annotations within the image. This provides the flexibility to add labels, captions, or other text elements with specific font styles, sizes, and colors, enhancing the visual presentation and clarity of the image. Here is an example of adding a text in a button click using `drawText` method. @@ -221,6 +225,37 @@ Output be like the below. ![ImageEditor Sample](images/image-editor-add-font-family.jpg) +### Formatting Text with Bold, Italic, Underline, and Strikethrough + +The `drawText` method in the Image Editor component allows you to insert a text annotation into the image with specific customization options. Applying these styles enhances the text by improving readability and emphasizing key information, where bold increases visual weight to highlight important points, italic adds a slanted emphasis or creative touch, underline draws a line beneath the text for clarity or separation, and strikethrough places a line through text to indicate removal or outdated content. These formatting options enable users to make their annotations more visually distinctive and effective in conveying information. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/image-editor/annotation/text-CS1/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Default.cs" %} +{% include code-snippet/image-editor/annotation/text-CS1/default.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/image-editor/annotation/text-CS1/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Default.cs" %} +{% include code-snippet/image-editor/annotation/text-CS1/default.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +Output be like the below. + +![ImageEditor Sample](images/image-editor-text-format.jpg) + ## Freehand drawing The Freehand Draw annotation tool in the Image Editor control is a versatile feature that allows users to draw and sketch directly on the image using mouse or touch input. This tool provides a flexible and creative way to add freehand drawings or annotations to the image. diff --git a/ej2-asp-core-mvc/image-editor/end-user-capabilities.md b/ej2-asp-core-mvc/image-editor/end-user-capabilities.md index 6678c49ec7..9f9faf792e 100644 --- a/ej2-asp-core-mvc/image-editor/end-user-capabilities.md +++ b/ej2-asp-core-mvc/image-editor/end-user-capabilities.md @@ -18,7 +18,7 @@ To open an image in the image editor, do the following steps. * Click the Open icon from the left side of the toolbar. -* The file explorer lists only JPEG, PNG, JPG, and WEBP format files. +* The file explorer lists only JPEG, PNG, JPG, WEBP, and BMP format files. * Select the image from the list of the images from the file explorer window. diff --git a/ej2-asp-core-mvc/image-editor/image-restrictions.md b/ej2-asp-core-mvc/image-editor/image-restrictions.md index 9995770c3b..9f802f06fc 100644 --- a/ej2-asp-core-mvc/image-editor/image-restrictions.md +++ b/ej2-asp-core-mvc/image-editor/image-restrictions.md @@ -13,11 +13,11 @@ domainurl: ##DomainURL## The Image Editor allows users to specify image extensions, as well as the minimum and maximum image sizes for uploaded or loaded images using the [`UploadSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.ImageEditor.ImageEditor.html#Syncfusion_EJ2_ImageEditor_ImageEditor_UploadSettings) property. End users will receive a clear alert message if an uploaded image does not meet the defined criteria, ensuring a seamless and user-friendly upload experience. -`Note:` File restrictions apply when uploading images to the Image Editor, whether through the open method or the built-in uploader. If uploadSettings is not defined in the sample, the Image Editor, by default, allows files with .jpg, .png, .svg, and .webp extensions, without any file size restrictions. +`Note:` File restrictions apply when uploading images to the Image Editor, whether through the open method or the built-in uploader. If uploadSettings is not defined in the sample, the Image Editor, by default, allows files with .jpg, .png, .svg, .webp, and .bmp extensions, without any file size restrictions. ## Allowed image extensions -The Image Editor allows users to specify acceptable file extensions for uploaded images using the `UploadSettings.AllowedExtensions` property, ensuring that only supported formats, such as `.jpg`, `.png`, and `.webp` and `.svg` are allowed. This helps maintain compatibility and prevents errors caused by unsupported file types. By default, the Image Editor allows files with .jpg, .png, .webp, and .svg extensions. +The Image Editor allows users to specify acceptable file extensions for uploaded images using the `UploadSettings.AllowedExtensions` property, ensuring that only supported formats, such as `.jpg`, `.png`, `.svg`, `.webp` and `.bmp` are allowed. This helps maintain compatibility and prevents errors caused by unsupported file types. By default, the Image Editor allows files with .jpg, .png, .svg, .webp, and .bmp extensions. `Note:` To specify allowed extensions in the upload settings, use the format '.png, .svg', listing the permitted file types as a comma-separated string. diff --git a/ej2-asp-core-mvc/image-editor/images/image-editor-text-format.jpg b/ej2-asp-core-mvc/image-editor/images/image-editor-text-format.jpg new file mode 100644 index 0000000000..813cb0f9fd Binary files /dev/null and b/ej2-asp-core-mvc/image-editor/images/image-editor-text-format.jpg differ diff --git a/ej2-asp-core-mvc/image-editor/images/image-editor-width-height.jpg b/ej2-asp-core-mvc/image-editor/images/image-editor-width-height.jpg new file mode 100644 index 0000000000..07e6a01dc4 Binary files /dev/null and b/ej2-asp-core-mvc/image-editor/images/image-editor-width-height.jpg differ diff --git a/ej2-asp-core-mvc/image-editor/open-save.md b/ej2-asp-core-mvc/image-editor/open-save.md index 21f1ed0d53..207add11d6 100644 --- a/ej2-asp-core-mvc/image-editor/open-save.md +++ b/ej2-asp-core-mvc/image-editor/open-save.md @@ -16,7 +16,7 @@ To save an edited image in the Image Editor control, use the toBlob method to co ## Supported image formats -The Image Editor control supports three common image formats: PNG, JPEG, SVG, and WEBP. These formats allow you to work with a wide range of image files within the Image Editor. +The Image Editor control supports five common image formats: PNG, JPEG, SVG, WEBP, and BMP. These formats allow you to work with a wide range of image files within the Image Editor. When it comes to saving the edited image, the default file type is set as PNG. This means that when you save the edited image without specifying a different file type, it will be saved as a PNG file. However, it's important to note that the Image Editor typically provides options or methods to specify a different file type if desired. This allows you to save the edited image in formats other than the default PNG, such as JPEG, SVG, and WEBP, based on your specific requirements or preferences. @@ -258,6 +258,44 @@ Output be like the below. ![ImageEditor Sample](images/image-editor-watermark.jpeg) +### Opening Images with Custom Width and Height + +Users can now open images with specific width and height values using the `imageSettings` parameter in the `open` method. This enhancement introduces three additional properties: `width`, `height`, and `isAspectRatio`. These options allow precise control over the image dimensions, with the flexibility to preserve the original aspect ratio if needed. This feature is especially useful when rendering high-resolution images or when fitting images into fixed-size layouts or canvas areas. + +The following behaviors are supported through these properties: +- Contains behavior: By specifying only one dimension (either `width` or `height`) and enabling `isAspectRatio`, the other dimension is automatically calculated to maintain the image's original proportions. +- Cover behavior: When both `width` and `height` are specified with `isAspectRatio` set to `true`, the image scales proportionally to fit within the given dimensions while preserving its aspect ratio. +- Stretch or Shrink behavior: Setting `isAspectRatio` to `false` forces the image to strictly follow the specified `width` and `height`, allowing it to stretch or shrink regardless of its original aspect ratio. + +The following example showcases how all three behaviors can be achieved using the open method. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/image-editor/open-save/open-image-cs7/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Default.cs" %} +{% include code-snippet/image-editor/open-save/open-image-cs7/default.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/image-editor/open-save/open-image-cs7/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Default.cs" %} +{% include code-snippet/image-editor/open-save/open-image-cs7/default.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +Output be like the below. + +![ImageEditor Sample](images/image-editor-width-height.jpg) + ## Save as image The `export` method in the Image Editor control enables you to save the modified image as a file on the local device. This method accepts two parameters: the file name and the file type. @@ -268,7 +306,6 @@ By utilizing the `export` method with the appropriate file name and file type, y In the following example, the `export` method is used in the button click event. - {% if page.publishingplatform == "aspnet-core" %} {% tabs %} @@ -438,7 +475,7 @@ The [`FileOpened`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.I * FileName: This argument is a string that contains the file name of the opened image. It represents the name of the file that was selected or provided when loading the image into the Image Editor. -* FileType: This argument is a string that contains the type of the opened image. It specifies the format or file type of the image that was loaded, such as PNG, JPEG, SVG, and WEBP. +* FileType: This argument is a string that contains the type of the opened image. It specifies the format or file type of the image that was loaded, such as PNG, JPEG, SVG, WEBP, and BMP. By accessing these arguments within the FileOpened event handler, you can retrieve information about the loaded image, such as its file name and file type. This can be useful for performing additional actions or implementing logic based on the specific image that was opened in the Image Editor control. diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/getting-started-with-server-backed.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/getting-started-with-server-backed.md index 94c126168e..963a8791d3 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/getting-started-with-server-backed.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/getting-started-with-server-backed.md @@ -430,9 +430,9 @@ N> You can refer to our [ASP.NET MVC PDF Viewer](https://www.syncfusion.com/aspn N> When configuring the server-backed PDF viewer, it's essential to understand that there is no need to include the pdfium.js and pdfium.wasm files. Unlike the standalone PDF viewer, which relies on these files for local rendering, the server-backed PDF viewer fetches and renders PDFs directly from the server. Consequently, you can exclude the copy command for deployment process, as they are not required to load and display PDFs in this context. -N> For hosting the web service on the Linux platform, ensure to include the [SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/2.88.6). Additionally, for AWS environments, utilize the following packages: +N> For hosting the web service on the Linux platform, ensure to include the [SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/3.116.1). Additionally, for AWS environments, utilize the following packages: | **Amazon Web Services (AWS)** |**NuGet package name** | | --- | --- | -| AWS Lambda|[SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/2.88.6)| -| AWS Elastic Beanstalk |[SkiaSharp.NativeAssets.Linux.NoDependencies v2.88.6](https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux.NoDependencies/2.88.6)| \ No newline at end of file +| AWS Lambda|[SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/3.116.1)| +| AWS Elastic Beanstalk |[SkiaSharp.NativeAssets.Linux.NoDependencies v3.116.1](https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux.NoDependencies/3.116.1)| \ No newline at end of file diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/enable-text-selection.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/enable-text-selection.md new file mode 100644 index 0000000000..f5943caf71 --- /dev/null +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/enable-text-selection.md @@ -0,0 +1,92 @@ +--- +layout: post +title: Enable or Disable Text Selection in EJ2 ASP.NET MVC PDF Viewer | Syncfusion +description: Learn here all about enabling text selection in ASP.NET MVC PDF Viewer component of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: PDF Viewer +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Enable or Disable Text Selection in Syncfusion PDF Viewer + +The Syncfusion PDF Viewer provides the `EnableTextSelection` property, which allows you to control whether users can select text within the displayed PDF document. This feature can be toggled programmatically during runtime. + +## Configure Text Selection on Initialization + +You can set the initial text selection behavior when initializing the PDF Viewer control by configuring the `EnableTextSelection` property. By default, text selection is enabled, but you can disable it as shown in the following example: + +{% tabs %} +{% highlight html tabtitle="Standalone" %} + +@using Syncfusion.EJ2 +@{ + ViewBag.Title = "Home Page"; +} + +
+
+ @Html.EJS().PdfViewer("pdfviewer") + .DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf") + .ResourceUrl("https://cdn.syncfusion.com/ej2/30.1.37/dist/ej2-pdfviewer-lib") + .EnableTextSelection(false) + .Render() +
+
+ +{% endhighlight %} +{% endtabs %} + +## Toggle Text Selection Dynamically + +You can change the text selection behavior at runtime using buttons, menu options, or other UI elements. The following example demonstrates how to toggle text selection with button clicks: + +{% tabs %} +{% highlight html tabtitle="Standalone" %} + +@using Syncfusion.EJ2 +@{ + ViewBag.Title = "Home Page"; +} + +
+
+ + + @Html.EJS().PdfViewer("pdfviewer") + .DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf") + .ResourceUrl("https://cdn.syncfusion.com/ej2/30.1.37/dist/ej2-pdfviewer-lib") + .EnableTextSelection(false) + .Render() +
+
+ + + +{% endhighlight %} +{% endtabs %} + +## Use Cases and Considerations + +- **Document Protection**: Disabling text selection helps prevent unauthorized copying of sensitive content. +- **Read-only Documents**: In scenarios where documents are meant for viewing only, disabling text selection can provide a cleaner user experience. +- **Interactive Applications**: Toggle text selection based on user roles or document states in complex applications. +- **Controlled Access**: Implement conditional text selection depending on user permissions or document sections. + +## Default Behavior + +By default, text selection is enabled in the PDF Viewer. Set the `EnableTextSelection` property to `false` explicitly if you want to disable this functionality. + +N> When text selection is disabled, users will not be able to select or copy text from the document, which can be useful for protecting document content in certain scenarios. + +[View sample in GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples/tree/master/How%20to) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/show-hide-annotation.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/show-hide-annotation.md new file mode 100644 index 0000000000..f75002b5f6 --- /dev/null +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/how-to/show-hide-annotation.md @@ -0,0 +1,74 @@ +--- +layout: post +title: Show and Hide Annotations in EJ2 ASP.NET MVC PdfViewer | Syncfusion +description: Learn how to dynamically show and hide annotations in the Syncfusion ASP.NET MVC PDF Viewer component of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Show and Hide Annotations +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Show and Hide Annotations in PDF Viewer + +### Overview + +This guide demonstrates how to implement functionality to dynamically show and hide annotations in a PDF document loaded in the Syncfusion PDF Viewer using ASP.NET MVC. This feature is particularly useful in scenarios where you need to present a clean view of the document or toggle between annotated and non-annotated views. + +### How to Show and Hide Annotations + +**Step 1:** Set Up the PdfViewer in Your ASP.NET MVC Project + +First, follow the steps provided in the [getting started guide](https://ej2.syncfusion.com/aspnetmvc/documentation/pdfviewer/getting-started) to create a simple PDF Viewer sample. + +**Step 2:** Add Toggle Button and Implementation + +Add a button to toggle annotation visibility and implement the necessary JavaScript functions to handle the show/hide functionality: + +{% tabs %} +{% highlight html tabtitle="Standalone" %} + +@using Syncfusion.EJ2 +@{ + ViewBag.Title = "Home Page"; +} +
+
+ + +
+
+ @Html.EJS().PdfViewer("pdfviewer").DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf").ResourceUrl("https://cdn.syncfusion.com/ej2/30.1.37/dist/ej2-pdfviewer-lib").Render() +
+
+ + + +{% endhighlight %} +{% endtabs %} + +This implementation provides a clean, efficient way to toggle the visibility of annotations in your PDF documents. It's particularly useful for presentation scenarios or when you need to focus on the document content without the distraction of annotations. + +[View sample in GitHub](https://github.com/SyncfusionExamples/mvc-pdf-viewer-examples/tree/master/How%20to) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/magnification.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/magnification.md index fd26b1fc8b..a73499a4dd 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/magnification.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/magnification.md @@ -43,7 +43,7 @@ The following magnification options are available in the default toolbar of PDF ![Alt text](./images/zoom.png) -N>PDF Viewer can support the zoom value ranges from 50 to 400. +N>PDF Viewer can support the zoom value ranges from 10 to 400. ## See also diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/organize-pdf.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/organize-pdf.md index 917627b1dd..3f3a137482 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/organize-pdf.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.MVC/organize-pdf.md @@ -27,15 +27,13 @@ You can adjust the orientation of PDF pages to ensure proper alignment. The rota * `Rotate clockwise`: Rotate the selected pages 90 degrees clockwise. * `Rotate counter-clockwise`: Rotate the selected pages 90 degrees counter-clockwise. -![Alt text](./images/rotate.gif) - ### Rearranging PDF pages You can easily change the sequence of pages within your document using the drag and drop method: * `Drag and drop`: Click and drag a page thumbnail to the desired position within the document, then release it to rearrange the page order. -![Alt text](./images/rearrange.gif) +![Alt text](./images/rotate-rearrange.gif) ### Inserting new pages @@ -44,8 +42,6 @@ Effortlessly add new pages to your document with the following options: * `Insert blank page left`: Insert a blank page to the left of the selected page using the respective icon. * `Insert blank page right`: Insert a blank page to the right of the selected page using the corresponding icon. -![Alt text](./images/insert.gif) - ### Deleting PDF pages Removing unwanted pages from your document is straight forward: @@ -53,15 +49,13 @@ Removing unwanted pages from your document is straight forward: * `Select pages to delete`: Click on the page thumbnails you wish to remove. You can select multiple pages at once. * `Delete selected pages`: Use the delete option in the organize pages pane to remove the selected pages from the document. -![Alt text](./images/delete.gif) - ### Copying PDF pages Duplicate the pages within your PDF document effortlessly: * `Select pages to copy`: Click on the page thumbnails you wish to duplicate. Use the copy option to create duplicates. When a page is copied, the duplicate is automatically added to the right of the selected page. Multiple copies can be made using the toolbar action. -![Alt text](./images/copy.gif) +![Alt text](./images/insert-delete-copy.gif) ### Importing a PDF Document @@ -75,7 +69,19 @@ Seamlessly import a PDF document into your existing document: Make comprehensive adjustments by selecting all pages simultaneously. This facilitates efficient editing and formatting across the entire document. -![Alt text](./images/selectall.gif) +![Alt text](./images/selectall.png) + +### Zooming Page Thumbnails + +Adjust the size of page thumbnails within the organizer panel for better visibility and precision when editing. The zoom functionality allows you to: + +* Increase or decrease the size of page thumbnails using the zoom slider +* See more details on pages when zoomed in +* View more pages simultaneously when zoomed out + +This feature is especially useful when working with documents containing complex layouts or small details that need careful examination during organization. + +![Alt text](./images/zoomOrganize.png) ### Real-time updates @@ -125,20 +131,20 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d {% endhighlight %} {% endtabs %} -**pageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, copying, importing and rearranging pages. By default, all these actions are enabled. +**pageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, copying, importing and rearranging pages, as well as configuring thumbnail zoom settings. By default, all these actions are enabled and standard zoom settings are applied. {% tabs %} {% highlight html tabtitle="Standalone" %}
- @Html.EJS().PdfViewer("pdfviewer").DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf").PageOrganizerSettings(new Syncfusion.EJ2.PdfViewer.PageOrganizerSettings { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true }).Render() + @Html.EJS().PdfViewer("pdfviewer").DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf").PageOrganizerSettings(new Syncfusion.EJ2.PdfViewer.PageOrganizerSettings { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 }).Render()
{% endhighlight %} {% highlight html tabtitle="Server-Backed" %}
- @Html.EJS().PdfViewer("pdfviewer").ServiceUrl(VirtualPathUtility.ToAbsolute("~/PdfViewer/")).DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf").PageOrganizerSettings(new Syncfusion.EJ2.PdfViewer.PageOrganizerSettings { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true }).Render() + @Html.EJS().PdfViewer("pdfviewer").ServiceUrl(VirtualPathUtility.ToAbsolute("~/PdfViewer/")).DocumentPath("https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf").PageOrganizerSettings(new Syncfusion.EJ2.PdfViewer.PageOrganizerSettings { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 }).Render()
{% endhighlight %} @@ -175,7 +181,7 @@ import { LinkAnnotationService, BookmarkViewService, export class AppComponent implements OnInit { public document = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'; public resource: string = "https://cdn.syncfusion.com/ej2/25.1.35/dist/ej2-pdfviewer-lib"; - public pageOrganizerSettings = { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true }; + public pageOrganizerSettings = { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 }; ngOnInit(): void { } } @@ -211,7 +217,7 @@ import { LinkAnnotationService, BookmarkViewService, export class AppComponent implements OnInit { public document = 'https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf'; public service: string = 'https://services.syncfusion.com/angular/production/api/pdfviewer'; - public pageOrganizerSettings = { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true }; + public pageOrganizerSettings = { canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 }; ngOnInit(): void { } } @@ -298,8 +304,9 @@ The following keyboard shortcuts are available at the organize pages dialog. * **Ctrl+Z** : Undo the last action performed. * **Ctrl+Y** : Redo the action that was undone +* **Ctrl+Scroll** : Zoom in and zoom out page thumbnails for better visibility. -![Alt text](./images/undo-redo.gif) +![Alt text](./images/undo-redo.png) #### Conclusion diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/getting-started-with-server-backed.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/getting-started-with-server-backed.md index 4d9058d4ae..d3e0db8125 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/getting-started-with-server-backed.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/getting-started-with-server-backed.md @@ -418,12 +418,12 @@ N> [View Sample in GitHub](https://github.com/SyncfusionExamples/ASP-NET-Core-Ge N> When configuring the server-backed PDF viewer, it's essential to understand that there is no need to include the pdfium.js and pdfium.wasm files. Unlike the standalone PDF viewer, which relies on these files for local rendering, the server-backed PDF viewer fetches and renders PDFs directly from the server. Consequently, you can exclude the copy command for deployment process, as they are not required to load and display PDFs in this context. -N> For hosting the web service on the Linux platform, ensure to include the [SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/2.88.6). Additionally, for AWS environments, utilize the following packages: +N> For hosting the web service on the Linux platform, ensure to include the [SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/3.116.1). Additionally, for AWS environments, utilize the following packages: | **Amazon Web Services (AWS)** |**NuGet package name** | | --- | --- | -| AWS Lambda|[SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/2.88.6)| -| AWS Elastic Beanstalk |[SkiaSharp.NativeAssets.Linux.NoDependencies v2.88.6](https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux.NoDependencies/2.88.6)| +| AWS Lambda|[SkiaSharp.NativeAssets.Linux](https://nuget.org/packages/SkiaSharp.NativeAssets.Linux/3.116.1)| +| AWS Elastic Beanstalk |[SkiaSharp.NativeAssets.Linux.NoDependencies v3.116.1](https://www.nuget.org/packages/SkiaSharp.NativeAssets.Linux.NoDependencies/3.116.1)| ## See also diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/enable-text-selection.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/enable-text-selection.md new file mode 100644 index 0000000000..12b4e9e4f5 --- /dev/null +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/enable-text-selection.md @@ -0,0 +1,93 @@ +--- +layout: post +title: Enable or Disable Text Selection in ASP.NET Core PDF Viewer | Syncfusion +description: Learn how to enable text selection in Syncfusion ##Platform_Name## Pdfviewer component of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: PDF Viewer +documentation: ug +domainurl: ##DomainURL## +--- + +# Enable or Disable Text Selection in Syncfusion PDF Viewer + +The Syncfusion PDF Viewer provides the `enableTextSelection` property, which allows you to control whether users can select text within the displayed PDF document. This feature can be toggled programmatically during runtime. + +## Configure Text Selection on Initialization + +You can set the initial text selection behavior when initializing the PDF Viewer control by configuring the `enableTextSelection` property. By default, text selection is enabled, but you can disable it as shown in the following example: + +{% tabs %} +{% highlight cshtml tabtitle="Standalone" %} + +@page "{handler?}" +@model IndexModel +@{ + ViewData["Title"] = "Home page"; +} + +
+ + +
+ +{% endhighlight %} +{% endtabs %} + +## Toggle Text Selection Dynamically + +You can change the text selection behavior at runtime using buttons, menu options, or other UI elements. The following example demonstrates how to toggle text selection with button clicks: + +{% tabs %} +{% highlight cshtml tabtitle="Standalone" %} + +@page "{handler?}" +@model IndexModel +@{ + ViewData["Title"] = "Home page"; +} + +
+ + + + +
+ + + +{% endhighlight %} +{% endtabs %} + +## Use Cases and Considerations + +- **Document Protection**: Disabling text selection helps prevent unauthorized copying of sensitive content. +- **Read-only Documents**: In scenarios where documents are meant for viewing only, disabling text selection can provide a cleaner user experience. +- **Interactive Applications**: Toggle text selection based on user roles or document states in complex applications. +- **Controlled Access**: Implement conditional text selection depending on user permissions or document sections. + +## Default Behavior + +By default, text selection is enabled in the PDF Viewer. Set the `enableTextSelection` property to `false` explicitly if you want to disable this functionality. + +N> When text selection is disabled, users will not be able to select or copy text from the document, which can be useful for protecting document content in certain scenarios. + +[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/show-hide-annotation.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/show-hide-annotation.md new file mode 100644 index 0000000000..71acf70da3 --- /dev/null +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/how-to/show-hide-annotation.md @@ -0,0 +1,67 @@ +--- +layout: post +title: Show and Hide Annotations in EJ2 ASP.NET CORE PdfViewer | Syncfusion +description: Learn how to show and hide annotations in the Syncfusion ASP.NET CORE PDF Viewer component of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: PDF Viewer +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Show and Hide Annotations in PDF Viewer + +### Overview + +This guide demonstrates how to dynamically show and hide annotations in the Syncfusion PDF Viewer component in an ASP.NET Core application. This functionality is useful when you want to provide users with the ability to toggle the visibility of annotations within PDF documents. + +### How to Show and Hide Annotations + +**Step 1:** Set up the PDF Viewer in your ASP.NET Core project + +First, create a basic PDF Viewer implementation in your ASP.NET Core application. + +**Step 2:** Add a toggle button and implement the show/hide functionality + +Add a button that allows users to toggle the visibility of annotations within the PDF document. + +{% tabs %} +{% highlight cshtml tabtitle="Standalone" %} + +@page "{handler?}" +@using ShowHideAnnotations.Pages +@model IndexModel +@{ +ViewData["Title"] = "Home page"; +} +
+ + + + +
+ + +{% endhighlight %} +{% endtabs %} + +This implementation provides a clean, efficient way to toggle the visibility of annotations in your PDF documents. It's particularly useful for presentation scenarios or when you need to focus on the document content without the distraction of annotations. + +[View sample in GitHub](https://github.com/SyncfusionExamples/asp-core-pdf-viewer-examples/tree/master/How%20to/ShowHideAnnotations) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/magnification.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/magnification.md index a6c06c6330..aa77ea201a 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/magnification.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/magnification.md @@ -53,7 +53,7 @@ The following magnification options are available in the default toolbar of PDF ![Alt text ](./images/zoom.png) -N>PDF Viewer can support the zoom value ranges from 50 to 400. +N>PDF Viewer can support the zoom value ranges from 10 to 400. ## See also diff --git a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/organize-pdf.md b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/organize-pdf.md index ffb87d895a..2c4895ac4f 100644 --- a/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/organize-pdf.md +++ b/ej2-asp-core-mvc/pdfviewer/EJ2_ASP.NETCORE/organize-pdf.md @@ -27,15 +27,13 @@ You can adjust the orientation of PDF pages to ensure proper alignment. The rota * `Rotate clockwise`: Rotate the selected pages 90 degrees clockwise. * `Rotate counter-clockwise`: Rotate the selected pages 90 degrees counter-clockwise. -![Alt text](./images/rotate.gif) - ### Rearranging PDF pages You can easily change the sequence of pages within your document using the drag and drop method: * `Drag and drop`: Click and drag a page thumbnail to the desired position within the document, then release it to rearrange the page order. -![Alt text](./images/rearrange.gif) +![Alt text](./images/rotate-rearrange.gif) ### Inserting new pages @@ -44,8 +42,6 @@ Effortlessly add new pages to your document with the following options: * `Insert blank page left`: Insert a blank page to the left of the selected page using the respective icon. * `Insert blank page right`: Insert a blank page to the right of the selected page using the corresponding icon. -![Alt text](./images/insert.gif) - ### Deleting PDF pages Removing unwanted pages from your document is straight forward: @@ -53,15 +49,13 @@ Removing unwanted pages from your document is straight forward: * `Select pages to delete`: Click on the page thumbnails you wish to remove. You can select multiple pages at once. * `Delete selected pages`: Use the delete option in the organize pages pane to remove the selected pages from the document. -![Alt text](./images/delete.gif) - ### Copying PDF pages Duplicate the pages within your PDF document effortlessly: * `Select pages to copy`: Click on the page thumbnails you wish to duplicate. Use the copy option to create duplicates. When a page is copied, the duplicate is automatically added to the right of the selected page. Multiple copies can be made using the toolbar action. -![Alt text](./images/copy.gif) +![Alt text](./images/insert-delete-copy.gif) ### Importing a PDF Document @@ -75,7 +69,19 @@ Seamlessly import a PDF document into your existing document: Make comprehensive adjustments by selecting all pages simultaneously. This facilitates efficient editing and formatting across the entire document. -![Alt text](./images/selectall.gif) +![Alt text](./images/selectall.png) + +### Zooming Page Thumbnails + +Adjust the size of page thumbnails within the organizer panel for better visibility and precision when editing. The zoom functionality allows you to: + +* Increase or decrease the size of page thumbnails using the zoom slider +* See more details on pages when zoomed in +* View more pages simultaneously when zoomed out + +This feature is especially useful when working with documents containing complex layouts or small details that need careful examination during organization. + +![Alt text](./images/zoomOrganize.png) ### Real-time updates @@ -135,7 +141,7 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d {% endhighlight %} {% endtabs %} -**pageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, copying, importing and rearranging pages. By default, all these actions are enabled. +**pageOrganizerSettings:** This API allows control over various page management functionalities within the PDF Viewer. It includes options to enable or disable actions such as deleting, inserting, rotating, copying, importing and rearranging pages, as well as configuring thumbnail zoom settings. By default, all these actions are enabled and standard zoom settings are applied. {% tabs %} {% highlight cshtml tabtitle="Standalone" %} @@ -144,7 +150,7 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d style="height:600px" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" pageOrganizerSettings= pageOrganizerSettings="@(new Syncfusion.EJ2.PdfViewer.PdfViewerPageOrganizerSettings - {canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true })"> + {canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 })"> {% endhighlight %} @@ -155,7 +161,7 @@ Safeguard your edits by utilizing the **Save As** feature. This enables you to d serviceUrl="/api/PdfViewer" documentPath="https://cdn.syncfusion.com/content/pdf/pdf-succinctly.pdf" pageOrganizerSettings= pageOrganizerSettings="@(new Syncfusion.EJ2.PdfViewer.PdfViewerPageOrganizerSettings - {canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true })"> + {canDelete: true, canInsert: true, canRotate: true, canCopy: true, canRearrange: true, canImport: true, imageZoom: 1, showImageZoomingSlider: true, imageZoomMin: 1, imageZoomMax: 5 })"> {% endhighlight %} @@ -294,8 +300,9 @@ The following keyboard shortcuts are available at the organize pages dialog. * **Ctrl+Z** : Undo the last action performed. * **Ctrl+Y** : Redo the action that was undone +* **Ctrl+Scroll** : Zoom in and zoom out page thumbnails for better visibility. -![Alt text](./images/undo-redo.gif) +![Alt text](./images/undo-redo.png) #### Conclusion diff --git a/ej2-asp-core-mvc/pdfviewer/images/copy.gif b/ej2-asp-core-mvc/pdfviewer/images/copy.gif deleted file mode 100644 index be5b08efca..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/copy.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/delete.gif b/ej2-asp-core-mvc/pdfviewer/images/delete.gif deleted file mode 100644 index 4c4b411528..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/delete.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/insert-delete-copy.gif b/ej2-asp-core-mvc/pdfviewer/images/insert-delete-copy.gif new file mode 100644 index 0000000000..c617714bd3 Binary files /dev/null and b/ej2-asp-core-mvc/pdfviewer/images/insert-delete-copy.gif differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/insert.gif b/ej2-asp-core-mvc/pdfviewer/images/insert.gif deleted file mode 100644 index abe329645f..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/insert.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/rearrange.gif b/ej2-asp-core-mvc/pdfviewer/images/rearrange.gif deleted file mode 100644 index c531456d31..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/rearrange.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/rotate-rearrange.gif b/ej2-asp-core-mvc/pdfviewer/images/rotate-rearrange.gif new file mode 100644 index 0000000000..172906f96e Binary files /dev/null and b/ej2-asp-core-mvc/pdfviewer/images/rotate-rearrange.gif differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/rotate.gif b/ej2-asp-core-mvc/pdfviewer/images/rotate.gif deleted file mode 100644 index 77a8937c14..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/rotate.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/selectall.gif b/ej2-asp-core-mvc/pdfviewer/images/selectall.gif deleted file mode 100644 index 54a8cdab01..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/selectall.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/selectall.png b/ej2-asp-core-mvc/pdfviewer/images/selectall.png new file mode 100644 index 0000000000..efe64ff322 Binary files /dev/null and b/ej2-asp-core-mvc/pdfviewer/images/selectall.png differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/undo-redo.gif b/ej2-asp-core-mvc/pdfviewer/images/undo-redo.gif deleted file mode 100644 index 99fcdcd865..0000000000 Binary files a/ej2-asp-core-mvc/pdfviewer/images/undo-redo.gif and /dev/null differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/undo-redo.png b/ej2-asp-core-mvc/pdfviewer/images/undo-redo.png new file mode 100644 index 0000000000..3ead9ff13d Binary files /dev/null and b/ej2-asp-core-mvc/pdfviewer/images/undo-redo.png differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/zoom.png b/ej2-asp-core-mvc/pdfviewer/images/zoom.png index dd89022531..41a2221059 100644 Binary files a/ej2-asp-core-mvc/pdfviewer/images/zoom.png and b/ej2-asp-core-mvc/pdfviewer/images/zoom.png differ diff --git a/ej2-asp-core-mvc/pdfviewer/images/zoomOrganize.png b/ej2-asp-core-mvc/pdfviewer/images/zoomOrganize.png new file mode 100644 index 0000000000..e55f6058b4 Binary files /dev/null and b/ej2-asp-core-mvc/pdfviewer/images/zoomOrganize.png differ diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/classic-layout.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/classic-layout.md index 02b17c3b24..6100c9af65 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/classic-layout.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/classic-layout.md @@ -11,7 +11,7 @@ documentation: ug # Classic Layout in ##Platform_Name## Pivot Table Component -N> The classic layout supports only relational data sources and operates exclusively with client-side engine. +N> This feature is applicable only to relational data sources. The classic layout in the Syncfusion Pivot Table offers a structured, tabular presentation of data, improving both readability and usability. In this layout, fields in the row axis are displayed side by side in separate columns, making data interpretation and analysis easier. By default, grand totals appear at the end of all rows, while subtotals are placed in a separate row beneath each group. All other features of the pivot table, such as filtering, sorting, drag-and-drop, expand/collapse functionality, and more, remain the same as in the compact layout, which serves as the default hierarchical format of the pivot table. diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/server-side-pivot-engine.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/server-side-pivot-engine.md index 1cfff0fed3..a05c274071 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/server-side-pivot-engine.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/server-side-pivot-engine.md @@ -1,6 +1,6 @@ --- layout: post -title: Server Side Pivot Engine in ##Platform_Name## Pivot Table Component +title: Server Side Pivot Engine in ##Platform_Name## Syncfusion Pivot Table Component description: Learn here all about Server Side Pivot Engine in Syncfusion ##Platform_Name## Pivot Table component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Server Side Pivot Engine @@ -684,4 +684,314 @@ Meanwhile, the memory cache is set to expire after 60 minutes from RAM to free i * **GetData:** Allows to store data source in RAM as a cache which fires on initial rendering or when the memory cache is expired. * **GetMembers:** Allows to get the members of a field. This fires when the member editor is opened to do a filtering operation. * **GetRawData:** Allows to get raw data of an aggregated value cell. This fires when the drill-through or editing dialog is opened. -* **GetPivotValues:** Allows to update the stored engine properties in-memory cache and returns the aggregated values to browser to render the Pivot Table. Here, the return value can be modified. The Pivot Table will be rendered browser-based on this. \ No newline at end of file +* **GetPivotValues:** Allows to update the stored engine properties in-memory cache and returns the aggregated values to browser to render the Pivot Table. Here, the return value can be modified. The Pivot Table will be rendered browser-based on this. + +## Excel Export + +The server-side engine seamlessly supports Excel export functionality, enabling users to efficiently generate and download pivot table reports in Excel format directly from the server. To enable Excel export in the pivot table, set the [`AllowExcelExport`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html#Syncfusion_EJ2_PivotView_PivotView_AllowExcelExport) property in [`PivotView`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotView.html) class to **true**. Once the API is set, the user needs to call the `excelExport` method to export the pivot table to Excel by clicking an external button. + +N> The pivot table component can be exported to Excel format using options available in the toolbar. For more details [refer](./tool-bar) here. + +```html + +@Html.EJS().Button("excel").Content("Export To Excel").IsPrimary(true).Render() +@Html.EJS().PivotView("PivotView").Height("300").DataSourceSettings(dataSource => dataSource.Url("http://localhost:61379/api/pivot/post") +.Mode(Syncfusion.EJ2.PivotView.RenderMode.Server) +.FormatSettings(formatsettings => +{ + formatsettings.Name("Price").Format("C").Add(); +}).Rows(rows => +{ + rows.Name("ProductID").Add(); +}).Columns(columns => +{ + columns.Name("Year").Add(); +}).Values(values => +{ + values.Name("Sold").Add(); + values.Name("Price").Add(); +}) +).Render() + + +``` + +To enable export functionality in a server-side controller, initialize the **ExcelExport** class to handle export file generation. + +```csharp + private ExcelExport excelExport = new ExcelExport(); +``` + +Then, based on the **Action** parameter (**onExcelExport** or **onCsvExport**), invoke the **ExportToExcel** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } + +``` + +![Server-side engine excel exporting](images/excel-export-with-server-side-pivot-engine.png) + +### Add header and footer while exporting + +The Excel export provides an option to include header and footer content for the excel document before exporting. In-order to add header and footer, define **header** and **footer** properties in **excelExportProperties** object and pass it as a parameter to the `excelExport` method. + +``` html + +@Html.EJS().Button("excel").Content("Export To Excel").IsPrimary(true).Render() + +@Html.EJS().PivotView("PivotView").Height("300").DataSourceSettings(dataSource => dataSource.Url("http://localhost:61379/api/pivot/post") +.Mode(Syncfusion.EJ2.PivotView.RenderMode.Server) +.FormatSettings(formatsettings => +{ + formatsettings.Name("Price").Format("C").Add(); +}).Rows(rows => +{ + rows.Name("ProductID").Add(); +}).Columns(columns => +{ + columns.Name("Year").Add(); +}).Values(values => +{ + values.Name("Sold").Add(); + values.Name("Price").Add(); +}) +).Render() + + +``` + +![Add header and footer while exporting](images/add-header-and-footer-while-exporting.png) + +## CSV Export + +The Excel export allows pivot table data to be exported in **CSV** file format as well. To enable CSV export in the pivot table, set the [`AllowExcelExport`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html#Syncfusion_EJ2_PivotView_PivotView_AllowExcelExport) property in [`PivotView`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotView.html) class to **true**. Once the API is set, the user needs to call the `csvExport` method to export the pivot table to CSV by clicking an external button. + +N> The pivot table component can be exported to CSV format using options available in the toolbar. For more details [refer](./tool-bar) here. + +```html + +@Html.EJS().Button("excel").Content("Export To Excel").IsPrimary(true).Render() + +@Html.EJS().PivotView("PivotView").Height("300").DataSourceSettings(dataSource => dataSource.Url("http://localhost:61379/api/pivot/post") +.Mode(Syncfusion.EJ2.PivotView.RenderMode.Server) +.FormatSettings(formatsettings => +{ + formatsettings.Name("Price").Format("C").Add(); +}).Rows(rows => +{ + rows.Name("ProductID").Add(); +}).Columns(columns => +{ + columns.Name("Year").Add(); +}).Values(values => +{ + values.Name("Sold").Add(); + values.Name("Price").Add(); +}) +).Render() + + +``` + +To enable export functionality in a server-side controller, initialize the **ExcelExport** class to handle export file generation. + +```csharp + private ExcelExport excelExport = new ExcelExport(); +``` + +Then, based on the **Action** parameter (**onExcelExport** or **onCsvExport**), invoke the **ExportToExcel** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } + +``` +![CSV Export](images/csv-export-with-server-side-pivot-engine.png) + +## Export as Pivot + +You can export a Syncfusion PivotTable to an Excel file while preserving its native pivot structure using the server-side engine. The exported Excel document contains a fully interactive PivotTable, allowing users to dynamically modify configurations such as filtering, sorting, grouping, and aggregation directly in Microsoft Excel. + +To enable native Excel pivot export in the PivotTable, the user must call the `exportAsPivot` method to export the PivotTable to Excel by clicking an external button, specifying the export type (**Excel** or **CSV**) as a parameter. + +```html + +@Html.EJS().Button("excel").Content("Export To Excel").IsPrimary(true).Render() + +@Html.EJS().PivotView("PivotView").Height("300").DataSourceSettings(dataSource => dataSource.Url("http://localhost:61379/api/pivot/post") +.Mode(Syncfusion.EJ2.PivotView.RenderMode.Server) +.FormatSettings(formatsettings => +{ + formatsettings.Name("Price").Format("C").Add(); +}).Rows(rows => +{ + rows.Name("ProductID").Add(); +}).Columns(columns => +{ + columns.Name("Year").Add(); +}).Values(values => +{ + values.Name("Sold").Add(); +}) +).Render() + + +``` + +To enable native Excel pivot export functionality in a server-side controller, initialize the **PivotExportEngine** class to handle export file generation. + +```csharp + private PivotExportEngine pivotExport = new PivotExportEngine(); +``` + +Then, based on the **Action** parameter (**onPivotExcelExport** or **onPivotCsvExport**), invoke the **ExportAsPivot** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else if (param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + return pivotExport.ExportAsPivot(param.Action == "onPivotExcelExport" ? ExportType.Excel : ExportType.CSV, engine, param); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } +``` + +![Export as Pivot](images/export-as-pivot.png) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/sorting.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/sorting.md index c4c57e9c25..d3ed6b7065 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/sorting.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.MVC/sorting.md @@ -19,11 +19,11 @@ Member sorting can be enabled by setting the [`EnableSorting`](https://help.sync N> By default the [`EnableSorting`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewDataSourceSettings.html#Syncfusion_EJ2_PivotView_PivotViewDataSourceSettings_EnableSorting) property in [`PivotViewDataSourceSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewDataSourceSettings.html) class set as **true**. If we set it as **false**, then the field members arrange in pivot table as its data source order. And, the sort icons in grouping bar and field list buttons will be removed. -![output](images/sorting_fl.png "Member sorting icon in field list") +![output](images/sorting_fl.png)
-![output](images/sorting_gb.png "Member sorting icon in grouping bar") +![output](images/sorting_gb.png)
-![output](images/sorting_grid.png "Resultant pivot table on member sort") +![output](images/sorting_grid.png) Member sorting can also be configured using the [`PivotViewSortSettings`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewSortSetting.html) class through code behind, during initial rendering. The settings required to sort are: @@ -122,7 +122,7 @@ Allows to sort field headers (aka, members) in rows and columns based on user-de -![output](images/Custom sorting.png "Custom Sorting") +![output](images/Custom sorting.png) ## Value Sorting @@ -135,7 +135,7 @@ The value sorting can also be configured using the [`PivotViewValueSortSettings` * [`HeaderDelimiter`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_HeaderDelimiter): It allows to set the delimiters string to separate the header text between levels. * [`SortOrder`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_SortOrder): It allows to set the sort direction of the value field. -N> Value fields are set to the column axis by default. In such cases, the value sorting applied will have an effect on the column alone. You need to place the value fields in the row axis to do so in row wise. For more information, [`refer here`](https://ej2.syncfusion.com/aspnetmvc/documentation/pivot-table/data-binding/#values-in-row-axis). +N> Value fields are set to the column axis by default. In such cases, the value sorting applied will have an effect on the column alone. You need to place the value fields in the row axis to do so in row wise. For more information, [`refer here`](https://ej2.syncfusion.com/aspnetmvc/documentation/pivot-table/data-binding#values-in-row-axis). {% if page.publishingplatform == "aspnet-core" %} @@ -164,6 +164,43 @@ N> Value fields are set to the column axis by default. In such cases, the value ![output](images/valuesorting.png) +### Multiple Axis Sorting + +You can apply value sorting to both row and column axes simultaneously for more dynamic and precise data analysis. The following settings are used to configure sorting: + +* [`ColumnHeaderText`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_ColumnHeaderText): Specifies the column header hierarchy for value sorting. Header levels are defined from Level 1 to N using a delimiter for clarity. +* [`HeaderDelimiter`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_HeaderDelimiter): It allows to set the delimiters string to separate the header text between levels. +* [`ColumnSortOrder`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_ColumnSortOrder): Determines the sorting direction for the specified column header. +* [`RowHeaderText`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_RowHeaderText): Defines the specific row header for which the value sorting should be applied. +* [`RowSortOrder`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_RowSortOrder): Determines the sorting direction for the specified row header. + +N> This feature is applicable only to relational data sources. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="MultipleAxisSorting.cs" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/MultipleAxisSorting.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/razor %} +{% endhighlight %} +{% highlight c# tabtitle="MultipleAxisSorting.cs" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/MultipleAxisSorting.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +![Multiple Axis Sorting](images/multiple-axis-sorting.png) + ## Event ### OnHeadersSort @@ -205,7 +242,7 @@ The event [`OnHeadersSort`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfus -![output](images/Custom sorting_event.png "Custom Sorting Event") +![output](images/Custom sorting_event.png) ### ActionBegin @@ -218,8 +255,8 @@ The event [`actionBegin`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusi | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Sort field | -| [`Value sort icon`](./sorting/#value-sorting)| Sort value| +| [`Sort field`](./sorting#member-sorting)| Sort field | +| [`Value sort icon`](./sorting#value-sorting)| Sort value| * `fieldInfo`: It holds the selected field information. @@ -264,8 +301,8 @@ The event [`actionComplete`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncf | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Field sorted| -| [`Value sort icon`](./sorting/#value-sorting)| Value sorted| +| [`Sort field`](./sorting#member-sorting)| Field sorted| +| [`Value sort icon`](./sorting#value-sorting)| Value sorted| * `fieldInfo`: It holds the selected field information. @@ -306,8 +343,8 @@ The event [`actionFailure`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfu | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Sort field | -| [`Value sort icon`](./sorting/#value-sorting)| Sort value| +| [`Sort field`](./sorting#member-sorting)| Sort field | +| [`Value sort icon`](./sorting#value-sorting)| Sort value| * `errorInfo`: It holds the error information of the current UI action. diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/classic-layout.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/classic-layout.md index 7b41655700..a09292eee0 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/classic-layout.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/classic-layout.md @@ -11,7 +11,7 @@ documentation: ug # Classic Layout in ##Platform_Name## Pivot Table Component -N> The classic layout supports only relational data sources and operates exclusively with client-side engine. +N> This feature is applicable only to relational data sources. The classic layout in the Syncfusion Pivot Table offers a structured, tabular presentation of data, improving both readability and usability. In this layout, fields in the row axis are displayed side by side in separate columns, making data interpretation and analysis easier. By default, grand totals appear at the end of all rows, while subtotals are placed in a separate row beneath each group. All other features of the pivot table, such as filtering, sorting, drag-and-drop, expand/collapse functionality, and more, remain the same as in the compact layout, which serves as the default hierarchical format of the pivot table. diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/server-side-pivot-engine.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/server-side-pivot-engine.md index 7fe917c184..f2a0601971 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/server-side-pivot-engine.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/server-side-pivot-engine.md @@ -1,6 +1,6 @@ --- layout: post -title: Server Side Pivot Engine in ##Platform_Name## Pivot Table Component +title: Server Side Pivot Engine in ##Platform_Name## Syncfusion Pivot Table Component description: Learn here all about Server Side Pivot Engine in Syncfusion ##Platform_Name## Pivot Table component of Syncfusion Essential JS 2 and more. platform: ej2-asp-core-mvc control: Server Side Pivot Engine @@ -683,4 +683,307 @@ Meanwhile, the memory cache is set to expire after 60 minutes from RAM to free i * **GetData:** Allows to store data source in RAM as a cache which fires on initial rendering or when the memory cache is expired. * **GetMembers:** Allows to get the members of a field. This fires when the member editor is opened to do a filtering operation. * **GetRawData:** Allows to get raw data of an aggregated value cell. This fires when the drill-through or editing dialog is opened. -* **GetPivotValues:** Allows to update the stored engine properties in-memory cache and returns the aggregated values to browser to render the Pivot Table. Here, the return value can be modified. The Pivot Table will be rendered browser-based on this. \ No newline at end of file +* **GetPivotValues:** Allows to update the stored engine properties in-memory cache and returns the aggregated values to browser to render the Pivot Table. Here, the return value can be modified. The Pivot Table will be rendered browser-based on this. + +## Excel Export + +The server-side engine seamlessly supports Excel export functionality, enabling users to efficiently generate and download pivot table reports in Excel format directly from the server. To enable Excel export in the pivot table, set the [`allowExcelExport`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html#Syncfusion_EJ2_PivotView_PivotView_AllowExcelExport) property in [`ejs-pivotview`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html) tag to **true**. Once the API is set, the user needs to call the `excelExport` method to export the pivot table to Excel by clicking an external button. + +N> The pivot table component can be exported to Excel format using options available in the toolbar. For more details [refer](./tool-bar) here. + +```html + + + + + + + + + + + + + + + + + + + + +``` + +To enable export functionality in a server-side controller, initialize the **ExcelExport** class to handle export file generation. + +```csharp + private ExcelExport excelExport = new ExcelExport(); +``` + +Then, based on the **Action** parameter (**onExcelExport** or **onCsvExport**), invoke the **ExportToExcel** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } + +``` + +![Server-side engine excel exporting](images/excel-export-with-server-side-pivot-engine.png) + +### Add header and footer while exporting + +The Excel export provides an option to include header and footer content for the excel document before exporting. In-order to add header and footer, define **header** and **footer** properties in **excelExportProperties** object and pass it as a parameter to the `excelExport` method. + +``` html + + + + + + + + + + + + + + + + + + + + +``` + +![Add header and footer while exporting](images/add-header-and-footer-while-exporting.png) + +## CSV Export + +The Excel export allows pivot table data to be exported in **CSV** file format as well. To enable CSV export in the pivot table, set the [`allowExcelExport`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html#Syncfusion_EJ2_PivotView_PivotView_AllowExcelExport) property in [`ejs-pivotview`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotView.html) tag to **true**. Once the API is set, the user needs to call the `csvExport` method to export the pivot table to CSV by clicking an external button. + +N> The pivot table component can be exported to CSV format using options available in the toolbar. For more details [refer](./tool-bar) here. + +```html + + + + + + + + + + + + + + + + + + + + +``` + +To enable export functionality in a server-side controller, initialize the **ExcelExport** class to handle export file generation. + +```csharp + private ExcelExport excelExport = new ExcelExport(); +``` + +Then, based on the **Action** parameter (**onExcelExport** or **onCsvExport**), invoke the **ExportToExcel** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } + +``` +![CSV Export](images/csv-export-with-server-side-pivot-engine.png) + +## Export as Pivot + +You can export a Syncfusion PivotTable to an Excel file while preserving its native pivot structure using the server-side engine. The exported Excel document contains a fully interactive PivotTable, allowing users to dynamically modify configurations such as filtering, sorting, grouping, and aggregation directly in Microsoft Excel. + +To enable native Excel pivot export in the PivotTable, the user must call the `exportAsPivot` method to export the PivotTable to Excel by clicking an external button, specifying the export type (**Excel** or **CSV**) as a parameter. + +```html + + + + + + + + + + + + + + + + + + + +``` + +To enable native Excel pivot export functionality in a server-side controller, initialize the **PivotExportEngine** class to handle export file generation. + +```csharp + private PivotExportEngine pivotExport = new PivotExportEngine(); +``` + +Then, based on the **Action** parameter (**onPivotExcelExport** or **onPivotCsvExport**), invoke the **ExportAsPivot** method in the **Post** method of the **PivotController.cs** file. + +```csharp + [Route("/api/pivot/post")] + [HttpPost] + public async Task Post([FromBody] object args) + { + FetchData param = JsonConvert.DeserializeObject(args.ToString()); + if (param.Action == "fetchFieldMembers") + { + return await GetMembers(param); + } + else if (param.Action == "fetchRawData") + { + return await GetRawData(param); + } + else if (param.Action == "onExcelExport" || param.Action == "onCsvExport" || + param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + EngineProperties engine = await GetEngine(param); + if (param.InternalProperties.EnableVirtualization && param.ExportAllPages) + { + engine = await PivotEngine.PerformAction(engine, param); + } + if (param.Action == "onExcelExport") + { + return excelExport.ExportToExcel("Excel", engine, null, param.ExcelExportProperties); + } + else if (param.Action == "onPivotExcelExport" || param.Action == "onPivotCsvExport") + { + return pivotExport.ExportAsPivot(param.Action == "onPivotExcelExport" ? ExportType.Excel : ExportType.CSV, engine, param); + } + else + { + return excelExport.ExportToExcel("CSV", engine, null, param.ExcelExportProperties); + } + } + else + { + return await GetPivotValues(param); + } + } +``` + +![Export as Pivot](images/export-as-pivot.png) \ No newline at end of file diff --git a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/sorting.md b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/sorting.md index dcfd947ace..8f465545e3 100644 --- a/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/sorting.md +++ b/ej2-asp-core-mvc/pivot-table/EJ2_ASP.NETCORE/sorting.md @@ -19,11 +19,11 @@ Member sorting can be enabled by setting the [`enableSorting`](https://help.sync N> By default the [`enableSorting`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewDataSourceSettings.html#Syncfusion_EJ2_PivotView_PivotViewDataSourceSettings_EnableSorting) property in [`e-datasourcesettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewDataSourceSettings.html) tag set as **true**. If we set it as **false**, then the field members arrange in pivot table as its data source order. And, the sort icons in grouping bar and field list buttons will be removed. -![output](images/sorting_fl.png "Member sorting icon in field list") +![output](images/sorting_fl.png)
-![output](images/sorting_gb.png "Member sorting icon in grouping bar") +![output](images/sorting_gb.png)
-![output](images/sorting_grid.png "Resultant pivot table on member sort") +![output](images/sorting_grid.png) Member sorting can also be configured using the [`e-sortsettings`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewSortSetting.html) tag through code behind, during initial rendering. The settings required to sort are: @@ -122,7 +122,7 @@ Allows to sort field headers (aka, members) in rows and columns based on user-de -![output](images/Custom sorting.png "Custom Sorting") +![output](images/Custom sorting.png) ## Value Sorting @@ -135,7 +135,7 @@ The value sorting can also be configured using the [`e-valuesortsettings`](https * [`headerDelimiter`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_HeaderDelimiter): It allows to set the delimiters string to separate the header text between levels. * [`sortOrder`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_SortOrder): It allows to set the sort direction of the value field. -N> Value fields are set to the column axis by default. In such cases, the value sorting applied will have an effect on the column alone. You need to place the value fields in the row axis to do so in row wise. For more information, [`refer here`](https://ej2.syncfusion.com/aspnetcore/documentation/pivot-table/data-binding/#values-in-row-axis). +N> Value fields are set to the column axis by default. In such cases, the value sorting applied will have an effect on the column alone. You need to place the value fields in the row axis to do so in row wise. For more information, [`refer here`](https://ej2.syncfusion.com/aspnetcore/documentation/pivot-table/data-binding#values-in-row-axis). {% if page.publishingplatform == "aspnet-core" %} @@ -164,6 +164,43 @@ N> Value fields are set to the column axis by default. In such cases, the value ![output](images/valuesorting.png) +### Multiple Axis Sorting + +You can apply value sorting to both row and column axes simultaneously for more dynamic and precise data analysis. The following settings are used to configure sorting: + +* [`columnHeaderText`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_ColumnHeaderText): Specifies the column header hierarchy for value sorting. Header levels are defined from Level 1 to N using a delimiter for clarity. +* [`headerDelimiter`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_HeaderDelimiter): It allows to set the delimiters string to separate the header text between levels. +* [`columnSortOrder`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_ColumnSortOrder): Determines the sorting direction for the specified column header. +* [`rowHeaderText`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_RowHeaderText): Defines the specific row header for which the value sorting should be applied. +* [`rowSortOrder`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.PivotView.PivotViewValueSortSettings.html#Syncfusion_EJ2_PivotView_PivotViewValueSortSettings_RowSortOrder): Determines the sorting direction for the specified row header. + +N> This feature is applicable only to relational data sources. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="MultipleAxisSorting.cs" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/MultipleAxisSorting.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/razor %} +{% endhighlight %} +{% highlight c# tabtitle="MultipleAxisSorting.cs" %} +{% include code-snippet/pivot-table/multiple-axis-sorting/MultipleAxisSorting.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +![Multiple Axis Sorting](images/multiple-axis-sorting.png) + ## Event ### OnHeadersSort @@ -205,7 +242,7 @@ The event [`OnHeadersSort`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfu -![output](images/Custom sorting_event.png "Custom Sorting Event") +![output](images/Custom sorting_event.png) ### ActionBegin @@ -218,8 +255,8 @@ The event [`actionBegin`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusi | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Sort field | -| [`Value sort icon`](./sorting/#value-sorting)| Sort value| +| [`Sort field`](./sorting#member-sorting)| Sort field | +| [`Value sort icon`](./sorting#value-sorting)| Sort value| * `fieldInfo`: It holds the selected field information. @@ -264,8 +301,8 @@ The event [`actionComplete`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncf | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Field sorted| -| [`Value sort icon`](./sorting/#value-sorting)| Value sorted| +| [`Sort field`](./sorting#member-sorting)| Field sorted| +| [`Value sort icon`](./sorting#value-sorting)| Value sorted| * `fieldInfo`: It holds the selected field information. @@ -306,8 +343,8 @@ The event [`actionFailure`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfu | Action | Action Name| |------|-------------| -| [`Sort field`](./sorting/#member-sorting)| Sort field | -| [`Value sort icon`](./sorting/#value-sorting)| Sort value| +| [`Sort field`](./sorting#member-sorting)| Sort field | +| [`Value sort icon`](./sorting#value-sorting)| Sort value| * `errorInfo`: It holds the error information of the current UI action. diff --git a/ej2-asp-core-mvc/pivot-table/images/add-header-and-footer-while-exporting.png b/ej2-asp-core-mvc/pivot-table/images/add-header-and-footer-while-exporting.png new file mode 100644 index 0000000000..956aeedcf4 Binary files /dev/null and b/ej2-asp-core-mvc/pivot-table/images/add-header-and-footer-while-exporting.png differ diff --git a/ej2-asp-core-mvc/pivot-table/images/cell_template.png b/ej2-asp-core-mvc/pivot-table/images/cell_template.png index 69f50561ef..e25db32500 100644 Binary files a/ej2-asp-core-mvc/pivot-table/images/cell_template.png and b/ej2-asp-core-mvc/pivot-table/images/cell_template.png differ diff --git a/ej2-asp-core-mvc/pivot-table/images/csv-export-with-server-side-pivot-engine.png b/ej2-asp-core-mvc/pivot-table/images/csv-export-with-server-side-pivot-engine.png new file mode 100644 index 0000000000..946f01db25 Binary files /dev/null and b/ej2-asp-core-mvc/pivot-table/images/csv-export-with-server-side-pivot-engine.png differ diff --git a/ej2-asp-core-mvc/pivot-table/images/excel-export-with-server-side-pivot-engine.png b/ej2-asp-core-mvc/pivot-table/images/excel-export-with-server-side-pivot-engine.png new file mode 100644 index 0000000000..df2df37e0c Binary files /dev/null and b/ej2-asp-core-mvc/pivot-table/images/excel-export-with-server-side-pivot-engine.png differ diff --git a/ej2-asp-core-mvc/pivot-table/images/export-as-pivot.png b/ej2-asp-core-mvc/pivot-table/images/export-as-pivot.png new file mode 100644 index 0000000000..d2d3292587 Binary files /dev/null and b/ej2-asp-core-mvc/pivot-table/images/export-as-pivot.png differ diff --git a/ej2-asp-core-mvc/pivot-table/images/multiple-axis-sorting.png b/ej2-asp-core-mvc/pivot-table/images/multiple-axis-sorting.png new file mode 100644 index 0000000000..7df1266798 Binary files /dev/null and b/ej2-asp-core-mvc/pivot-table/images/multiple-axis-sorting.png differ diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/code-block.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/code-block.md new file mode 100644 index 0000000000..d2d1116267 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/code-block.md @@ -0,0 +1,80 @@ +--- +layout: post +title: Code Block in ##Platform_Name## Rich Text Editor Component | Syncfusion +description: Learn here all about Code Block in Syncfusion ##Platform_Name## Rich Text Editor component of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Code Block +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Code Block in ##Platform_Name## Rich Text Editor control + +The Code Block feature in the Rich Text Editor, enabling users to insert and format code snippets effectively. It covers configuring supported languages, integrating syntax highlighters, editing tips, and enabling tab-based indentation, making it ideal for technical documentation, tutorials, and code-heavy content. While live code block highlighting is not supported during editing, syntax highlighting can be applied when content is displayed on the frontend. + +## Inserting a code block + +The Code Block feature allows users to embed formatted code snippets within the Rich Text Editor. To insert a code block: + +- **Using the Toolbar**: Click the **CodeBlock** button in the editor’s toolbar, typically represented by a code icon. +- **Using the Shortcut**: Press `Ctrl+Shift+B` (or `Cmd+Shift+B` on macOS) to insert a code block at the cursor’s position. +- A dropdown menu appears, allowing selection of the programming language for the code block, such as **JavaScript**, **Python**, **HTML**, or others configured in the system. + +The code block is rendered with a monospaced font and preserved indentation for readability. Language selection applies syntax-specific formatting and prepares the block for syntax highlighting when displayed on the frontend. + +## Configuring code block languages + +The Code Block feature supports customizable programming languages via the `CodeBlockSettings` property, specifically the `Languages` and `DefaultLanguage` options. The `Languages` property accepts an array of objects defining available languages, while `DefaultLanguage` sets the default language for new code blocks. This allows developers to customize the editor for project-specific languages. + +Below is an example of how to configure the `CodeBlockSettings` using the Rich Text Editor: + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-block/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-block/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/code-block/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/code-block/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + +In this example: + +* The **Languages** array defines four supported languages: JavaScript, Python, HTML, and CSS. +* The **DefaultLanguage** is set to **javascript**, so new code blocks default to JavaScript. +* Each language object specifies a **language** (for internal use, e.g., syntax highlighting) and a **label** (displayed in the dropdown). + +## Integrating syntax highlighters + +To enhance code block readability, integrate a third-party syntax highlighter like [Prism.js](https://prismjs.com/) or [Highlight.js](https://highlightjs.org/), which supports numerous languages and customizable themes. Although live code block highlighting (real-time syntax highlighting during editing) is not possible in the Rich Text Editor, The highlighter can apply color-coded formatting to code blocks when the content is displayed on the frontend, such as in blog posts, website content, or preview mode. This ensures a polished presentation for end users. + +## Tips for editing around code blocks + +Editing content around code blocks requires care to preserve code integrity and maintain clean formatting. Follow these tips for a smooth editing experience: +* **Inserting Text Before a Code Block**: Place the cursor at the start of the code block’s first line and press `Enter` to create an empty line above. Press Enter again to start a new paragraph for text. +* **Inserting Text After a Code Block**: Place the cursor at the end of the code block’s last line and press `Enter` three times to exit the code block and create a new paragraph below. +* **Preserving Formatting When Pasting**: Paste code into a code block using `Ctrl+Shift+V` (or `Cmd+Shift+V` on macOS) to avoid external formatting (e.g., fonts or colors) and maintain the monospaced style. +* **Changing Languages**: When switching the language of a code block via the dropdown, verify that the code aligns with the new language for accurate syntax highlighting in the rendered output. +* **Previewing Content**: Since live syntax highlighting is not available during editing, use the editor’s preview mode to verify how code blocks render with syntax highlighting before publishing. + +## Enabling tab-based line indentation in code blocks + +The Code Block feature supports tab-based indentation to align code properly, crucial for languages like Python where indentation is syntactically significant. The Rich Text Editor does not provide a specific property to configure the indentation character, but indentation can be enabled using the editor’s default behavior for the Tab key, toolbar commands, or custom event handling. + +To enable tab-based indentation: + +* **Using the Tab Key**: Pressing `Tab` within a code block typically inserts a tab character (\t) or spaces (usually four, depending on the editor’s default configuration). Use `Shift+Tab` to outdent selected lines. +* **Toolbar Commands**: Include the `Indent` and `Outdent` buttons in the toolbar to increase or decrease indentation. 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 153c4273c0..7088669cd0 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 @@ -141,23 +141,20 @@ Refer `rename.cs` controller file for configure the server-side. {% endtabs %} {% endif %} +### Uploading Audio with Authentication -### Restricting Audio by Size - -You can restrict the audio uploaded from the local machine when the uploaded audio file size is greater than the allowed size by using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event. - -> The file size in the argument will be returned in `bytes`. +You can add additional data with the audio uploaded from the Rich Text Editor on the client side, which can even be received on the server side by using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. -In the following illustration, the audio size has been validated before uploading, and it is determined whether the audio has been uploaded or not. +N> By default, it doesn't support the `UseDefaultCredentials` property; we need to manually append the default credentials with the upload request. {% if page.publishingplatform == "aspnet-core" %} {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/check-audio-size/tagHelper %} +{% include code-snippet/rich-text-editor/audio-authenticate/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %} +{% include code-snippet/rich-text-editor/audio-authenticate/controller.cs %} {% endhighlight %} {% endtabs %} @@ -165,28 +162,28 @@ In the following illustration, the audio size has been validated before uploadin {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/check-audio-size/razor %} +{% include code-snippet/rich-text-editor/audio-authenticate/razor %} {% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %} +{% highlight c# tabtitle="SaveFile.cs" %} +{% include code-snippet/rich-text-editor/audio-authenticate/saveFile.cs %} {% endhighlight %} {% endtabs %} {% endif %} -### Uploading Audio with Authentication +## Maximum file size restriction -You can add additional data with the audio uploaded from the Rich Text Editor on the client side, which can even be received on the server side by using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. +You can restrict the audio uploaded from the local machine when the uploaded audio file size is greater than the allowed size by using the [InsertAudioSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorAudioSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorAudioSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes. -N> By default, it doesn't support the `UseDefaultCredentials` property; we need to manually append the default credentials with the upload request. +In the following illustration, the audio size has been validated before uploading, and it is determined whether the audio has been uploaded or not. {% if page.publishingplatform == "aspnet-core" %} {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/audio-authenticate/tagHelper %} +{% include code-snippet/rich-text-editor/check-audio-size/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/audio-authenticate/controller.cs %} +{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %} {% endhighlight %} {% endtabs %} @@ -194,10 +191,10 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/audio-authenticate/razor %} +{% include code-snippet/rich-text-editor/check-audio-size/razor %} {% endhighlight %} -{% highlight c# tabtitle="SaveFile.cs" %} -{% include code-snippet/rich-text-editor/audio-authenticate/saveFile.cs %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %} {% endhighlight %} {% endtabs %} {% endif %} 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 c2b6a8ee9e..d35d4fe5b7 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 @@ -109,17 +109,13 @@ N> The runnable demo application is available in this [Github](https://github.co ### Image Renaming Feature -You can use the [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings) property, to specify the server handler to upload the selected image. Then by binding the [FileUploadSuccess](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploadSuccess) event, you can receive the modified file name from the server and update it in the Rich Text Editor's insert image dialog. +You can use the [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings) property, to specify the server handler to upload the selected image. Then by binding the [ImageUploadSuccess](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ImageUploadSuccess) event, you can receive the modified file name from the server and update it in the Rich Text Editor's insert image dialog. -### Size-based Image Restrictions - -You can restrict the image uploaded from the local machine when the uploaded image file size is greater than the allowed size by using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event. - -> The file size in the argument will be returned in `bytes`. +Refer the section [Rename images before inserting it in Rich Text Editor](https://ej2.syncfusion.com/aspnetmvc/documentation/rich-text-editor/how-to/rename-images-in-server) for code snippets and examples. ### Secure Image Upload with Authentication -You can add additional data with the image uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `CustomFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. +You can add additional data with the image uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [ImageUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ImageUploading) event and its `CustomFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. > By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request. @@ -146,6 +142,36 @@ You can add additional data with the image uploaded from the Rich Text Editor on {% endtabs %} {% endif %} +## Maximum file size restriction + +You can restrict the image uploaded from the local machine when the uploaded image file size is greater than the allowed size by using the [InsertImageSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes. You can configure this size as follows. + +In the following example, the image size has been validated before uploading and determined whether the image has been uploaded or not. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/check-image-size/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/check-image-size/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/check-image-size/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/check-image-size/controller.cs %} +{% endhighlight %} +{% endtabs %} +{% endif %} + + ## Image Replacement Functionality Once a image file has been inserted, you can replace it using the Rich Text Editor [QuickToolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorQuickToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorQuickToolbarSettings) `ImageReplace` option. You can replace the image file either by using the web URL or the browse option in the image dialog. @@ -190,7 +216,7 @@ The following sample explains, how to configure `RemoveUrl` to remove a saved im ## Adjusting Image Dimensions -Sets the default width and height of the image when it is inserted in the Rich Text Editor using [Width](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Width) and [Height](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Height) of the [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_) property. +Sets the default width and height of the image when it is inserted in the Rich Text Editor using [Width](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Width) and [Height](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Height) of the [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings) property. 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. @@ -209,7 +235,7 @@ By clicking the Image Caption, the image will get wrapped in an image element wi ## Configuring Image Display Position -Sets the default display for an image when it is inserted in the Rich Text Editor using [Display](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Display) field in [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_). It has two possible options: 'inline' and 'block'. +Sets the default display for an image when it is inserted in the Rich Text Editor using [Display](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Display) field in [InsertImageSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings). It has two possible options: 'inline' and 'block'. {% if page.publishingplatform == "aspnet-core" %} 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 c38319e1de..2294ef8cb9 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 @@ -146,22 +146,20 @@ Refer `rename.cs` controller file for configure the server-side. {% endtabs %} {% endif %} -### Restricting Video by Size - -You can restrict the video uploaded from the local machine when the uploaded video file size is greater than the allowed size by using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event. +### Uploading Video with Authentication -> The file size in the argument will be returned in `bytes`. +You can add additional data with the video uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `CustomFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. -In the following example, the video size has been validated before uploading and determined whether the video has been uploaded or not. +N> By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request. {% if page.publishingplatform == "aspnet-core" %} {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/check-video-size/tagHelper %} +{% include code-snippet/rich-text-editor/video-authenticate/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/check-video-size/controller.cs %} +{% include code-snippet/rich-text-editor/video-authenticate/controller.cs %} {% endhighlight %} {% endtabs %} @@ -169,29 +167,28 @@ In the following example, the video size has been validated before uploading and {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/check-video-size/razor %} +{% include code-snippet/rich-text-editor/video-authenticate/razor %} {% endhighlight %} -{% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/check-video-size/controller.cs %} +{% highlight c# tabtitle="SaveFile.cs" %} +{% include code-snippet/rich-text-editor/video-authenticate/saveFile.cs %} {% endhighlight %} {% endtabs %} {% endif %} +## Maximum file size restrictions -### Uploading Video with Authentication - -You can add additional data with the video uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [FileUploading](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `CustomFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method. +You can restrict the video uploaded from the local machine when the uploaded video file size is greater than the allowed size by using the [InsertVideoSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes. You can configure this size as follows. -N> By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request. +In the following example, the video size has been validated before uploading and determined whether the video has been uploaded or not. {% if page.publishingplatform == "aspnet-core" %} {% tabs %} {% highlight cshtml tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/video-authenticate/tagHelper %} +{% include code-snippet/rich-text-editor/check-video-size/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/video-authenticate/controller.cs %} +{% include code-snippet/rich-text-editor/check-video-size/controller.cs %} {% endhighlight %} {% endtabs %} @@ -199,10 +196,10 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/video-authenticate/razor %} +{% include code-snippet/rich-text-editor/check-video-size/razor %} {% endhighlight %} -{% highlight c# tabtitle="SaveFile.cs" %} -{% include code-snippet/rich-text-editor/video-authenticate/saveFile.cs %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/check-video-size/controller.cs %} {% endhighlight %} {% endtabs %} {% endif %} diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-position.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-position.md new file mode 100644 index 0000000000..6d1d89aab6 --- /dev/null +++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-position.md @@ -0,0 +1,53 @@ +--- +layout: post +title: Toolbar position in ##Platform_Name## Rich Text Editor Control | Syncfusion +description: Learn here all about Toolbar position in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more. +platform: ej2-asp-core-mvc +control: Toolbar position +publishingplatform: ##Platform_Name## +documentation: ug +--- + +# Toolbar position in the ##Platform_Name## Rich Text Editor Control + +The Rich Text Editor allows you to configure the toolbar's position using the [position](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Position) field in the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The available positions are: + +1. Top +2. Bottom + +## Configuring the toolbar position + +The Rich Text Editor allows you to position the toolbar at the top or bottom of the content area, depending on your layout requirements. + +By default, the toolbar is displayed at the top of the editor, making all formatting and editing tools immediately accessible above the content. + +To position the toolbar at the bottom, use the [position](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Position) property in the [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) configuration and set its value to `Bottom`. This places the toolbar below the content area, which can help maintain a cleaner top layout and improve accessibility in certain use cases. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-bottom/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-bottom/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-bottom/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-bottom/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/toolbar/toolbar-types.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/toolbar/toolbar-types.md index 55eda1045c..8f19e9a27b 100644 --- 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 @@ -21,6 +21,7 @@ The Rich Text Editor allows you to configure different types of toolbar using [t 1. Expand 2. MultiRow 3. Scrollable +4. Popup ## Expanding the toolbar @@ -101,6 +102,33 @@ Setting the `type` to `Scrollable` in [toolbarSettings](https://help.syncfusion. {% endtabs %} {% endif %} +## Configuring a popup toolbar + +Setting the `type` to `Popup` in [toolbarSettings](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display overflowing toolbar items into a popup container, optimizing the toolbar layout for limited space and smaller screens. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-popup/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-popup/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/toolbar-popup/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/toolbar-popup/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. 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 282bcdf4a3..96da99a47c 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 @@ -141,6 +141,14 @@ The table quicktoolbar provides options for table editing within the Rich Text E | 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']} | +### Horizontal Line + +Horizontal lines visually separate sections of content in the editor, enhancing readability and layout clarity. + +| Name | Icons | Summary | Initialization | +|----------------|---------|---------|------------------------------------------| +| Horizontal Line | ![HorizontalLine icon](../../images/horizontal-icon.png) | Allows you to insert horizontal line.|toolbarSettings: { items: ['HorizontalLine']} | + ### Undo & redo These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions. 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 index 38f99322c1..010fce463d 100644 --- 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 @@ -232,3 +232,32 @@ Both the `FontColor` and `BackgroundColor` properties offer two modes: `Picker` {% endhighlight %} {% endtabs %} {% endif %} + +### Show recent color + +The [ShowRecentColors](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ShowRecentColors) feature in the Rich Text Editor allows users to quickly access a row of recently used colors displayed below the main palette. This helps streamline the editing process by making frequently used colors readily available, improving efficiency and consistency in styling. + +This feature can be enabled separately for the [RichTextEditorFontColor](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html) and [RichTextEditorBackgroundColor](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBackgroundColor.html) tools, giving users flexibility based on their formatting needs. It's especially useful when working with recurring color themes, as it eliminates the need to manually search through the full color palette each time. + +{% if page.publishingplatform == "aspnet-core" %} + +{% tabs %} +{% highlight cshtml tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/show-recent-color/tagHelper %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/show-recent-color/controller.cs %} +{% endhighlight %} +{% endtabs %} + +{% elsif page.publishingplatform == "aspnet-mvc" %} + +{% tabs %} +{% highlight razor tabtitle="CSHTML" %} +{% include code-snippet/rich-text-editor/show-recent-color/razor %} +{% endhighlight %} +{% highlight c# tabtitle="Controller.cs" %} +{% include code-snippet/rich-text-editor/show-recent-color/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/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/tools/text-formatting.md index 8411772b79..ade6f4d139 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 @@ -1,6 +1,6 @@ --- layout: post -title: Text formatting and Structure in ##Platform_Name## Rich Text Editor Control | Syncfusion +title: Text formatting and Structure in ##Platform_Name## Rich Text Editor | 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 @@ -381,24 +381,22 @@ Use the `Blockquote` tool in the editor below to see the feature in action. > In a markdown editor, blockquotes are represented using the `>` symbol. -## Insert code +## Horizontal line -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. +The Rich Text Editor enables users to insert horizontal dividers using the `HorizontalLine` tool available in the toolbar. Horizontal lines (
) help visually separate sections of content, enhancing readability and structural clarity. -### Enabling code block formatting +To insert a horizontal line, place the cursor at the desired location and click the `HorizontalLine` icon in the toolbar. A full-width line will be added, creating a clear visual break between sections of text or other elements. -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. +Use the `HorizontalLine` 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/code-format/tagHelper %} +{% include code-snippet/rich-text-editor/horizontal-line/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% include code-snippet/rich-text-editor/horizontal-line/controller.cs %} {% endhighlight %} {% endtabs %} @@ -406,48 +404,14 @@ Below are examples and code snippets demonstrating how to add and effectively us {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/code-format/razor %} +{% include code-snippet/rich-text-editor/horizontal-line/razor %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% include code-snippet/rich-text-editor/horizontal-line/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.
@@ -504,7 +468,7 @@ For more details on keyboard navigation, refer to the [Keyboard support](../keyb
 
 > 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.
+Additionally, You can perform the format painter actions programmatically using the [executeCommand](../exec-command) public method.
 
 ## Clear formatting
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/undo-redo.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/undo-redo.md
index 7d6fa62ccf..5eab2cb04a 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/undo-redo.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.MVC/undo-redo.md
@@ -50,4 +50,35 @@ Here's an example of how to customize both the Undo/Redo timer and steps:
 {% include code-snippet/rich-text-editor/undo-redo/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
+{% endif %}
+
+## Clear Undo/Redo stack
+
+The Rich Text Editor automatically maintains an undo/redo stack, allowing users to revert or redo changes made during editing.
+
+To clear the entire undo and redo stack, use the public `clearUndoRedo` method. This is helpful when loading new content dynamically or resetting the editor to its initial state.
+
+Here's an example of how to customize both the Undo/Redo timer and steps:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
 {% endif %}
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/code-block.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/code-block.md
new file mode 100644
index 0000000000..fb0d0fac92
--- /dev/null
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/code-block.md
@@ -0,0 +1,80 @@
+---
+layout: post
+title: Code Block in ##Platform_Name## Rich Text Editor control | Syncfusion
+description: Learn here all about Code Block in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more.
+platform: ej2-asp-core-mvc
+control: Code Block
+publishingplatform: ##Platform_Name##
+documentation: ug
+---
+
+# Code Block in ##Platform_Name## Rich Text Editor control
+
+The Code Block feature in the Rich Text Editor, enabling users to insert and format code snippets effectively. It covers configuring supported languages, integrating syntax highlighters, editing tips, and enabling tab-based indentation, making it ideal for technical documentation, tutorials, and code-heavy content. While live code block highlighting is not supported during editing, syntax highlighting can be applied when content is displayed on the frontend.
+
+## Inserting a code block
+
+The Code Block feature allows users to embed formatted code snippets within the Rich Text Editor. To insert a code block:
+
+- **Using the Toolbar**: Click the **CodeBlock** button in the editor’s toolbar, typically represented by a code icon.
+- **Using the Shortcut**: Press `Ctrl+Shift+B` (or `Cmd+Shift+B` on macOS) to insert a code block at the cursor’s position.
+- A dropdown menu appears, allowing selection of the programming language for the code block, such as **JavaScript**, **Python**, **HTML**, or others configured in the system.
+
+The code block is rendered with a monospaced font and preserved indentation for readability. Language selection applies syntax-specific formatting and prepares the block for syntax highlighting when displayed on the frontend.
+
+## Configuring code block languages
+
+The Code Block feature supports customizable programming languages via the [e-richtexteditor-codeblocksettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorCodeBlockSettings.html) property, specifically the `languages` and `defaultLanguage` options. The `languages` property accepts an array of objects defining available languages, while `defaultLanguage` sets the default language for new code blocks. This allows developers to customize the editor for project-specific languages.
+
+Below is an example of how to configure the [e-richtexteditor-codeblocksettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorCodeBlockSettings.html) using the Rich Text Editor:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/code-block/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/code-block/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/code-block/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/code-block/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
+In this example:
+
+* The **languages** array defines four supported languages: JavaScript, Python, HTML, and CSS.
+* The **defaultLanguage** is set to **javascript**, so new code blocks default to JavaScript.
+* Each language object specifies a **language** (for internal use, e.g., syntax highlighting) and a **label** (displayed in the dropdown).
+
+## Integrating syntax highlighters
+
+To enhance code block readability, integrate a third-party syntax highlighter like [Prism.js](https://prismjs.com/) or [Highlight.js](https://highlightjs.org/), which supports numerous languages and customizable themes. Although live code block highlighting (real-time syntax highlighting during editing) is not possible in the Rich Text Editor, The highlighter can apply color-coded formatting to code blocks when the content is displayed on the frontend, such as in blog posts, website content, or preview mode. This ensures a polished presentation for end users.
+
+## Tips for editing around code blocks
+
+Editing content around code blocks requires care to preserve code integrity and maintain clean formatting. Follow these tips for a smooth editing experience:
+* **Inserting Text Before a Code Block**: Place the cursor at the start of the code block’s first line and press `Enter` to create an empty line above. Press Enter again to start a new paragraph for text.
+* **Inserting Text After a Code Block**: Place the cursor at the end of the code block’s last line and press `Enter` three times to exit the code block and create a new paragraph below.
+* **Preserving Formatting When Pasting**: Paste code into a code block using `Ctrl+Shift+V` (or `Cmd+Shift+V` on macOS) to avoid external formatting (e.g., fonts or colors) and maintain the monospaced style.
+* **Changing Languages**: When switching the language of a code block via the dropdown, verify that the code aligns with the new language for accurate syntax highlighting in the rendered output.
+* **Previewing Content**: Since live syntax highlighting is not available during editing, use the editor’s preview mode to verify how code blocks render with syntax highlighting before publishing.
+
+## Enabling tab-based line indentation in code blocks
+
+The Code Block feature supports tab-based indentation to align code properly, crucial for languages like Python where indentation is syntactically significant. The Rich Text Editor does not provide a specific property to configure the indentation character, but indentation can be enabled using the editor’s default behavior for the Tab key, toolbar commands, or custom event handling.
+
+To enable tab-based indentation:
+
+* **Using the Tab Key**: Pressing `Tab` within a code block typically inserts a tab character (\t) or spaces (usually four, depending on the editor’s default configuration). Use `Shift+Tab` to outdent selected lines.
+* **Toolbar Commands**: Include the `Indent` and `Outdent` buttons in the toolbar to increase or decrease indentation.
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 f74a7d0d28..b24dcd89e5 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
@@ -141,23 +141,20 @@ Refer `rename.cs` controller file for configure the server-side.
 {% endtabs %}
 {% endif %}
 
+### Uploading Audio with Authentication
 
-### Restricting Audio by Size
-
-You can restrict the audio uploaded from the local machine when the uploaded audio file size is greater than the allowed size by using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event.
-
-> The file size in the argument will be returned in `bytes`.
+You can add additional data with the audio uploaded from the Rich Text Editor on the client side, which can even be received on the server side by using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
 
-In the following illustration, the audio size has been validated before uploading, and it is determined whether the audio has been uploaded or not.
+N> By default, it doesn't support the `UseDefaultCredentials` property; we need to manually append the default credentials with the upload request.
 
 {% if page.publishingplatform == "aspnet-core" %}
 
 {% tabs %}
 {% highlight cshtml tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/check-audio-size/tagHelper %}
+{% include code-snippet/rich-text-editor/audio-authenticate/tagHelper %}
 {% endhighlight %}
 {% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %}
+{% include code-snippet/rich-text-editor/audio-authenticate/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 
@@ -165,28 +162,28 @@ In the following illustration, the audio size has been validated before uploadin
 
 {% tabs %}
 {% highlight razor tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/check-audio-size/razor %}
+{% include code-snippet/rich-text-editor/audio-authenticate/razor %}
 {% endhighlight %}
-{% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %}
+{% highlight c# tabtitle="SaveFile.cs" %}
+{% include code-snippet/rich-text-editor/audio-authenticate/saveFile.cs %}
 {% endhighlight %}
 {% endtabs %}
 {% endif %}
 
-### Uploading Audio with Authentication
+## Maximum file size restriction
 
-You can add additional data with the audio uploaded from the Rich Text Editor on the client side, which can even be received on the server side by using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
+You can restrict the audio uploaded from the local machine when the uploaded audio file size is greater than the allowed size by using the [InsertAudioSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorAudioSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorAudioSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes..
 
-N> By default, it doesn't support the `UseDefaultCredentials` property; we need to manually append the default credentials with the upload request.
+In the following illustration, the audio size has been validated before uploading, and it is determined whether the audio has been uploaded or not.
 
 {% if page.publishingplatform == "aspnet-core" %}
 
 {% tabs %}
 {% highlight cshtml tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/audio-authenticate/tagHelper %}
+{% include code-snippet/rich-text-editor/check-audio-size/tagHelper %}
 {% endhighlight %}
 {% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/audio-authenticate/controller.cs %}
+{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 
@@ -194,10 +191,10 @@ N> By default, it doesn't support the `UseDefaultCredentials` property; we need
 
 {% tabs %}
 {% highlight razor tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/audio-authenticate/razor %}
+{% include code-snippet/rich-text-editor/check-audio-size/razor %}
 {% endhighlight %}
-{% highlight c# tabtitle="SaveFile.cs" %}
-{% include code-snippet/rich-text-editor/audio-authenticate/saveFile.cs %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/check-audio-size/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 {% endif %}
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 168aa65b8e..0a32fdc943 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
@@ -10,7 +10,7 @@ documentation: ug
 
 # Images in ##Platform_Name## Rich Text Editor Control
 
-Rich Text Editor allows to insert images in your content from online sources as well as local computer. For inserting an image to the Rich Text Editor, the following list of options have been provided in the [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_)
+Rich Text Editor allows to insert images in your content from online sources as well as local computer. For inserting an image to the Rich Text Editor, the following list of options have been provided in the [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings)
 
 ## Configuring Image Tool in the Toolbar
 
@@ -109,17 +109,13 @@ Set the [insertImageSettings.saveFormat](https://help.syncfusion.com/cr/aspnetco
 
 ### Image Renaming Feature
 
-You can use the [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings) property, to specify the server handler to upload the selected image. Then by binding the [fileUploadSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploadSuccess) event, you can receive the modified file name from the server and update it in the Rich Text Editor's insert image dialog.
+You can use the [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings) property, to specify the server handler to upload the selected image. Then by binding the [ImageUploadSuccess](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ImageUploadSuccess) event, you can receive the modified file name from the server and update it in the Rich Text Editor's insert image dialog.
 
-### Size-based Image Restrictions
-
-You can restrict the image uploaded from the local machine when the uploaded image file size is greater than the allowed size by using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event.
-
-> The file size in the argument will be returned in `bytes`.
+Refer the section [Rename images before inserting it in Rich Text Editor](https://ej2.syncfusion.com/aspnetcore/documentation/rich-text-editor/how-to/rename-images-in-server) for code snippets and examples.
 
 ### Secure Image Upload with Authentication
 
-You can add additional data with the image uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
+You can add additional data with the image uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [ImageUploading](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ImageUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
 
 > By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request.
 
@@ -146,6 +142,35 @@ You can add additional data with the image uploaded from the Rich Text Editor on
 {% endtabs %}
 {% endif %}
 
+## Maximum file size restriction
+
+You can restrict the image uploaded from the local machine when the uploaded image file size is greater than the allowed size by using the [InsertImageSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes. You can configure this size as follows.
+
+In the following example, the image  size has been validated before uploading and determined whether the image  has been uploaded or not.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/check-image-size/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/check-image-size/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/check-image-size/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/check-image-size/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+{% endif %}
+
 ## Image Replacement Functionality
 
 Once a image 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) `imageReplace` option. You can replace the image file either by using the web URL or the browse option in the image dialog.
@@ -209,7 +234,7 @@ By clicking the Image Caption, the image will get wrapped in an image element wi
 
 ## Configuring Image Display Position
 
-Sets the default display for an image when it is inserted in the Rich Text Editor using [display](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Display) field in [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_). It has two possible options: 'inline' and 'block'.
+Sets the default display for an image when it is inserted in the Rich Text Editor using [display](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorImageSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings_Display) field in [insertImageSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBuilder.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorBuilder_InsertImageSettings_Syncfusion_EJ2_RichTextEditor_RichTextEditorImageSettings). It has two possible options: 'inline' and 'block'.
 
 {% if page.publishingplatform == "aspnet-core" %}
 
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 a2c2ba5d11..7d8fe9010b 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
@@ -146,22 +146,20 @@ Refer `rename.cs` controller file for configure the server-side.
 {% endtabs %}
 {% endif %}
 
-### Restricting video by size
-
-You can restrict the video uploaded from the local machine when the uploaded video file size is greater than the allowed size by using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event.
+### Uploading video with authentication
 
-> The file size in the argument will be returned in `bytes`.
+You can add additional data with the video uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
 
-In the following example, the video size has been validated before uploading and determined whether the video has been uploaded or not.
+N> By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request.
 
 {% if page.publishingplatform == "aspnet-core" %}
 
 {% tabs %}
 {% highlight cshtml tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/check-video-size/tagHelper %}
+{% include code-snippet/rich-text-editor/video-authenticate/tagHelper %}
 {% endhighlight %}
 {% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/check-video-size/controller.cs %}
+{% include code-snippet/rich-text-editor/video-authenticate/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 
@@ -169,28 +167,28 @@ In the following example, the video size has been validated before uploading and
 
 {% tabs %}
 {% highlight razor tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/check-video-size/razor %}
+{% include code-snippet/rich-text-editor/video-authenticate/razor %}
 {% endhighlight %}
-{% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/check-video-size/controller.cs %}
+{% highlight c# tabtitle="SaveFile.cs" %}
+{% include code-snippet/rich-text-editor/video-authenticate/saveFile.cs %}
 {% endhighlight %}
 {% endtabs %}
 {% endif %}
 
-### Uploading video with authentication
+## Maximum file size restrictions
 
-You can add additional data with the video uploaded from the Rich Text Editor on the client side, which can even be received on the server side. By using the [fileUploading](https://help.syncfusion.com/cr/aspnetcore-js2/syncfusion.ej2.richtexteditor.richtexteditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_FileUploading) event and its `customFormData` argument, you can pass parameters to the controller action. On the server side, you can fetch the custom headers by accessing the form collection from the current request, which retrieves the values sent using the POST method.
+You can restrict the video uploaded from the local machine when the uploaded video file size is greater than the allowed size by using the [InsertVideoSettings.MaxFileSize](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorVideoSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorVideoSettings_MaxFileSize) property. By default, the maximum file size is 30000000 bytes. You can configure this size as follows.
 
-N> By default, it doesn't support the `UseDefaultCredentials` property, you can manually append the default credentials with the upload request.
+In the following example, the video size has been validated before uploading and determined whether the video has been uploaded or not.
 
 {% if page.publishingplatform == "aspnet-core" %}
 
 {% tabs %}
 {% highlight cshtml tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/video-authenticate/tagHelper %}
+{% include code-snippet/rich-text-editor/check-video-size/tagHelper %}
 {% endhighlight %}
 {% highlight c# tabtitle="Controller.cs" %}
-{% include code-snippet/rich-text-editor/video-authenticate/controller.cs %}
+{% include code-snippet/rich-text-editor/check-video-size/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 
@@ -198,10 +196,10 @@ N> By default, it doesn't support the `UseDefaultCredentials` property, you can
 
 {% tabs %}
 {% highlight razor tabtitle="CSHTML" %}
-{% include code-snippet/rich-text-editor/video-authenticate/razor %}
+{% include code-snippet/rich-text-editor/check-video-size/razor %}
 {% endhighlight %}
-{% highlight c# tabtitle="SaveFile.cs" %}
-{% include code-snippet/rich-text-editor/video-authenticate/saveFile.cs %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/check-video-size/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
 {% endif %}
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-position.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-position.md
new file mode 100644
index 0000000000..14acee89b6
--- /dev/null
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-position.md
@@ -0,0 +1,53 @@
+---
+layout: post
+title: Toolbar position in ##Platform_Name## Rich Text Editor Control | Syncfusion
+description: Learn here all about Toolbar position in Syncfusion ##Platform_Name## Rich Text Editor control of Syncfusion Essential JS 2 and more.
+platform: ej2-asp-core-mvc
+control: Toolbar position
+publishingplatform: ##Platform_Name##
+documentation: ug
+---
+
+# Toolbar position in the ##Platform_Name## Rich Text Editor Control
+
+The Rich Text Editor allows you to configure the toolbar's position using the [position](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Position) field in the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) property. The available positions are:
+
+1. Top 
+2. Bottom
+
+## Configuring the toolbar position
+
+The Rich Text Editor allows you to position the toolbar at the top or bottom of the content area, depending on your layout requirements.
+
+By default, the toolbar is displayed at the top of the editor, making all formatting and editing tools immediately accessible above the content.
+
+To position the toolbar at the bottom, use the [position](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorToolbarSettings.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorToolbarSettings_Position) property in the [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) configuration and set its value to `Bottom`. This places the toolbar below the content area, which can help maintain a cleaner top layout and improve accessibility in certain use cases.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/toolbar-bottom/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/toolbar-bottom/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/toolbar-bottom/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/toolbar-bottom/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/toolbar/toolbar-types.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/toolbar/toolbar-types.md
index 877dd795f0..a2ddd53560 100644
--- 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
@@ -21,6 +21,7 @@ The Rich Text Editor allows you to configure different types of toolbar using [t
 1. Expand
 2. MultiRow
 3. Scrollable
+4. Popup
 
 ## Expanding the toolbar
 
@@ -101,6 +102,33 @@ Setting the `type` to `Scrollable` in [toolbarSettings](https://help.syncfusion.
 {% endtabs %}
 {% endif %}
 
+## Configuring a popup toolbar
+
+Setting the `type` to `Popup` in [toolbarSettings](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditor_ToolbarSettings) will display overflowing toolbar items into a popup container, optimizing the toolbar layout for limited space and smaller screens.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/toolbar-popup/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/toolbar-popup/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/toolbar-popup/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/toolbar-popup/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.
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 e727c5dde1..ae7b931fb2 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
@@ -141,6 +141,14 @@ The table quicktoolbar provides options for table editing within the Rich Text E
 | 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']} |
 
+### Horizontal Line
+
+Horizontal lines visually separate sections of content in the editor, enhancing readability and layout clarity.
+
+| Name | Icons | Summary | Initialization |
+|----------------|---------|---------|------------------------------------------|
+| Horizontal Line | ![HorizontalLine icon](../../images/horizontal-icon.png) | Allows you to insert horizontal line.|toolbarSettings: { items: ['HorizontalLine']} |
+
 ### Undo & redo
 
 These tools allow users to easily undo or redo any changes made within the editor to restore or repeat previous actions.
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
index ed09633cc5..1978b49a90 100644
--- 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
@@ -232,3 +232,32 @@ Both the `FontColor` and `BackgroundColor` properties offer two modes: `Picker`
 {% endhighlight %}
 {% endtabs %}
 {% endif %}
+
+### Show recent color
+
+The [ShowRecentColors](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html#Syncfusion_EJ2_RichTextEditor_RichTextEditorFontColor_ShowRecentColors) feature in the Rich Text Editor provides quick access to a row of recently used colors displayed below the main palette. This streamlines editing by keeping frequently used colors easily accessible, improving styling efficiency and consistency.
+
+This feature can be enabled separately for the [RichTextEditorFontColor](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorFontColor.html) and [RichTextEditorBackgroundColor](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.RichTextEditor.RichTextEditorBackgroundColor.html) tools, giving flexibility based on formatting needs. It is especially helpful when working with consistent color themes, eliminating the need to repeatedly search through the full palette.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/show-recent-color/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/show-recent-color/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/show-recent-color/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/show-recent-color/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/text-formatting.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/tools/text-formatting.md
index 8183458077..5c632cc674 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
@@ -1,6 +1,6 @@
 ---
 layout: post
-title: Text formatting and Structure in ##Platform_Name## Rich Text Editor Control | Syncfusion
+title: Text formatting and Structure in ##Platform_Name## Rich Text Editor | 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
@@ -381,24 +381,22 @@ Use the `Blockquote` tool in the editor below to see the feature in action.
 
 > In a markdown editor, blockquotes are represented using the `>` symbol.
 
-## Insert code
+## Horizontal line
 
-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.
+The Rich Text Editor enables users to insert horizontal dividers using the `HorizontalLine` tool available in the toolbar. Horizontal lines (
) help visually separate sections of content, enhancing readability and structural clarity. -### Enabling code block formatting +To insert a horizontal line, place the cursor at the desired location and click the `HorizontalLine` icon in the toolbar. A full-width line will be added, creating a clear visual break between sections of text or other elements. -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. +Use the `HorizontalLine` 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/code-format/tagHelper %} +{% include code-snippet/rich-text-editor/horizontal-line/tagHelper %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% include code-snippet/rich-text-editor/horizontal-line/controller.cs %} {% endhighlight %} {% endtabs %} @@ -406,51 +404,17 @@ Below are examples and code snippets demonstrating how to add and effectively us {% tabs %} {% highlight razor tabtitle="CSHTML" %} -{% include code-snippet/rich-text-editor/code-format/razor %} +{% include code-snippet/rich-text-editor/horizontal-line/razor %} {% endhighlight %} {% highlight c# tabtitle="Controller.cs" %} -{% include code-snippet/rich-text-editor/code-format/controller.cs %} +{% include code-snippet/rich-text-editor/horizontal-line/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.
+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
 
@@ -471,7 +435,7 @@ The following code example shows how to add the format painter tool in the Rich
 
 ### 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.
+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.
 
@@ -504,7 +468,7 @@ For more details on keyboard navigation, refer to the [Keyboard support](../keyb
 
 > 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.
+Additionally, You can perform the format painter actions programmatically using the [executeCommand](../exec-command) public method.
 
 ## Clear formatting
 
diff --git a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/undo-redo.md b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/undo-redo.md
index 63fae3ac9c..6253916e08 100644
--- a/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/undo-redo.md
+++ b/ej2-asp-core-mvc/rich-text-editor/EJ2_ASP.NETCORE/undo-redo.md
@@ -50,4 +50,35 @@ Here's an example of how to customize both the Undo/Redo timer and steps:
 {% include code-snippet/rich-text-editor/undo-redo/controller.cs %}
 {% endhighlight %}
 {% endtabs %}
+{% endif %}
+
+## Clear Undo/Redo stack
+
+The Rich Text Editor automatically maintains an undo/redo stack, allowing users to revert or redo changes made during editing.
+
+To clear the entire undo and redo stack, use the public `clearUndoRedo` method. This is helpful when loading new content dynamically or resetting the editor to its initial state.
+
+Here's an example of how to customize both the Undo/Redo timer and steps:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/tagHelper %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/razor %}
+{% endhighlight %}
+{% highlight c# tabtitle="Controller.cs" %}
+{% include code-snippet/rich-text-editor/clear-undo-redo/controller.cs %}
+{% endhighlight %}
+{% endtabs %}
 {% endif %}
\ No newline at end of file
diff --git a/ej2-asp-core-mvc/rich-text-editor/images/horizontal-icon.png b/ej2-asp-core-mvc/rich-text-editor/images/horizontal-icon.png
new file mode 100644
index 0000000000..4160041c35
Binary files /dev/null and b/ej2-asp-core-mvc/rich-text-editor/images/horizontal-icon.png differ
diff --git a/ej2-asp-core-mvc/spreadsheet/docker-deployment.md b/ej2-asp-core-mvc/spreadsheet/docker-deployment.md
index 0927a96826..bb4827c486 100644
--- a/ej2-asp-core-mvc/spreadsheet/docker-deployment.md
+++ b/ej2-asp-core-mvc/spreadsheet/docker-deployment.md
@@ -13,7 +13,7 @@ domainurl: ##DomainURL##
 
 The [**Syncfusion® Spreadsheet (also known as Excel Viewer)**](https://www.syncfusion.com/aspnet-mvc-ui-controls/spreadsheet) is a feature-rich control for organizing and analyzing data in a tabular format. It provides all the common Excel features, including data binding, selection, editing, formatting, resizing, sorting, filtering, importing, and exporting Excel documents.
 
-This Docker image is the pre-defined Docker container for Syncfusion's Spreadsheet backend functionalities. This server-side Web API project targets ASP.NET Core 6.0.
+This Docker image is the pre-defined Docker container for Syncfusion's Spreadsheet backend functionalities. This server-side Web API project targets ASP.NET Core 8.0.
 
 You can deploy it quickly to your infrastructure. If you want to add new functionality or customize any existing functionalities, create your own Docker file by referencing the existing [Spreadsheet Docker project](https://github.com/SyncfusionExamples/Spreadsheet-Server-Docker).
 
@@ -46,7 +46,7 @@ services:
       # Provide your license key for activation
       SYNCFUSION_LICENSE_KEY: YOUR_LICENSE_KEY
     ports:
-      - "6002:80"
+      - "6002:8080"
 ```
 
 **Note:** The Spreadsheet is a commercial product. It requires a valid [license key](https://help.syncfusion.com/common/essential-studio/licensing/licensing-faq/where-can-i-get-a-license-key) to use in a production environment. Please replace `YOUR_LICENSE_KEY` with the valid license key in the `docker-compose.yml` file.
@@ -110,7 +110,7 @@ services:
       LANGUAGE: de_DE.UTF-8
       LANG: de_DE.UTF-8
     ports:
-      - "6002:80"
+      - "6002:8080"
 ```
 
-Please refer to these getting started pages to create a Spreadsheet in [`Angular`](https://ej2.syncfusion.com/angular/documentation/spreadsheet/getting-started), [`React`](https://ej2.syncfusion.com/react/documentation/spreadsheet/getting-started), [`Vue`](https://ej2.syncfusion.com/vue/documentation/spreadsheet/getting-started), [`ASP.NET Core`](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/getting-started-core), and [`ASP.NET MVC`](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/getting-started-mvc).
\ No newline at end of file
+Please refer to these getting started pages to create a Spreadsheet in [`Angular`](https://ej2.syncfusion.com/angular/documentation/spreadsheet/getting-started), [`React`](https://ej2.syncfusion.com/react/documentation/spreadsheet/getting-started), [`Vue`](https://ej2.syncfusion.com/vue/documentation/spreadsheet/getting-started), [`ASP.NET Core`](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/getting-started-core), and [`ASP.NET MVC`](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/getting-started-mvc).
diff --git a/ej2-asp-core-mvc/spreadsheet/how-to/identify-the-context-menu-opened.md b/ej2-asp-core-mvc/spreadsheet/how-to/identify-the-context-menu-opened.md
index faa03b04cc..8b8f11ed52 100644
--- a/ej2-asp-core-mvc/spreadsheet/how-to/identify-the-context-menu-opened.md
+++ b/ej2-asp-core-mvc/spreadsheet/how-to/identify-the-context-menu-opened.md
@@ -8,7 +8,7 @@ publishingplatform: ##Platform_Name##
 documentation: ug
 ---
 
-## Identify the context menu opened in Spreadsheet control
+# Identify the context menu opened in Spreadsheet control
 
 The Spreadsheet includes several context menus that will open and display depending on the action. When you right-click on a cell, for example, a context menu with options related to the cell element appears.
 
diff --git a/ej2-asp-core-mvc/spreadsheet/images/fileSize_and_dataLimit.jpg b/ej2-asp-core-mvc/spreadsheet/images/fileSize_and_dataLimit.jpg
new file mode 100644
index 0000000000..e3f49179ea
Binary files /dev/null and b/ej2-asp-core-mvc/spreadsheet/images/fileSize_and_dataLimit.jpg differ
diff --git a/ej2-asp-core-mvc/spreadsheet/open-save.md b/ej2-asp-core-mvc/spreadsheet/open-save.md
index 170bf0664d..02685641ea 100644
--- a/ej2-asp-core-mvc/spreadsheet/open-save.md
+++ b/ej2-asp-core-mvc/spreadsheet/open-save.md
@@ -447,6 +447,38 @@ The following code snippet demonstrates how to configure the deserialization opt
 {% endtabs %}
 {% endif %}
 
+### Improving Excel file open performance with parsing options
+
+Opening large Excel files into the EJ2 Spreadsheet control can sometimes lead to slower performance and increased memory usage. This is often caused by the processing of additional elements such as styles and number formats—even when the actual data content is minimal. For example, an Excel file with only a small amount of data but a large number of styled or formatted empty cells can significantly impact load time and memory consumption.
+
+To address this, we've introduced parsing options that allow users to selectively skip non-essential features during the open process. By enabling options like `IgnoreStyle` and `IgnoreFormat`, you can reduce the amount of data processed, resulting in:
+* Faster load times
+* Lower memory usage
+* Smaller JSON responses
+
+These enhancements are especially beneficial for users working with large or complex Excel files, offering a more efficient and responsive experience.
+
+> **Note:** These options are ideal when styles and number formats are not critical to your use case and the focus is on loading the actual data efficiently. 
+
+The code example below demonstrates how to configure the `IgnoreStyle` and `IgnoreFormat` parsing options on the `server-side`.
+
+**Code Snippet:**
+
+**Server-Side Configuration:**
+```csharp
+public IActionResult Open(IFormCollection openRequest) 
+{ 
+    OpenRequest open = new OpenRequest(); 
+    ...
+    open.ParseOptions = new WorkbookParseOptions() { 
+        IgnoreStyle = true, 
+        IgnoreFormat = true
+    }; 
+    ...
+    return Content(Workbook.Open(open)); 
+} 
+```
+
 ### Chunk response processing
 
 When opening large Excel files with many features and data, the server response can become very large. This might cause memory issues or connection problems during data transmission. The `Chunk Response Processing` feature solves this by dividing the server response into smaller parts, called chunks, and sending them to the client in parallel. The client receives these chunks and combines them to load the Excel data smoothly into the spreadsheet.
diff --git a/ej2-asp-core-mvc/spreadsheet/performance-best-practices.md b/ej2-asp-core-mvc/spreadsheet/performance-best-practices.md
new file mode 100644
index 0000000000..fb8e032fdc
--- /dev/null
+++ b/ej2-asp-core-mvc/spreadsheet/performance-best-practices.md
@@ -0,0 +1,276 @@
+---
+layout: post
+title: Performance Best Practices in ##Platform_Name## Syncfusion Spreadsheet Component
+description: Learn here all about performance best practices in Syncfusion ##Platform_Name## Spreadsheet component of Syncfusion Essential JS 2 and more.
+platform: ej2-asp-core-mvc
+control: Performance
+publishingplatform: ##Platform_Name##
+documentation: ug
+---
+
+# Performance Best Practices in ##Platform_Name## Spreadsheet control
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+Performance optimization is crucial when working with large datasets in the [Syncfusion® ASP.NET Core Spreadsheet](https://www.syncfusion.com/aspnet-core-ui-controls/spreadsheet). This documentation outlines best practices to enhance data handling efficiency and ensure a smooth, responsive user experience during various spreadsheet operations.
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+Performance optimization is crucial when working with large datasets in the [Syncfusion® ASP.NET MVC Spreadsheet](https://www.syncfusion.com/aspnet-mvc-ui-controls/spreadsheet). This documentation outlines best practices to enhance data handling efficiency and ensure a smooth, responsive user experience during various spreadsheet operations.
+
+{% endif %}
+
+## How to improve performance when opening Excel files in the Spreadsheet?
+
+### Virtual scrolling
+
+Virtual scrolling is an essential performance feature in the Spreadsheet that enhances rendering efficiency when handling large datasets. Instead of loading all rows and columns into the DOM at once, it renders only the cells visible within the viewport. As the user scrolls, additional rows or columns are dynamically loaded and rendered.
+
+This approach significantly reduces initial load time, DOM size, and memory usage — resulting in smoother rendering and interaction, especially when working with thousands of rows or columns.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+For more details, refer to the [virtual scrolling documentation](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/scrolling#virtual-scrolling).
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+For more details, refer to the [virtual scrolling documentation](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/scrolling#virtual-scrolling).
+
+{% endif %}
+
+### Chunk response processing
+
+When opening large Excel files with extensive data and features, server responses can become too large—leading to memory issues or connection failures during transmission. The Chunk Response Processing feature addresses this by breaking the response into smaller chunks and sending them in parallel to the client.
+
+These chunks are combined on the client side to load the Excel data smoothly into the Spreadsheet. This approach avoids transmission failures due to memory constraints and ensures reliable and efficient loading of large files.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+To enable the chunk response processing feature, you can refer to the following UG section:
+* [Chunk Response Processing](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/open-save#chunk-response-processing)
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+To enable the chunk response processing feature, you can refer to the following UG section:
+* [Chunk Response Processing](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/open-save#chunk-response-processing)
+
+{% endif %}
+
+### Configure JSON serialization options during open
+
+Serialization options in the Spreadsheet allows you to exclude specific features—such as styles, formats, charts, images, wrap, etc.—from the `Workbook JSON object` when opening it in the Spreadsheet using the `openFromJson` method. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
+
+This is particularly useful when:
+* You need only the raw data without formatting.
+* You're opening the `Workbook JSON object` in the Spreadsheet using the `openFromJson` method.
+* You want to minimize the size of the JSON payload and optimize processing speed.
+
+Refer to the following UG section to learn how to configure these options:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+* [Configure JSON serialization options during open](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/open-save#configure-json-deserialization-options)
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+* [Configure JSON serialization options during open](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/open-save#configure-json-deserialization-options)
+
+{% endif %}
+
+### Configuring threshold limits
+
+To improve performance when importing large Excel files into the Spreadsheet component, you can configure thresholds for both the maximum number of cells `MaximumDataLimit` and the file size `MaximumFileSize`. These limits help prevent delays or potential server timeouts by restricting excessively large files from being imported.
+
+When these thresholds are exceeded:
+* The Spreadsheet displays an alert dialog indicating that the file is large.
+  ![Limit file size and data](./images/fileSize_and_dataLimit.jpg)
+* Clicking **Cancel** aborts the open process.
+* Clicking **OK** proceeds with the open process.
+
+You can configure the `MaximumDataLimit` and `MaximumFileSize` thresholds on the server side using the following code example:
+
+**Code Snippet:**
+
+```csharp
+public IActionResult Open(IFormCollection openRequest)
+{
+    OpenRequest open = new OpenRequest();
+    open.File = openRequest.Files[0];
+    open.Guid = openRequest["Guid"];
+
+    // Set maximum allowed number of cells
+    open.ThresholdLimit.MaximumDataLimit = 1000000; // 1,000,000 cells
+
+    // Set maximum allowed file size in bytes (e.g., 5MB)
+    open.ThresholdLimit.MaximumFileSize = 5000000;
+
+    var openbook = Content(Workbook.Open(open));
+    return openbook;
+}
+```
+
+### Optimize Excel open with parsing options
+
+To improve performance when opening large Excel files, use parsing options like `IgnoreStyle` and `IgnoreFormat` to skip unnecessary styles and formats. This reduces memory usage, speeds up loading, and minimizes JSON size—especially helpful for files with many styled but empty cells.
+
+To learn how to configure these parsing options, please refer to the UG section below.
+* [Configure Parsing Options](./open-save#improving-excel-file-open-performance-with-parsing-options)
+
+## How to improve performance on formula calculation in Spreadsheet?
+
+### Manual calculation mode
+
+Manual Calculation Mode in the Spreadsheet is a performance optimization feature that allows you to delay formula recalculations until they are explicitly triggered. By default, the Spreadsheet automatically recalculates formulas whenever a dependent cell is edited or changed. While this behavior works well for small datasets, it can result in noticeable lag or UI freezing when working with large spreadsheets that contain many formulas or complex calculation chains.
+
+To prevent such performance issues during bulk operations—such as importing data, applying formats, or setting multiple formulas — manual calculation mode gives developers control over when recalculations should occur.
+
+Enabling manual mode is highly beneficial when:
+* Importing large Excel or JSON files with formula-heavy sheets.
+* Performing bulk updates (e.g., updating rows or columns via code).
+* Applying formulas dynamically to a large number of cells.
+* You want to postpone calculations until all content or changes are finalized.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+To learn more about Manual Calculation Mode and how to enable it, you can refer to the following [UG link](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/formulas#manual-mode).
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+To learn more about Manual Calculation Mode and how to enable it, you can refer to the following [UG link](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/formulas#manual-mode).
+
+{% endif %}
+
+## How to improve save performance in the Spreadsheet?
+
+### Handling large file saves with `isFullPost` option
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+When saving large Excel files with extensive data and features using **File → Save As** or the **save** method, the Spreadsheet triggers a server API call through a form submit operation. This can lead to performance issues such as timeouts or delays, particularly due to the size and complexity of the workbook.
+
+To mitigate these issues during the save operation, you can set the `isFullPost` property to **false** in the [`beforeSave`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_BeforeSave) event of the Spreadsheet.
+
+The following code example shows how to set `isFullPost` to **false** in the Spreadsheet component:
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+
+
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+When saving large Excel files with extensive data and features using **File → Save As** or the **save** method, the Spreadsheet triggers a server API call through a form submit operation. This can lead to performance issues such as timeouts or delays, particularly due to the size and complexity of the workbook.
+
+To mitigate these issues during the save operation, you can set the `isFullPost` property to **false** in the [`beforeSave`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_BeforeSave) event of the Spreadsheet.
+
+The following code example shows how to set `isFullPost` to **false** in the Spreadsheet component:
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+@Html.EJS().Spreadsheet("spreadsheet").OpenUrl("/Home/Open").SaveUrl("/Home/Save").BeforeSave("beforeSave").Render()
+
+
+{% endhighlight %}
+{% endtabs %}
+
+{% endif %}
+
+### Configure JSON serialization options during save
+
+Serialization options in the Spreadsheet allows you to exclude specific features such as styles, formats, charts, images, wrap, etc. from the `Workbook JSON object` when saving it using the `saveAsJson` method in the Spreadsheet. By skipping unnecessary features, you can significantly improve performance, especially when working with large or complex workbooks.
+
+This is particularly useful when:
+* You need only the raw data without formatting.
+* You're saving the `Workbook JSON object` using the `saveAsJson` method in the Spreadsheet.
+* You want to minimize the size of the JSON payload and optimize processing speed.
+
+Proper use of serialization options during save improves performance and reduces the time taken during the save process.
+
+Refer to the following UG section to learn how to configure these options:
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+* [Configure JSON serialization options during save](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/open-save#configure-json-serialization-options)
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+* [Configure JSON serialization options during save](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/open-save#configure-json-serialization-options)
+
+{% endif %}
+
+## How to improve cell selection performance in Spreadsheet?
+
+### Disabling aggregate calculation
+
+When working with large datasets in the Spreadsheet, user interactions such as selecting a large range of cells can experience delays. This occurs because, by default, the Spreadsheet performs aggregate calculations (e.g., SUM, AVERAGE, COUNT, MIN, and MAX) on the selected range and displays the results in the sheet tab panel at the bottom-right corner.
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+To enhance the responsiveness of cell selection, particularly in performance-critical scenarios, consider disabling unnecessary aggregate calculations using the [`showAggregate`](https://help.syncfusion.com/cr/aspnetcore-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ShowAggregate) property.
+
+Benefits:
+* Reduces selection lag when dealing with large data ranges.
+* Prevents real-time computation of formulas like SUM, AVERAGE, MIN, and MAX for large selections.
+* Keeps the UI responsive during large selection operations.
+
+You can disable aggregate calculation using the following code example:
+
+{% tabs %}
+{% highlight cshtml tabtitle="CSHTML" %}
+
+
+
+
+{% endhighlight %}
+{% endtabs %}
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+To enhance the responsiveness of cell selection, particularly in performance-critical scenarios, consider disabling unnecessary aggregate calculations using the [`showAggregate`](https://help.syncfusion.com/cr/aspnetmvc-js2/Syncfusion.EJ2.Spreadsheet.Spreadsheet.html#Syncfusion_EJ2_Spreadsheet_Spreadsheet_ShowAggregate) property.
+
+Benefits:
+* Reduces selection lag when dealing with large data ranges.
+* Prevents real-time computation of formulas like SUM, AVERAGE, MIN, and MAX for large selections.
+* Keeps the UI responsive during large selection operations.
+
+You can disable aggregate calculation using the following code example:
+
+{% tabs %}
+{% highlight razor tabtitle="CSHTML" %}
+
+@Html.EJS().Spreadsheet("spreadsheet").OpenUrl("/Home/Open").SaveUrl("/Home/Save").ShowAggregate(false).Render()
+
+{% endhighlight %}
+{% endtabs %}
+
+{% endif %}
+
+## See Also
+
+{% if page.publishingplatform == "aspnet-core" %}
+
+* [Open and Save](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/open-save)
+* [Docker Deployment](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/docker-deployment)
+* [Scrolling](https://ej2.syncfusion.com/aspnetcore/documentation/spreadsheet/scrolling)
+
+{% elsif page.publishingplatform == "aspnet-mvc" %}
+
+* [Open and Save](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/open-save)
+* [Docker Deployment](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/docker-deployment)
+* [Scrolling](https://ej2.syncfusion.com/aspnetmvc/documentation/spreadsheet/scrolling)
+
+{% endif %}
\ No newline at end of file
diff --git a/ej2-asp-core-toc.html b/ej2-asp-core-toc.html
index 75d0e88052..78c7999ea4 100644
--- a/ej2-asp-core-toc.html
+++ b/ej2-asp-core-toc.html
@@ -298,9 +298,20 @@
 		
 
 		
  • Block Editor - +
  • Breadcrumb @@ -506,6 +517,7 @@
  • Trendlines
  • Markers
  • Data Labels
  • +
  • Last Value Label
  • Annotations
  • Legend
  • Tooltip
  • @@ -950,6 +962,7 @@
  • Feature modules
  • Import
  • Export
  • +
  • Ribbon
  • Collaborative Editing
  • FAQ @@ -1190,6 +1204,7 @@
  • Responsive Columns
  • Checkbox Column
  • Column Spanning
  • +
  • WBS Column
  • Timeline @@ -1204,6 +1219,7 @@
  • Scheduling Tasks
  • Taskbar @@ -1434,6 +1450,7 @@
  • Accessibility
  • Clipboard
  • Context Menu
  • +
  • Integrate Chart in Grid
  • Style and Appearance
  • Troubleshooting @@ -2323,6 +2342,7 @@
  • Toolbar
  • @@ -2379,6 +2399,7 @@
  • List Formatting
  • Link
  • Table
  • +
  • Code Block
  • Remove Formatting
  • Format Painter
  • Paste Cleanup
  • @@ -2675,6 +2696,7 @@
  • Undo and Redo
  • Ribbon
  • Print
  • +
  • Performance Best Practices
  • Globalization
  • Accessibility
  • Keyboard Shortcuts
  • @@ -3180,7 +3202,7 @@
  • Release Notes -