├── .github └── workflows │ ├── check-repos-updates.sh │ └── check-repos-updates.yml ├── .gitignore ├── CODEOWNERS ├── Kendo-UI-Bootstrap-Integration ├── Kendo-UI-Bootstrap-Integration.sln └── src │ └── Kendo-UI-Bootstrap-Integration │ ├── Controllers │ └── HomeController.cs │ ├── Kendo-UI-Bootstrap-Integration.csproj │ ├── Models │ ├── DonutChartViewModel.cs │ ├── ListView.cs │ ├── OrdersViewModel.cs │ ├── RevenueViewModel.cs │ ├── SalesPerDayViewModel.cs │ ├── SalesPerRegionViewModel.cs │ ├── Swatch.cs │ ├── Task.cs │ └── TaskViewModel.cs │ ├── Program.cs │ ├── Project_Readme.html │ ├── Properties │ └── launchSettings.json │ ├── Startup.cs │ ├── Views │ ├── Home │ │ ├── About.cshtml │ │ ├── Contact.cshtml │ │ └── Index.cshtml │ ├── Shared │ │ ├── Error.cshtml │ │ └── _Layout.cshtml │ ├── _ViewImports.cshtml │ └── _ViewStart.cshtml │ ├── appsettings.json │ ├── bundleconfig.json │ ├── web.config │ └── wwwroot │ ├── _references.js │ ├── assets │ ├── avatar.jpg │ └── photos │ │ ├── 1.jpg │ │ ├── 10.jpg │ │ ├── 11.jpg │ │ ├── 12.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── 4.jpg │ │ ├── 5.jpg │ │ ├── 6.jpg │ │ ├── 7.jpg │ │ ├── 8.jpg │ │ └── 9.jpg │ ├── css │ ├── site.css │ ├── site.min.css │ └── styles.css │ ├── favicon.ico │ ├── images │ ├── banner1.svg │ ├── banner2.svg │ ├── banner3.svg │ └── banner4.svg │ └── js │ ├── site.js │ └── site.min.js └── README.md /.github/workflows/check-repos-updates.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | echo "Stage1 Find Updates" 3 | LATEST_RELEASE=$(curl -s https://api.github.com/repos/telerik/kendo-ui-core/releases | grep tag_name | head -n 1 | cut -d '"' -f 4) 4 | LATEST_THEMES_RELEASE=$(curl -s https://api.github.com/repos/telerik/kendo-themes/releases | grep -B4 '"prerelease": false' | head -1 | cut -d '"' -f 4 | tr -d v) 5 | echo "Last release version is $LATEST_RELEASE" 6 | echo "Last Themes release version is $LATEST_THEMES_RELEASE" 7 | 8 | function getCurrentVersion { 9 | for file in `find . -type f -name "*.cshtml"` 10 | do 11 | CURRENT_VERSION=$(grep -hnr "kendo.cdn" $file | head -2 | tail -1 | cut -d '/' -f 4) 12 | if [ ! -z "$CURRENT_VERSION" ] 13 | then 14 | CURRENT_GLOBAL_VERSION=$CURRENT_VERSION 15 | fi 16 | done 17 | } 18 | 19 | function getCurrentThemesVersion { 20 | for file in `find . -type f -name "*.cshtml"` 21 | do 22 | CURRENT_THEMES_VERSION=$(grep -hnr "kendo.cdn" $file | head -1 | cut -d '/' -f 5) 23 | if [ ! -z "$CURRENT_THEMES_VERSION" ] 24 | then 25 | CURRENT_GLOBAL_THEMES_VERSION=$CURRENT_THEMES_VERSION 26 | fi 27 | done 28 | } 29 | getCurrentVersion $file 30 | getCurrentThemesVersion $file 31 | 32 | echo "Current version is $CURRENT_GLOBAL_VERSION" 33 | echo "Current themes version is $CURRENT_GLOBAL_THEMES_VERSION" 34 | 35 | 36 | for file in `find . -type f -name "*.cshtml"` 37 | do 38 | sed -i "s/$CURRENT_GLOBAL_VERSION/$LATEST_RELEASE/g" $file 39 | sed -i "s/$CURRENT_GLOBAL_THEMES_VERSION/$LATEST_THEMES_RELEASE/g" $file 40 | done 41 | for file in `find . -type f -name "*.csproj"` 42 | do 43 | sed -i "s/$CURRENT_GLOBAL_VERSION/$LATEST_RELEASE/g" $file 44 | done 45 | for file in `find . -type f -name "*.config"` 46 | do 47 | sed -i "s/$CURRENT_GLOBAL_VERSION/$LATEST_RELEASE/g" $file 48 | done 49 | 50 | echo "Stage2 Commit the change" 51 | reviewers="Dimitar-Goshev" 52 | echo $reviewers 53 | BRANCH_NAME="update-dependencies" 54 | PRs=$(gh pr list | grep "$BRANCH_NAME" || true) 55 | echo "PRs are:" 56 | echo $PRs 57 | echo "Branch is:" 58 | echo $BRANCH_NAME 59 | if [ ! -z $PRs ]; then 60 | echo "Unmerged pr $BRANCH_NAME" 61 | else 62 | git fetch origin 63 | git pull 64 | git checkout -b $BRANCH_NAME 65 | git config user.email "kendo-bot@progress.com" 66 | git config user.name "kendo-bot" 67 | git add . && git commit -m "chore: update dependencies" 68 | git pull 69 | git push -u origin $BRANCH_NAME 70 | gh pr create --base master --head $BRANCH_NAME --reviewer $reviewers \ 71 | --title "Update dependencies $DATE" --body 'Please review and update dependencies' 72 | 73 | git diff 74 | fi 75 | 76 | -------------------------------------------------------------------------------- /.github/workflows/check-repos-updates.yml: -------------------------------------------------------------------------------- 1 | name: Check for updates across repos and create pull request 2 | 3 | on: workflow_dispatch 4 | jobs: 5 | check-repos-updates: 6 | runs-on: ubuntu-latest 7 | steps: 8 | 9 | - uses: actions/checkout@v2 10 | with: 11 | repository: ${{ github.repository }} 12 | 13 | - name: Clean up 14 | run: rm -rf kendo-* 15 | - name: Get repos deps 16 | run: .github/workflows/check-repos-updates.sh ${{ secrets.GH_TOKEN }} 17 | env: 18 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Aa][Rr][Mm]/ 27 | [Aa][Rr][Mm]64/ 28 | bld/ 29 | [Bb]in/ 30 | [Oo]bj/ 31 | [Ll]og/ 32 | [Ll]ogs/ 33 | 34 | # Visual Studio 2015/2017 cache/options directory 35 | .vs/ 36 | # Uncomment if you have tasks that create the project's static files in wwwroot 37 | #wwwroot/ 38 | 39 | # Visual Studio 2017 auto generated files 40 | Generated\ Files/ 41 | 42 | # MSTest test Results 43 | [Tt]est[Rr]esult*/ 44 | [Bb]uild[Ll]og.* 45 | 46 | # NUnit 47 | *.VisualState.xml 48 | TestResult.xml 49 | nunit-*.xml 50 | 51 | # Build Results of an ATL Project 52 | [Dd]ebugPS/ 53 | [Rr]eleasePS/ 54 | dlldata.c 55 | 56 | # Benchmark Results 57 | BenchmarkDotNet.Artifacts/ 58 | 59 | # .NET Core 60 | project.lock.json 61 | project.fragment.lock.json 62 | artifacts/ 63 | 64 | # StyleCop 65 | StyleCopReport.xml 66 | 67 | # Files built by Visual Studio 68 | *_i.c 69 | *_p.c 70 | *_h.h 71 | *.ilk 72 | *.meta 73 | *.obj 74 | *.iobj 75 | *.pch 76 | *.pdb 77 | *.ipdb 78 | *.pgc 79 | *.pgd 80 | *.rsp 81 | *.sbr 82 | *.tlb 83 | *.tli 84 | *.tlh 85 | *.tmp 86 | *.tmp_proj 87 | *_wpftmp.csproj 88 | *.log 89 | *.vspscc 90 | *.vssscc 91 | .builds 92 | *.pidb 93 | *.svclog 94 | *.scc 95 | 96 | # Chutzpah Test files 97 | _Chutzpah* 98 | 99 | # Visual C++ cache files 100 | ipch/ 101 | *.aps 102 | *.ncb 103 | *.opendb 104 | *.opensdf 105 | *.sdf 106 | *.cachefile 107 | *.VC.db 108 | *.VC.VC.opendb 109 | 110 | # Visual Studio profiler 111 | *.psess 112 | *.vsp 113 | *.vspx 114 | *.sap 115 | 116 | # Visual Studio Trace Files 117 | *.e2e 118 | 119 | # TFS 2012 Local Workspace 120 | $tf/ 121 | 122 | # Guidance Automation Toolkit 123 | *.gpState 124 | 125 | # ReSharper is a .NET coding add-in 126 | _ReSharper*/ 127 | *.[Rr]e[Ss]harper 128 | *.DotSettings.user 129 | 130 | # TeamCity is a build add-in 131 | _TeamCity* 132 | 133 | # DotCover is a Code Coverage Tool 134 | *.dotCover 135 | 136 | # AxoCover is a Code Coverage Tool 137 | .axoCover/* 138 | !.axoCover/settings.json 139 | 140 | # Visual Studio code coverage results 141 | *.coverage 142 | *.coveragexml 143 | 144 | # NCrunch 145 | _NCrunch_* 146 | .*crunch*.local.xml 147 | nCrunchTemp_* 148 | 149 | # MightyMoose 150 | *.mm.* 151 | AutoTest.Net/ 152 | 153 | # Web workbench (sass) 154 | .sass-cache/ 155 | 156 | # Installshield output folder 157 | [Ee]xpress/ 158 | 159 | # DocProject is a documentation generator add-in 160 | DocProject/buildhelp/ 161 | DocProject/Help/*.HxT 162 | DocProject/Help/*.HxC 163 | DocProject/Help/*.hhc 164 | DocProject/Help/*.hhk 165 | DocProject/Help/*.hhp 166 | DocProject/Help/Html2 167 | DocProject/Help/html 168 | 169 | # Click-Once directory 170 | publish/ 171 | 172 | # Publish Web Output 173 | *.[Pp]ublish.xml 174 | *.azurePubxml 175 | # Note: Comment the next line if you want to checkin your web deploy settings, 176 | # but database connection strings (with potential passwords) will be unencrypted 177 | *.pubxml 178 | *.publishproj 179 | 180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 181 | # checkin your Azure Web App publish settings, but sensitive information contained 182 | # in these scripts will be unencrypted 183 | PublishScripts/ 184 | 185 | # NuGet Packages 186 | #*.nupkg 187 | # NuGet Symbol Packages 188 | #*.snupkg 189 | # The packages folder can be ignored because of Package Restore 190 | **/[Pp]ackages/* 191 | # except build/, which is used as an MSBuild target. 192 | !**/[Pp]ackages/build/ 193 | # Uncomment if necessary however generally it will be regenerated when needed 194 | #!**/[Pp]ackages/repositories.config 195 | # NuGet v3's project.json files produces more ignorable files 196 | *.nuget.props 197 | *.nuget.targets 198 | 199 | # Microsoft Azure Build Output 200 | csx/ 201 | *.build.csdef 202 | 203 | # Microsoft Azure Emulator 204 | ecf/ 205 | rcf/ 206 | 207 | # Windows Store app package directories and files 208 | AppPackages/ 209 | BundleArtifacts/ 210 | Package.StoreAssociation.xml 211 | _pkginfo.txt 212 | *.appx 213 | *.appxbundle 214 | *.appxupload 215 | 216 | # Visual Studio cache files 217 | # files ending in .cache can be ignored 218 | *.[Cc]ache 219 | # but keep track of directories ending in .cache 220 | !?*.[Cc]ache/ 221 | 222 | # Others 223 | ClientBin/ 224 | ~$* 225 | *~ 226 | *.dbmdl 227 | *.dbproj.schemaview 228 | *.jfm 229 | *.pfx 230 | *.publishsettings 231 | orleans.codegen.cs 232 | 233 | # Including strong name files can present a security risk 234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 235 | #*.snk 236 | 237 | # Since there are multiple workflows, uncomment next line to ignore bower_components 238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 239 | #bower_components/ 240 | 241 | # RIA/Silverlight projects 242 | Generated_Code/ 243 | 244 | # Backup & report files from converting an old project file 245 | # to a newer Visual Studio version. Backup files are not needed, 246 | # because we have git ;-) 247 | _UpgradeReport_Files/ 248 | Backup*/ 249 | UpgradeLog*.XML 250 | UpgradeLog*.htm 251 | ServiceFabricBackup/ 252 | *.rptproj.bak 253 | 254 | # SQL Server files 255 | *.mdf 256 | *.ldf 257 | *.ndf 258 | 259 | # Business Intelligence projects 260 | *.rdl.data 261 | *.bim.layout 262 | *.bim_*.settings 263 | *.rptproj.rsuser 264 | *- [Bb]ackup.rdl 265 | *- [Bb]ackup ([0-9]).rdl 266 | *- [Bb]ackup ([0-9][0-9]).rdl 267 | 268 | # Microsoft Fakes 269 | FakesAssemblies/ 270 | 271 | # GhostDoc plugin setting file 272 | *.GhostDoc.xml 273 | 274 | # Node.js Tools for Visual Studio 275 | .ntvs_analysis.dat 276 | node_modules/ 277 | 278 | # Visual Studio 6 build log 279 | *.plg 280 | 281 | # Visual Studio 6 workspace options file 282 | *.opt 283 | 284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 285 | *.vbw 286 | 287 | # Visual Studio LightSwitch build output 288 | **/*.HTMLClient/GeneratedArtifacts 289 | **/*.DesktopClient/GeneratedArtifacts 290 | **/*.DesktopClient/ModelManifest.xml 291 | **/*.Server/GeneratedArtifacts 292 | **/*.Server/ModelManifest.xml 293 | _Pvt_Extensions 294 | 295 | # Paket dependency manager 296 | .paket/paket.exe 297 | paket-files/ 298 | 299 | # FAKE - F# Make 300 | .fake/ 301 | 302 | # CodeRush personal settings 303 | .cr/personal 304 | 305 | # Python Tools for Visual Studio (PTVS) 306 | __pycache__/ 307 | *.pyc 308 | 309 | # Cake - Uncomment if you are using it 310 | # tools/** 311 | # !tools/packages.config 312 | 313 | # Tabs Studio 314 | *.tss 315 | 316 | # Telerik's JustMock configuration file 317 | *.jmconfig 318 | 319 | # BizTalk build output 320 | *.btp.cs 321 | *.btm.cs 322 | *.odx.cs 323 | *.xsd.cs 324 | 325 | # OpenCover UI analysis results 326 | OpenCover/ 327 | 328 | # Azure Stream Analytics local run output 329 | ASALocalRun/ 330 | 331 | # MSBuild Binary and Structured Log 332 | *.binlog 333 | 334 | # NVidia Nsight GPU debugger configuration file 335 | *.nvuser 336 | 337 | # MFractors (Xamarin productivity tool) working folder 338 | .mfractor/ 339 | 340 | # Local History for Visual Studio 341 | .localhistory/ 342 | 343 | # BeatPulse healthcheck temp database 344 | healthchecksdb 345 | 346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 347 | MigrationBackup/ 348 | 349 | # Ionide (cross platform F# VS Code tools) working folder 350 | .ionide/ 351 | {"mode":"full","isActive":false} 352 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @antonmironovv @mihaela-lukanova @ivaylo-milanov @IvanDanchev @eyupyusein @VicTachev 2 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/Kendo-UI-Bootstrap-Integration.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28010.2050 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{851D151F-0255-4436-83E5-A9D3E23594B0}" 7 | EndProject 8 | Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Kendo-UI-Bootstrap-Integration", "src\Kendo-UI-Bootstrap-Integration\Kendo-UI-Bootstrap-Integration.csproj", "{2408FD51-1090-4B25-8A7A-19B95505F148}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Any CPU = Debug|Any CPU 13 | Release|Any CPU = Release|Any CPU 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {2408FD51-1090-4B25-8A7A-19B95505F148}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 17 | {2408FD51-1090-4B25-8A7A-19B95505F148}.Debug|Any CPU.Build.0 = Debug|Any CPU 18 | {2408FD51-1090-4B25-8A7A-19B95505F148}.Release|Any CPU.ActiveCfg = Release|Any CPU 19 | {2408FD51-1090-4B25-8A7A-19B95505F148}.Release|Any CPU.Build.0 = Release|Any CPU 20 | EndGlobalSection 21 | GlobalSection(SolutionProperties) = preSolution 22 | HideSolutionNode = FALSE 23 | EndGlobalSection 24 | GlobalSection(NestedProjects) = preSolution 25 | {2408FD51-1090-4B25-8A7A-19B95505F148} = {851D151F-0255-4436-83E5-A9D3E23594B0} 26 | EndGlobalSection 27 | GlobalSection(ExtensibilityGlobals) = postSolution 28 | SolutionGuid = {0834AEFB-A734-44B5-8012-A3BAF45A4451} 29 | EndGlobalSection 30 | EndGlobal 31 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Controllers/HomeController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Microsoft.AspNetCore.Mvc; 6 | using Kendo_UI_Bootstrap_Integration.Models; 7 | using Kendo.Mvc.UI; 8 | using Newtonsoft.Json; 9 | 10 | namespace mvc_core.Controllers 11 | { 12 | public class HomeController : Controller 13 | { 14 | public ActionResult Index() 15 | { 16 | ViewBag.Message = "Welcome to ASP.NET MVC!"; 17 | 18 | return View(); 19 | } 20 | 21 | public ActionResult SalesPerDay([DataSourceRequest]DataSourceRequest request) 22 | { 23 | var data = new SalesPerDayViewModel[] 24 | { 25 | new SalesPerDayViewModel("Oct1", 1903, 5000), 26 | new SalesPerDayViewModel("Oct 2", 2398, 5250), 27 | new SalesPerDayViewModel("Oct 3",1893, 5500), 28 | new SalesPerDayViewModel("Oct 4", 3452, 5750), 29 | new SalesPerDayViewModel("Oct 5", 6567, 6000), 30 | new SalesPerDayViewModel("Oct 6",5892, 6250), 31 | new SalesPerDayViewModel("Oct 7", 2354, 6500), 32 | new SalesPerDayViewModel("Oct 8", 7238, 6750), 33 | new SalesPerDayViewModel("Oct 9", 11574, 7000), 34 | new SalesPerDayViewModel("Oct 10",6392, 7250), 35 | new SalesPerDayViewModel("Oct 11",8932, 7500), 36 | new SalesPerDayViewModel("Oct 12",9320, 7750), 37 | new SalesPerDayViewModel("Oct 13", 7894, 8000), 38 | new SalesPerDayViewModel("Oct 14", 9456, 8250), 39 | new SalesPerDayViewModel("Oct 15", 12745, 8500), 40 | new SalesPerDayViewModel("Oct 16", 16705, 8750), 41 | new SalesPerDayViewModel("Oct 17", 19802, 9000), 42 | new SalesPerDayViewModel("Oct 18",15076, 9250), 43 | new SalesPerDayViewModel("Oct 19",17892, 9500), 44 | new SalesPerDayViewModel("Oct 20",12983, 9750), 45 | new SalesPerDayViewModel("Oct 21",9034, 10000), 46 | new SalesPerDayViewModel("Oct 22", 8902, 10250), 47 | new SalesPerDayViewModel("Oct 23",7893, 10500), 48 | new SalesPerDayViewModel("Oct 24",14562, 10750), 49 | new SalesPerDayViewModel("Oct 25",10235, 11000), 50 | new SalesPerDayViewModel("Oct 26", 23901, 11250), 51 | new SalesPerDayViewModel("Oct 27", 17892, 11500), 52 | new SalesPerDayViewModel("Oct 28",11982, 11750), 53 | new SalesPerDayViewModel("Oct 29", 1093, 12000), 54 | new SalesPerDayViewModel("Oct 30",4598, 12250), 55 | new SalesPerDayViewModel("Oct 31",3457, 12500), 56 | new SalesPerDayViewModel("Nov 1",6092, 12750), 57 | new SalesPerDayViewModel("Nov 2", 7892, 13000), 58 | new SalesPerDayViewModel("Nov 3",14562, 13250), 59 | new SalesPerDayViewModel("Nov 4", 13200, 13500), 60 | new SalesPerDayViewModel("Nov 5", 16502, 13750), 61 | new SalesPerDayViewModel("Nov 6",18902, 14000), 62 | new SalesPerDayViewModel("Nov 7", 16702, 14250), 63 | new SalesPerDayViewModel("Nov 8",10946, 14500), 64 | new SalesPerDayViewModel("Nov 9", 12093, 14750), 65 | new SalesPerDayViewModel("Nov 10", 19704, 15000), 66 | new SalesPerDayViewModel("Nov 11",17903, 15250), 67 | new SalesPerDayViewModel("Nov 12",17892, 15500), 68 | new SalesPerDayViewModel("Nov 13",16783, 15750), 69 | new SalesPerDayViewModel("Nov 14",9845, 16000), 70 | new SalesPerDayViewModel("Nov 15", 22904, 16250), 71 | new SalesPerDayViewModel("Nov 16",8934, 16500), 72 | new SalesPerDayViewModel("Nov 17", 12983, 16750), 73 | new SalesPerDayViewModel("Nov 18",22876, 17000), 74 | new SalesPerDayViewModel("Nov 19",20981, 17250), 75 | new SalesPerDayViewModel("Nov 20", 21873, 17500), 76 | new SalesPerDayViewModel("Nov 21", 24981, 17750), 77 | new SalesPerDayViewModel("Nov 22",23873, 18000), 78 | new SalesPerDayViewModel("Nov 23",18376, 18000), 79 | new SalesPerDayViewModel("Nov 24",21783, 18000), 80 | new SalesPerDayViewModel("Nov 25", 15672, 18000), 81 | new SalesPerDayViewModel("Nov 26",19456, 18000), 82 | new SalesPerDayViewModel("Nov 27",17998, 18000), 83 | new SalesPerDayViewModel("Nov 28", 21673, 18000), 84 | new SalesPerDayViewModel("Nov 29",18234, 18000), 85 | new SalesPerDayViewModel("Nov 30",26932, 18000) 86 | }; 87 | return Json(data); 88 | } 89 | 90 | public ActionResult SalesPerRegion() 91 | { 92 | var data = new SalesPerRegionViewModel[] 93 | { 94 | new SalesPerRegionViewModel("Oct1", 345, 524, 1034), 95 | new SalesPerRegionViewModel("Oct 2", 823, 782, 793), 96 | new SalesPerRegionViewModel("Oct 3", 672, 891, 330), 97 | new SalesPerRegionViewModel("Oct 4", 1200, 901, 1351), 98 | new SalesPerRegionViewModel("Oct 5", 3456, 2123, 988), 99 | new SalesPerRegionViewModel("Oct 6", 2901, 278, 2713), 100 | new SalesPerRegionViewModel("Oct 7", 800, 892, 662), 101 | new SalesPerRegionViewModel("Oct 8", 4562, 872, 1804), 102 | new SalesPerRegionViewModel("Oct 9", 6721, 2003, 2850), 103 | new SalesPerRegionViewModel("Oct 10", 2453, 2010, 1929), 104 | new SalesPerRegionViewModel("Oct 11", 4521, 2831, 1580), 105 | new SalesPerRegionViewModel("Oct 12", 6712, 809, 1799), 106 | new SalesPerRegionViewModel("Oct 13", 2891, 1093, 3910), 107 | new SalesPerRegionViewModel("Oct 14", 2932, 2003, 4521), 108 | new SalesPerRegionViewModel("Oct 15", 6721, 3007, 3017), 109 | new SalesPerRegionViewModel("Oct 16", 7812, 5009, 3884), 110 | new SalesPerRegionViewModel("Oct 17", 3742, 4006, 12054), 111 | new SalesPerRegionViewModel("Oct 18", 7812, 3005, 4259), 112 | new SalesPerRegionViewModel("Oct 19", 7892, 5002, 4998), 113 | new SalesPerRegionViewModel("Oct 20", 8912, 2032, 2039), 114 | new SalesPerRegionViewModel("Oct 21", 4525, 3094, 1415), 115 | new SalesPerRegionViewModel("Oct 22", 5682, 2893, 327), 116 | new SalesPerRegionViewModel("Oct 23", 2453, 3456, 1984), 117 | new SalesPerRegionViewModel("Oct 24", 7562, 4213, 2787), 118 | new SalesPerRegionViewModel("Oct 25", 2435, 4567, 3233), 119 | new SalesPerRegionViewModel("Oct 26", 6781, 6538, 10582), 120 | new SalesPerRegionViewModel("Oct 27", 7891, 4652, 5349), 121 | new SalesPerRegionViewModel("Oct 28", 8991, 1234, 1757), 122 | new SalesPerRegionViewModel("Oct 29", 200, 234, 659), 123 | new SalesPerRegionViewModel("Oct 30", 2000, 756, 1842), 124 | new SalesPerRegionViewModel("Oct 31", 1892, 234, 1331), 125 | new SalesPerRegionViewModel("Nov 1", 4891, 432, 769), 126 | new SalesPerRegionViewModel("Nov 2", 4352, 678, 2862), 127 | new SalesPerRegionViewModel("Nov 3", 1234, 4567, 8761), 128 | new SalesPerRegionViewModel("Nov 4", 7891, 2347, 2962), 129 | new SalesPerRegionViewModel("Nov 5", 3921, 4623, 7958), 130 | new SalesPerRegionViewModel("Nov 6", 8912, 6578, 3412), 131 | new SalesPerRegionViewModel("Nov 7", 6781, 4662, 5259), 132 | new SalesPerRegionViewModel("Nov 8", 8787, 1040, 1119), 133 | new SalesPerRegionViewModel("Nov 9", 8991, 1909, 1193), 134 | new SalesPerRegionViewModel("Nov 10", 5782, 3495, 10427), 135 | new SalesPerRegionViewModel("Nov 11", 10982, 2398, 4523), 136 | new SalesPerRegionViewModel("Nov 12", 12634, 2654, 2604), 137 | new SalesPerRegionViewModel("Nov 13", 6891, 5842, 4050), 138 | new SalesPerRegionViewModel("Nov 14", 1892, 3556, 4397), 139 | new SalesPerRegionViewModel("Nov 15", 14512, 6233, 2159), 140 | new SalesPerRegionViewModel("Nov 16", 4561, 2613, 1760), 141 | new SalesPerRegionViewModel("Nov 17", 2573, 3452, 6958), 142 | new SalesPerRegionViewModel("Nov 18", 9347, 6772, 6757), 143 | new SalesPerRegionViewModel("Nov 19", 7792, 2553, 10636), 144 | new SalesPerRegionViewModel("Nov 20", 8826, 4772, 8275), 145 | new SalesPerRegionViewModel("Nov 21", 7935, 7889, 9157), 146 | new SalesPerRegionViewModel("Nov 22", 19234, 2374, 2265), 147 | new SalesPerRegionViewModel("Nov 23", 7724, 7856, 2796), 148 | new SalesPerRegionViewModel("Nov 24", 9001, 2345, 10437), 149 | new SalesPerRegionViewModel("Nov 25", 8764, 4563, 2345), 150 | new SalesPerRegionViewModel("Nov 26", 13562, 3456, 2438), 151 | new SalesPerRegionViewModel("Nov 27", 15671, 1436, 891), 152 | new SalesPerRegionViewModel("Nov 28", 18924, 1123, 1626), 153 | new SalesPerRegionViewModel("Nov 29", 10992, 3445, 3797), 154 | new SalesPerRegionViewModel("Nov 30", 3646, 3456, 19830) 155 | }; 156 | return Json(data); 157 | } 158 | 159 | public ActionResult Revenue() 160 | { 161 | var data = new RevenueViewModel[] 162 | { 163 | new RevenueViewModel("Oct1", 686.55, 1199.96, 1540.66), 164 | new RevenueViewModel("Oct 2", 1637.77, 1790.78, 1181.57), 165 | new RevenueViewModel("Oct 3", 1337.28, 2040.39, 491.7), 166 | new RevenueViewModel("Oct 4", 2388, 2063.29, 2012.99), 167 | new RevenueViewModel("Oct 5", 6877.44, 4861.67, 1472.12), 168 | new RevenueViewModel("Oct 6", 5772.99, 636.62, 4042.37), 169 | new RevenueViewModel("Oct 7", 1592, 2042.68, 986.38), 170 | new RevenueViewModel("Oct 8", 9078.38, 1996.88, 2687.96), 171 | new RevenueViewModel("Oct 9", 13374.79, 4586.87, 4246.5), 172 | new RevenueViewModel("Oct 10", 4881.47, 4602.9, 2874.21), 173 | new RevenueViewModel("Oct 11", 8996.79, 6482.99, 2354.2), 174 | new RevenueViewModel("Oct 12", 13356.88, 1852.61, 2680.51), 175 | new RevenueViewModel("Oct 13", 5753.09, 2502.97, 5825.9), 176 | new RevenueViewModel("Oct 14", 5834.68, 4586.87, 6736.29), 177 | new RevenueViewModel("Oct 15", 13374.79, 6886.03, 4495.33), 178 | new RevenueViewModel("Oct 16", 15545.88, 11470.61, 5787.16), 179 | new RevenueViewModel("Oct 17", 7446.58, 9173.74, 17960.46), 180 | new RevenueViewModel("Oct 18", 15545.88, 6881.45, 6345.91), 181 | new RevenueViewModel("Oct 19", 15705.08, 11454.58, 7447.02), 182 | new RevenueViewModel("Oct 20", 17734.88, 4653.28, 3038.11), 183 | new RevenueViewModel("Oct 21", 9004.75, 7085.26, 2108.35), 184 | new RevenueViewModel("Oct 22", 11307.18, 6624.97, 487.23), 185 | new RevenueViewModel("Oct 23", 4881.47, 7914.24, 2956.16), 186 | new RevenueViewModel("Oct 24", 15048.38, 9647.77, 4152.63), 187 | new RevenueViewModel("Oct 25", 4845.65, 10458.43, 4817.17), 188 | new RevenueViewModel("Oct 26", 13494.19, 14972.02, 15767.18), 189 | new RevenueViewModel("Oct 27", 15703.09, 10653.08, 7970.01), 190 | new RevenueViewModel("Oct 28", 17892.09, 2825.86, 2617.93), 191 | new RevenueViewModel("Oct 29", 398, 535.86, 981.91), 192 | new RevenueViewModel("Oct 30", 3980, 1731.24, 2744.58), 193 | new RevenueViewModel("Oct 31", 3765.08, 535.86, 1983.19), 194 | new RevenueViewModel("Nov 1", 9733.09, 989.28, 1145.81), 195 | new RevenueViewModel("Nov 2", 8660.48, 1552.62, 4264.38), 196 | new RevenueViewModel("Nov 3", 2455.66, 10458.43, 13053.89), 197 | new RevenueViewModel("Nov 4", 15703.09, 5374.63, 4413.38), 198 | new RevenueViewModel("Nov 5", 7802.79, 10586.67, 11857.42), 199 | new RevenueViewModel("Nov 6", 17734.88, 15063.62, 5083.88), 200 | new RevenueViewModel("Nov 7", 13494.19, 10675.98, 7835.91), 201 | new RevenueViewModel("Nov 8", 17486.13, 2381.6, 1667.31), 202 | new RevenueViewModel("Nov 9", 17892.09, 4371.61, 1777.57), 203 | new RevenueViewModel("Nov 10", 11506.18, 8003.55, 15536.23), 204 | new RevenueViewModel("Nov 11", 21854.18, 5491.42, 6739.27), 205 | new RevenueViewModel("Nov 12", 25141.66, 6077.66, 3879.96), 206 | new RevenueViewModel("Nov 13", 13713.09, 13378.18, 6034.5), 207 | new RevenueViewModel("Nov 14", 3765.08, 8143.24, 6551.53), 208 | new RevenueViewModel("Nov 15", 28878.88, 14273.57, 3216.91), 209 | new RevenueViewModel("Nov 16", 9076.39, 5983.77, 2622.4), 210 | new RevenueViewModel("Nov 17", 5120.27, 7905.08, 10367.42), 211 | new RevenueViewModel("Nov 18", 18600.53, 15507.88, 10067.93), 212 | new RevenueViewModel("Nov 19", 15506.08, 5846.37, 15847.64), 213 | new RevenueViewModel("Nov 20", 17563.74, 10927.88, 12329.75), 214 | new RevenueViewModel("Nov 21", 15790.65, 18065.81, 13643.93), 215 | new RevenueViewModel("Nov 22", 38275.66, 5436.46, 3374.85), 216 | new RevenueViewModel("Nov 23", 15370.76, 17990.24, 4166.04), 217 | new RevenueViewModel("Nov 24", 17911.99, 5370.05, 15551.13), 218 | new RevenueViewModel("Nov 25", 17440.36, 10449.27, 3494.05), 219 | new RevenueViewModel("Nov 26", 26988.38, 7914.24, 3632.62), 220 | new RevenueViewModel("Nov 27", 31185.29, 3288.44, 1327.59), 221 | new RevenueViewModel("Nov 28", 37658.76, 2571.67, 2422.74), 222 | new RevenueViewModel("Nov 29", 21874.08, 7889.05, 5657.53), 223 | new RevenueViewModel("Nov 30", 7255.54, 7914.24, 29546.7) 224 | }; 225 | return Json(data); 226 | } 227 | 228 | public ActionResult AliceMutton() 229 | { 230 | List data = new List() 231 | { 232 | new DonutChartViewModel("2011", "Canterbury", 30), 233 | new DonutChartViewModel("2011", "Manchester", 45), 234 | new DonutChartViewModel("2011", "Rochester", 25), 235 | new DonutChartViewModel("2012", "Canterbury", 64), 236 | new DonutChartViewModel("2012", "Manchester", 12), 237 | new DonutChartViewModel("2012", "Rochester", 24) 238 | }; 239 | 240 | return Json(data); 241 | } 242 | 243 | public ActionResult Gravad() 244 | { 245 | List data = new List() 246 | { 247 | new DonutChartViewModel("2011", "Canterbury", 22), 248 | new DonutChartViewModel("2011", "Manchester", 18), 249 | new DonutChartViewModel("2011", "Rochester", 60), 250 | new DonutChartViewModel("2012", "Canterbury", 35), 251 | new DonutChartViewModel("2012", "Manchester", 20), 252 | new DonutChartViewModel("2012", "Rochester", 45) 253 | }; 254 | 255 | return Json(data); 256 | } 257 | 258 | public ActionResult Inlagd() 259 | { 260 | List data = new List() 261 | { 262 | new DonutChartViewModel("2011", "Canterbury", 30), 263 | new DonutChartViewModel("2011", "Manchester", 21), 264 | new DonutChartViewModel("2011", "Rochester", 49), 265 | new DonutChartViewModel("2012", "Canterbury", 32), 266 | new DonutChartViewModel("2012", "Manchester", 25), 267 | new DonutChartViewModel("2012", "Rochester", 43) 268 | }; 269 | 270 | return Json(data); 271 | } 272 | 273 | public ActionResult Spegesild() 274 | { 275 | List data = new List() 276 | { 277 | new DonutChartViewModel("2011", "Canterbury", 37), 278 | new DonutChartViewModel("2011", "Manchester", 42), 279 | new DonutChartViewModel("2011", "Rochester", 21), 280 | new DonutChartViewModel("2012", "Canterbury", 32), 281 | new DonutChartViewModel("2012", "Manchester", 30), 282 | new DonutChartViewModel("2012", "Rochester", 38) 283 | }; 284 | 285 | return Json(data); 286 | } 287 | 288 | public JsonResult GetSwatches(string theme) 289 | { 290 | List swatches = new List() 291 | { 292 | // Default themes 293 | new Swatch("Default Main", "default-main", "1"), 294 | new Swatch("Default Main Dark", "default-main-dark", "1"), 295 | new Swatch("Nordic", "default-nordic", "1"), 296 | new Swatch("Ocean Blue", "default-ocean-blue", "1"), 297 | new Swatch("Purple", "default-purple", "1"), 298 | new Swatch("Turquoise", "default-turquoise", "1"), 299 | 300 | // Bootstrap themes 301 | new Swatch("Bootstrap Main", "bootstrap-main", "2"), 302 | new Swatch("Bootstrap Main Dark", "bootstrap-main-dark", "2"), 303 | new Swatch("Nordic", "bootstrap-nordic", "2"), 304 | new Swatch("Urban", "bootstrap-urban", "2"), 305 | new Swatch("Vintage", "bootstrap-vintage", "2"), 306 | 307 | // Material themes 308 | new Swatch("Material Main", "material-main", "3"), 309 | new Swatch("Arctic", "material-arctic", "3"), 310 | new Swatch("Material Lime Dark", "material-lime-dark", "3"), 311 | new Swatch("Material Main Dark", "material-main-dark", "3"), 312 | new Swatch("Nova", "material-nova", "3"), 313 | 314 | // Classic themes 315 | new Swatch("Classic Main", "classic-main", "4"), 316 | new Swatch("Classic Main Dark", "classic-main-dark", "4"), 317 | new Swatch("Opal", "classic-opal", "4"), 318 | new Swatch("Silver", "classic-silver", "4") 319 | }; 320 | 321 | if (theme != null) 322 | { 323 | swatches = swatches.Where(p => p.ThemeValue == theme).ToList(); 324 | } 325 | 326 | return Json(swatches); 327 | } 328 | 329 | public ActionResult About() 330 | { 331 | ViewBag.Message = "Your app description page."; 332 | 333 | return View(); 334 | } 335 | 336 | public ActionResult Contact() 337 | { 338 | ViewBag.Message = "Your contact page."; 339 | 340 | return View(); 341 | } 342 | } 343 | } 344 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Kendo-UI-Bootstrap-Integration.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | net9.0 5 | true 6 | Kendo-UI-Bootstrap-Integration 7 | Kendo-UI-Bootstrap-Integration 8 | 9 | 10 | 11 | 12 | PreserveNewest 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/DonutChartViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace Kendo_UI_Bootstrap_Integration.Models 7 | { 8 | public class DonutChartViewModel 9 | { 10 | public DonutChartViewModel(string series, string category, double value) 11 | { 12 | Series = series; 13 | Category = category; 14 | Value = value; 15 | } 16 | 17 | public string Series 18 | { 19 | get; 20 | set; 21 | } 22 | 23 | public string Category 24 | { 25 | get; 26 | set; 27 | } 28 | 29 | public double Value 30 | { 31 | get; 32 | set; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/ListView.cs: -------------------------------------------------------------------------------- 1 | namespace Kendo_UI_Bootstrap_Integration 2 | { 3 | using System; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | public class ListViewModel 7 | { 8 | public int Id 9 | { 10 | get; 11 | set; 12 | } 13 | public string Title 14 | { 15 | get; 16 | set; 17 | } 18 | public string Description 19 | { 20 | get; 21 | set; 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/OrdersViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Kendo_UI_Bootstrap_Integration.Orders 2 | { 3 | using System; 4 | using System.ComponentModel.DataAnnotations; 5 | 6 | public class OrderViewModel 7 | { 8 | public int OrderID 9 | { 10 | get; 11 | set; 12 | } 13 | 14 | public string CustomerID { get; set; } 15 | 16 | public string ContactName 17 | { 18 | get; 19 | set; 20 | } 21 | 22 | public decimal? Freight 23 | { 24 | get; 25 | set; 26 | } 27 | 28 | public string ShipAddress 29 | { 30 | get; 31 | set; 32 | } 33 | 34 | [Required] 35 | public DateTime? OrderDate 36 | { 37 | get; 38 | set; 39 | } 40 | 41 | public DateTime? ShippedDate 42 | { 43 | get; 44 | set; 45 | } 46 | 47 | public string ShipCountry 48 | { 49 | get; 50 | set; 51 | } 52 | 53 | public string ShipCity 54 | { 55 | get; 56 | set; 57 | } 58 | 59 | public string ShipName 60 | { 61 | get; 62 | set; 63 | } 64 | 65 | public int? EmployeeID 66 | { 67 | get; 68 | set; 69 | } 70 | } 71 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/RevenueViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace Kendo_UI_Bootstrap_Integration.Models 7 | { 8 | public class RevenueViewModel 9 | { 10 | public RevenueViewModel(string date, double canterbury, double manchester, double rochester) 11 | { 12 | Date = date; 13 | Canterbury = canterbury; 14 | Manchester = manchester; 15 | Rochester = rochester; 16 | } 17 | 18 | public string Date 19 | { 20 | get; 21 | set; 22 | } 23 | 24 | public double Canterbury 25 | { 26 | get; 27 | set; 28 | } 29 | 30 | public double Manchester 31 | { 32 | get; 33 | set; 34 | } 35 | 36 | public double Rochester 37 | { 38 | get; 39 | set; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/SalesPerDayViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace Kendo_UI_Bootstrap_Integration.Models 7 | { 8 | public class SalesPerDayViewModel 9 | { 10 | public SalesPerDayViewModel(string date, double value, double target) 11 | { 12 | Date = date; 13 | Value = value; 14 | Target = target; 15 | } 16 | 17 | public string Date 18 | { 19 | get; 20 | set; 21 | } 22 | 23 | public double Value 24 | { 25 | get; 26 | set; 27 | } 28 | 29 | public double Target 30 | { 31 | get; 32 | set; 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/SalesPerRegionViewModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace Kendo_UI_Bootstrap_Integration.Models 7 | { 8 | public class SalesPerRegionViewModel 9 | { 10 | public SalesPerRegionViewModel(string date, double canterbury, double manchester, double rochester) 11 | { 12 | Date = date; 13 | Canterbury = canterbury; 14 | Manchester = manchester; 15 | Rochester = rochester; 16 | } 17 | 18 | public string Date 19 | { 20 | get; 21 | set; 22 | } 23 | 24 | public double Canterbury 25 | { 26 | get; 27 | set; 28 | } 29 | 30 | public double Manchester 31 | { 32 | get; 33 | set; 34 | } 35 | 36 | public double Rochester 37 | { 38 | get; 39 | set; 40 | } 41 | } 42 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/Swatch.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Web; 5 | 6 | namespace Kendo_UI_Bootstrap_Integration.Models 7 | { 8 | public class Swatch 9 | { 10 | public Swatch(string swatchName, string swatchValue, string themeValue) 11 | { 12 | SwatchName = swatchName; 13 | SwatchValue = swatchValue; 14 | ThemeValue = themeValue; 15 | } 16 | 17 | public string SwatchName { get; set; } 18 | 19 | public string SwatchValue { get; set; } 20 | 21 | public string ThemeValue { get; set; } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/Task.cs: -------------------------------------------------------------------------------- 1 | namespace Kendo_UI_Bootstrap_Integration 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | 6 | public partial class Task 7 | { 8 | public Task() 9 | { 10 | this.Tasks1 = new HashSet(); 11 | } 12 | 13 | public int TaskID { get; set; } 14 | public System.DateTime Start { get; set; } 15 | public System.DateTime End { get; set; } 16 | public string Title { get; set; } 17 | public string Description { get; set; } 18 | public Nullable OwnerID { get; set; } 19 | public bool IsAllDay { get; set; } 20 | public string RecurrenceRule { get; set; } 21 | public Nullable RecurrenceID { get; set; } 22 | public string RecurrenceException { get; set; } 23 | public string StartTimezone { get; set; } 24 | public string EndTimezone { get; set; } 25 | 26 | public virtual ICollection Tasks1 { get; set; } 27 | public virtual Task Task1 { get; set; } 28 | } 29 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Models/TaskViewModel.cs: -------------------------------------------------------------------------------- 1 | namespace Kendo_UI_Bootstrap_Integration.Scheduler 2 | { 3 | using System; 4 | using System.Collections.Generic; 5 | using System.Linq; 6 | using System.Web; 7 | using Kendo.Mvc.UI; 8 | 9 | public class TaskViewModel : ISchedulerEvent 10 | { 11 | public int TaskID { get; set; } 12 | public string Title { get; set; } 13 | public string Description { get; set; } 14 | 15 | private DateTime start; 16 | public DateTime Start 17 | { 18 | get 19 | { 20 | return start; 21 | } 22 | set 23 | { 24 | start = value.ToUniversalTime(); 25 | } 26 | } 27 | 28 | public string StartTimezone { get; set; } 29 | 30 | private DateTime end; 31 | public DateTime End 32 | { 33 | get 34 | { 35 | return end; 36 | } 37 | set 38 | { 39 | end = value.ToUniversalTime(); 40 | } 41 | } 42 | 43 | public string EndTimezone { get; set; } 44 | 45 | public string RecurrenceRule { get; set; } 46 | public int? RecurrenceID { get; set; } 47 | public string RecurrenceException { get; set; } 48 | public bool IsAllDay { get; set; } 49 | public int? OwnerID { get; set; } 50 | 51 | public Task ToEntity() 52 | { 53 | return new Task 54 | { 55 | TaskID = TaskID, 56 | Title = Title, 57 | Start = Start, 58 | StartTimezone = StartTimezone, 59 | End = End, 60 | EndTimezone = EndTimezone, 61 | Description = Description, 62 | RecurrenceRule = RecurrenceRule, 63 | RecurrenceException = RecurrenceException, 64 | RecurrenceID = RecurrenceID, 65 | IsAllDay = IsAllDay, 66 | OwnerID = OwnerID 67 | }; 68 | } 69 | } 70 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Microsoft.AspNetCore.Hosting; 7 | using Microsoft.Extensions.Hosting; 8 | 9 | namespace mvc_core 10 | { 11 | public class Program 12 | { 13 | public static void Main(string[] args) 14 | { 15 | CreateHostBuilder(args).Build().Run(); 16 | } 17 | 18 | public static IHostBuilder CreateHostBuilder(string[] args) => 19 | Host.CreateDefaultBuilder(args) 20 | .ConfigureWebHostDefaults(webBuilder => 21 | { 22 | webBuilder.UseStartup(); 23 | }); 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Project_Readme.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Welcome to ASP.NET Core 6 | 127 | 128 | 129 | 130 | 138 | 139 |
140 |
141 |

This application consists of:

142 |
    143 |
  • Sample pages using ASP.NET Core MVC
  • 144 |
  • Bower for managing client-side libraries
  • 145 |
  • Theming using Bootstrap
  • 146 |
147 |
148 | 160 | 172 |
173 |

Run & Deploy

174 | 179 |
180 | 181 | 184 |
185 | 186 | 187 | 188 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Properties/launchSettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "iisSettings": { 3 | "windowsAuthentication": false, 4 | "anonymousAuthentication": true, 5 | "iisExpress": { 6 | "applicationUrl": "http://localhost:52267/", 7 | "sslPort": 0 8 | } 9 | }, 10 | "profiles": { 11 | "IIS Express": { 12 | "commandName": "IISExpress", 13 | "launchBrowser": true, 14 | "environmentVariables": { 15 | "ASPNETCORE_ENVIRONMENT": "Development" 16 | } 17 | }, 18 | "mvc_core": { 19 | "commandName": "Project", 20 | "launchBrowser": true, 21 | "launchUrl": "http://localhost:5000", 22 | "environmentVariables": { 23 | "ASPNETCORE_ENVIRONMENT": "Development" 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Startup.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using Kendo.Mvc; 6 | using Microsoft.AspNetCore.Builder; 7 | using Microsoft.AspNetCore.Hosting; 8 | using Microsoft.Extensions.Configuration; 9 | using Microsoft.Extensions.DependencyInjection; 10 | using Microsoft.Extensions.Hosting; 11 | using Microsoft.Extensions.Logging; 12 | using Newtonsoft.Json.Serialization; 13 | using static System.Net.Mime.MediaTypeNames; 14 | 15 | namespace mvc_core 16 | { 17 | public class Startup 18 | { 19 | public Startup(IConfiguration configuration) 20 | { 21 | Configuration = configuration; 22 | } 23 | 24 | public IConfiguration Configuration { get; } 25 | 26 | // This method gets called by the runtime. Use this method to add services to the container. 27 | public void ConfigureServices(IServiceCollection services) 28 | { 29 | // Add framework services. 30 | services 31 | .AddControllersWithViews() 32 | .AddNewtonsoftJson(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver()); 33 | 34 | // Add Kendo UI services to the services container 35 | services.AddKendo(x => 36 | { 37 | x.IconType = IconType.Svg; 38 | }); 39 | } 40 | 41 | // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. 42 | public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 43 | { 44 | if (env.IsDevelopment()) 45 | { 46 | app.UseDeveloperExceptionPage(); 47 | } 48 | else 49 | { 50 | app.UseExceptionHandler("/Home/Error"); 51 | app.UseHsts(); 52 | } 53 | 54 | 55 | app.UseHttpsRedirection(); 56 | app.UsePathBase("/aspnet-core/bootstrap/"); 57 | app.UseStaticFiles(); 58 | 59 | app.UseRouting(); 60 | 61 | app.UseAuthorization(); 62 | 63 | app.UseEndpoints(endpoints => 64 | { 65 | endpoints.MapControllerRoute( 66 | name: "default", 67 | pattern: "{controller=Home}/{action=Index}/{id?}"); 68 | }); 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/Home/About.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "About"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |

Use this area to provide additional information.

8 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/Home/Contact.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Contact"; 3 | } 4 |

@ViewData["Title"].

5 |

@ViewData["Message"]

6 | 7 |
8 | One Microsoft Way
9 | Redmond, WA 98052-6399
10 | P: 11 | 425.555.0100 12 |
13 | 14 |
15 | Support: Support@example.com
16 | Marketing: Marketing@example.com 17 |
18 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/Home/Index.cshtml: -------------------------------------------------------------------------------- 1 | @*@model IEnumerable*@ 2 | 3 |
4 |
5 |
What is this page?
6 | 7 |
8 |

This page shows how to use Telerik UI for ASP.NET Core alongside Twitter Bootstrap.

9 | 10 |

The grid layout and responsive CSS is provided by Bootstrap, and components are provided by Telerik UI for ASP.NET Core.

11 | 12 |

Resize the page or customize it using the pickers above to see its responsive features.

13 | 14 |

The source for this demo is available on GitHub

15 |
16 |
17 | 18 | @(Html.Kendo().Menu() 19 | .Name("menu") 20 | .Items(children => 21 | { 22 | children.Add().Text("Profile").Url("#profile"); 23 | children.Add().Text("Schedule").Url("#schedule"); 24 | children.Add().Text("Orders").Url("#orders"); 25 | children.Add().Text("Gallery").Url("#gallery"); 26 | children.Add().Text("FAQ").Url("#faq"); 27 | children.Add().Text("Telerik UI for ASP.NET Core demos").Url("https://demos.telerik.com/aspnet-core/"); 28 | } 29 | ) 30 | ) 31 | 32 |
33 |
34 |
35 |
Profile
36 | 37 |
38 |
39 |
40 | 41 |
42 | 43 |
44 | Jonathan 45 | Dodsworth 46 |
Inside Sales Coordinator
47 |
48 |
49 |
50 |
51 |
52 | 53 |
54 | @(Html.Kendo().TabStrip() 55 | .Name("tabstrip") 56 | .Items(tabstrip => 57 | { 58 | tabstrip.Add().Text("") 59 | .Encoded(false) 60 | .Selected(true) 61 | .Content(@ 62 | @(Html.Kendo().Chart() 63 | .Name("revenue") 64 | .DataSource(ds => ds.Read(read => read.Action("Revenue", "Home"))) 65 | .Transitions(false) 66 | .Theme("sass") 67 | .ChartArea(chart => chart.Margin(m => m.Top(15)) 68 | .Background("transparent")) 69 | .Legend(l => l.Visible(false)) 70 | .SeriesDefaults(s=>s 71 | .Column() 72 | .Stack(true)) 73 | .CategoryAxis(a=>a 74 | .Line(l=>l.Visible(false)) 75 | .MajorGridLines(m=>m.Visible(false)) 76 | .Labels(l=>l.Visible(false)) 77 | .Categories(m=>m.Date)) 78 | .Series(series => { 79 | series.Column(model => model.Canterbury).Name("Canterbury"); 80 | series.Column(model => model.Manchester).Name("Manchester"); 81 | series.Column(model => model.Rochester).Name("Rochester"); 82 | }) 83 | .ValueAxis(v=>v 84 | .Numeric() 85 | .Labels(l=>l 86 | .Step(2) 87 | .Template("$#= value #") 88 | ) 89 | .PlotBands(bands => bands 90 | .Add().From(30000).To(50000).Color("#a7c9e6").Opacity(0.3) 91 | )) 92 | .Tooltip(t=>t.Visible(true).Template("#= series.name #
#= category #: $#= value #")) 93 | ) 94 |
); 95 | tabstrip.Add().Text("") 96 | .Encoded(false) 97 | .Content(@ 98 | @(Html.Kendo().Chart() 99 | .Name("sales-per-day") 100 | .DataSource(ds => ds.Read(read => read.Action("SalesPerDay", "Home"))) 101 | .Transitions(false) 102 | .Theme("sass") 103 | .ChartArea(chart => chart.Margin(m => m.Top(15)) 104 | .Background("transparent")) 105 | .Legend(l => l.Visible(false)) 106 | .SeriesDefaults(s => s.VerticalBullet().Target(t=>t.Color("#ff0000"))) 107 | .CategoryAxis(a => a.Categories(m => m.Date) 108 | .Labels(l => l.Visible(false)) 109 | .MajorGridLines(m => m.Visible(false))) 110 | .Series(s => s.VerticalBullet(m => m.Value, m => m.Target)) 111 | .Tooltip(t => t.Visible(false)) 112 | .ValueAxis(v => v.Date().Labels(l => l.Step(2)).PlotBands(bands => 113 | { 114 | bands.Add().From(10000).To(20000).Color("#ff0000").Opacity(0.05); 115 | })) 116 | ) 117 | ); 118 | tabstrip.Add().Text("") 119 | .Encoded(false) 120 | .Content(@ 121 | @(Html.Kendo().Chart() 122 | .Name("sales-per-region") 123 | .DataSource(ds => ds.Read(read => read.Action("SalesPerRegion", "Home"))) 124 | .Transitions(false) 125 | .Theme("sass") 126 | .Legend(l=>l.Visible(false)) 127 | .ChartArea(c=>c.Margin(m => m.Top(15)) 128 | .Background("transparent")) 129 | .SeriesDefaults(s=>s 130 | .Area() 131 | .Line(l=>l.Style(ChartSeriesLineStyle.Smooth)) 132 | .Stack(true)) 133 | .CategoryAxis(a=>a 134 | .Categories(m=>m.Date) 135 | .Line(l=>l.Visible(false)) 136 | .Labels(l=>l.Visible(false)) 137 | .MajorGridLines(l=>l.Visible(false)) 138 | ) 139 | .Tooltip(t=>t.Visible(true).Shared(true).Template("#= series.name #
#= category #: #= value #")) 140 | .Series(series => { 141 | series.Area(model => model.Canterbury).Name("Canterbury"); 142 | series.Area(model => model.Manchester).Name("Manchester"); 143 | series.Area(model => model.Rochester).Name("Rochester"); 144 | }) 145 | .ValueAxis(v=>v.Numeric().Labels(l=>l.Step(2))) 146 | ) 147 |
); 148 | tabstrip.Add().Text("") 149 | .Encoded(false) 150 | .Content(@ 151 | @(Html.Kendo().Chart() 152 | .HtmlAttributes(new { @class = "market-donut"}) 153 | .Name("market-alice-mutton") 154 | .DataSource(ds => ds.Read(read => read.Action("AliceMutton", "Home")).Group(g => g.Add(d=> d.Series))) 155 | .Transitions(false) 156 | .Theme("sass") 157 | .Title(t => t 158 | .Text("Alice Mutton") 159 | .Position(ChartTitlePosition.Bottom) 160 | .Padding(4) 161 | .Margin(0)) 162 | .Legend(l => l.Visible(false)) 163 | .ChartArea(c => c 164 | .Margin(m => m.Top(15)) 165 | .Background("transparent")) 166 | .Series(series => { 167 | series.Donut(d => d.Value, d => d.Category); 168 | }) 169 | .Tooltip(t=>t 170 | .Visible(true) 171 | .Template("#= category # (#= series.name #): #= value #%")) 172 | ) 173 | 174 | @(Html.Kendo().Chart() 175 | .HtmlAttributes(new { @class = "market-donut"}) 176 | .Name("market-gravad") 177 | .DataSource(ds => ds.Read(read => read.Action("Gravad", "Home")).Group(g => g.Add(d=> d.Series))) 178 | .Transitions(false) 179 | .Theme("sass") 180 | .Title(t => t 181 | .Text("Gravad lax") 182 | .Position(ChartTitlePosition.Bottom) 183 | .Padding(4) 184 | .Margin(0)) 185 | .Legend(l => l.Visible(false)) 186 | .ChartArea(c => c 187 | .Margin(m => m.Top(15)) 188 | .Background("transparent")) 189 | .Series(series => { 190 | series.Donut(d => d.Value, d => d.Category); 191 | }) 192 | .Tooltip(t=>t 193 | .Visible(true) 194 | .Template("#= category # (#= series.name #): #= value #%")) 195 | ) 196 | 197 | @(Html.Kendo().Chart() 198 | .HtmlAttributes(new { @class = "market-donut"}) 199 | .Name("market-inlagd") 200 | .DataSource(ds => ds.Read(read => read.Action("Inlagd", "Home")).Group(g => g.Add(d=> d.Series))) 201 | .Transitions(false) 202 | .Theme("sass") 203 | .Title(t => t 204 | .Text("Inlagd Sill") 205 | .Position(ChartTitlePosition.Bottom) 206 | .Padding(4) 207 | .Margin(0)) 208 | .Legend(l => l.Visible(false)) 209 | .ChartArea(c => c 210 | .Margin(m => m.Top(15)) 211 | .Background("transparent")) 212 | .Series(series => { 213 | series.Donut(d => d.Value, d => d.Category); 214 | }) 215 | .Tooltip(t=>t 216 | .Visible(true) 217 | .Template("#= category # (#= series.name #): #= value #%")) 218 | ) 219 | 220 | @(Html.Kendo().Chart() 221 | .HtmlAttributes(new { @class = "market-donut"}) 222 | .Name("market-spageslid") 223 | .DataSource(ds => ds.Read(read => read.Action("Spegesild", "Home")).Group(g => g.Add(d=> d.Series))) 224 | .Transitions(false) 225 | .Theme("sass") 226 | .Title(t => t 227 | .Text("Spageslid") 228 | .Position(ChartTitlePosition.Bottom) 229 | .Padding(4) 230 | .Margin(0)) 231 | .Legend(l => l.Visible(false)) 232 | .ChartArea(c => c 233 | .Margin(m => m.Top(15)) 234 | .Background("transparent")) 235 | .Series(series => { 236 | series.Donut(d => d.Value, d => d.Category); 237 | }) 238 | .Tooltip(t=>t 239 | .Visible(true) 240 | .Template("#= category # (#= series.name #): #= value #%")) 241 | ) 242 | ); 243 | } 244 | ) 245 | ) 246 |
247 |
248 | 249 |
250 |
Profile Setup
251 | 252 |
253 |
254 |
255 | 256 |
257 | @(Html.Kendo().TextBox() 258 | .Name("name") 259 | .Placeholder("Name") 260 | .Value("Johnatan Dodsworth") 261 | ) 262 |
263 |
264 | 265 |
266 | 267 |
268 | @(Html.Kendo().DatePicker().Name("date").Value("10/09/1979")) 269 |
270 |
271 | 272 |
273 | 274 |
275 | @(Html.Kendo().DropDownList() 276 | .Name("gender") 277 | .DataTextField("Text") 278 | .DataValueField("Value") 279 | .Value("Male") 280 | .BindTo(new List() { 281 | new SelectListItem() { 282 | Text = "Male", 283 | Value = "Male" 284 | }, 285 | new SelectListItem() { 286 | Text = "Female", 287 | Value = "Female" 288 | } 289 | }) 290 | ) 291 |
292 |
293 | 294 |
295 | 296 |
297 | @(Html.Kendo().DropDownList() 298 | .Name("language") 299 | .DataTextField("Text") 300 | .DataValueField("Value") 301 | .Value("English") 302 | .BindTo(new List() { 303 | new SelectListItem() { 304 | Text = "English", 305 | Value = "English" 306 | }, 307 | new SelectListItem() { 308 | Text = "German", 309 | Value = "German" 310 | } 311 | }) 312 | ) 313 |
314 |
315 |
316 | 317 |
318 |
319 | 320 |
321 | @(Html.Kendo().TextBox() 322 | .Name("occupation") 323 | .Placeholder("Occupation") 324 | .Value("e.g. Developer") 325 | ) 326 |
327 |
328 | 329 |
330 | 331 |
332 | @(Html.Kendo().MultiSelect() 333 | .Name("skills") 334 | .DataTextField("Text") 335 | .DataValueField("Value") 336 | .Value(new string[] { "C#", "jQuery" }) 337 | .BindTo(new List() { 338 | new SelectListItem() { 339 | Text = "C", 340 | Value = "C" 341 | }, 342 | new SelectListItem() { 343 | Text = "C++", 344 | Value = "C++" 345 | }, 346 | new SelectListItem() { 347 | Text = "C#", 348 | Value = "C#" 349 | }, 350 | new SelectListItem() { 351 | Text = "JavaScript", 352 | Value = "JavaScript" 353 | }, 354 | new SelectListItem() { 355 | Text = "jQuery", 356 | Value = "jQuery" 357 | }, 358 | new SelectListItem() { 359 | Text = "Git", 360 | Value = "Git" 361 | }, 362 | new SelectListItem() { 363 | Text = "Node.js", 364 | Value = "Node.js" 365 | }, 366 | new SelectListItem() { 367 | Text = "Ruby", 368 | Value = "Ruby" 369 | }, 370 | new SelectListItem() { 371 | Text = "Ruby on Rails", 372 | Value = "Ruby on Rails" 373 | }, 374 | new SelectListItem() { 375 | Text = "Kendo UI", 376 | Value = "Kendo UI" 377 | } 378 | }) 379 | ) 380 |
381 |
382 | 383 |
384 | 385 |
386 | @(Html.Kendo().NumericTextBox() 387 | .Name("experience") 388 | .Value(4)) 389 |
390 |
391 |
392 | 393 |
394 | 395 |
396 |
397 | 398 |
399 | @(Html.Kendo().Editor().Name("bio")) 400 |
401 |
402 |
403 | 404 |
405 | 406 | 407 |
408 |
409 |
410 | 411 | @(Html.Kendo().Grid() 412 | .Name("orders") 413 | .HtmlAttributes(new { @class = "ra-section" }) 414 | .Columns(columns => 415 | { 416 | columns.Bound(p => p.OrderID).Width(70); 417 | columns.Bound(p => p.ShipCountry).Title("Ship Country").Width("20%"); 418 | columns.Bound(p => p.ShipAddress).Title("Ship Address"); 419 | }) 420 | .Pageable(p => p.ButtonCount(4)) 421 | .Groupable(g => g.Enabled(true)) 422 | .Sortable(s => s.Enabled(true)) 423 | .Scrollable(s => s.Enabled(false)) 424 | .DataSource(dataSource => dataSource 425 | .Custom() 426 | .Type("odata") 427 | .PageSize(10) 428 | .ServerPaging(true) 429 | .ServerSorting(true) 430 | .ServerFiltering(true) 431 | .Transport(t => t.Read(r => r.Url("https://demos.telerik.com/kendo-ui/service/Northwind.svc/Orders"))) 432 | ) 433 | 434 | ) 435 | 436 | @(Html.Kendo().Scheduler() 437 | .Name("schedule") 438 | .Date(new DateTime(2022, 6, 13)) 439 | .StartTime(new DateTime(2022, 6, 13, 7, 00, 00)) 440 | .EndTime(new DateTime(2022, 6, 13, 20, 00, 00)) 441 | .HtmlAttributes(new { @class = "ra-section" }) 442 | .Views(views => 443 | { 444 | views.DayView(dayView => dayView.Selected(true)); 445 | views.WeekView(); 446 | views.MonthView(); 447 | }) 448 | .Editable(false) 449 | .Timezone("Etc/UTC") 450 | .DataSource(dataSource => dataSource 451 | .Custom() 452 | .Transport(t => t 453 | .Read(r => r 454 | .Url("https://demos.telerik.com/kendo-ui/service/meetings") 455 | .DataType("jsonp")) 456 | ) 457 | .Schema(schema => schema 458 | .Model(m => 459 | { 460 | m.Id(f => f.TaskID); 461 | m.Field("title", typeof(string)).DefaultValue("No title").From("Title"); 462 | m.Field("start", typeof(DateTime)).From("Start"); 463 | m.Field("end", typeof(DateTime)).From("End"); 464 | m.Field("description", typeof(string)).From("Description"); 465 | m.Field("recurrenceID", typeof(int)).From("RecurrenceID"); 466 | m.Field("recurrenceRule", typeof(string)).From("RecurrenceRule"); 467 | m.Field("recurrenceException", typeof(string)).From("RecurrenceException"); 468 | m.Field("isAllDay", typeof(bool)).From("IsAllDay"); 469 | m.Field("startTimezone", typeof(string)).From("StartTimezone"); 470 | m.Field("endTimezone", typeof(string)).From("EndTimezone"); 471 | }) 472 | ) 473 | ) 474 | ) 475 | 476 | 562 | 563 |
564 |
565 | FAQ 566 |
567 | 568 |
569 | @(Html.Kendo().PanelBar() 570 | .Name("panelbar") 571 | .HtmlAttributes(new { @class = "ra-well-overlay" }) 572 | .Items(panelbar => 573 | { 574 | panelbar.Add().Text("What is Telerik UI for ASP.NET Core") 575 | .Selected(true) 576 | .Content(@ 577 |
578 |

Telerik UI for ASP.NET Core is a set of server-side wrappers that bring the HTML/JavaScript Kendo UI widgets to .NET Core. Our server-side wrappers come in the form of HTML and Tag helpers. From client-side perspective, the vanilla HTML/JavaScript Kendo UI widgets and their ASP.NET Core server-side wrappers represent the same functionalities and provide the same capabilities.

579 |

Download Kendo UI and experience the difference today

580 |
); 581 | panelbar.Add().Text("Who should use UI for ASP.NET Core?") 582 | .Encoded(false) 583 | .Content(@ 584 |
585 |

Telerik UI for ASP.NET Core is a set of server-side wrappers that bring the HTML/JavaScript Kendo UI widgets to .NET Core. Our server-side wrappers come in the form of HTML and Tag helpers. From client-side perspective, the vanilla HTML/JavaScript Kendo UI widgets and their ASP.NET Core server-side wrappers represent the same functionalities and provide the same capabilities.

586 |

Download Kendo UI and experience the difference today

587 |
); 588 | panelbar.Add().Text("What are Telerik UI for ASP.NET Core components?") 589 | .Encoded(false) 590 | .Content(@ 591 |
592 |

The Telerik UI for ASP.NET Core HTML and Tag helpers:

593 |
    594 |
  • Allow you to configure a Kendo UI widget through C# or VB.NET code—for example, to set its value, data source, and so on
  • 595 |
  • Render the HTML and JavaScript that are needed to initialize a Kendo UI widget
  • 596 |
  • Propagate the widget’s options to the client-side through its initialization script
  • 597 |
598 |
); 599 | } 600 | ) 601 | ) 602 |
603 |
604 |
Copyright © @DateTime.Now.Year Progress Software Corporation and/or its subsidiaries or affiliates. All Rights Reserved.
605 |
606 | 607 | 616 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | ViewData["Title"] = "Error"; 3 | } 4 | 5 |

Error.

6 |

An error occurred while processing your request.

7 | 8 |

Development Mode

9 |

10 | Swapping to Development environment will display more detailed information about the error that occurred. 11 |

12 |

13 | Development environment should not be enabled in deployed applications, as it can result in sensitive information from exceptions being displayed to end users. For local debugging, development environment can be enabled by setting the ASPNETCORE_ENVIRONMENT environment variable to Development, and restarting the application. 14 |

15 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/Shared/_Layout.cshtml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | ASP.NET Core Responsive Demo of Twitter Bootstrap | Telerik UI for ASP.NET Core 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | @(Html.Kendo().DefaultSettings()) 18 | 81 |
82 |
83 |
84 | 87 | 88 | 91 | 92 |
93 |
94 | 121 | 122 | 142 | 143 | 179 |
180 |
181 |
182 |
183 |
184 | @RenderBody() 185 | 225 | 226 | 227 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/_ViewImports.cshtml: -------------------------------------------------------------------------------- 1 | @using mvc_core 2 | @using Kendo.Mvc.UI 3 | @addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers 4 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/Views/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | } 4 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "IncludeScopes": false, 4 | "LogLevel": { 5 | "Default": "Debug", 6 | "System": "Information", 7 | "Microsoft": "Information" 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/bundleconfig.json: -------------------------------------------------------------------------------- 1 | // Configure bundling and minification for the project. 2 | // More info at https://go.microsoft.com/fwlink/?LinkId=808241 3 | [ 4 | { 5 | "outputFileName": "wwwroot/css/site.min.css", 6 | // An array of relative input file paths. Globbing patterns supported 7 | "inputFiles": [ 8 | "wwwroot/css/site.css" 9 | ] 10 | }, 11 | { 12 | "outputFileName": "wwwroot/js/site.min.js", 13 | "inputFiles": [ 14 | "wwwroot/js/site.js" 15 | ], 16 | // Optionally specify minification options 17 | "minify": { 18 | "enabled": true, 19 | "renameLocals": true 20 | }, 21 | // Optinally generate .map file 22 | "sourceMap": false 23 | } 24 | ] 25 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/web.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/_references.js: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/avatar.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/1.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/10.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/11.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/12.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/2.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/3.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/4.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/5.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/6.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/7.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/8.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/8.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/9.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/assets/photos/9.jpg -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/css/site.css: -------------------------------------------------------------------------------- 1 | body { 2 | padding-top: 50px; 3 | padding-bottom: 20px; 4 | } 5 | 6 | /* Wrapping element */ 7 | /* Set some basic padding to keep content from hitting the edges */ 8 | .body-content { 9 | padding-left: 15px; 10 | padding-right: 15px; 11 | } 12 | 13 | /* Set widths on the form inputs since otherwise they're 100% wide */ 14 | input, 15 | select, 16 | textarea { 17 | max-width: 280px; 18 | } 19 | 20 | /* Carousel */ 21 | .carousel-caption p { 22 | font-size: 20px; 23 | line-height: 1.4; 24 | } 25 | 26 | /* Make .svg files in the carousel display properly in older browsers */ 27 | .carousel-inner .item img[src$=".svg"] 28 | { 29 | width: 100%; 30 | } 31 | 32 | /* Hide/rearrange for smaller screens */ 33 | @media screen and (max-width: 767px) { 34 | /* Hide captions */ 35 | .carousel-caption { 36 | display: none 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/css/site.min.css: -------------------------------------------------------------------------------- 1 | body{padding-top:50px;padding-bottom:20px}.body-content{padding-left:15px;padding-right:15px}input,select,textarea{max-width:280px}.carousel-caption p{font-size:20px;line-height:1.4}.carousel-inner .item img[src$=".svg"]{width:100%}@media screen and (max-width:767px){.carousel-caption{display:none}} -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/css/styles.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | margin: 0; 4 | padding: 0; 5 | min-width: 320px; 6 | } 7 | 8 | #example { 9 | padding-top: 2em; 10 | } 11 | 12 | header { 13 | margin: 0; 14 | font-size: 20px; 15 | color: #fff; 16 | background-color: #272727; 17 | max-height: 80px; 18 | } 19 | 20 | header h1, 21 | header button { 22 | display: inline-block; 23 | vertical-align: middle; 24 | font-size: 20px; 25 | } 26 | 27 | header .container h1 { 28 | margin: 0; 29 | font-size: 20px; 30 | padding-top: 20px; 31 | padding-left: 0; 32 | } 33 | 34 | #configure, 35 | header label { 36 | border-style: solid; 37 | border-color: #636363; 38 | border-width: 0 0 0 1px; 39 | margin-bottom: 0; 40 | font-weight: normal; 41 | } 42 | 43 | header .container { 44 | position: relative; 45 | } 46 | 47 | header .description { 48 | text-transform: uppercase; 49 | color: #ccc; 50 | font-size: 10px; 51 | line-height: 29px; 52 | } 53 | 54 | header .k-dropdown, 55 | header #font-size-value { 56 | font-size: 18px; 57 | line-height: 45px; 58 | margin-bottom: 9px; 59 | } 60 | 61 | header .k-dropdown { 62 | width: 100%; 63 | } 64 | 65 | header .k-dropdown { 66 | background-image: none !important; 67 | } 68 | 69 | header .k-dropdown { 70 | background-color: transparent; 71 | border-color: #5c5c5c; 72 | border-radius: 0; 73 | } 74 | 75 | header .k-dropdown.k-focused { 76 | box-shadow: none; 77 | } 78 | 79 | header .k-dropdown .k-input { 80 | padding-top: 0; 81 | padding-bottom: 0; 82 | text-indent: 14px; 83 | } 84 | 85 | header .k-dropdown .k-input, 86 | header .k-dropdown .k-select { 87 | line-height: 45px; 88 | } 89 | 90 | header .k-dropdown .k-input { 91 | color: #fff; 92 | } 93 | 94 | .header-description { 95 | line-height: 33px; 96 | align-self: center; 97 | } 98 | 99 | #configurator label { 100 | padding-bottom: 12px !important; 101 | } 102 | 103 | .card { 104 | margin-bottom: 20px; 105 | } 106 | 107 | .k-popup.ra-list { 108 | background-color: #010101; 109 | border-color: #5c5c5c; 110 | color: #fff; 111 | padding: 0; 112 | border-radius: 0; 113 | } 114 | 115 | .k-popup { 116 | height: auto !important; 117 | } 118 | 119 | .ra-list .k-list-item { 120 | border-radius: 0; 121 | text-indent: 7px; 122 | } 123 | 124 | .ra-list .k-list-item-text { 125 | font-size: 1rem !important; 126 | line-height: 1.5 !important; 127 | } 128 | 129 | #configure { 130 | z-index: 10; 131 | width: 62px; 132 | height: 62px; 133 | overflow: hidden; 134 | border-width: 0 0 0 1px; 135 | background-color: transparent; 136 | position: absolute; 137 | top: 0; 138 | right: 0; 139 | color: #fff; 140 | } 141 | 142 | #configure .k-i-menu { 143 | font-size: 18px !important; 144 | } 145 | 146 | #demo { 147 | padding-top: 46px; 148 | } 149 | 150 | #menu { 151 | margin-bottom: 30px; 152 | } 153 | 154 | #profile { 155 | position: relative; 156 | } 157 | 158 | #profile .card-body { 159 | min-height: 158px; 160 | } 161 | 162 | .card-header { 163 | font-size: 1.2857em; 164 | line-height: 1.2857em; 165 | } 166 | 167 | .avatar { 168 | border: 1px solid #e7e7e7; 169 | border-radius: 2px; 170 | } 171 | 172 | .ra-first-name { 173 | display: block; 174 | margin-top: 0.8571em; 175 | } 176 | 177 | .ra-last-name { 178 | display: block; 179 | font-size: 1.7143em; 180 | line-height: 1.3em; 181 | } 182 | 183 | .ra-position { 184 | font-size: 0.8571em; 185 | color: #999; 186 | padding-bottom: 2em; 187 | } 188 | 189 | .form-group .k-widget, 190 | .form-group .k-textbox { 191 | width: 100%; 192 | } 193 | 194 | .buttons-wrap { 195 | border-top: 1px solid #e7e7e7; 196 | padding-top: 0.5em; 197 | text-align: right; 198 | } 199 | 200 | .ra-section { 201 | margin-bottom: 20px; 202 | } 203 | 204 | .ra-well-overlay { 205 | margin: -16px -17px -19px; 206 | } 207 | 208 | #tabstrip .k-content { 209 | min-height: 156px; 210 | } 211 | 212 | #tabstrip .k-chart { 213 | height: 156px; 214 | } 215 | 216 | #tabstrip .k-content { 217 | padding: 1px; 218 | } 219 | 220 | #tabstrip-4 { 221 | text-align: center; 222 | } 223 | 224 | #tabstrip .km-icon:after { 225 | font: 1.3em/1em "Kendo UI" !important; 226 | } 227 | 228 | .revenue:after { 229 | content: "\E08C"; 230 | } 231 | 232 | .spd:after { 233 | content: "\E04B"; 234 | } 235 | 236 | .spr:after { 237 | content: "\E050"; 238 | } 239 | 240 | .share:after { 241 | content: "\E04E"; 242 | } 243 | 244 | #tabstrip .k-tabstrip-items span { 245 | float: left; 246 | line-height: 1.3em; 247 | vertical-align: middle; 248 | } 249 | 250 | #tabstrip .k-tabstrip-items .d-none { 251 | margin-left: 4px; 252 | } 253 | 254 | .market-donut { 255 | display: inline-block; 256 | width: 170px; 257 | } 258 | 259 | #panelbar .k-content { 260 | padding: 1em; 261 | } 262 | 263 | #panelbar ul { 264 | margin-bottom: 10px; 265 | } 266 | 267 | #listview { 268 | list-style-type: none; 269 | padding: 0 0 15px; 270 | } 271 | 272 | #listview .k-listview-content { 273 | display: flex; 274 | flex-wrap: wrap; 275 | margin-left: 40px; 276 | padding-top: 15px; 277 | } 278 | 279 | .k-listview-item { 280 | margin-right: 40px; 281 | } 282 | 283 | #listview figure { 284 | border: 1px solid #e7e7e7; 285 | border-radius: 3px; 286 | padding: 5px; 287 | } 288 | 289 | figure h4 { 290 | font-size: 1.15em; 291 | } 292 | 293 | figure p.d-sm-none { 294 | min-height: 80px; 295 | } 296 | 297 | footer { 298 | text-align: right; 299 | font-size: 0.8571em; 300 | padding: 2em 0; 301 | } 302 | 303 | .hidden-sm { 304 | padding-top: 24px; 305 | } 306 | 307 | .hidden-xs{ 308 | display: none; 309 | } 310 | 311 | @media (max-width: 1400px) { 312 | .k-listview-content { 313 | justify-content: space-evenly; 314 | } 315 | 316 | .hidden-sm { 317 | width: 43%; 318 | } 319 | 320 | #configurator-wrap { 321 | width: 56%; 322 | } 323 | } 324 | 325 | @media (max-width: 996px) and (min-width: 768px) { 326 | .header-description { 327 | padding-top: 0px; 328 | padding-bottom: 0px; 329 | font-size: 16px; 330 | } 331 | 332 | .hidden-sm{ 333 | width: 45%; 334 | } 335 | 336 | #configurator-wrap{ 337 | width: 55%; 338 | } 339 | } 340 | 341 | @media (max-width: 768px) { 342 | .k-menu.k-menu-horizontal .k-item { 343 | float: none; 344 | } 345 | 346 | header .container { 347 | padding-right: 0; 348 | } 349 | 350 | header .container h1 { 351 | padding-top: 0; 352 | line-height: 50px; 353 | } 354 | 355 | header label { 356 | border-width: 1px 0 0 0; 357 | display: block; 358 | } 359 | 360 | #configurator-wrap { 361 | position: absolute; 362 | overflow: hidden; 363 | height: 260px; 364 | right: 0; 365 | top: 64px; 366 | z-index: 1000; 367 | padding: 0; 368 | width: 320px; 369 | } 370 | 371 | #configurator { 372 | background-color: #272727; 373 | position: absolute; 374 | width: 100%; 375 | margin: 0; 376 | } 377 | 378 | .hidden-sm { 379 | width: 60%; 380 | padding-top: 19px; 381 | } 382 | 383 | .header-description { 384 | font-size: 14px; 385 | } 386 | 387 | .container-sm { 388 | height: 62px; 389 | } 390 | } 391 | 392 | @media (max-width: 768px) { 393 | .k-listview-content .img-fluid { 394 | max-width: 80vw; 395 | } 396 | 397 | .header-description { 398 | min-height: 56px; 399 | } 400 | } 401 | 402 | .k-black body, 403 | .k-black .card, 404 | .k-black .card-header, 405 | .k-black .buttons-wrap { 406 | border-color: #444; 407 | background-color: #1e1e1e; 408 | color: #fff; 409 | } 410 | 411 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/favicon.ico -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/images/banner1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/images/banner2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/images/banner3.svg: -------------------------------------------------------------------------------- 1 | banner3b -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/images/banner4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/js/site.js: -------------------------------------------------------------------------------- 1 | // Write your Javascript code. 2 | -------------------------------------------------------------------------------- /Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/js/site.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/telerik/core-bootstrap-demo/d0502add10b9ecf0e58940e6a039cc0c64a21512/Kendo-UI-Bootstrap-Integration/src/Kendo-UI-Bootstrap-Integration/wwwroot/js/site.min.js -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## ASP.NET Core with Twitter Bootstrap - Responsive demo 2 | 3 | This demo page shows how to use [UI for ASP.NET Core](https://www.telerik.com/aspnet-core-ui) alongside [Twitter Bootstrap](https://getbootstrap.com/). 4 | 5 | The grid layout and responsive CSS is provided by Bootstrap, and widgets are provided by Kendo UI. To see the responsive features, you can resize the page or customize it using the pickers on top. 6 | 7 | --------------------------------------------------------------------------------