Compare commits

...

102 Commits

Author SHA1 Message Date
Argo Zhang
27bdfd6e29 release: publish 5.0.12 2021-01-21 21:36:34 +08:00
Argo
4d2c80455c !919 fix(#I2E8RX): WebsiteOptions not work in new Docs system
* refactor: 更新 wasm 模式下配置
* refactor: 更新 wasm 模式下 WebsiteOptions
* feat: 移除 Block Footer
* fix: 增加语法高亮
* wip: 临时移除语法高亮
* fix: 更新加载完成逻辑
* fix: 增加 CanCopy 逻辑判断
* fix: 修复 WebsiteOptions 注入问题
* fix: 修复 WebsiteOption 异常问题
2021-01-21 21:31:44 +08:00
Argo
58d55948a9 !918 docs(#I2E8RX): redesign Docs system
* refactor: 移除 doc 工程
* docs: 更新 logo 图标减小文件大小
* docs: 更新资源文件路径
* feat: 通过资源文件获取文件名称
* chore: 增加文件名资源文件
* docs: 更新 widgets 路由路径
* refactor: 更改 WebsiteOptions 注册方式
* feat: 使用注入服务获取仓库地址
* refactor: 精简代码
* refactor: 移除命名空间
* docs: 移动手写输入到 Samples 文件夹
* refacotr: 移动 Table 示例文档位置
* refactor: 优化代码写法
* refactor: 重新整理文件夹
* style: 微调示例页 Tab 样式
* refactor: 优化 Pre 组件
* style: 更新 Header 样式
* docs: 增加命名空间引用
* docs: 更新介绍文档
* refactor: 增加 ComponentLayout 模板
* refactor: 移除 Example 可为空判断
* refactor: 移除不使用的回调委托
2021-01-21 16:05:38 +08:00
Argo
1db27bd0e3 !917 perf(#I2E2UV): improve SearchText performance in Table component
* docs: 增加搜索查询方法
* feat: 增加 Table 组件搜索文本框的客户端事件
* feat: Table 组件搜索框移除 onkeyup 事件
* docs: 增加 ShowLabel 属性设置
2021-01-20 14:35:45 +08:00
Argo
6c33415d60 !916 feat(#I2E24Y): add GroupBox component
* docs: 增加与 EditorForms 关联
* chore: 移除 from-demo 样式
* docs: EditorForms 使用 GroupBox 示例
* docs: 增加 GroupBox 示例
* chore: 增加 GroupBox 组件样式
* feat: 增加 GroupBox 组件
2021-01-20 12:32:43 +08:00
Argo
ad0dde6a77 !915 perf(#I2E1T9): improve SeachDialog/EditDialog/EditorForm logic
* docs: 调整菜单
* refactor: 更新扩展方法 GenerateColumns 方法
* docs: BindItem Id 列不可以用于查询与编辑
* refactor: 重构 EditorForm 逻辑
2021-01-20 11:31:08 +08:00
Argo
c69602576c !914 fix(#I2DVNZ): fix head not work in project template layout
* Merge branch 'dev' into dev-tab
* fix: 修复滚动条问题
2021-01-19 15:37:39 +08:00
Argo
7c2ed72d90 !913 fix(#I2DTTD): can't click button on Editor paragraph button
* fix: Editor 组件段落 Tooltip 抖动导致无法点击按钮
2021-01-19 15:17:06 +08:00
Argo
fc0cbdf9ab !912 feat(#I2DTKH): add cascading parameter on Layout component and new TabSet property for Tab instance
* chore: 更新版本号
* feat: Layout 组件增加级联参数给自组件使用
2021-01-19 11:00:16 +08:00
Argo
35a9063263 !911 feat(I2DSFW): add Searchs on QueryOption for SearchText
* chore: 更新样式文件
* docs: 更新查询功能文档
* feat: QueryOption 增加 Searchs 属性
* refactor: 拉姆达表达式增加逻辑关系参数
* refactor: 增加 InternalSearchAction 类
* refactor: 更新代码
* docs: 更新图片路径
* refactor: SearchText 更改为可为空类型
2021-01-19 02:20:52 +08:00
Argo
03179ce854 !910 perf(#I2DSFI): improve Tab performance
* docs: 更新 Tab 组件文档
* refactor: Remove 更改为 RemoveTab
* docs: 更新 Add 方法为 AddTab
* refactor: 移除 OnSetTabText 回调委托
* refactor: 重命名 TabItemTextOptions 配置类
* perf: 优化 Tab 按钮性能减少渲染次数
* refactor: 重命名 LayoutDemo 页面
* perf: 重构代码减少 Tab 组件刷新次数
* refactor: 样式 is-active 更改为 active
* refactor: 增加 PreventDefault 属性
* refactor: Tab 公开常用方法
* refactor: 移除级联参数精简逻辑
* feat: 增加 Tab 级联参数给子组件使用
* refactor: 增加 Layout 级联参数作用域
* feat: 公开 Tab 实例
* refactor: 移动部分逻辑到 Layout 组件中
2021-01-19 00:33:35 +08:00
Argo
0e0b4f3753 !909 fix(#I2DIR4): Expression contains add Null check
* refactor: 增加 Issue 跟踪
* docs: 更新 EFCore 示例文档
* fix: Contains 方法增加空判断
2021-01-18 13:18:55 +08:00
Argo
8d27c9f512 !908 fix(#I2DOK0): Tab content add Key word
* fix: 修复 Tab 状态未保持问题
2021-01-18 12:31:30 +08:00
Argo
36173dc1c1 !907 fix(#I2DIR4): Filter expression contains method throw exception
* revert: 恢复字符串包含方法调用
* feat: TableFilter 增加异步支持
* refactor: 增加 static 关键字
2021-01-18 01:20:48 +08:00
Argo-Cloud
6e41983480 chore: update Chart component 2021-01-18 00:16:38 +08:00
Argo
586df7d7a3 !906 fix(#I2DMDH): Chart component throw exception
* release: 发布新版本 5.0.5-beta01
* refactor: 增加 await 关键字
* refactor: 使用 await 关键字
* chore: 更新多语言资源文件
* chore: 移除德语资源文件
2021-01-18 00:13:12 +08:00
Argo
9da9aae4c8 !905 feat(#I2DMC3): Upload component split
* docs: 移除 Events 说明小节
* docs: 格式化文档
* refactor: 更新 ButtonUpload 组件
* refactor: InputUpload 组件
* docs: 更新文档
* docs: 更新示例文档
* refactor: 重构代码
* refactor: 更新 CardUpload 演示示例
* feat: 重构已上传项目样式
* feat: 重构是否显示进度条方法
* feat: 增加 OnFileDelete 默认实现
* feat: InputUpload 支持取消操作
* refactor: 提交代码备份
* feat: 增加 MultipleUploadBase
* refactor: 重构 InputUpload
* feat: 增加 UploadBase 基类
* docs: 更新文档文件
* feat: 拆分 ButtonUpload 组件
* feat: 拆分 ButtonUpload 组件
* feat: 拆分 InputUpload 组件
2021-01-17 23:25:26 +08:00
Argo
a8285ceee0 !904 fix(#I2DFX2): Table row Highlight css not work on odd row
* fix: 行高亮失效
2021-01-16 01:55:25 +08:00
Argo
fb605ab836 !903 fix(#I2DIQD): missing table export javascript
* docs: 增加 Table 导出数据脚本
2021-01-16 00:51:37 +08:00
Argo
18a078b7d0 !902 feat(#I2DIPZ): Upload support Validation feature
* chore: 更新 tooltip 脚本
* docs: 增加示例文档文件
* docs: 更新示例文档
* docs: 增加表单内使用 Upload 组件示例
* feat: 增加 FileValidation 验证标签
* feat: 增加 ToFileSizeString 扩展方法
* docs: 增加资源文件
2021-01-16 00:31:28 +08:00
Argo
27f64b5b6d !901 refactor(#I2DIPY): renove IValidator interface on EqualToValidator
* refactor: 移除 EqualToValidator 接口
2021-01-16 00:29:13 +08:00
Argo
e0cbf7e3df !900 feat(#I2DIPV): add GetAllSubItems method on TreeItem/MenuItem
* fix: MenuItem GetAllSubItems 方法丢失子项
* Merge branch 'dev' into dev-release-tree
* release: publish 5.0.12-beta07
* Merge branch 'dev-tree' into dev-release-tree
* release: publish 5.0.12-beta06
* Merge branch 'dev-tree' into dev-release-tree
* release: publish 5.0.12-beta05
* feat: Tab 组件增加 OnSetTabText 回调委托用于自定义 Tab 标签 Text
* release: publish 5.0.12-beta04
* fix: 修复菜单点击导航时 Tab 忽略大小写问题
* feat: 增加 GetAllSubItems 方法
* fix: 修复 TreeItem 获取子项缺失问题
2021-01-16 00:25:24 +08:00
Argo
ecce016d5b !899 fix(#I2DA62): Tab not work when click MenuItem
* release: publish 5.0.12-beta04
* fix: 修复菜单点击导航时 Tab 忽略大小写问题
2021-01-16 00:17:54 +08:00
Argo
fb1b20cecb !898 perf(#I2DIPM): Alert OnDismiss method change EventCallback to Func
* perf: Alert OnDismiss 更改为 Func<Task> 提高性能
2021-01-16 00:12:51 +08:00
一事冇诚
3e5f8b0132 !897 docs(#I2DGI6): update table export javascript docs
* doc(#I2DGI6): Table 组件导出功能文档增加引用 js 文件说明
2021-01-15 15:54:26 +08:00
紫夜
1daa39c907 !896 docs: update Accept property description on Upload
* Upload文档信息Accept属性描述错误;
2021-01-15 15:51:00 +08:00
Argo
167659efb9 !895 feat(#I2DF15): Drawer css/javascript split
* feat: Drawer 组件拆分样式与脚本
2021-01-15 11:50:56 +08:00
Argo
9dabca417d !894 feat(#I2DEYA): Dialog javascript split
* feat: Dialog 拆分脚本
2021-01-15 11:38:51 +08:00
Argo
84bc83f0cb !893 feat(#I2DETZ): Table Filter javascript split
* feat: TableFilter 拆分脚本
2021-01-15 11:22:48 +08:00
Argo
e678a2f5b8 !892 feat(#I2DEME): Table css/javascript split
* feat: Table 组件拆分样式与脚本
2021-01-15 11:02:18 +08:00
Argo
60307c7477 !891 feat(#I2DEIU): Modal css/javascript split
* refactor: 重构 Modal 组件
* chore: Modal 组件拆分样式与脚本
2021-01-15 10:52:55 +08:00
Argo-Cloud
30d6014347 release: publish 5.0.12-beta03 2021-01-14 19:14:22 +08:00
Argo
f20dc947d2 !890 fix(#I2DA7I): Column.Text not effect when set AutoGernerateColumns true
* fix: 修复设置 AutoGenerateColumn=true 后列设置 Text 失效问题
2021-01-14 19:11:29 +08:00
Argo
65b303b85c !889 feat(#I2DAZN): Add KeepChildrenState property on DialogOption
* docs: 增加子组件是否保持支持
* feat: 增加 KeepChildrenState 支持
* refactor: 增加 KeepChildrenState 属性
* refactor: 移除 KeepChildrenState 属性
2021-01-14 19:01:43 +08:00
Argo
ddfe18403e !888 fix(#I2D9GE): remove tab navigation url case sensitive
* fix: 修复 Tab 地址比较区分大小写问题
2021-01-14 15:49:35 +08:00
Argo-Cloud
780c62779e release: publish 5.0.12-beta01 2021-01-14 15:04:42 +08:00
Argo
6a0f46fe33 !887 fix(#I2D8XN): Rate component missing style
* fix: Rate 组件失效问题
2021-01-14 15:03:39 +08:00
Argo
7ba667ae0c !886 feat(#I2D80L): Scroll css/javascript split
* chore: 移除分号
* chore: 消除警告信息
* chore: 更新打包脚本
* chore: Scroll 组件拆分样式与脚本
* refactor: 移动样式到组件内部
* chore: 更新项目依赖
2021-01-14 14:01:47 +08:00
Argo
16d2a5ea43 !885 chore(#I2D7T0): upgrade extensions version
* chore: 升级版本到 5.0.4 更新依赖
2021-01-14 12:11:37 +08:00
Argo-Cloud
f86eb83f38 release: publish 5.0.11 2021-01-14 11:39:02 +08:00
Argo
01381e6eb0 !884 feat(#I2D7KT): upgrade SDK to 5.0.102
* chore: 更新 skd 包全局设置
* chore: 更新打包脚本
* chore: 更新部署脚本路径
* chore: 更新 github action 脚本 sdk 到 5.0.102
* chore: 升级扩展组件依赖版本到 5.0.10
* chore: 升级 sdk 到 5.0.2
2021-01-14 11:35:31 +08:00
Argo
521ac556eb !883 feat(#I2D2XY): QRCode css/javascript split
* chore: 增加缺失的 Split 样式
* chore: QRCode 拆分样式与脚本
2021-01-13 14:30:45 +08:00
Argo
75c90114cc !882 feat(#I2D2RM): Camera css/javascript split
* chore: Camera 组件拆分样式与脚本
* refactor: 更新 BarcodeReader 脚本
2021-01-13 14:14:13 +08:00
Argo
93b6c762bc !881 feat(#I2D2OT): BarcodeReader css/javascript split
* chore: 拆分 BarcodeReader 样式与脚本
2021-01-13 14:02:36 +08:00
Argo
1ea3b0c557 !880 feat(#I2D2HU): Split css/javascript split
* refactor: 重构 Split 组件
* chore: 拆分 Split 组件样式与脚本
2021-01-13 13:32:24 +08:00
Argo
e512889405 !879 feat(#I2D2FE): Anchor css/javascript split
* chore: Anchor 拆分脚本与样式
* refactor: 消除 Collapse 警告信息
2021-01-13 13:21:02 +08:00
Argo
82efd4c0a3 !878 feat(#I2D2D3): Collapse css/javascript split
* chore: 拆分脚本与样式
* refactor: 重构 Collapse 组件
2021-01-13 13:07:04 +08:00
Argo
5c340a0a5e !877 refactor(I2D2C3): Captcha css/js split
* chore: 移动 javascript 脚本到 lib 中
* refactor: 重构 Captcha 组件
2021-01-13 12:40:58 +08:00
Argo
64ec11a7b2 !876 docs(#I2D29A): update Toast demo docs
* docs: 更新 Toast 文档
2021-01-13 12:07:49 +08:00
Argo
1b6f255e69 !875 refactor(#I2D28X): add key in Upload items
* docs: 更新文档
* feat: 增加 Key 关键字
2021-01-13 12:06:01 +08:00
Argo
7ec9f5465d !874 feat(I2CY8H): Rate css/js split
* docs: 格式化文档
* docs: 格式化文档增加注释
* chore: 拆分样式与脚本
2021-01-12 16:11:16 +08:00
Argo
9ffab94133 !873 feat(#I2CY41): Slider css/js split
* refactor: 移动部分代码到 Slider 组件中
* chore: 拆分脚本与样式
2021-01-12 15:59:04 +08:00
Argo-Cloud
a9ee8e2427 chore: update fork tracker 2021-01-12 13:10:40 +08:00
Argo-Cloud
6fb225ca5f chore: add ignore rules 2021-01-12 12:55:16 +08:00
Argo-Cloud
16caafbf06 chore: update copyright 2021-01-12 12:49:17 +08:00
Argo-Cloud
edd73c7b70 chore: update copyright author 2021-01-12 12:47:08 +08:00
Argo-Cloud
fb0722123e chore: update Nuget key 2021-01-12 12:45:21 +08:00
Argo-Cloud
a82b94bdf8 docs: update Appveyor.yml 2021-01-12 12:40:39 +08:00
Argo
5fc5144de2 !872 docs: update readme docs 2021-01-12 12:33:18 +08:00
Argo
18c8605a81 !871 feat(#I2CTZT): Carousel css/js split
* refactor: 重构代码
* chore: Carousel 组件脚本拆分
2021-01-11 20:01:01 +08:00
Argo
0ffc91d7f5 !870 feat(#I2CQIN): Toast css/js split
* refactor: 更改 ToastBox 初始化方法提高可读性
* fix: 修复 CssBuilder 内部逻辑错误
* chore: Toast 组件脚本拆分
* chore: 更改客户端脚本 api 方法名称
2021-01-11 13:15:07 +08:00
Argo
c8e64e514c !869 feat(#I2CQF0): Message css/js split
* chore: Message 组件脚本跟样式隔离
* refactor: Message 组件重构
2021-01-11 12:37:18 +08:00
Argo
2297c3ed74 !868 feat(#I2CPSW): Editor css/js isolation
* docs: 更新双向绑定示例
* chore: 拆分 css 与 js
2021-01-11 11:21:19 +08:00
Argo
f1b9015f81 !867 docs(#I2CPGT): update issue template and readme.md
* docs: 更新 Issue 模板
* docs: 修复拼写错误
2021-01-11 10:52:40 +08:00
Argo
5e977c739d !866 feat(#I2CMRO): show file format icon on Upload component 2021-01-10 02:21:13 +08:00
Argo
6449e7c018 !865 feat(#I2CMRN): add Accept parameter on Upload component
* docs: 更新示例文档
* docs: 示例文档增加图片过滤功能
* feat: 增加 Accept 属性
2021-01-10 01:58:21 +08:00
Argo
545cf193f0 !864 chore(#I2CLK6): add dotnet bundle task 2021-01-09 15:14:30 +08:00
Argo-Cloud
6107c1b4ad Revert "chore: 更新文件编码与脚本"
This reverts commit 1086f41f3d.
2021-01-10 15:10:11 +08:00
Argo-Cloud
1086f41f3d chore: 更新文件编码与脚本 2021-01-10 13:56:53 +08:00
Argo
d6372f382e !863 docs(#I2CL4V): Upload demo can run on WebAssembly mode
* docs: 兼容 wasm 模式
* refactor: 精简后台任务代码
* refactor: 后台任务对 WebRootPath 赋值
* refactor: 移除 IHttpClientFactory 注入
* refactor: Uploads 示例获取保存路径使用 WebSiteOptions
* chore: 移除对 AspNetCore.App 依赖
2021-01-09 12:22:42 +08:00
Argo
7eb8fd4e87 !862 fix(#I2CKTG): can not close the Dialog when click Cancel button
* fix: 修复 Dialog 模态框下点击取消无法关闭弹窗问题
2021-01-09 10:51:12 +08:00
Argo
9d584ceafa !861 chore(#I2CKSY): fix dotnet bundle can not run issue
* chore: 兼容 mac 系统
* fix: 修复 dotnet bundle 无法运行问题
* chore: 删除工程文件
* refactor: 优化代码
2021-01-09 10:47:59 +08:00
Argo
bb4bc05a30 !860 feat(#I2B5ZI): provider ShowModal method on dialog service
* Merge branch 'dev' into dev-dialog-result
* refactor: 重构 SelectedRowsChanged 调用逻辑
* fix: 修复 ClickToSelect 模式下连击问题
* fix: 修复 SelectedRow 问题
* docs: 完善文档
* docs: 增加关闭拦截演示
* refactor: 更改属性名称增加资源文件
* feat: 更新按钮属性参数名称
* docs: 更新文档增加功能说明
* docs: 增加模态 Dialog 示例
* feat: 设计 Dialog 模态框功能
* fix: 修复 ReturnTask 问题
* feat: 未设置 BodyTemplate 与 Component 时渲染错误
* docs: Dialogs 增加带返回值的弹窗示例
* refactor: 删除 ComplexDialog 组件
* docs: 更新菜单
* docs: 更改 Swal 示例文档
* Merge branch 'dev' into dev-dialog-result
* 增加部分文档
* 修改ComplexDialog,使用DialogService
* 添加复杂对话框
2021-01-08 20:57:59 +08:00
Argo
e61fdc09ec !859 fix(#I2CK1M): bind-SelectedRows not working
* refactor: 重构 SelectedRowsChanged 调用逻辑
* fix: 修复 ClickToSelect 模式下连击问题
* fix: 修复 SelectedRow 问题
2021-01-08 20:56:18 +08:00
Argo-Cloud
d0e9e50754 Revert "!850 创建一个复杂对话框"
This reverts commit 4eaca8c6d5.
2021-01-09 20:51:26 +08:00
j4587698
4eaca8c6d5 !850 创建一个复杂对话框
* 增加部分文档
* 修改ComplexDialog,使用DialogService
* 添加复杂对话框
2021-01-08 20:49:01 +08:00
Argo
2091c47826 !858 feat(#I2CFNM): add ShowProgress feature on Upload component
* docs: 更新头像框模式显示上传进度示例文档
* feat: 头像框模式支持上传进度条
* docs: 更新点击上传显示进度条示例
* feat: ClickToUpload 模式增加 ShowProgress 支持
* docs: 更新上传是否显示进度条示例
* perf: 增加 ShowProgress 判断减少刷新
* refactor: 优化 SaveToFile 方法
* docs: 上传目录增加保存文件示例代码
* feat: 增加 ShowProgress 功能
* release: 发布新版本 5.0.11-beta01
* feat: 增加单个文件上传功能
* feat: 增加 IsSingle 参数
* refactor: 移除 UploadFolder 模式增加  IsDirectory 参数
* docs: 增加 IsCircle 生效说明
* refactor: IsCircle 增加 Avatar 条件判断
* docs: 移除上传 webapi
* docs: 更新示例文档
2021-01-08 02:55:47 +08:00
Argo
7226cf5107 !857 perf(#I2CFMM): use SetKey instead of SetParametersAsync improve performance
* feat: 优化组件是否保存功能
2021-01-08 01:54:11 +08:00
Argo-Cloud
1411c14667 release: 发布新版本 5.0.10 2021-01-07 21:16:14 +08:00
Argo
1a30698fa7 !856 feat(#I2CBP3): redesign Upload component use .net5 InputFile 2021-01-07 11:33:49 +08:00
Argo
74a98a2b73 !855 feat(#I2C6FD): add prev card mode in Upload component
* docs: 格式化文档更新示例文档
* chore: 重命名文件名
* chore: 更新样式
* feat: 增加预览卡片功能
* chore: 移动 Upload 相关脚本到组件文件夹
* Merge branch 'dev' into dev-upload-card
* docs: 增加头像框示例文件
* docs: 增加头像框上传组件示例
* feat: 增加头像框模式
* docs: 增加上传文件夹模式示例文档
* feat: 增加上传文件夹模式
* docs: 增加点击上传模式示例文件
* docs: 增加点击上传示例文档
* feat: 增加点击上传功能
* chore: 打包脚本不输出颜色
* feat: 增加单击上传模式
* chore: 增加 bundle&minifier Cli tool
* docs: 更新 Upload 示例文件
* docs: 更新 Table 示例文件
* style: upload 适配移动端
2021-01-06 12:46:49 +08:00
Argo
42d970791e !854 feat(#I2C66W): add upload avatar mode in Upload component
* Merge branch 'dev' into dev-upload-avatar
* docs: 增加头像框示例文件
* docs: 增加头像框上传组件示例
* feat: 增加头像框模式
* docs: 增加上传文件夹模式示例文档
* feat: 增加上传文件夹模式
* docs: 增加点击上传模式示例文件
* docs: 增加点击上传示例文档
* feat: 增加点击上传功能
* chore: 打包脚本不输出颜色
* feat: 增加单击上传模式
* chore: 增加 bundle&minifier Cli tool
* docs: 更新 Upload 示例文件
* docs: 更新 Table 示例文件
* style: upload 适配移动端
2021-01-06 11:45:24 +08:00
Argo
590f25dc4a !853 feat(#I2C64C): add upload folder feature in Upload component
* Merge branch 'dev' into dev-upload-folder
* docs: 增加上传文件夹模式示例文档
* feat: 增加上传文件夹模式
* docs: 增加点击上传模式示例文件
* docs: 增加点击上传示例文档
* feat: 增加点击上传功能
* chore: 打包脚本不输出颜色
* feat: 增加单击上传模式
* chore: 增加 bundle&minifier Cli tool
* docs: 更新 Upload 示例文件
* docs: 更新 Table 示例文件
* style: upload 适配移动端
2021-01-06 11:37:27 +08:00
Argo
841d83b2fa !852 feat(#I2C63D): add ClickToUpload mode in Upload component
* docs: 增加点击上传模式示例文件
* docs: 增加点击上传示例文档
* feat: 增加点击上传功能
* chore: 打包脚本不输出颜色
* feat: 增加单击上传模式
* chore: 增加 bundle&minifier Cli tool
* docs: 更新 Upload 示例文件
* docs: 更新 Table 示例文件
* style: upload 适配移动端
2021-01-06 11:31:51 +08:00
Argo
e97d8eff21 !851 chore(#I2C62K): disable color output in bundle cli tool
* chore: 打包脚本不输出颜色
2021-01-06 11:29:32 +08:00
Argo
b7afa43a0d !849 chore(#I2BYYP): add bundle&minifier cli tools
* chore: 增加 bundle&minifier Cli tool
2021-01-05 10:01:47 +08:00
Argo
e4b2060651 !848 feat(#I2BUWV): renew Upload component
* Merge branch 'dev' into dev-uploadfile-js-8
* docs: Upload 组件增加 new 标签
* docs: 提交 upload 组件
* feat: 重写 Upload 组件
* docs: 更新资源文件
* fix: 修复 drag 脚本错误
* docs: 更新文档
* chore: 更新脚本
* refactor: 更新 Upload 组件准备重写
* Merge branch 'dev-global' into dev-uploadfile-js-8
* chore: config sdk version to 5.0.101
* Merge branch 'dev' into dev-uploadfile-js-8
* feat: 增加 FileValidationAttribute 标签
* docs: 增加注释
* refactor: 移动 format 跟 guid 到扩展类中
* refactor: 精简项目文件
* refactor: 精简项目文件增加导出脚本
* refactor: 移动导出脚本到 TableExport 工程中
* refactor: 移动 culture 脚本到 share 工程 common 中
* refactor: 集成扩展脚本
* refactor: 拆分扩展脚本
* refactor: 集成 drag 脚本
* refactor: 拆分 drag 脚本
* refactor: 集成 tab 脚本
* refactor: 拆分 tab 脚本
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-05 00:21:13 +08:00
Argo
98e8c3b360 !847 fix(#I2BUVM): InputNumber missing step attribute
* chore: 更新版本 5.0.10-beta05
* fix: 修复 input 未设置 step 问题
2021-01-05 00:05:58 +08:00
Argo
13acf28508 !846 feat(#I2BQ9D): move table export script into extension lib
* Merge branch 'dev' into dev-export-js-6
* refactor: 精简项目文件增加导出脚本
* refactor: 移动导出脚本到 TableExport 工程中
* refactor: 移动 culture 脚本到 share 工程 common 中
* refactor: 集成扩展脚本
* refactor: 拆分扩展脚本
* refactor: 集成 drag 脚本
* refactor: 拆分 drag 脚本
* refactor: 集成 tab 脚本
* refactor: 拆分 tab 脚本
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 12:08:42 +08:00
Argo
304c6ec7d7 !845 feat(#I2BQ94): split extensions scripts in a sperate file
* refactor: move drag into extensions
* Merge branch 'dev' into dev-extensions-js-5
* refactor: 移动 culture 脚本到 share 工程 common 中
* refactor: 集成扩展脚本
* refactor: 拆分扩展脚本
* refactor: 集成 drag 脚本
* refactor: 拆分 drag 脚本
* refactor: 集成 tab 脚本
* refactor: 拆分 tab 脚本
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 11:54:09 +08:00
Argo
fc2937e79e !844 feat(#I2BQ8O): split drag scripts in a sperate file
* Merge branch 'dev' into dev-drag-js-4
* refactor: 集成 drag 脚本
* refactor: 拆分 drag 脚本
* refactor: 集成 tab 脚本
* refactor: 拆分 tab 脚本
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 11:49:06 +08:00
Argo
584683f6e2 !843 feat(#I2BQ8E): split upload scripts in a sperate file
* Merge branch 'dev' into dev-tab-js-3
* refactor: 集成 tab 脚本
* refactor: 拆分 tab 脚本
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 11:46:17 +08:00
Argo
b7d7baaee5 !842 split upload scripts in a sperate file
* Merge branch 'dev' into dev-upload-js-2
* refactor: 集成 longbow.upload 脚本
* refactor: 拆分 longbow.upload 脚本文件
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 11:42:14 +08:00
Argo
951576d1d3 !841 feat(#I2BQ6K): split Captcha scripts in a sperate file
* refactor: 集成 longbow.captcha 脚本
* refactor: 拆分 captcha 脚本到独立文件中
2021-01-04 11:38:13 +08:00
Argo
0a017f4286 !840 fix(#I2BNOV): throw NullReferenceException on AutoRefresh feature sometimes
* release: publish 5.0.10-beta03
* fix: 修复 AutoRefreshCancelTokenSource 为空时抛异常问题
2021-01-04 11:16:04 +08:00
Argo
54334d8912 !839 docs(#I2BN73): update site.css for prevent main area background color changed when switch theme
* style: 增加后台网页模拟器样式
2021-01-03 12:21:26 +08:00
Argo
2b13e540e7 !838 fix(#I2BN61): bind-Value not working on Editor
* release: publish 5.0.10-beta02
* fix: 修复 Editor 双向绑定问题
2021-01-03 12:03:02 +08:00
Argo
daddb07c7e !837 docs(#I2BN40): update extensions version to latest
* docs: 更改 href 位置
* chore: release 5.0.10-beta01
* chore: 扩展组件更新到最新
* chore: 更新依赖组件到 5.0.2
2021-01-03 11:31:53 +08:00
Argo
af385879fe !836 chore(#I2BMPP): update the extension component version
* refactor: 扩展类更新版本
2021-01-02 22:23:22 +08:00
Argo
fae7b14b84 !835 fix(#I2BMMC): fix can't resize column when set ShowTips on column
* docs: add comments for refactor
* fix: 修复列设置 ShowTip 后无法拖动问题
* Revert "!834 fix(#I2BMMC): can't resize column width when set ShowTip …
2021-01-02 21:29:32 +08:00
Argo
9fc8deb46b !834 fix(#I2BMMC): can't resize column width when set ShowTip is true on Column
* refactor: 移除列提示信息逻辑
* refactor: 移除 tooltip 分支
2021-01-02 21:14:48 +08:00
Argo
4cc14bd805 !833 docs(#I2BML5): update BindItem attribute
* refactor: 更新 Validate 标签文本
2021-01-02 20:45:33 +08:00
834 changed files with 10885 additions and 13718 deletions

View File

@@ -4,6 +4,8 @@
.gitignore
.vs
.vscode
.gitee
.github
*/bin
*/obj
**/.toolstarget
**/.toolstarget

8
.gitattributes vendored
View File

@@ -17,7 +17,7 @@
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
@@ -46,9 +46,9 @@
###############################################################################
# diff behavior for common document formats
#
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
@@ -60,4 +60,4 @@
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
#*.RTF diff=astextplain

View File

@@ -1,16 +1,17 @@
### 重现步骤
[请务必填写重现步骤,作者无法重现步骤将无法修复缺陷,此类 Issue 将被标注为无法重现,三天后将会被关闭]
[创建 Issue 后,作者会第一时间响应,请务必认真对待,作者认真对待 Issue 也请提交 Issue 的人认真对待,如创建 Issue 就不理的将会关闭]
### 报错信息
### 组件版本
latest
### 浏览器
all
### 运行模式
- [X] Server Side
- [ ] Web Assembly
- [X] Web Assembly

View File

@@ -17,7 +17,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.101
dotnet-version: 5.0.102
- name: Publish to Nuget
env:

View File

@@ -1,4 +1,4 @@
name: Deploy To Pages
name: Deploy To Pages
on:
push:
@@ -17,7 +17,7 @@ jobs:
- name: Setup .NET Core
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.101
dotnet-version: 5.0.102
- name: Publish wasm
run: |

4
.gitignore vendored
View File

@@ -351,6 +351,6 @@ src/**/*.xml
###### -- Custom Ignore Section, Make sure all files you add to the git repo are below this line -- ######
# Coverage
# Coverage
coverage*.xml
tools/
tools/

View File

@@ -4,7 +4,7 @@
[issuetracker "Gitee-Issue"]
regex = "#(.+?)\\)"
url = "https://gitee.com/LongbowEnterprise/BootstrapBlazor/issues/$1?from=project-issue"
url = "https://gitee.com/LongbowEnterprise/BootstrapBlazor/issues/$1"
[issuetracker "Gitee-Url"]
regex = "([a-zA-z]+://[^\\s]*)"

View File

@@ -1 +1 @@
\.git
\.git

View File

@@ -85,8 +85,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.TableExport
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.Shared", "src\BootstrapBlazor.Shared\BootstrapBlazor.Shared.csproj", "{C63F35FD-FE14-4517-9457-9DA43F0DCB9E}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.Docs", "src\BootstrapBlazor.Docs\BootstrapBlazor.Docs.csproj", "{09F31634-B9A7-4EB3-97D3-8DA5B5210730}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.Server", "src\BootstrapBlazor.Server\BootstrapBlazor.Server.csproj", "{1ED371F3-2B28-4B2D-91B8-0C00DA42CB65}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.WebAssembly.ClientHost", "src\Wasm\BootstrapBlazor.WebAssembly.ClientHost\BootstrapBlazor.WebAssembly.ClientHost.csproj", "{0556D9AB-8673-4248-8817-4D99F4DCC568}"
@@ -135,10 +133,6 @@ Global
{C63F35FD-FE14-4517-9457-9DA43F0DCB9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C63F35FD-FE14-4517-9457-9DA43F0DCB9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C63F35FD-FE14-4517-9457-9DA43F0DCB9E}.Release|Any CPU.Build.0 = Release|Any CPU
{09F31634-B9A7-4EB3-97D3-8DA5B5210730}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{09F31634-B9A7-4EB3-97D3-8DA5B5210730}.Debug|Any CPU.Build.0 = Debug|Any CPU
{09F31634-B9A7-4EB3-97D3-8DA5B5210730}.Release|Any CPU.ActiveCfg = Release|Any CPU
{09F31634-B9A7-4EB3-97D3-8DA5B5210730}.Release|Any CPU.Build.0 = Release|Any CPU
{1ED371F3-2B28-4B2D-91B8-0C00DA42CB65}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1ED371F3-2B28-4B2D-91B8-0C00DA42CB65}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1ED371F3-2B28-4B2D-91B8-0C00DA42CB65}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -173,7 +167,6 @@ Global
{EEB9751A-5C06-4725-8037-FA9C0F140018} = {CD062AB6-244D-402A-8F33-C37DAC5856CC}
{5ED0DD16-1583-4FC3-B2E9-FE5DBA98BD47} = {CD062AB6-244D-402A-8F33-C37DAC5856CC}
{C63F35FD-FE14-4517-9457-9DA43F0DCB9E} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{09F31634-B9A7-4EB3-97D3-8DA5B5210730} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{1ED371F3-2B28-4B2D-91B8-0C00DA42CB65} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{0556D9AB-8673-4248-8817-4D99F4DCC568} = {C8E79F4C-8C55-4E13-96B5-3D2BD6A07B74}
{FFFD2EB7-AE88-4DAD-A825-528B2CEFB4B5} = {C8E79F4C-8C55-4E13-96B5-3D2BD6A07B74}

View File

@@ -1,14 +1,14 @@
<Project>
<PropertyGroup>
<Copyright>Longbow</Copyright>
<Authors>Argo Zhang(argo@163.com)</Authors>
<Company>Longbow</Company>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)src\keys\Longbow.Utility.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<Project>
<PropertyGroup>
<Copyright>Argo Zhang</Copyright>
<Authors>Argo Zhang(argo@163.com)</Authors>
<Company>Longbow</Company>
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>$(MSBuildThisFileDirectory)src\keys\Longbow.Utility.snk</AssemblyOriginatorKeyFile>
</PropertyGroup>
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
</Project>
</Project>

View File

@@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright Argo Zhang (argo@163.com)
Copyright [Argo Zhang] (argo@163.com)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

View File

@@ -24,9 +24,10 @@ English | <a href="README.zh-CN.md">中文</a>
- Supports Progressive Web Applications (PWA).
- Build with C#, a multi-paradigm static language for an efficient development experience.
- .NET Standard 2.1 based, with direct reference to the rich .NET ecosystem.
- Supports NET5. (Server-Side, WASM)
- Seamless integration with existing ASP.NET Core MVC and Razor Pages projects.
## Online Examples
## Online Examples
[![website](https://img.shields.io/badge/China-https://www.blazor.zone-success.svg?color=red&logo=buzzfeed&logoColor=red)](https://www.blazor.zone)
[![website](https://img.shields.io/badge/Github-https://argozhang.github.io-success.svg?logo=buzzfeed&logoColor=green)](https://argozhang.github.io)
@@ -45,6 +46,14 @@ English | <a href="README.zh-CN.md">中文</a>
`dotnet new bbapp`
## Install Bootstrap Blazor Project Template
1. Download Project Template
Microsoft Market [link](https://marketplace.visualstudio.com/items?itemName=Longbow.BootstrapBlazorUITemplate)
2. Double Click **BootstrapBlazor.UITemplate.vsix**
## Import Bootstrap Blazor into an existing project
1. Go to the project folder of the application and install the Nuget package reference
@@ -53,7 +62,7 @@ English | <a href="README.zh-CN.md">中文</a>
2. **Add** the `stylesheet` `javascripts` file to your main index file - `Pages/_Host.cshtml (Server)` or `wwwroot/index.html (WebAssembly)`
**HTML**
**HTML**
```HTML
<!DOCTYPE html>
@@ -68,11 +77,11 @@ English | <a href="README.zh-CN.md">中文</a>
<script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js"></script>
</body>
</html>
```
```
3. Open the `~/Startup.cs` file in the and register the `Bootstrap Blazor` service:
**C#**
**C#**
```csharp
namespace BootstrapBlazorAppName
@@ -82,7 +91,7 @@ namespace BootstrapBlazorAppName
public void ConfigureServices(IServiceCollection services)
{
//more code may be present here
services.AddBootstrapBlazor();
services.AddBootstrapBlazor();
}
//more code may be present here
@@ -120,7 +129,7 @@ To start the wizard, use either of the following approaches
![Andriod](https://img.shields.io/badge/andriod->%3D4.4-success.svg?logo=android)
![oper](https://img.shields.io/badge/opera->%3D4.4-success.svg?logo=opera&logoColor=red)
### Mobile devices
### Mobile devices
![ios](https://img.shields.io/badge/ios-supported-success.svg?logo=apple&logoColor=white)
![Andriod](https://img.shields.io/badge/andriod-suported-success.svg?logo=android)
@@ -132,7 +141,7 @@ To start the wizard, use either of the following approaches
| **Android** | Supported | Supported | N/A | Android v5.0+ supported | Supported |
| **Windows 10 Mobile** | N/A | N/A | N/A | N/A | Supported |
### Desktop browsers
### Desktop browsers
![macOS](https://img.shields.io/badge/macOS-supported-success.svg?logo=apple&logoColor=white)
![linux](https://img.shields.io/badge/linux-suported-success.svg?logo=linux&logoColor=white)
@@ -163,6 +172,6 @@ To start the wizard, use either of the following approaches
## Donate
If this project is helpful to you, please scan the QR code below for a cup of coffee.
If this project is helpful to you, please scan the QR code below for a cup of coffee.
<img src="https://raw.githubusercontent.com/ArgoZhang/Images/master/Donate/BarCode%402x.png" width="382px;" />

View File

@@ -1,4 +1,4 @@
# Bootstrap Blazor Component
# Bootstrap Blazor Component
<a href="README.md">English</a> | <span>中文</span>
@@ -18,10 +18,24 @@ Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:
- 在服务器和客户端之间共享应用逻辑。
- 受益于 .NET 的性能、可靠性和安全性。
- 始终高效支持 Windows、Linux 和 macOS 上的 Visual Studio。
- 支持 Net5
- 以一组稳定、功能丰富且易用的通用语言、框架和工具为基础来进行生成。
本项目是利用 Bootstrap 样式进行封装的 UI 组件库
## 开发环境搭建
1. 安装 .net core sdk 最新版 [官方网址](http://www.microsoft.com/net/download)
2. 安装 Visual Studio 2019 最新版 [官方网址](https://visualstudio.microsoft.com/vs/getting-started/)
3. 获取本项目代码 [BootstrapBlazor](https://gitee.com/LongbowEnterprise/BootstrapBlazor)
## QQ交流群
[![QQ](https://img.shields.io/badge/QQ-795206915-green.svg?logo=tencent%20qq&logoColor=red)](https://shang.qq.com/wpa/qunwpa?idkey=d381355e50ff91db410c3da3eadb081ba859f64c2877e86343f4709b171f28b8)
## 视频教程
B 站视频集锦 [传送门](https://gitee.com/LongbowEnterprise/BootstrapBlazor/wikis/%E8%A7%86%E9%A2%91%E8%B5%84%E6%BA%90?sort_id=3300624)
## 组件
Blazor应用基于组件。 Blazor 中的组件是指 UI 元素,例如页面、对话框或数据输入窗体。
@@ -32,20 +46,23 @@ Blazor应用基于组件。 Blazor 中的组件是指 UI 元素,例如页面
- 可以嵌套和重用。
- 可以作为 Razor 类库或 NuGet 包共享和分发。
### 内置组件
### 内置组件
内置组件 [传送门](https://www.balzor.zone/alerts)
内置组件 [传送门](https://www.blazor.zone/alerts)
## 分支说明
## 分支说明
- master 稳定分支
- dev 开发功能分支
- publish 与演示网站同步
- 其他 均为临时分支
## 演示地址
[![website](https://img.shields.io/badge/linux-https://www.blazor.zone-success.svg?logo=buzzfeed&logoColor=green)](https://www.blazor.zone)
## 演示地址
[![website](https://img.shields.io/badge/Github-https://argozhang.github.io-success.svg?logo=buzzfeed&logoColor=red&color=red)](https://argozhang.github.io)
[![website](https://img.shields.io/badge/linux-https://www.blazor.zone-success.svg?logo=buzzfeed&logoColor=green)](https://www.blazor.zone)
## GVP 奖杯
![项目奖杯](https://images.gitee.com/uploads/images/2021/0112/120620_e596ac3c_554725.png "GVP.png")
## 项目截图
@@ -77,6 +94,6 @@ Blazor应用基于组件。 Blazor 中的组件是指 UI 元素,例如页面
## 捐助
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
如果这个项目对您有所帮助,请扫下方二维码打赏一杯咖啡。
<img src="https://gitee.com/LongbowEnterprise/Pictures/raw/master/WeChat/BarCode@2x.png" width="382px;" />

View File

@@ -1,4 +1,4 @@
version: 3.1.{build}
version: 5.0.{build}
branches:
only:
- master
@@ -10,7 +10,7 @@ init:
environment:
CI: true
Appveyor: true
COVERALLS_REPO_TOKEN:
COVERALLS_REPO_TOKEN:
secure: 5L1b6XqSNTOfU1iZrARo5eUOi1HOleVO3VDCW0pr6yaspgkC5jxL+gBDK0OEY8EI
COVERALLS_REPO_TOKEN_GITLAB:
secure: yPxFQv4kSWtZ7Vvs70bIXDx9IOEEJ9utI3UyZsJGU7rt63gZnHOry0kt9DBMWcwV
@@ -27,7 +27,7 @@ artifacts:
deploy:
- provider: NuGet
api_key:
secure: oRAxWkjeC6lJi4Kks6kacqXxOlIpxFatk9I32HQEFDlA8gy4x4xI7tA905S3ne54
secure: 4GiuikUCa11fxasu2UCmU8bd3exMf46F49wnMlYWjSuWTBXbPpPN5YxRvLwtNcii
username:
secure: RiKaoizWFqvYLGs9oUSI8g==
skip_symbols: true

5
global.json Normal file
View File

@@ -0,0 +1,5 @@
{
"sdk": {
"version": "5.0.102"
}
}

View File

@@ -2,5 +2,5 @@
write-host $cmd -ForegroundColor Cyan
cmd.exe /c $cmd
}
runCmd "dotnet build src\BootstrapBlazor.WebConsole --configuration Release"
runCmd "dotnet build src\BootstrapBlazor.Server --configuration Release"
runCmd "dotnet pack src\BootstrapBlazor --configuration Release"

View File

@@ -5,6 +5,6 @@ git pull
dotnet publish src/BootstrapBlazor.WebConsole -c Release
systemctl stop ba.blazor
\cp -fr ~/BootstrapBlazor/src/BootstrapBlazor.WebConsole/bin/Release/netcoreapp3.1/publish/* /usr/local/ba/blazor
\cp -fr ~/BootstrapBlazor/src/BootstrapBlazor.WebConsole/bin/Release/net5.0/publish/* /usr/local/ba/blazor
systemctl start ba.blazor
systemctl status ba.blazor -l

View File

@@ -1,11 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
</Project>

View File

@@ -1,7 +0,0 @@
<Alert Color="Color.Primary">主要的警告框</Alert>
<Alert Color="Color.Secondary">次要的警告框</Alert>
<Alert Color="Color.Success">成功的警告框</Alert>
<Alert Color="Color.Danger">危险的警告框</Alert>
<Alert Color="Color.Warning">警告的警告框</Alert>
<Alert Color="Color.Info">信息的警告框</Alert>
<Alert Color="Color.Dark">黑暗的警告框</Alert>

View File

@@ -1,7 +0,0 @@
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Primary">主要的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Secondary">次要的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Success">成功的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Danger">危险的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Warning">警告的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Info">信息的警告框</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Dark">黑暗的警告框</Alert>

View File

@@ -1,4 +0,0 @@
<Alert Icon="fa fa-check-circle" Color="Color.Success">成功提示的文案</Alert>
<Alert Icon="fa fa-warning" Color="Color.Warning">警告提示的文案</Alert>
<Alert Icon="fa fa-question-circle" Color="Color.Info">消息提示的文案</Alert>
<Alert Icon="fa fa-times-circle" Color="Color.Danger">错误提示的文案</Alert>

View File

@@ -1,15 +0,0 @@
<Alert ShowBar="true" Color="Color.Info">
<div>消息提示的文案</div>
</Alert>
<Alert ShowBar="true" Color="Color.Success">
<div>成功提示的文案</div>
</Alert>
<Alert ShowBar="true" Color="Color.Primary">
<div>主要的警告框</div>
</Alert>
<Alert ShowBar="true" Color="Color.Warning">
<div>警告的警告框</div>
</Alert>
<Alert ShowBar="true" Color="Color.Danger">
<div>危险的警告框</div>
</Alert>

View File

@@ -1,15 +0,0 @@
<ul class="demo-ul">
<li><Anchor Target="anchor1" Offset="50">Anchor1</Anchor></li>
<li><Anchor Target="anchor2" Offset="50">Anchor2</Anchor></li>
<li><Anchor Target="anchor3" Offset="50">Anchor3</Anchor></li>
<li><Anchor Target="anchor4" Offset="50">Anchor4</Anchor></li>
</ul>
<h4 id="anchor1">Archor1</h4>
<div>@ContentText1</div>
<h4 id="anchor2">Archor2</h4>
<div>@ContentText1</div>
<h4 id="anchor3">Archor3</h4>
<div>@ContentText1</div>
<h4 id="anchor4">Archor4</h4>
<div>@ContentText1</div>

View File

@@ -1 +0,0 @@
<AutoComplete Items="@Items" />

View File

@@ -1 +0,0 @@
<AutoComplete Items="@Items" ValueChanged="@OnValueChanged" />

View File

@@ -1 +0,0 @@
<AutoComplete Items="@StaticItems" NoDataTip="没有找到你想要的数据" />

View File

@@ -1 +0,0 @@
<AutoComplete Items="@StaticItems" IsLikeMatch="true" IgnoreCase="false" />

View File

@@ -1,31 +0,0 @@
<p>前置标签显式规则与 <code>BootstrapInput</code> 组件一致 <a href="inputs">[传送门]</a></p>
<Divider Text="双向绑定显示标签" Alignment="Alignment.Left" style="margin: 2rem 0;"></Divider>
<ValidateForm class="form-inline" Model="@Model">
<div class="row">
<div class="form-group col-12">
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" ShowLabel="true" />
</div>
</div>
</ValidateForm>
<Divider Text="双向绑定不显示标签" Alignment="Alignment.Left" style="margin: 2rem 0;" />
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" ShowLabel="false" />
</div>
</div>
</div>
<Divider Text="自定义 DisplayText" Alignment="Alignment.Left" style="margin: 2rem 0;"></Divider>
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" DisplayText="自定义城市" ShowLabel="true" />
</div>
</div>
</div>
@code {
private Foo Model { get; set; } = new Foo() { Name = "" };
private IEnumerable<string> StaticItems => new List<string> { "1", "12", "123", "1234", "12345", "123456", "abc", "abcdef", "ABC", "aBcDeFg", "ABCDEFG" };
}

View File

@@ -1,11 +0,0 @@
<Avatar Url="images/argo-c.png" IsCircle="true" Size="Size.ExtraLarge" />
<Avatar Url="images/argo-c.png" IsCircle="true" Size="Size.Large" />
<Avatar Url="images/argo-c.png" IsCircle="true" />
<Avatar Url="images/argo-c.png" IsCircle="true" Size="Size.Small" />
<Avatar Url="images/argo-c.png" IsCircle="true" Size="Size.ExtraSmall" />
<Avatar Url="images/argo.png" Size="Size.ExtraLarge" />
<Avatar Url="images/argo.png" Size="Size.Large" />
<Avatar Url="images/argo.png" />
<Avatar Url="images/argo.png" Size="Size.Small" />
<Avatar Url="images/argo.png" Size="Size.ExtraSmall" />

View File

@@ -1,3 +0,0 @@
<Avatar IsCircle="true" IsIcon="true" />
<Avatar IsCircle="true" Url="images/argo-c.png" />
<Avatar IsCircle="true" IsText="true" Text="User"/>

View File

@@ -1,4 +0,0 @@
<Avatar IsCircle="true" IsBorder="true" Url="images/argo-c.png" />
<Avatar IsCircle="true" IsBorder="true" Url="images/argo-c1.png" />
<Avatar IsCircle="true" IsBorder="true" IsIcon="true" Icon="fa fa-tv" />
<Avatar IsCircle="true" IsBorder="true" IsText="true" Text="AZ" />

View File

@@ -1,8 +0,0 @@
<Badge Color="Color.Primary">primary</Badge>
<Badge Color="Color.Secondary">secondary</Badge>
<Badge Color="Color.Success">success</Badge>
<Badge Color="Color.Danger">danger</Badge>
<Badge Color="Color.Warning">warning</Badge>
<Badge Color="Color.Info">info</Badge>
<Badge Color="Color.Dark">dark</Badge>
<Badge Color="Color.Light">light</Badge>

View File

@@ -1,8 +0,0 @@
<Badge IsPill="true" Color="Color.Primary">primary</Badge>
<Badge IsPill="true" Color="Color.Secondary">secondary</Badge>
<Badge IsPill="true" Color="Color.Success">success</Badge>
<Badge IsPill="true" Color="Color.Danger">danger</Badge>
<Badge IsPill="true" Color="Color.Warning">warning</Badge>
<Badge IsPill="true" Color="Color.Info">info</Badge>
<Badge IsPill="true" Color="Color.Dark">dark</Badge>
<Badge IsPill="true" Color="Color.Light">light</Badge>

View File

@@ -1,11 +0,0 @@
<Button Color="Color.Primary">
<i class="fa fa-tv"></i>
<span>主要按钮</span>
<Badge Color="Color.Danger">1</Badge>
</Button>
<div class="badge-widget">
<i class="fa fa-tv"></i>
<Badge Color="Color.Success">
<span style="padding: 0 2px;">8</span>
</Badge>
</div>

View File

@@ -1,34 +0,0 @@
<BarcodeReader OnInit="@OnInit" OnResult="@OnResult" OnStart="@OnStart" OnClose="@OnClose" OnError="@OnError" />
@code {
private Task OnInit(IEnumerable<Camera> devices)
{
var cams = string.Join("", devices.Select(i => i.Label));
Trace?.Log($"初始化摄像头完成 {cams}");
return Task.CompletedTask;
}
private Task OnResult(string barcode)
{
Trace?.Log($"扫描到条码 {barcode}");
return Task.CompletedTask;
}
private Task OnError(string error)
{
Trace?.Log($"发生错误 {error}");
return Task.CompletedTask;
}
private Task OnStart()
{
Trace?.Log($"打开摄像头");
return Task.CompletedTask;
}
private Task OnClose()
{
Trace?.Log($"关闭摄像头");
return Task.CompletedTask;
}
}

View File

@@ -1,15 +0,0 @@
<BarcodeReader ScanType="@ScanType.Image" OnResult="@OnImageResult" OnError="@OnImageError" />
@code {
private Task OnImageResult(string barcode)
{
//Trace2?.Log($"扫描到条码 {barcode}");
return Task.CompletedTask;
}
private Task OnImageError(string err)
{
//Trace2?.Log($"发生错误 {err}");
return Task.CompletedTask;
}
}

View File

@@ -1 +0,0 @@
<BarcodeReader OnResult="@OnImageResult" OnError="@OnImageError" AutoStart="true" />

View File

@@ -1,21 +0,0 @@
<Breadcrumb Value="@DataSource" />
@code {
[NotNull]
private IEnumerable<BreadcrumbItem>? DataSource { get; set; }
/// <summary>
/// OnInitialized 方法
/// </summary>
protected override void OnInitialized()
{
base.OnInitialized();
DataSource = new List<BreadcrumbItem>
{
new BreadcrumbItem("Home", "#"),
new BreadcrumbItem("Library", "#"),
new BreadcrumbItem("Data")
};
}
}

View File

@@ -1,9 +0,0 @@
<Button @onclick="@ButtonClick" Color="Color.Primary">主要按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Secondary">次要按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Success">成功按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Danger">危险按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Warning">警告按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Info">信息按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Dark">黑暗按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Light">高亮按钮</Button>
<Button @onclick="@ButtonClick" Color="Color.Link">链接按钮</Button>

View File

@@ -1,9 +0,0 @@
<Button IsOutline="true" Color="Color.Primary">主要按钮</Button>
<Button IsOutline="true" Color="Color.Secondary">次要按钮</Button>
<Button IsOutline="true" Color="Color.Success">成功按钮</Button>
<Button IsOutline="true" Color="Color.Danger">危险按钮</Button>
<Button IsOutline="true" Color="Color.Warning">警告按钮</Button>
<Button IsOutline="true" Color="Color.Info">信息按钮</Button>
<Button IsOutline="true" Color="Color.Dark">黑暗按钮</Button>
<Button IsOutline="true" Color="Color.Light">高亮按钮</Button>
<Button IsOutline="true" Color="Color.Link">链接按钮</Button>

View File

@@ -1,7 +0,0 @@
<Button Size="Size.ExtraSmall" Color="Color.Primary">超小按钮</Button>
<Button Size="Size.Small" Color="Color.Secondary">小按钮</Button>
<Button Size="Size.None" Color="Color.Info">按钮</Button>
<Button Size="Size.Medium" Color="Color.Success">中等按钮</Button>
<Button Size="Size.Large" Color="Color.Danger">大按钮</Button>
<Button Size="Size.ExtraLarge" Color="Color.Warning">超大按钮</Button>
<Button IsBlock="true" Color="Color.Primary">Block 按钮</Button>

View File

@@ -1,33 +0,0 @@
<Button IsDisabled="true" Color="Color.Primary">主要按钮</Button>
<Button IsDisabled="true" Color="Color.Secondary">次要按钮</Button>
<Button IsDisabled="true" Color="Color.Success">成功按钮</Button>
<Button IsDisabled="true" Color="Color.Danger">危险按钮</Button>
<Button IsDisabled="true" Color="Color.Warning">警告按钮</Button>
<Button IsDisabled="true" Color="Color.Info">信息按钮</Button>
<Button IsDisabled="true" Color="Color.Dark">黑暗按钮</Button>
<Button IsDisabled="true" Color="Color.Light">高亮按钮</Button>
<Button IsDisabled="true" Color="Color.Link">链接按钮</Button>
<Button Text="点击被禁用" OnClick="@ClickButton1" @ref="ButtonDisableDemo" IsDisabled="@IsDisable">
<Tooltip Title="点击按钮后由于被禁用 Tooltip 被销毁" Placement="Placement.Top" Trigger="hover" />
</Button>
<Button Color="Color.Info" Text="点击后使第一个按钮可用" OnClickWithoutRender="@ClickButton2" class="ml-3"></Button>
@code {
private Button ButtonDisableDemo { get; set; }
private bool IsDisable { get; set; }
private void ClickButton1()
{
IsDisable = !IsDisable;
StateHasChanged();
}
private Task ClickButton2()
{
IsDisable = false;
ButtonDisableDemo.SetDisable(false);
return Task.CompletedTask;
}
}

View File

@@ -1,4 +0,0 @@
<div class="btn-group" role="group">
<Button Color="Color.Primary">按钮一</Button>
<Button Color="Color.Success">按钮二</Button>
</div>

View File

@@ -1,2 +0,0 @@
<Button Color="Color.Primary" Icon="fa fa-fa" Text="状态按钮"></Button>
<Button Color="Color.Info" Icon="fa fa-spinner fa-spin fa-fw" Text="进度按钮"></Button>

View File

@@ -1,6 +0,0 @@
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Primary">主要按钮</Button>
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Secondary">次要按钮</Button>
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Success">成功按钮</Button>
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Danger">危险按钮</Button>
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Warning">警告按钮</Button>
<Button ButtonStyle="ButtonStyle.Circle" Icon="fa fa-fw fa-cubes"></Button>

View File

@@ -1,14 +0,0 @@
<WinButton Text="按钮一" OnClick="@ClickButtonShowText"></WinButton>
<WinButton Text="按钮二" OnClick="@ClickButtonShowText"></WinButton>
<div>@ButtonText</div>
@code {
private string ButtonText { get; set; } = "";
private Task ClickButtonShowText(string text)
{
ButtonText = text;
StateHasChanged();
return Task.CompletedTask;
}
}

View File

@@ -1 +0,0 @@
<Calendar ValueChanged="@OnValueChanged" />

View File

@@ -1 +0,0 @@
<Calendar @bind-Value="@BindValue" />

View File

@@ -1 +0,0 @@
<Calendar ViewModel="CalendarViewModel.Week" />

View File

@@ -1,63 +0,0 @@
<Calendar ViewModel="CalendarViewModel.Week">
<tr>
<td class="none"></td>
<td rowspan="4"><div class="less ch">语文</div></td>
<td>数学</td>
<td>语文</td>
<td>数学</td>
<td>英语</td>
<td class="none"></td>
</tr>
<tr>
<td class="none"></td>
<td>数学</td>
<td rowspan="3"><div class="less en">英语</div></td>
<td>数学</td>
<td>英语</td>
<td class="none"></td>
</tr>
<tr>
<td class="none"></td>
<td>数学</td>
<td>数学</td>
<td>英语</td>
<td class="none"></td>
</tr>
<tr>
<td class="none"></td>
<td>数学</td>
<td>数学</td>
<td>英语</td>
<td class="none"></td>
</tr>
<tr>
<td style="background-color: #f8f9fa;" colspan="7">午休</td>
</tr>
<tr>
<td class="none"></td>
<td>数学</td>
<td>语文</td>
<td>英语</td>
<td>数学</td>
<td>英语</td>
<td class="none"></td>
</tr>
<tr>
<td class="none"></td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td class="none"></td>
</tr>
<tr>
<td class="none"></td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td>自习</td>
<td class="none"></td>
</tr>
</Calendar>

View File

@@ -1,37 +0,0 @@
<Camera OnInit="@OnInit" OnStart="@OnStart" OnClose="@OnClose" OnError="@OnError" OnCapture="@OnCapture" />
<Logger @ref="Trace" class="mt-3" />
@code {
private Logger Trace { get; set; }
private Task OnInit(IEnumerable<DeviceItem> devices)
{
var cams = string.Join("", devices.Select(i => i.Label));
Trace?.Log($"初始化摄像头完成 {cams}");
return Task.CompletedTask;
}
private Task OnError(string err)
{
Trace?.Log("发生错误 {err}");
return Task.CompletedTask;
}
private Task OnStart()
{
Trace?.Log("打开摄像头");
return Task.CompletedTask;
}
private Task OnClose()
{
Trace?.Log("关闭摄像头");
return Task.CompletedTask;
}
private Task OnCapture()
{
Trace?.Log("拍照完成");
return Task.CompletedTask;
}
}

View File

@@ -1 +0,0 @@
<Camera ShowPreview="true" />

View File

@@ -1 +0,0 @@
<Camera AutoStart="true" />

View File

@@ -1 +0,0 @@
<Captcha />

View File

@@ -1 +0,0 @@
<Captcha ImagesPath="@ImagesPath" ImagesName="@ImagesName" />

View File

@@ -1 +0,0 @@
<Captcha GetImageName="@GetImageName" />

View File

@@ -1,7 +0,0 @@
<Card style="width: 18rem;">
<CardBody>
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</CardBody>
</Card>

View File

@@ -1,13 +0,0 @@
<Card>
<CardHeader>
Featured
</CardHeader>
<CardBody>
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</CardBody>
<CardFooter>
2 days ago
</CardFooter>
</Card>

View File

@@ -1,13 +0,0 @@
<Card IsCenter="true">
<CardHeader>
Featured
</CardHeader>
<CardBody>
<h5 class="card-title">Special title treatment</h5>
<p class="card-text">With supporting text below as a natural lead-in to additional content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</CardBody>
<CardFooter>
2 days ago
</CardFooter>
</Card>

View File

@@ -1,65 +0,0 @@
<div class="row flex">
<Card Color="Color.Primary" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Primary card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Secondary" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Success card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Success" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Secondary card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Warning" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Warning card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Danger" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Danger card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Info" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Info card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
<Card Color="Color.Dark" Class="ml-3 mt-2" IsCenter="true" style="width: 18rem;">
<CardHeader>
Header
</CardHeader>
<CardBody>
<h5 class="card-title">Dark card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
</CardBody>
</Card>
</div>

View File

@@ -1,10 +0,0 @@
<Carousel Images="@Images" Width="280"></Carousel>
@code {
private IEnumerable<string> Images = new List<string>()
{
"images/Pic0.jpg",
"images/Pic1.jpg",
"images/Pic2.jpg"
};
}

View File

@@ -1 +0,0 @@
<Carousel Images="@Images" Width="280" IsFade="true"></Carousel>

View File

@@ -1,27 +0,0 @@
<Carousel Images="@Images" Width="280" IsFade="true" OnClick="@OnClick"></Carousel>
<Logger @ref="Trace" class="mt-3" />
@code {
/// <summary>
///
/// </summary>
private Logger? Trace { get; set; }
private IEnumerable<string> Images => new List<string>()
{
"_content/BootstrapBlazor.Shared/images/Pic0.jpg",
"_content/BootstrapBlazor.Shared/images/Pic1.jpg",
"_content/BootstrapBlazor.Shared/images/Pic2.jpg"
};
/// <summary>
///
/// </summary>
/// <param name="imageUrl"></param>
/// <returns></returns>
private Task OnClick(string imageUrl)
{
Trace?.Log($"Image Clicked: {imageUrl}");
return Task.CompletedTask;
}
}

View File

@@ -1,22 +0,0 @@
<Chart OnInit="@(() => OnInit(LineDatasetCount, LineDataCount))" />
@code{
private Task<ChartDataSource> OnInit(int dsCount, int daCount)
{
var ds = new ChartDataSource();
ds.Options.XAxes.Add(new ChartAxes() { LabelString = "天数" });
ds.Options.YAxes.Add(new ChartAxes() { LabelString = "数值" });
ds.Labels = Enumerable.Range(1, daCount).Select(i => i.ToString());
for (var index = 0; index < dsCount; index++)
{
ds.Data.Add(new ChartDataset()
{
Label = $"数据集 {index}",
Data = Enumerable.Range(1, daCount).Select(i => Random(20, 37)).Cast<object>()
});
}
return Task.FromResult(ds);
}
}

View File

@@ -1,22 +0,0 @@
<Chart ChartType="ChartType.Bar" OnInit="@(() => OnInit(BarDatasetCount, BarDataCount))" />
@code{
private Task<ChartDataSource> OnInit(int dsCount, int daCount)
{
var ds = new ChartDataSource();
ds.Options.XAxes.Add(new ChartAxes() { LabelString = "天数" });
ds.Options.YAxes.Add(new ChartAxes() { LabelString = "数值" });
ds.Labels = Enumerable.Range(1, daCount).Select(i => i.ToString());
for (var index = 0; index < dsCount; index++)
{
ds.Data.Add(new ChartDataset()
{
Label = $"数据集 {index}",
Data = Enumerable.Range(1, daCount).Select(i => Randomer.Next(20, 37)).Cast<object>()
});
}
return Task.FromResult(ds);
}
}

View File

@@ -1,25 +0,0 @@
<Chart ChartType="ChartType.Pie" OnInit="@(() => OnPieInit(PieDatasetCount, PieDataCount))" />
@code{
private Task<ChartDataSource> OnPieInit(int dsCount, int daCount)
{
var ds = new ChartDataSource();
ds.Options.XAxes.Add(new ChartAxes() { LabelString = "天数" });
ds.Options.ShowXAxesLine = false;
ds.Options.YAxes.Add(new ChartAxes() { LabelString = "数值" });
ds.Options.ShowYAxesLine = false;
ds.Labels = Colors.Take(daCount);
for (var index = 0; index < dsCount; index++)
{
ds.Data.Add(new ChartDataset()
{
Label = $"数据集 {index}",
Data = Enumerable.Range(1, daCount).Select(i => Randomer.Next(20, 37)).Cast<object>()
});
}
return Task.FromResult(ds);
}
}

View File

@@ -1,25 +0,0 @@
<Chart ChartType="ChartType.Doughnut" OnInit="@(() => OnPieInit(DoughnutDatasetCount, DoughnutDataCount))" />
@code{
private Task<ChartDataSource> OnPieInit(int dsCount, int daCount)
{
var ds = new ChartDataSource();
ds.Options.XAxes.Add(new ChartAxes() { LabelString = "天数" });
ds.Options.ShowXAxesLine = false;
ds.Options.YAxes.Add(new ChartAxes() { LabelString = "数值" });
ds.Options.ShowYAxesLine = false;
ds.Labels = Colors.Take(daCount);
for (var index = 0; index < dsCount; index++)
{
ds.Data.Add(new ChartDataset()
{
Label = $"数据集 {index}",
Data = Enumerable.Range(1, daCount).Select(i => Randomer.Next(20, 37)).Cast<object>()
});
}
return Task.FromResult(ds);
}
}

View File

@@ -1,25 +0,0 @@
<Chart ChartType="ChartType.Bubble" OnInit="@(() => OnBubbleInit(BubbleDatasetCount, BubbleDataCount))" />
@code{
private Task<ChartDataSource> OnPieInit(int dsCount, int daCount)
{
var ds = new ChartDataSource();
ds.Options.XAxes.Add(new ChartAxes() { LabelString = "天数" });
ds.Options.ShowXAxesLine = false;
ds.Options.YAxes.Add(new ChartAxes() { LabelString = "数值" });
ds.Options.ShowYAxesLine = false;
ds.Labels = Colors.Take(daCount);
for (var index = 0; index < dsCount; index++)
{
ds.Data.Add(new ChartDataset()
{
Label = $"数据集 {index}",
Data = Enumerable.Range(1, daCount).Select(i => Randomer.Next(20, 37)).Cast<object>()
});
}
return Task.FromResult(ds);
}
}

View File

@@ -1,2 +0,0 @@
<Checkbox TValue="string" State="CheckboxState.Checked" DisplayText="选中" ShowLabel="true"></Checkbox>
<Checkbox TValue="string" State="CheckboxState.UnChecked" DisplayText="未选" ShowLabel="true"></Checkbox>

View File

@@ -1,10 +0,0 @@
<div class="form-inline">
<div class="row">
<div class="form-group col-12 col-md-4">
<Checkbox TValue="string" State="CheckboxState.Checked" IsDisabled="true" DisplayText="选中" ShowLabel="true"></Checkbox>
</div>
<div class="form-group col-12 col-md-4">
<Checkbox TValue="string" State="CheckboxState.UnChecked" IsDisabled="true" DisplayText="未选" ShowLabel="true"></Checkbox>
</div>
</div>
</div>

View File

@@ -1 +0,0 @@
<Checkbox TValue="string" DisplayText="显示文字" ShowAfterLabel="true"></Checkbox>

View File

@@ -1,17 +0,0 @@
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<Checkbox DisplayText="双向绑定" ShowLabel="true" @bind-Value="@BindValue"></Checkbox>
</div>
<div class="form-group col-12">
<BootstrapInput @bind-Value="@BindValue" IsDisabled="true"></BootstrapInput>
</div>
</div>
</div>
@code {
/// <summary>
///
/// </summary>
private bool BindValue { get; set; }
}

View File

@@ -1,18 +0,0 @@
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<Checkbox DisplayText="双向绑定" ShowLabel="true" @bind-Value="@BindValue"></Checkbox>
</div>
<div class="form-group col-12">
<BootstrapInput @bind-Value="@BindValue" IsDisabled="true"></BootstrapInput>
</div>
</div>
</div>
@code {
/// <summary>
///
/// </summary>
private bool BindValue { get; set; }
}
}

View File

@@ -1,20 +0,0 @@
<ValidateForm class="form-inline" Model="@Model">
<div class="row">
<div class="form-group col-12 col-sm-6">
<Checkbox @bind-Value="@Model.BindValue" ShowLabel="true"></Checkbox>
</div>
<div class="form-group col-12 col-sm-6">
<Checkbox @bind-Value="@Model.BindValue" ShowLabel="true" DisplayText="手写标签"></Checkbox>
</div>
</div>
</ValidateForm>
@code {
class Foo
{
[DisplayName("标签文字")]
public bool BindValue { get; set; }
}
private Foo Model { get; set; } = new Foo();
}

View File

@@ -1,35 +0,0 @@
<CheckboxList TModel="Foo" TValue="string" @bind-Value="@Value1" Items="@Items1"
OnSelectedChanged="@OnSelectedChanged"
ValueField="Value" TextField="Text" CheckedField="Checked"></CheckboxList>
@code {
private class Foo
{
public string Text { get; set; } = "";
public int Value { get; set; }
public bool Checked { get; set; }
}
/// <summary>
///
/// </summary>
private IEnumerable<Foo> Items1 { get; set; } = new List<Foo>()
{
new Foo { Text = "Item 1", Value = 1, Checked = true },
new Foo { Text = "Item 2", Value = 2, Checked = false },
new Foo { Text = "Item 3", Value = 3, Checked = true },
new Foo { Text = "Item 4", Value = 4, Checked = false }
};
private string Value1 { get; set; } = "1,3";
private Task OnSelectedChanged(IEnumerable<Foo> items, Foo foo, string value)
{
Trace?.Log($"{foo.Text} - {foo.Checked} Value: {foo.Value} 共 {items.Where(i => i.Checked).Count()} 项被选中 组件绑定值 value{value}");
Trace?.Log($"组件绑定值 Value1{Value1}");
return Task.CompletedTask;
}
}

View File

@@ -1,44 +0,0 @@
<ValidateForm Model="@FooModel">
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<CheckboxList TModel="Foo" TValue="string" @bind-Value="@FooModel.Value" Items="@Items2"
ValueField="Value" TextField="Text" CheckedField="Checked">
<RequiredValidator />
</CheckboxList>
</div>
</div>
<div class="row">
<div class="form-group col-12">
<div class="control-label">绑定值:</div>
<div class="form-control">@FooModel.Value</div>
</div>
</div>
</div>
</ValidateForm>
@code {
private class Model
{
public string Value { get; set; } = "5,8";
}
private Model FooModel { get; set; } = new Model();
private class Foo
{
public string Text { get; set; } = "";
public int Value { get; set; }
public bool Checked { get; set; }
}
private IEnumerable<Foo> Items2 { get; set; } = new List<Foo>()
{
new Foo { Text = "Item 5", Value = 5, Checked = true },
new Foo { Text = "Item 6", Value = 6, Checked = false },
new Foo { Text = "Item 7", Value = 7, Checked = true },
new Foo { Text = "Item 8", Value = 8, Checked = false }
};
}

View File

@@ -1,35 +0,0 @@
<CheckboxList TModel="Foo" TValue="IEnumerable<int>" Items="@Items3" @bind-Value="@Value2"
ValueField="Value" TextField="Text" CheckedField="Checked"></CheckboxList>
<div class="form-inline mt-3">
<div class="row">
<div class="form-group col-12">
<div class="control-label">绑定值:</div>
<div class="form-control">@(string.Join(",", Value2))</div>
</div>
</div>
</div>
<CheckboxList TModel="Foo" TValue="IEnumerable<string>" Items="@Items4" @bind-Value="@Value3"
ValueField="Text" TextField="Text" CheckedField="Checked"></CheckboxList>
@code {
private IEnumerable<Foo> Items3 { get; set; } = new List<Foo>()
{
new Foo { Text = "Item 9", Value = 9, Checked = false },
new Foo { Text = "Item 10", Value = 10, Checked = false },
new Foo { Text = "Item 11", Value = 11, Checked = false },
new Foo { Text = "Item 12", Value = 12, Checked = false }
};
private IEnumerable<Foo> Items4 { get; set; } = new List<Foo>()
{
new Foo { Text = "Item 13", Value = 13, Checked = false },
new Foo { Text = "Item 14", Value = 14, Checked = false },
new Foo { Text = "Item 15", Value = 15, Checked = false },
new Foo { Text = "Item 16", Value = 16, Checked = false },
});
private IEnumerable<int> Value2 { get; set; } = new int[] { 9, 10 };
private IEnumerable<string> Value3 { get; set; } = new string[] { "Item 13", "Item 15" };
}

View File

@@ -1 +0,0 @@
<Circle Value="@CircleValue" />

View File

@@ -1,7 +0,0 @@
<Circle Value="10" Color="Color.Primary" />
<Circle Value="20" Color="Color.Success" />
<Circle Value="30" Color="Color.Info" />
<Circle Value="40" Color="Color.Warning" />
<Circle Value="50" Color="Color.Danger" />
<Circle Value="60" Color="Color.Secondary" />
<Circle Value="70" Color="Color.Dark" />

View File

@@ -1 +0,0 @@
<Circle Value="80" Color="Color.Info" StrokeWidth="5" />

View File

@@ -1,10 +0,0 @@
<Circle Width="250" Value="75" Color="Color.Success" StrokeWidth="10" ShowProgress="false">
<div class="circle-demo">
<h1>42,001,776</h1>
<p>消费人群规模</p>
<span>
总占人数
<i>75%</i>
</span>
</div>
</Circle>

View File

@@ -1,21 +0,0 @@
<Collapse>
<CollapseItems>
<CollapseItem Text="一致性 Consistency">
<div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
<div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
</CollapseItem>
<CollapseItem Text="反馈 Feedback" IsCollapsed="false">
<div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
<div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
</CollapseItem>
<CollapseItem Text="效率 Efficiency">
<div>简化流程:设计简洁直观的操作流程;</div>
<div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
<div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
</CollapseItem>
<CollapseItem Text="可控 Controllability">
<div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
<div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
</CollapseItem>
</CollapseItems>
</Collapse>

View File

@@ -1,21 +0,0 @@
<Collapse ShowArrow="true">
<CollapseItems>
<CollapseItem Text="一致性 Consistency">
<div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
<div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
</CollapseItem>
<CollapseItem Text="反馈 Feedback" IsCollapsed="false">
<div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
<div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
</CollapseItem>
<CollapseItem Text="效率 Efficiency">
<div>简化流程:设计简洁直观的操作流程;</div>
<div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
<div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
</CollapseItem>
<CollapseItem Text="可控 Controllability">
<div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
<div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
</CollapseItem>
</CollapseItems>
</Collapse>

View File

@@ -1,21 +0,0 @@
<Collapse ShowArrow="true" IsAccordion ="true">
<CollapseItems>
<CollapseItem Text="一致性 Consistency">
<div>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;</div>
<div>在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
</CollapseItem>
<CollapseItem Text="反馈 Feedback">
<div>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</div>
<div>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
</CollapseItem>
<CollapseItem Text="效率 Efficiency">
<div>简化流程:设计简洁直观的操作流程;</div>
<div>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</div>
<div>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
</CollapseItem>
<CollapseItem Text="可控 Controllability">
<div>用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;</div>
<div>结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
</CollapseItem>
</CollapseItems>
</Collapse>

View File

@@ -1 +0,0 @@
<Collapse ExpandedText="点击我折叠" CollapsedText="点击我展开">学习让我快乐</Collapse>

View File

@@ -1 +0,0 @@
<Console Items="@Messages" Height="126" />

View File

@@ -1 +0,0 @@
<Console Items="@Messages" Height="126" OnClear="@OnClear" />

View File

@@ -1 +0,0 @@
<Console Items="@ColorMessages" Height="126" OnClear="@OnClear" />

View File

@@ -1 +0,0 @@
<Console Items="@Messages" Height="126" ShowAutoScroll="true" />

View File

@@ -1,13 +0,0 @@
<DatePickerBody IsShown="true" ValueChanged="@DateValueChanged" ShowFooter="false" />
@code {
/// <summary>
///
/// </summary>
/// <param name="d"></param>
private Task DateValueChanged(DateTime d)
{
DateLogger?.Log($"选择的日期为: {d:yyyy-MM-dd}");
return Task.CompletedTask;
}
}

View File

@@ -1,2 +0,0 @@
<DateTimePicker TValue="DateTime" ViewModel="DatePickerViewModel.Date" Value="@(DateTime.Today.AddDays(3 - DateTime.Today.Day))"
MinValue="@(DateTime.Today.AddDays(1 - DateTime.Today.Day))" MaxValue="@(DateTime.Today.AddDays(14 - DateTime.Today.Day))" />

View File

@@ -1 +0,0 @@
<DateTimePicker TValue="DateTime" Value="@DateTime.Today" />

View File

@@ -1,32 +0,0 @@
<DateTimePicker TValue="DateTime?" Value="@BindValue" ValueChanged="@DateTimeValueChanged" Placement="Placement.Right" />
<input class="form-control" @bind="@BindValueString" />
@code{
protected DateTime BindValue { get; set; } = DateTime.Today;
private string BindValueString
{
get
{
return BindValue.HasValue ? BindValue.Value.ToString("yyyy-MM-dd") : "";
}
set
{
if (DateTime.TryParse(value, out var d))
{
BindValue = d;
}
else
{
BindValue = DateTime.Today;
}
}
}
private Task DateTimeValueChanged(DateTime? d)
{
BindValue = d;
DateTimeLogger?.Log($"选择的时间为: {d:yyyy-MM-dd}");
return Task.CompletedTask;
}
}

View File

@@ -1 +0,0 @@
<DateTimePicker TValue="DateTime" ViewModel="DatePickerViewModel.DateTime" />

View File

@@ -1 +0,0 @@
<DateTimePicker TValue="DateTime?" ViewModel="DatePickerViewModel.DateTime" />

View File

@@ -1,5 +0,0 @@
<DateTimePicker TValue="DateTime?" @bind-Value="@BindNullValue" DisplayText="选择时间" ShowLabel="true" />
@code {
private DateTime? BindNullValue { get; set; }
}

View File

@@ -1 +0,0 @@
<DateTimePicker TValue="DateTime" IsDisabled="true" />

View File

@@ -1 +0,0 @@
<DateTimePicker TValue="DateTime" ShowSidebar="true" ViewModel="DatePickerViewModel.DateTime"/>

View File

@@ -1,15 +0,0 @@
<DateTimeRange @bind-Value="@DateTimeRangeValue1" OnConfirm="OnConfirm" />
<Logger @ref="DateLogger" class="mt-3" />
@code {
[NotNull]
private Logger? DateLogger { get; set; }
private DateTimeRangeValue DateTimeRangeValue1 { get; set; } = new DateTimeRangeValue();
private Task OnConfirm(DateTimeRangeValue value)
{
DateLogger?.Log($"选择的时间范围是: {value.Start:yyyy-MM-dd} - {value.End:yyyy-MM-dd}");
return Task.CompletedTask;
}
}

View File

@@ -1,15 +0,0 @@
<DateTimeRange @bind-Value="@DateTimeRangeValue2" />
<div>
@if (DateTimeRangeValue2.Start != DateTime.MinValue)
{
<span>时间范围:</span> @DateTimeRangeValue2.Start.ToString("yyyy-MM-dd");
}
@if (DateTimeRangeValue2.End != DateTime.MinValue)
{
<span> - </span> @DateTimeRangeValue2.End.ToString("yyyy-MM-dd");
}
</div>
@code {
private DateTimeRangeValue DateTimeRangeValue2 { get; set; } = new DateTimeRangeValue();
}

Some files were not shown because too many files have changed in this diff Show More