Compare commits

...

771 Commits

Author SHA1 Message Date
Argo-Tianyi
e487993188 chore: bump version to 5.14.0 2021-10-07 00:12:02 +08:00
Argo
dadca5b529 !1926 feat(#I4CSUM): add OnSetItemClass parameter on Transfer
* doc: 更新 OnSetItemClass 示例
* feat: 增加 OnSetItemClass 回调参数
2021-10-06 16:09:46 +00:00
Argo
f30c87deec !1925 feat(#I4CSU9): add IsKeyboard on Table component
* feat: Table 组件开放弹窗是否支持键盘参数
2021-10-06 16:04:37 +00:00
Nine
9e15e08cf6 !1924 doc(#I4CSQ7): add english translation of inputs page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 Inputs 页面资源文件
2021-10-06 15:27:23 +00:00
Argo
2e3f0cba0a !1923 feat(#I4CSI9): add OnAfterRenderCallback parameter on Table
* chore: bump version to 5.13.2
* doc: 增加 OnAfterRenderCallback 回调说明文档
* feat: 增加参数
* chore: 重命名项目文件夹
* chore: 更新项目文件夹
* feat: 增加 OnAfterRenderCallback 回调
2021-10-06 14:19:10 +00:00
Nine
1a21cf1513 !1922 doc(#I4CSB4): add english translation of floatinglabels page
* doc: 修改错误键名
* doc: 添加 FloatingLabel 资源文件
* doc: 添加 Floatinglabels 页面资源文件
2021-10-06 13:24:01 +00:00
Argo
74c9df7157 !1921 fix(#I4CQ87): throw exception when call WebClientService
* fix: 修复参数错误
2021-10-05 05:07:06 +00:00
Argo
a71c918cea !1920 feat(#I4CQ7U): add Engine property on WebClientService
* doc: 更新客户端信息示例
* feat: 增加 Engine 属性
* chore: 更新客户端引擎信息
2021-10-05 04:29:58 +00:00
Nine
034f5efa5b !1919 doc(#I4CQ7H): add enlish translation of editorforms page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 EditorForms 页面资源文件
2021-10-05 04:15:52 +00:00
Argo
e0073bd0f4 !1918 refactor(#I4CQ5G): remove Microsoft.AspNetCore.Http dependence
* doc: 更新客户端信息示例文档
* refactor: 未登录用户赋值 null
* doc: 更新地址位置文档
* chore: add BootstrapBlazor.Middleware dependence
* chore: remove test branch
* chore: update ci script
* feat: 增加 BootstrapBlazor.Middleware 中间件
* refactor: 组件库移除 UseBootstrapBlazor 中间件
2021-10-05 03:19:09 +00:00
Argo
6fe263eed7 !1917 doc(#I4CPTH): update QQ group status
* doc: 更新 QQ 群状态
* doc: 更新 QQ 群状态
2021-10-04 12:35:01 +00:00
Argo
cbe5746501 !1916 fix(#I4COQ4): ValidateForm SetError method support UnaryExpression
* fix: 自定义设置错误支持 UnaryExpression
2021-10-04 12:28:45 +00:00
Nine
4a92f96e62 !1913 doc(#I4COPH): add english translation of editor page
* doc: 添加 editor 组件资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 Editors 示例资源文件
2021-10-02 14:21:28 +00:00
Argo
a41f005df5 !1915 feat(#I4COGU): add TableSettings for BootstrapBlazorOption
* chore: bump version to 5.13.1
* style: 移除最小宽度样式
* feat: 增加 Table 全局配置类
2021-10-02 06:57:45 +00:00
bdbox
b79b8cf1dd doc(#I4CNYL): update document for Card
* 说明信息不对,在第78行。应该是对success的说明,实际上写成了secondary
2021-10-01 17:07:01 +08:00
Argo
089bc38563 !1912 feat(#I4CLZX): table excel mode support keyboard event
* doc: 增加键盘支持示例
* feat: Table 组件 Excel 模式增加对键盘支持
2021-09-30 07:29:57 +00:00
Argo-Tianyi
b5654c97aa chore: bump version to 5.13.0 2021-09-30 10:28:03 +08:00
Argo
af4e944132 !1911 fix(#I4CK56): filter popup window should be follow scroll
* feat: 增加 excel 模式脚本调用
* fix: 修复有 toolbar 时 filter 弹窗高度不正确问题
2021-09-30 02:18:13 +00:00
Argo-Tianyi
f108ad5aaa fix: use Func<Task> segment 2021-09-28 15:31:42 +08:00
Argo
54dabc7eda !1910 feat(#I4A2L8): add IsReadonlyWhenAdd/Edit parameter on IEditorItem interface
* chore: update bundle style
* Merge remote-tracking branch 'origin/dev' into dev-table
* chore: bump version to 5.12.7
* refactor: 完善继承 IEditorItem 实现类属性
* refactor: 移动只读属性到 IEditorItem 接口
* refactor: ITableColumn 增加新建只读与编辑只读属性
* style: 微调 Search 样式
2021-09-28 07:09:08 +00:00
Argo
31e9b2599c !1909 feat(#I4C8GT): update style for accordion component
* style: 微调手风琴按钮样式
2021-09-28 04:56:21 +00:00
Argo
6649f12895 !1908 fix(#I4C2OZ): make Filter window show in right place when set SearchMode to Top
* chore: bump version to 5.12.6
* doc: 更新 Search 示例
* fix: 修复 Filter 弹窗高度位置问题
2021-09-27 11:38:51 +00:00
Argo
716ef1e699 !1907 feat(#I4C5L3): add --bs-border-color variant
* revert: checkbox style
* Revert "!1904 doc(#I4C1FN): add new sample code for TableColumn"
* style: 微调 checkbox 选中样式
2021-09-27 11:17:03 +00:00
Argo
2f88cd0844 !1906 feat(#I4BGUS): redesign Transfer logic
* doc: 更新示例代码
* refactor: 重构 Transfer 逻辑
2021-09-27 10:47:16 +00:00
Argo
0e814d1150 !1905 feat(#I4C1O2): add IsSearch parameter on EditorForm component
* chore: bump version to 5.12.5
* feat: SearchDialog 更新 IsSearch 参数
* feat: Table 组件搜索表单使用 IsSearch 参数
* refactor: 移除 placeholder 参数
* feat: EditorForm 增加 IsSearch 用于适配 Table 组件中用于 Search 使用
2021-09-27 05:15:55 +00:00
Argo
ef7c61ce64 !1904 doc(#I4C1FN): add new sample code for TableColumn
* Merge branch 'dev' into dev-table
* style: 增加 bs-bg-disabled 变量颜色
* style: 设置示例样式
* refactor: 设置教育列宽度
* feat: 内置 disabled 样式
* refactor: Foo 增加静态方法
* refactor: 微调日期宽度
* refactor: 获取头像链接重构为 Foo 静态方法
* doc: 增加 Table 组件实战示例
* style: Table 组件兼容 Progress 组件
2021-09-27 03:10:54 +00:00
Argo
c5c81b8e50 !1903 feat(#I4BZER): table cell compatible Progress component
* style: 设置示例样式
* refactor: 设置教育列宽度
* feat: 内置 disabled 样式
* refactor: Foo 增加静态方法
* refactor: 微调日期宽度
* refactor: 获取头像链接重构为 Foo 静态方法
* doc: 增加 Table 组件实战示例
* style: Table 组件兼容 Progress 组件
2021-09-26 13:43:54 +00:00
Argo
dcdf029473 !1902 fix(#I4BYML): can't close the ModalDialog use @ref.Close method when write code in razor
* fix: 修复 razor 文件中写好 Modal 二次关闭不响应问题
2021-09-26 10:31:13 +00:00
Argo
bda30dd6c8 !1901 fix(#I4BVG7): menu text wrap in layout when set IsCollapsed to true
* chore: bump version to 5.12.4
* doc: 更新带侧边栏的菜单示例
* style: 更新 Menu 菜单收缩样式
2021-09-26 05:26:39 +00:00
Argo
a79da2013a !1900 chore(#I4BU04): add clean method before bundle css and scripts
* chore: add env variant
* chore: 增加 dotnet bundle 支持
* chore: 增加 --no-color 参数
* chore: 更新脚本增加 clean 命令
* chore: update sdks for 2.1 and 5.0
* chore: update sdks
* chore: update sdks
* chore: update netcore sdk 5.0.x
* chore: update netcore 5.0 sdk
* chore: update netcore 2.1 sdk
* chore: 增加 netcore 2.1 环境安装
* chore: 更新 build action 脚本
* chore: 增加打包脚本运行条件
2021-09-26 02:10:21 +00:00
Argo
cc0e9ac356 !1899 feat(#I4BSY9): add MaintainAspectRatio option on Chart component
* chore: bump version to 5.3.0
* feat: 增加宽高比锁定可配置功能
2021-09-25 14:56:15 +00:00
Argo
fec2dfda43 !1898 feat(#I4BT08): Display support convert bool data type to Switch component
* feat: 生成 Display 组件支持 Switch
* fix: 修复 RenderCell 逻辑增加对 Template 支持
* refactor: 更改 Data 为 Items
2021-09-25 13:59:53 +00:00
Nine
5095964297 !1897 feat(#I4BS60): add a method that get current item of tab
* refactor: 重命名 GetActiveTab 方法
* refactor: 重构 获取当前 tab 方法
* doc: 添加 tab 页面资源文件
* feat: Tab 组件添加获得当前 Tab 的方法
2021-09-25 13:52:30 +00:00
Argo
acee455500 !1896 feat(#I4BONF): filter row support fix column feature
* feat: 过滤行支持固定列功能
* feat: 下拉框增加阴影效果
2021-09-24 16:37:12 +00:00
Argo
3b71e26ace !1895 fix(#I4BR3T): resolve Align not work
* doc: 更新对齐示例
* feat: 修复对齐不生效问题
* feat: 修复 bool 类型默认渲染
2021-09-24 15:22:50 +00:00
Argo
983d3267eb !1894 feat(#I4BR2C): add auto calc table body height function if set IsFixedHeader to true
* chore: 更新打包文件
* feat: 表格容器增加 table-fixed 样式
* doc: 更新表格编辑示例
* feat: 更新固定表头样式逻辑
* feat: Height 参数设定整个组件高度
* chore: 更新固定表头样式与脚本
2021-09-24 14:41:14 +00:00
Argo
0de7205e6e !1893 feat(#I4BPWM): DateTimeRange support only choose Star/End value
* fix: 修复 DateTimeRanger 双向绑定问题
* refactor: 重构 Tabs 字体与滚动条样式
* feat: DateTimeRange 组件支持单选时间自动补全
2021-09-24 09:28:02 +00:00
Argo
1dbac568c6 !1892 feat(#I4BKZ5): add IsFixedHeader parameter on Table component
* chore: bump version to 5.12.1
* refactor: 重构代码提高可读性
* doc:  更新自适应高度示例
* chore:  增加自适应高度算法与样式
* doc: 更新固定表头示例
* feat: 固定表头滚动条更改为自定义样式
* chore: 更新样式与脚本固定表头滚动条更改为自定义
* doc: 更新固定表头示例
* feat: 增加 IsFixedHeader 属性
* refactor: 移除 Obsolete 标签属性
* doc: 更新 ModalDialog 文档注释
2021-09-23 16:13:57 +00:00
Argo
c15a534ca5 !1891 feat(#I4BKZ2): source code link compatible Anchor link
* feat: 增加 hash 识别
2021-09-23 16:09:29 +00:00
Nine
ba2d890289 !1890 feat(#I4BHKQ): add OnValueChanged callback on DateTimeRange component
* fix: 修复 Value 改变时,不触发 OnValueChanged 事件
2021-09-23 09:03:51 +00:00
Argo-Tianyi
e4aed3f152 chore: bump version to 5.12.0 2021-09-23 10:11:50 +08:00
Argo
8ccfa19f50 !1889 fix(#I4BEZN): set the range of DateTime on Initilize
* Merge branch 'dev' into dev-css
* feat: 增加默认文化参数
* fix: 修复 Range 组件未初始化值
* style: 更新 check 样式
2021-09-23 01:09:04 +00:00
Argo
90f5da333c !1888 feat(#I4BEXP): add DefaultCultureInfo parameter on BootstrapBlazorOption
* feat: 增加默认文化参数
2021-09-23 00:57:27 +00:00
Argo
802cc66bc3 !1887 feat(#I4BEXB): add no wrap class for TreeItem
* style: 微调 Tree 长度不折行样式
2021-09-23 00:54:56 +00:00
Argo
840f709320 !1886 fix(#I49905): update Menu component resolve throw exception when set OnClick callback
* chore: bump version to 5.11.4-beta01
* fix: 修复 wasm 模式下有 onclick 导致异常问题
2021-09-22 07:20:31 +00:00
Argo
63d5662343 !1885 feat(#I4BAQS): add max-width style for the label of checkbox
* chore: bump version to 5.11.3
* style: 增加 Checkbox 组件 Label 最大宽度
2021-09-22 06:26:25 +00:00
Argo
b7c40407fc !1884 feat(#I4BB1T): add IsEditable extension method for IEditorItem
* feat: 增加扩展方法 IsEditable 统一组件渲染不可编辑逻辑
2021-09-22 06:06:25 +00:00
Nine
51889debbc !1883 doc(#I49PL9): add english translation of datetimepickers page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 DateTimePickers 页面资源文件
2021-09-22 06:04:04 +00:00
Argo
21937b4ef0 !1882 feat(#I4BAMI): add max height css for MultiSelect component
* style: 更新 MultiSelect 项目过多时自动出现滚动条样式
2021-09-22 04:55:54 +00:00
Argo
04ce42d8b3 !1881 doc(#I4B7W9): update multiple header Sort/Filter sample code
* chore: bump version to 5.11.2
* doc: 更新多表头排序筛选示例
2021-09-21 16:07:42 +00:00
Argo
0334f766c2 !1880 feat(#I4B7W5): set Switch is the default component of bool data type
* doc: 更新示例移除 ComponentType 设置
* refactor: bool 数据类型内置渲染更改为 Switch
2021-09-21 16:03:38 +00:00
Argo-Tianyi
49c487c1df chore: update HandwrittenPage route link 2021-09-21 14:58:25 +08:00
Argo-Tianyi
b898cc6424 doc: update HandWrittenPage link address 2021-09-21 14:52:28 +08:00
Argo-Tianyi
3bb75e68cc chore: add vedio link for excel mode of Table 2021-09-21 14:34:59 +08:00
Argo
6b7ca93002 !1879 fix(#I4B6X8): make the Title of website correct
* chore: 更新组件个数
* doc: 更新 Excel 示例文档
* fix: 修复标题栏未显示问题
2021-09-21 06:20:35 +00:00
Argo
b7bc255049 !1878 feat(#I4B642): Table support OnSaveAsync get data on Excel mode
* doc: 增加 Excel 使用文档
* doc: 更新注释
* doc: 更新示例
* doc: 更新资源文件
* feat: 增加单元格保存逻辑
* feat: 重构 CreateComponentByFieldType 方法
* style: 更新对齐样式
2021-09-21 00:15:42 +08:00
Argo
5b82b5b58e !1877 refactor(#I4B63R): make extensions project can compile
* Revert "chore: bump version to 5.2.1"
* chore: bump version to 5.2.1
* chore: 更新依赖组件
* refactor: 增加缺失的命名空间
* doc: 增加注释
* test: rename Data to Items
2021-09-20 16:02:01 +00:00
Argo-Tianyi
20a9dd4443 chore: upgrade build environment version to 5.0.401 2021-09-21 00:35:55 +08:00
Argo
4774e725b3 !1876 feat(#I4B5NZ): Table support OnQueryAsync get data on Excel mode
* refactor: 微调 SelectedRows 逻辑
* doc: 更新菜单文字
* feat: 增加 Excel 模式删除逻辑
* doc: 更新示例文档
* feat: 更新 Excel 模式下新建按钮逻辑
* doc: 移除 Switch 居中示例
* style: 设置 Excel 模式下 Swtich 默认居中样式
* feat: 新建行数据时增加对 DBNull 处理
* Merge branch 'dev' into dev-select
* doc: Excel 示例拆分为
* feat: Data 更改为 Items
* feat: 更新动态创建组件内部使用 Data 逻辑
* feat: DataTableDynamicContext 完善内部通知机制
* style: 更新样式
* doc: 增加 OnQueryAsync 获取数据源 Excel 模式示例
* feat: 正常绑定模型 Excel 模式增加新建逻辑
* feat: 对齐方式增加 text 支持
* refactor: RowItemsCache 更改为 List
* feat: 只读与不可编辑单元格渲染成 Display 组件
* feat: Excel 模式下禁用斑马线特效
* style: 微调 select 单元格内充满效果
2021-09-20 10:48:49 +00:00
Argo
187293ea26 !1875 feat(#I4B5EO): rename Data to Items on IEditorItem interface
* feat: Data 更改为 Items
2021-09-20 06:22:13 +00:00
Argo
2143376547 !1874 fix(#I4ASEJ): no trigger OnCellRender when set AutoGenerateColumn to true
* fix: 修复开启自动生成列后不触发 OnCellRender 回调问题
2021-09-20 04:10:32 +00:00
Argo
1dc200d9da !1873 feat(#I4B2A3): render enum data type to Select component
* refactor: 精简逻辑
* doc: 增加 bool enum 数据类型示例
* refactor: 恢复代码保持原生逻辑
* style: 微调 Select 在单元格中样式
2021-09-19 05:27:35 +00:00
Argo
09f778fb95 !1872 feat(#I4B23E): render bool data type to Switch component
* doc: 增加设置居中示例
* style: 更新 Switch 样式
* feat: 支持 bool 类型自动转成 Switch
* style: 更新单元格 Switch 样式
2021-09-19 04:38:17 +00:00
Argo
4448baf5cd !1871 feat(#I4B1YM): add Excel mode on Table component
* style: 微调单元格中日历框图标样式
* fix: 增加新建设置默认值逻辑
* feat: 增加新建按钮逻辑
* feat: Row 增加 Column 判断
* style: 微调 UI 与增加注释
* feat: 优化删除性能
* doc: 更新 Excel 示例
* refactor:  改造 Foo 生成方法
* style: 更新 Excel 单元格样式
* feat: 更新单元格渲染逻辑
* refactor:  格式化 文档
* feat: 更新单元格变化逻辑
* feat: 重构 DeleteAsync 方法适配 Excel
* feat: 改造 OnAddAsync  适配 Excel
* feat: 更新增加行后清空已选择逻辑
* chore: bump version to 5.11.2-beta05
* fix: 修复对已删除行保护问题
* chore: bump version to  5.11.2-beta04
* feat:  增加 OnAfterAddRow 和 OnAfterDeleteRow
* chore: bump version to 5.11.2-beta03
* refactor: 使用 Ignore 参数设定主键列不显示
* refactor:  精简代码
* chore: bump version to 5.11.2-beta02
* feat: 更新 DataTableDynamic 动态类型逻辑对 Row 赋值
* chore: bump version to 5.11.2-beta01
* refactor: 更新 Excel 模式支持 动态类型
* doc: 增加 Excel 菜单
* Merge branch 'dev' into dev-excel
* feat: 增加 Excel 模式保存逻辑
* feat: 增加单元格编辑回调委托方法
* style: 调整复选框位置
* style: 微调 Excel 模式下 Switch 组件样式
* style: 标签使用变量进行计算
* style: set Switch vertical center
* style: remove width/display setting
* Merge branch 'dev' into dev-excel
* style: 尝试使用相对定位显示工具栏
* Merge branch 'dev' into dev-excel
* refactor: 本地化注入服务更改为 internal
* doc: 更新地址列使用多行文本框示例
* feat: 增加单元格编辑样式
* doc: 增加 IsExcel 示例
* feat: 增加 IsExcel 模式
2021-09-19 04:07:57 +00:00
Argo
afda3d442c !1870 fix(#I4AEMR): update the transfer panel height when set ShowSearch to true
* chore: 更新打包文件
* Merge branch 'dev' into dev-doc
* chore: bump version to 5.11.1
* doc: 增加锚点链接
* doc: 更新示例文档
* feat: 修复 Transfer 带搜索栏时高度不够问题
* style: 微调布局
2021-09-17 07:33:22 +00:00
Argo
bd6fe4b303 !1869 feat(#I4AIEI): remove mask for Print
* doc: Dialog 中增加锚点链接
* doc: 更新打印文档
* chore: 经验样式与脚本移除遮罩
2021-09-17 06:49:10 +00:00
Argo
4f373ba44b !1868 feat(#I4AET9): PrintButton support in Modal Footer
* scripts: 打印脚本适应 footer
* doc: 更新示例
* scripts: 增加 footer 兼容代码
* feat: 打印按钮支持本页打印
* scripts: 增加弹窗打印逻辑判断
* chore: 更新脚本打印预览时增加遮罩
* doc: 更新弹窗组件打印示例
* doc: 更新打印组件示例
* feat: 增加 PrintButton 功能
* chore: 更新打印组件资源文件
* refactor: 更新打印参数名称
2021-09-16 13:51:49 +00:00
Argo-Tianyi
39d565eab5 chore: bump version to 5.11.0 2021-09-16 17:42:12 +08:00
Nine
cd29c83e4c !1866 fix(#I4ADRK): fix the Transfer similar item moving issue together
* fix: 修复 Transfer 相似项问题
2021-09-16 09:41:50 +00:00
alex_zou
21ad5e5085 !1865 feat(#I4A2K0): add AnchorLink component
* chore: 增加 bb_copyText 方法
* refactor: 移除拷贝代码
* chore: 增加菜单资源文件
* doc: 增加菜单
* feat: 增加自定义样式支持
* style: 微调 Block 组件内 AnchorLink 组件样式
* feat: 增加 AnchorLink 组件
* refactor: 增加无 Hash 保护
* style: 更新 h4 样式
* feat: 增加 Name 锚点名称
* style: 更新样式
* feat: 移除路由改用 JS 实现锚点导航
* revert: 撤销更改改用 js 对路径进行拷贝
* feat: 改造 Block 组件增加文档链接功能
* Merge branch 'dev' into dev-friendly-link-document
* Shared工程添加DocumentLink组件, 整合进Block组件提供点击复制示例链接功能
* issues/I4A2K0 演示文档页面内例子加入[锚点 Anchor]和路由参数连结, 以方便查找文档定位和转发给群友
2021-09-15 16:06:45 +00:00
Xiao
63d5a7718a fix: update OnBeforeSelectedItemChange logic 2021-09-15 13:39:10 +08:00
Argo
0ed87f0830 !1864 fix(#I4A2I2): resolve table throw exception in EditForm mode
* fix: 修复 EditForm 表单模式报异常问题
* chore: 更新 net6 到 RC1
2021-09-15 02:51:19 +00:00
Argo
c24b46cfd7 !1863 feat(#I4A2IW): update OnSaveAsync in extensions lib
* chore: bump version to 5.2.0
* feat: 扩展组件库更新 OnSaveAsync 方法
* test: 修复单元测试
* doc: 更新文档
* doc: 更新 Rows 资源文件
2021-09-14 16:45:34 +00:00
Argo
6a56174d37 !1862 feat(#I4A2IT): add print button on dialog header
* doc: 更新侧边栏菜单状态
* doc: 增加带打印按钮弹窗示例
* style: 更新样式与脚本
* feat: 弹窗增加打印按钮
* feat: 更新 Modal 资源文件
2021-09-14 16:41:39 +00:00
Argo
d15fb011bb !1860 fix(#I49905): resolve throw exception when refresh browser in wasm mode
* chore: bump version to 5.10.8
* fix: 修复二级菜单 wasm 模式下刷新时报错问题
2021-09-14 12:40:19 +00:00
alex_zou
72439d4d85 !1861 fix(#I4A22A): editor item support editable parameter
* update src/BootstrapBlazor/Components/EditorForm/EditorForm.razor.cs.
* update src/BootstrapBlazor/Components/EditorForm/EditorForm.razor.cs.
2021-09-14 12:33:46 +00:00
Argo
0fafb377b3 !1858 feat(#I49VTU): add IsAutoAddNullItem parameter on RadioList component
* doc: 更新绑定可为空类型自动添加空值示例
* feat: 绑定可为空枚举类型时增加自动添加空值参数
2021-09-14 06:35:39 +00:00
Argo
4a278fdb67 !1857 doc(#I49XU4): add TreeItem Template sample code
* doc: 增加 Template 示例
* refactor: ComponentType 更改为私有属性
* refactor: 更新 Title 可为空设置
* refactor: 使用模式匹配
2021-09-14 06:20:03 +00:00
Conway
1f738f7f1c !1856 feat(#I49XU4): remove IsExpanded check
* update src/BootstrapBlazor/Components/Tree/Tree.razor.cs.
2021-09-14 05:48:31 +00:00
Nine
a1ecf140ea !1854 doc(#I49PKV): add english translation of colorpicker page
* Merge branch 'dev' into dev-en-colorpicker
* fix: 修复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 ColorPicker 资源文件
2021-09-14 05:46:14 +00:00
Nine
90266cf89b !1855 feat(#I49XG1): add a select with confirmation
* chore: bump version to 5.10.7
* doc: 调整参数顺序
* doc: 更新带拦截的 Select 示例
* feat: 增加 SwalFooter 等功能
* refactor: SwalOption 移除 Title 默认值
* feat: Select 添加对话框功能
2021-09-14 03:25:29 +00:00
Nine
0f1c748ccd !1853 doc(#I49PKD): add english translation of checkboxlist page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 CheckboxList 资源文件
* fix:修复资源文件
* Merge branches 'dev' and 'dev-en-checkbox' of https://gitee.com/Longbo…
* doc: 添加 Checkboxs 页面资源文件
2021-09-13 11:45:35 +00:00
Argo-Tianyi
6fac8f706f style: set Switch vertical center 2021-09-13 12:59:04 +08:00
Argo-Tianyi
a27593436d style: remove width/display setting 2021-09-13 12:58:57 +08:00
Argo
8661b98e78 !1852 feat(#I49OMD): add InvisibleColumns parameter on DataTableDynamicContext
* chore: bump version to 5.10.6
* feat: 增加不显示列设置
2021-09-12 12:17:29 +00:00
Argo
07b1fe369a !1851 refactor(#I48ZA5): improve performance for BootstrapInout
* refactor: 优化 AutoComplete Search 组件性能
* feat: 增加 BootstrapInput.js
2021-09-12 05:09:35 +00:00
Argo
9e71490792 !1850 feat(#I497FD): update OnDelete callback on Upload component
* doc: 更新示例代码
* feat: Upload 组件 OnDelete 签名变更
2021-09-12 03:52:34 +00:00
Argo
e7878d9757 !1849 fix(#I48PF6): resolve not shown the preview Image on CardUpload component
* chore: 增加忽略规则
* feat: 增加创建文件夹逻辑
* fix: 修复 IsImage 函数
* doc: update doc for TreeItem
2021-09-12 03:35:10 +00:00
Nine
737717a39d !1848 doc(#I49NQ8): add english translation of checkboxs page
* fix:修复资源文件
* Merge branches 'dev' and 'dev-en-checkbox' of https://gitee.com/Longbo…
* doc: 添加 Checkboxs 页面资源文件
2021-09-12 02:48:57 +00:00
Nine
d144927f93 !1846 doc(#I49NKY): add english translation of cascaders page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 Cascader 页面资源文件
2021-09-11 16:06:13 +00:00
Argo
f00b1bfa8e !1847 feat(#I49B4N): add CascadingTree extension method for Tree
* chore: bump version to 5.10.5
* style: Tree 适配 motronic 样式
* refactor: 移除不使用的代码
* feat: 增加树状结构数据级联层次关系
* style: 更新复选框样式
* refactor: 移除过期属性
2021-09-11 16:04:06 +00:00
Argo
3f5abd71ab !1845 feat(#I49MV2): add Template on TreeItem
* feat: TreeItem 增加 Template 模板设置
2021-09-11 13:23:13 +00:00
Argo
31f0082237 !1844 feat(#I49N2N): add IsExtendButtonsInRowHeader
* doc: 更新示例
* refactor: 重命名 IsFrontExtendButtons
* chore: bump version to 5.10.4
* doc: 更新示例
* feat: Table 增加 IsFrontExtendButtons 参数用于指定扩展按钮在前面
2021-09-11 09:41:24 +00:00
Argo
4e1abf9eb5 !1843 fix(#I49N2F): remove Color parameter on BootstrapInputNumber
* fix: 修复 Color 多处定义问题
2021-09-11 09:40:02 +00:00
Argo
3e28361ea1 !1842 feat(#I49MG6): add Color parameter on BootstrapInput
* chore: bump version to 5.10.3
* doc: 文本框增加颜色示例
* feat: 密码框增加颜色设置
* feat: input 组件增加颜色
2021-09-11 07:11:07 +00:00
Argo
1f08fe3d02 refactor: set the IsFixedTab default value to false 2021-09-11 01:11:22 +08:00
Argo
29d9bf7831 doc: add fixed tab sample code 2021-09-11 01:05:37 +08:00
Argo
0ce8d80dc5 style: layout-page compatible motronic theme 2021-09-11 00:52:55 +08:00
Argo
21b3e56038 !1841 feat(#I49LBH): add PlaceHolder parameter on IEditorItem
* chore: bump version 5.10.3-beta01
* feat: 增加对 PlaceHolder 空字符串支持
* feat: 增加 PlaceHolder 参数
2021-09-10 16:17:00 +00:00
Argo
614dfb3a2c !1840 doc(#I49L5B): add document for switch Theme
* chore: bump version to 5.10.2
* chore: 增加主题文档
2021-09-10 13:27:32 +00:00
Argo
bc3ec341e2 chore: set motronic default theme for website 2021-09-10 20:53:55 +08:00
Argo
58942ac6c6 !1839 fix(#I49G5I): reset the SelectRows after Delete items
* doc: 更新 SelectedRows 双向绑定示例
* fix: 删除操作时更新 SelectedRows
2021-09-10 20:34:22 +08:00
Argo
54ccf51dcf !1838 feat(#I48JU5): add ItemChangedType at Table OnnSaveAsync
* doc: 根据最新 Save 更新示例文档
* refactor: 数据服务增加 ItemChangedType 参数
* feat: 更新 SaveAsync 增加 ChangedType 参数逻辑
2021-09-10 20:34:22 +08:00
Argo
5352448ae1 !1837 style(#I49L01): motronic theme build-in component lib
* chore: 更新主题设置
* doc: 增加站点样式
* chore: 集成 motronic 主题到组件库中
2021-09-10 11:48:29 +00:00
Argo
559ad960e5 !1836 fix(#I49HRN): RadioList compatible form inline
* style: radiolist 组件适配 form-inline 模式
2021-09-10 08:52:02 +00:00
Nine
c07e87d2b7 !1835 doc(#I49H7A): add english translation of buttons page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* !1834 feat(#I49FU3): add set on ITableColumn Template
* chore: bump version to 5.10.0
* !1833 feat(#I49D47): add ShowColumns/HiddenColumns on DataTableDynamicContext
* doc: 添加 Buttons 页面资源文件
* doc: Buttons 页面添加资源文件
2021-09-10 04:10:03 +00:00
Argo
57dbfc74c7 !1834 feat(#I49FU3): add set on ITableColumn Template
* chore: bump version to 5.10.1
* feat: ITableColumn Template 参数恢复可写
* revert: QueryData 逻辑
2021-09-09 15:16:18 +00:00
Argo-Tianyi
82e2fee403 chore: bump version to 5.10.0 2021-09-09 15:21:05 +08:00
Argo
30a8d10b7e !1833 feat(#I49D47): add ShowColumns/HiddenColumns on DataTableDynamicContext
* feat: 动态类型增加主键属性
* fix: 修复 OnChanged 方法无 Add 类型问题
2021-09-09 07:19:03 +00:00
Argo
6c93d9f9d5 !1832 refactor(#I48JU5): add Obsolete keyword on OnSaveAsync method
* refactor: 增加 OnSaveAsync 提示信息
* chore: bump version to 5.9.6
* fix: 设置主键不显示不编辑
2021-09-08 13:15:28 +00:00
Argo-Tianyi
ebe942c93a revert: remove the Visible condition in ShowDialog 2021-09-08 16:40:29 +08:00
Argo
e90e31c5ad !1831 feat(#I45H80): improve HandWritten component
* chore: 更新打包样式文件
* Merge remote-tracking branch 'origin/dev' into dev-hw
* Merge branch 'dev' into dev-hw
* feat: 更新脚本准备支持 PC 端签名
* doc: 更新示例
* doc: 更新资源文件
* feat: 更新手写组件逻辑
* refactor: 移动签名组件脚本
* fix: 修复 GoTop 未生效问题
2021-09-08 08:06:52 +00:00
Argo
9ce52b2abd !1830 feat(#I497DN): use variant of border radius on Tab component
* refactor: Tab 组件圆角设置使用变量
* doc: 删除文档
* fix: 修复设置 Editable=false 时仍然显示问题
* test: 更新单元测试
* chore: 更新打包脚本
* Merge branch 'dev' into dev-tab
* chore: 网站样式 圆角设置使用统一变量
2021-09-08 08:03:23 +00:00
Argo
bb90962d37 !1829 feat(#I4968J): add OnChanged callback on DataTableDynamicObjectConetxt
* chore: bump version to 5.9.4
* doc: 移除 CRUD 代码
* feat: 缓存主键
* feat: 弹窗数据增加可见性过滤
* feat: 增加动态类型数据主键
* refactor: 增加重载方法
* refactor: 获取 AutoGnerateColumn 属性时支持继承
* feat: 增加动态类型内置 CURD
* feat: 增加 OnChanged 事件
* refactor: IDynamciObjectContext 增加 CURD 虚方法
2021-09-08 06:23:15 +00:00
Nine
12ab4cfa4c !1828 doc(#I493LC): add english translation of fullscreens page
* doc: 添加 FullScreens 页面资源文件
2021-09-08 01:45:31 +00:00
Nine
bd3631e9b9 !1827 doc(#I4936W): add english translation of autocompletes page
* doc: 添加 AutoCompletes  示例资源文件
2021-09-07 12:46:09 +00:00
Argo
bd4bb54ad7 !1826 feat(#I491KP): add Print component
* doc: 增加打印组件示例
* doc: 增加打印资源
* feat: 增加打印服务
* Merge branch 'dev' into dev-print
* feat: 重构服务增加报错信息
* Merge branch 'dev' into dev-print
* Merge branch 'dev' into dev-print
* feat: 增加打印组件
2021-09-07 08:44:12 +00:00
Argo
9816bbbfa2 !1825 feat(#I4915J): redesign PopupService show error message when not place element on page
* doc: 更新资源文件增加 PopoverConfirm 元素报错信息
* refactor: 调整弹窗组件继承关系
* doc: 更新资源文件
* feat: 重构服务增加报错信息
2021-09-07 08:09:21 +00:00
Argo
ca51e69b82 !1824 feat(#I48ZT0): add BootstrapServiceBase class
* refactor: 重构 BootstrapServiceBase 服务
2021-09-07 06:20:29 +00:00
Argo-Tianyi
36dcd1dabf doc: update tips for Layout component 2021-09-07 13:20:41 +08:00
Argo
d834d2ae00 !1823 feat(#I48Z8I): add OnEnterAsync OnEscAsync parameter on BootstrapInput component
* chore: bump version to 5.9.3
* doc: 增加按钮回调委托示例
* feat: 重构 OnKeyUp 方法
* feat: Input 增加 OnEnterAsync OnEscAsync 回调
2021-09-07 04:56:57 +00:00
Argo
a6ef45f381 !1822 feat(#I48YD1): add IsAutoFocus parameter on BootstrapInput component
* chore: bump version to 5.9.2
* doc: 更新打包脚本
* doc: 搜索组件增加自动获取焦点功能
* doc: 更新 Input 文档
* feat: Input 增加 IsAutoFocus 属性
2021-09-07 02:51:53 +00:00
alex_zou
30caa995eb !1821 feat(#I48WXD): add FullScreen component
* Merge branch 'dev' into dev-alex-FullScreen
* doc: 更新全屏示例
* feat: 增加显示图标切换功能
* feat: 增加重载方法
* chore: 更新全屏示例
* chore: 更新打包脚本
* feat: 增加 FullScreenButton 按钮
* feat: 增加命名空间
* doc: 增加全屏组件示例文档
* doc: 增加全屏组件侧边栏菜单
* chore: 更新打包文件
* doc: 增加全屏组件菜单资源文件
* doc: 更新资源文件
* style: 更改全屏组件背景色为白色
* feat: 改造 FullScreen 组件
* feat: 增加全屏服务
* refactor: 更新 fullscreen 脚本
* 全屏模式组件
2021-09-06 14:46:41 +00:00
Nine
6d5c7fdf47 !1820 doc(#I48WN0): add english translation of page
* doc: 添加 Tabs 页面资源文件
2021-09-06 13:24:34 +00:00
Nine
944256848f !1819 doc(#I48UF9): add english translation of steps page
* doc: 添加 Steps 页面资源文件
2021-09-06 08:02:24 +00:00
Nine
c668cdf4af !1818 doc(#I48SLJ): add english translation of paginations page
* doc: 添加 paginations 页面资源文件
2021-09-06 03:53:47 +00:00
alex_zou
7193fc89b9 !1817 doc(#I48R6Z): update ColorPicker component thumbnail
* Merge branch 'dev' into dev-ColorPicker
* New ColorPicker component Thumbnail
2021-09-06 02:15:29 +00:00
alex_zou
47688dbdac !1807 fixed(#I45H80): refactor HandWrite component
* chore: remove unused scripts
* 优化组件以及示例
* Merge branch 'dev-hw' of https://gitee.com/alexchow/BootstrapBlazor into dev-hw
* Update launchSettings.json
* update src/BootstrapBlazor.Server/Properties/launchSettings.json.
* 手写签名 Handwritten 组件国际化以及优化示例
* Merge branch 'dev' into dev-hw
* Merge remote-tracking branch 'Remote/dev' into dev-hw
* Merge branch 'dev' into dev-hw
* Fix Handwritten手写组件必须页面滚动到顶,否则手写失败  https://gitee.com/LongbowEnterpris…
* up
2021-09-06 02:11:48 +00:00
bdbox
a8e0dd2d77 !1815 doc(#I48PWI):update IWebHostEnviroment to IWebHostEnvironment
* update src/BootstrapBlazor.Shared/Pages/Samples/Uploads.razor.
2021-09-05 12:21:00 +00:00
bdbox
93498b303f !1816 doc(#I48PWI): update PreUrl to PrevUrl
* update src/BootstrapBlazor.Shared/Pages/Samples/Uploads.razor.
2021-09-05 12:19:06 +00:00
Alex Chow
e94ca41be9 !1814 feat(#I48OSE): improve performance for AutoComplete component
* chore: 更新打包脚本
* feat: 更新键盘上下按钮显示候选项逻辑
* refactor: 移除组件服务器端设置 active 样式逻辑
* refactor: 优化滚动条 active 样式脚本
* revert: 移除 launchUrl 配置
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Optimize AutoComplete component UI performance
2021-09-04 22:41:24 +08:00
Nine
87ca0ccf66 !1813 docs(#I48NMF): add english translation of navs page
* doc: add resource file of  Navspage
2021-09-04 12:56:54 +00:00
Nine
15c8f4ca53 !1812 refactor(#I48N1Q): merge resource file of menus page
* refactor: 合并 menus 资源文件
2021-09-04 12:19:37 +00:00
Argo
c12494d0d2 !1809 feat(#I48LZ0): update border radius for Dropdown
* chore: update bundle css
* Merge branch 'dev' into dev-dropdown
* style: dropdown 调整 border-radius
2021-09-03 16:14:27 +00:00
Argo
f3d65f836a !1808 feat(#I48LYO): update transfer style compatible Checkbox
* style: transfer 适配
2021-09-03 16:10:56 +00:00
Argo
f2c10e0bec !1806 doc(#I48KK0): border radius setting use variant
* style: 下拉框边框适配
* style: Table 列控制下拉框适配
* style: 圆角弧度统一使用变量
* style: 统一圆角变量
2021-09-03 09:03:55 +00:00
Argo
9ce8930875 !1805 feat(#I48J0P): add async submit form function on PopConfirmButton component
* chore: bump version to 5.9.1
* doc: 增加表单提交示例
* scripts: 增加表单提交脚本
* feat: 增加表单提交支持
* doc: 增加确认弹窗异步示例
* refactor: 重构异步确认代码
2021-09-03 07:49:45 +00:00
Argo
d12f3d4c1f !1804 doc(#I48J38): TableFilter compatible Motronic theme
* style: TableFilter 适配 Motronic 主题
* refactor: format Dialog sample code
2021-09-03 06:47:45 +00:00
cyss2020
c7d5d99147 !1803 feat(#I48IXV): PopConfirmButton support async Submit
* 确认按钮 异步 按钮 禁用和Lloading
2021-09-03 06:34:41 +00:00
Argo
60dae4bb96 !1802 feat(#I48BJO): MultiSelect compatible in Form
* style: MutlSelect 适配表单弹窗
* style: 客户端验证效果适配 Motronic 主题
2021-09-02 11:16:34 +00:00
Argo
befc8f045d !1801 doc(#I48DRL): add source code link for ColorPicker
* doc: 增加 ColorPickers 页面文档
2021-09-02 08:00:12 +00:00
Argo
e15d603d62 !1800 feat(#I48DOY): popover implement IAsyncDispose interface
* chore: 更新打包脚本
* refactor: 优化 tooltip 显示脚本
* feat: Popover 增加销毁逻辑
2021-09-02 07:54:34 +00:00
Argo-Tianyi
44b812a2aa chore: bump version to 5.9.0 2021-09-02 10:54:18 +08:00
Argo
d1dc009682 !1799 doc(#I48A7O): popover compatible Motronic theme
* style: 增加 Popover 样式
* doc: remove space
2021-09-02 01:43:25 +00:00
Nine
0eb5160b5a !1797 doc(#I489KD): add english translation of gotop page
* doc: 添加 GoTop 页面资源文件
2021-09-02 01:40:23 +00:00
Nine
029c2304f4 !1798 doc(#I489MM): add english translation of Meuns page
* doc:添加 Menus 页面资源文件
2021-09-02 01:39:50 +00:00
Argo-Tianyi
29c06e47ba fix: resove compile failed for steps OnStatusChanged return value 2021-09-01 17:20:24 +08:00
Argo
f61a8a6b0f !1796 feat(#I47W4W): Steps support customer template for render
* refactor: 更改 OnStatusChanged 支持异步
* doc: 更新 Steps 示例
* style: 增加 Steps 样式
* feat: 增加 Step 模板
* refactor: 移除 Step 基类
2021-09-01 04:57:07 +00:00
Argo
f3c6688431 !1795 feat(#I4839H): Search/DateTimePicker/Range compatible Motronic theme
* style: DateTimeRange 适配 Motronic 样式
* style: DateTimePicker 适配 Motronic 主题
* doc: 更新组件页面搜索栏位置样式
2021-08-31 17:11:12 +00:00
Argo
2086430b16 !1794 refactor(#I4839B): refactor scripts for AutoComplete/Search KeyUp event handler
* script: 更新键盘脚本逻辑
* refactor: 更新组件键盘脚本执行逻辑
2021-08-31 17:07:57 +00:00
Nine
a2a1fce080 !1793 doc(#I480CM ): add english translation of dropdown page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc:添加EventTable组件资源文件
* doc:修复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加Dropdown 页面资源文件
2021-08-31 17:05:45 +00:00
alex_zou
253a221207 !1792 chore(#I48383): update Search doc and add auto scroll item on AutoComplete component
* AutoComplete组件scrollelement滚动改为滚动光标停留在第三个item
* 补充 Samples\Searchs 输入即触发IsOnInputTrigger例子属性方法
* AutoComplete组件,按上下按钮,控制items滚动条进度
* 文档 - 项目模板 , 添加 [更新项目模板] & english translation
2021-08-31 16:13:03 +00:00
Nine
dcf868e5e2 !1791 doc(#I47O63): add english translation of breadcrums page
* doc: Breadcrumbs 页面全球化
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 breadcrumbs 页面资源文件
2021-08-31 16:08:50 +00:00
Nine
5148ecacad !1790 doc(#I47O60): add english translation of split page
* doc:修复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加Splits页面资源文件
2021-08-31 07:36:45 +00:00
Argo-Tianyi
55226381b5 doc: add max-height for scroll element 2021-08-31 19:00:44 +08:00
Argo
07c17876ea !1789 doc(#I47ZBQ): fix menu height overflow
* doc: 更新侧边栏高度问题
* doc: 更新 code 样式
* doc: 修复 Layout 示例中 Header 自动隐藏问题
* doc: 更新 Alert 底色
* doc: 更新图片地址链接
2021-08-31 06:18:24 +00:00
Argo
348bf48d5d !1788 doc(#I47YSS): add header auto hide feature
* doc: 更改侧边栏滚动特效增加阅读面积
* doc: 增加实时搜索示例
* refactor: Search 组件恢复 IsOnInputTrigger 参数
* doc: GroupBox 等组件适配 Motronic 主题
* style: MultiSelect 增加 border-radius
2021-08-31 05:20:08 +00:00
Argo
a3012fd55d !1787 revert(#I47YSK): restore OnInputTrigger parameter on Search component
* refactor: Search 组件恢复 IsOnInputTrigger 参数
* doc: GroupBox 等组件适配 Motronic 主题
* style: MultiSelect 增加 border-radius
2021-08-31 05:17:50 +00:00
Argo
0aa78066d1 !1786 feat(#I47YSD): MultSelect GroupBox support Motronic theme
* doc: GroupBox 等组件适配 Motronic 主题
* style: MultiSelect 增加 border-radius
2021-08-31 05:15:57 +00:00
Nine
deef010e49 !1785 doc(#I47O61): add english translation of anchor page
* doc: 添加 Anchor页面资源文件
2021-08-31 05:13:15 +00:00
Argo
0456e62d78 !1784 feat(#I47S34): scroll compatible mobile UI
* chore: bump version to 5.8.4
* doc: 更新 Scrolls 示例底部文字
* fix: 修复移动端 Scrolls 无法滚动问题
* doc: 侧边栏适配移动端
2021-08-30 05:38:29 +00:00
Argo
323a691126 !1783 doc: update menu style of Motronic theme
* style: 更新 Menus 样式
2021-08-30 04:06:13 +00:00
Argo
89d46bc1f8 !1782 doc(#I47RR7): add Warning Toast sample code
* doc: 增加 Warning 示例文档
2021-08-30 04:03:17 +00:00
Argo
958481a8fd !1781 feat(#I47R6I): redesign Checkbox & Radio component
* Merge branch 'dev' into dev-checkbox
* doc: 格式化示例文档
* feat: 增加点击事件
* doc: 更新 RadioList 示例
* feat: 重构 Radio 组件
* refactor: Checkbox 组件默认为最小
* style: 微调 table 表头分割线颜色
* doc: 格式化文档
* chore: code clean up
* doc: 增加 avatars 头像
* feat:  兼容 CheckboxList 组件
* doc: 增加大小示例
* feat: 增加 Size 功能
* feat: 增加禁用与颜色功能
* style: 重构 Checkbox 实现方式
2021-08-30 03:13:28 +00:00
Argo
30d6c9a6f5 !1780 feat(#I47PG2): scroll component support FireFox browser
* style: 侧边栏增加对火狐浏览器支持
* feat: Scroll 滚动条组件增加对 Firefox 浏览器支持
2021-08-29 17:28:09 +00:00
Nine
f9c454946a !1779 doc(#I47O64): add english translation of globalException page
* doc: 修复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 GlobalExecption 页面资源文件
2021-08-29 13:05:05 +00:00
Argo
f831887be0 !1778 feat(#I47P6I): remove javascript from Scroll component
* doc: 更新 Scrolls 示例
* doc: 更新 Scrolls 资源文件
* doc: 更新 Scroll 示例文档
* doc: 更新 MainLayout 滚动条
* refactor: 重构 Scroll 组件
* chore: 更新打包样式与脚本
* chore: 移除 slimscroll 脚本
2021-08-29 12:47:57 +00:00
Argo
868d997b6f !1777 feat(#I47ON9): add warning type Toast
* chore: bump version to 5.8.3
* doc: 更新 Toast 文档
* refactor: 更改 Toast 类型描述
* style: 增加 overflow 样式
* feat: 增加警告信息 Toast 弹窗
* refactor: 移动注入服务到代码中
2021-08-29 06:21:29 +00:00
Argo
c28ae1124f !1776 doc(#I47OK7): do not shown the empty category for components
* doc: 组件总览过滤时不显示空分类
* doc: 优化逻辑不显示空分类数据
2021-08-29 05:13:05 +00:00
Argo
ab0c97b494 !1775 feat(#I47OJA): click item will trigger OnSearch callback on Search component
* doc: 更新文档移除 IsOnInputTrigger
* refactor: 移除IsOnInputTrigger 参数
* doc: code clean up
* feat: 点击选项时触发搜索
* refactor: code clean up
2021-08-29 04:41:29 +00:00
Nine
3f54a9f943 !1774 doc(#I47OJ8): remove the component character from Coms' resource file
* doc: 修改Coms资源文件
2021-08-29 04:39:30 +00:00
Nine
d953f2dada !1773 doc(#I47O02): add english translation of coms page
* doc: 添加全球化
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加Coms页面资源文件
2021-08-29 04:04:06 +00:00
Argo
492258a1aa !1772 feat(#I47NY8): add IsOnInputTrigger parameter on Search component
* chore: bump version to 5.8.2
* style: 增加合并单元格样式
* doc: 增加示例
* feat: Search 组件增加 IsOnInputTrigger 参数
2021-08-28 12:39:20 +00:00
Argo
061a406fa0 !1771 feat(#I47B83): add motronic theme
* chore: 更新主题选择脚本
* style: 增加 Table 样式
* style: 增加分页组件样式
* style: 增加 toast 组件样式
* style: 增加 modal 样式
* style: 统一设置 border-radius
* style: 增加 alert 样式设置
* refactor: border 样式
* Merge branch 'dev' into dev-motronic
* feat: 增加默认 motronic 样式设置
* refactor: 恢复 badge 默认颜色
* style: 更新按钮样式
* feat: 增加 motronic 样式
2021-08-28 07:07:53 +00:00
Argo
b0ab806a67 !1770 doc(#I47N44): add pulse transition for theme choose button
* doc: 增加主题选择动画
2021-08-28 07:06:22 +00:00
Argo
e793459db8 !1769 feat(#I47IHJ): get browser info from client user agent
* doc: 增加设备与语言信息
* feat: 浏览器信息使用客户端进行解析
2021-08-27 08:16:44 +00:00
Argo
5d81747bd2 !1767 refactor(#I47F4K): improve column list dropdown on Table componennt
* doc: Table 示例增加 Complete 列
* refactor: 自定义模板示例移除列调整设置
* doc: 更新 Dropdown 示例说明文档
* refactor: 增加点击网页自动关闭展开 ColumnList 弹窗脚本
* refactor: 更新 ColumnList 下拉菜单右对齐
2021-08-26 14:05:26 +00:00
Argo
8c83af43c0 !1766 feat(#I47CN0): multi-select add overflow ellipsis style
* style: 增加 MultiSelect 组件项目超长截取样式
2021-08-26 11:33:07 +00:00
Argo
23e465487e !1765 feat(#I47BAA): Split remove align center style
* doc: 更新 Split 组件示例增加高度 100% 设置
* style: 移除 Split 组件默认居中的设置
2021-08-26 09:14:00 +00:00
Nine
de1d38fb1b !1763 doc(#I47945): add english translation of skeleton page
* fix: 修复skeleton资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc:添加Skeleton页面资源文件
2021-08-26 02:18:07 +00:00
Nine
267f3dfbab !1762 doc(#I4793M): add english translation of row page
* fix: 修复row资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加row示例资源文件
2021-08-26 02:13:20 +00:00
Nine
4ff49aa5d6 !1761 doc(#I4793I): add english translation of footer page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* fix: 修复footer资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 Footer示例资源文件
2021-08-26 02:09:07 +00:00
Argo-Tianyi
7590e907d3 chore: bump version to 5.8.0 2021-08-26 19:05:32 +08:00
Nine
5004c525b2 !1760 doc(#I4793D): add english translation of layout page
* fix: 修复layout资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 Layout 示例文档的资源文件
2021-08-26 02:03:06 +00:00
Nine
03a13323c9 !1759 doc(#I4792X): add english translation of driver page
* fix: 修复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc:添加 Dividers 资源文件
2021-08-26 01:58:44 +00:00
Nine
c8ec341769 !1764 doc(#I47949): add english translation of scroll page
* doc: 添加Scorlls页面资源文件
2021-08-25 16:34:48 +00:00
Argo
5e5e0b992d !1758 feat(#I478VK): Dropdown support cascade update function
* chore: bump version to 5.7.5
* doc: 更新 Dropdown 级联示例
* feat: Dropdown  重构
2021-08-25 12:55:37 +00:00
Argo
f0122901e3 !1757 fix(#I47619): InputNumber support inline mode
* Merge branch 'dev' into dev-input
* doc: 更新 Number 组件在表单内使用示例
* style: 更新表单内 number 组件样式
2021-08-25 06:38:34 +00:00
Argo
f66a5ae7ba !1756 refactor(#I475YT): make all component IsDisabled property and disabled class name to same
* refactor: 统一 Disabled 属性
* refactor: Toggle disabled 样式优化
* refactor: Slider 统一使用 is-disabled 样式
* refactor: MultiSelect 组件使用 is-disabled 样式
* refactor: Rate 组件统一使用 is-disabled 样式
* refactor: Editor 组件移除样式
* refactor: DateTimePicker 样式更改 is-disabled
* refactor: TreeItem Disabled 属性更改为 IsDisabled
* doc: 更新 Cascaders 示例
* refactor: Menu 组件内部使用 is-disabled 样式
* refactor: 精简 btn 样式
* refactor: DateTimeRange 统一 is-diabled 样式
* refactor: Checkbox 精简样式
* refactor:  DatePicker  组件时间范围单元格样式
* refactor:  DatePicker 组件统一 IsDisabled 样式
* refactor: 统一 Disabled 参数
2021-08-25 06:34:29 +00:00
Nine
c3f602626f !1755 doc(#I474TS):fix localization of template page
* fix: 修复template页面本地化
2021-08-25 03:25:06 +00:00
Argo-Tianyi
3d94ed7c00 chore: add namespaces 2021-08-25 02:24:03 +08:00
Argo
2b7112653c !1754 feat(#I4720Q): add location services
* chore: bump version to 5.7.4
* doc: 增加自定义扩展文档
* doc: 增加 Locator 菜单
* refactor: 调整 IPLocatorOption 内部参数
* refactor:  移除 IPLocator 服务注入更改到 BootstrapBlazor
* refactor: 日志增加 IP 地址
* chore: 移动文件
* doc: 增加编码注意事项
* feat: 增加本地连接解析
* feat: 根据最新百度接口更新类结构
* chore: 增加编码支持
* doc: 增加 Locator 示例
* feat: 增加 Locator 配置回调委托
* refactor: 重构代码消除提示信息
* chore: 增加 Http 包依赖
* feat: 增加接口实现类
* feat: 增加 IPLocator 服务注入
* feat: 增加 AddIPLocator 服务注入代码
* feat: 增加 StringExtensions 扩展方法
* feat: 增加 IPLocator 相关接口定义
* refactor: 更改日志 Key 值
2021-08-24 10:12:14 +00:00
Argo-Tianyi
2cfd040561 doc: update the json configuration file 2021-08-23 14:24:19 +08:00
Argo
4b806e7aa4 !1753 fix(#I46SK8): add dispose interface on WebClientService
* fix: 修复 WebClient 切换时报错问题
* chore: bump version to 5.7.3
* doc: 移动示例文件到 Samples 文件夹
2021-08-23 06:02:57 +00:00
Argo
ef49c5f942 !1752 doc(#I46S3X): add document for global exception
* Merge branch 'dev' into dev-error
* doc: 增加全局异常说明
* feat: 增加 Log 重载方法
* feat: BlockLogger 支持 Html
* doc: 更新代码文档链接
* doc: 更新示例文档
* chore: 更新依赖
* chore: 更新脚本
* refactor: 重构 WebClientInfo 实现思路
* doc: 增加全局异常文档
* doc: 增加全局异常
* doc: 移动 Labels 网页
* doc: 恢复 alerts 示例
* refactor: 增加系统架构信息
* refactor: rename mac to OSX
* feat: 增加 OS 信息显示
* doc: 更新示例
* feat:  增加 IBlazorLogger 接口
* feat: 增加 Logger 组件
* refactor: Logger 更改为 BlockLogger
2021-08-23 04:33:31 +00:00
Argo
59eff7ee1a !1751 doc(#I46RO1): add document for WebClientService
* doc: 增加客户端信息文档
* doc: 增加 Client 文档
* doc: 更新示例文档
* chore: 更新依赖
* chore: 更新脚本
* refactor: 重构 WebClientInfo 实现思路
2021-08-23 03:38:27 +00:00
william19941994
67cb77d230 !1750 feat(#I46Q07): BootstrapInput support IsGroup parameter
* update src/BootstrapBlazor/Components/Input/BootstrapInput.razor.
2021-08-23 01:25:26 +00:00
Argo
d70a236164 !1748 feat(#I46PJD): add global exception handler component
* doc: 增加全局异常文档
* doc: 增加全局异常
* doc: 移动 Labels 网页
* doc: 恢复 alerts 示例
* refactor: 增加系统架构信息
* refactor: rename mac to OSX
* feat: 增加 OS 信息显示
* doc: 更新示例
* feat:  增加 IBlazorLogger 接口
* feat: 增加 Logger 组件
* refactor: Logger 更改为 BlockLogger
2021-08-22 17:08:38 +00:00
Argo
ec6218e8c1 !1747 fix(#I46OBU): textarea element not fill the width in Dialog body
* chore: bump version to 5.7.2
* chore: 打包脚本与样式
* style: 微调 inline 模式下 textarea 组件宽度
* feat: 重构 Textarea 组件结构
2021-08-22 03:34:36 +00:00
Argo
e58110fbbd !1746 doc(#I46ODL): add inline sample code for Labels
* doc: 增加 inline 方式示例
* chore: 更新资源文件
2021-08-22 03:08:49 +00:00
Argo
7dedf997d6 !1745 doc(#I46OD7): update en json resource file
* Merge branch 'dev' into dev-doc
* chore: 更新打包文件
* doc: use markup string instead of string
* fix: replace HostFile parameter
* doc: rename class name in json file
2021-08-22 03:06:03 +00:00
Argo
856d9a88b4 !1744 feat(#I46OD7): add WebClientInfo component
* chore: update bundle file
* Merge branch 'dev' into dev-client
* doc: 更新示例
* refactor: 重构获取 IP 地址服务
* chore: 获取 IP  更改为异步
* chore: 更新代码格式化配置信息
* refactor: 更改服务名称
* refactor: 更改路径
* refactor: 更改组件名称
* doc: 增加 WebClient 组件
* feat: ip.axd 支持反向代理
* refactor: 移动文件到组件文件夹内
* feat: 增加 ip.axd 中间件
* doc: 更新文档对应关系
* doc: 增加 WebClient 示例
* style: 更新 display 样式
* chore: 增加依赖
* feat: 增加 IWebClientContext 服务
* feat: 增加 UserAgent 过滤类
* feat: 增加 IP 扩展方法
* feat: 增加 IWebClientContext 接口
2021-08-22 03:01:48 +00:00
Argo
2f4eddc66e !1743 fix(#I46MR7): Menu first load expand all menu item
* fix: 修复 Menu 与手风琴效果冲突问题
2021-08-21 04:32:46 +00:00
Argo
9a4b99f4b2 !1742 fix(#I46M8C): not render after click Close button on EditDialog in Table component
* doc: 更新 Table 文档
* fix: 修复点击新建按钮后取消时未刷新 Table 问题
2021-08-21 01:11:49 +00:00
Argo
dadf9e004f !1741 feat(#I46JDE): add ComponentParameters on IEditorItem interface
* feat: IEditorItem 增加 ComponentParameters 参数
2021-08-20 07:09:51 +00:00
Argo
e268a637b5 !1740 feat(#I46FEW): add IsBottom parameter on Menu component
* chore: bump version to 5.7.1
* doc: 更新底栏文档说明
* doc: 增加底栏示例
* chore: 更新打包文件
* feat: TopMenu 增加 IsBottom 判断
* feat: 删除   BottomMenu
* doc: 增加底栏示例
* style: 增加底栏样式
* feat: Menu 组件增加 IsBottom 参数
* feat: 增加 BottomMenu 组件
2021-08-19 14:08:43 +00:00
Argo
c7ca3a162f !1739 fix(#I46FE5): not clear the selected items when set Value is empty
* style: 更新清空操作示例
* fix: 修复双向绑定值为空时不进行清空操作问题
2021-08-19 14:06:06 +00:00
Argo-Tianyi
22fc37261f chore: bump verson to 5.7.0 2021-08-19 09:05:43 +08:00
Argo
138d960e6c !1738 feat(#I4699U): add default background color for Display when inside form
* style: 增加表单中 Display 组件背景色
2021-08-18 16:10:09 +00:00
Argo
28b5e6de96 !1737 feat(#I4697U): table toolbar show text when not set icon parameter on mobile
* feat: 移动端 Toolbar 未设置图标时显示文字
2021-08-18 15:18:48 +00:00
Nine
a6e15e4fbd !1736 doc(#I4667Y): add english translation of FormLabel page
* fix: 移除重复资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加 label示例资源文件
2021-08-18 08:56:03 +00:00
Argo
0c81400946 !1735 doc(#I461WW): update sample code for ValidateForm
* chore: bump version to 5.6.8
* doc: 更新 Table 组件 SearchMode 文档
* doc: 更新 ValidateForm 示例文档
2021-08-17 10:38:03 +00:00
Argo
f1ac4a8208 !1734 feat(#I461UK): add SearchMode parameter on Table
* Merge branch 'dev' into dev-search
* doc: 更新搜索功能体验
* doc: 增加 Search 相关说明
* feat: 增加 ShowSearchButton 可单独控制搜索按钮
* feat: 更新默认搜索样式增加 Card
* doc: 更新搜索栏提示信息
* style: 更新样式
* refactor: 移除对 Editable 的过滤
* feat: 增加 SearchMode 参数
* feat: EditorForm 增加 Items 参数用于接收指定列
2021-08-17 10:29:21 +00:00
Argo
660399107e !1733 feat(#I45YF4): add Items parameter on EditorForm
* feat: EditorForm 增加 Items 参数用于接收指定列
2021-08-17 04:21:44 +00:00
Argo
c8582e6ce0 !1732 feat(#I45X3W): add ShowCardView parameter for manual switch the TableRenderMode
* doc: 更新显示视图示例
* feat: 增加 ShowCardView 按钮
2021-08-17 02:13:43 +00:00
Argo
47238cec36 !1731 doc(#I45WXS): rename RenderTableModel to RenderTableMode
* refactor: rename ActiveRenderModel to ActiveRenderMode
* refactor: 纠正单词拼写错误 Model 更改为  Mode
2021-08-17 02:00:35 +00:00
Argo
d0c115568b !1730 fix(#I45VIZ): not show popup window after set IsDisabled from true to false
* doc: IsDisabled 参数默认更改为 true
* feat: DateTimeRange 组件禁用时也执行客户端脚本
2021-08-16 15:37:36 +00:00
Argo
a83141311e !1729 fix(#I45VCK): DateTimePicker dynamic support Disabled parameter
* doc: 更新禁用默认值
* doc: 更新文档
* fix: 修复 DateTimePicker 组件开启后再禁用时仍然弹出日期框问题
2021-08-16 14:39:33 +00:00
Argo
7fddfead03 !1728 fix(#I45VC8): popup window when set enable then disable
* fix: 修复组件启用后禁用仍弹出对话框
2021-08-16 14:15:11 +00:00
Argo
77271460f5 !1727 fix(#I45QNP): dispose popover instance after hide
* fix: 修复删除按钮未选择时仍弹出确认框
2021-08-16 12:35:36 +08:00
Argo
965a636c8a !1726 fix(#I45N52): throw exception when call GetAllStrings
* chore: bump version to 5.6.6
* feat: GetAllStrings 兼容第三方组件
* refactor: 增加 GetAllStrings 逻辑
* refactor: 格式化代码
* refactor: 调整资源文件读取顺序
2021-08-15 15:59:44 +00:00
Argo
51fe6e79d1 !1725 fix(#I45N4T): resolve can't insert new row when set IsTracking to true in EditInCell mode
* fix: 修复 InCell 模式下无法新建问题
2021-08-15 15:58:14 +00:00
Argo
b7b2b0b67f !1724 refactor(#I44MWD): remove readonly from Items property on Tree component
* feat: 更新逻辑保证示例可用
* wip: refactor Tree component
2021-08-15 03:34:18 +00:00
Argo
c861bd5c34 !1723 feat(#I45L4I): support Nullable enum data type when AutoGenerateTemplate
* doc: 更新示例文档增加 Row="3" 设置示例
* refactor: InCell 编辑模式使用 Display 渲染只读列
* revert: 移除自动创建组件对 Readonly 兼容代码
* doc: 修复示例说明 Select 默认项问题
* doc: 地址字段增加默认值
* doc: 新建时对只读字段进行默认值赋值
2021-08-15 03:27:38 +00:00
Argo
21857beb44 !1721 feat(#I45IO4): Select component support Nullable enum data type in AutoGenerateTemplate method
* chore: bump version to 5.6.5
* refactor: revert data type to IEnumerable
* feat: 重构表单自动生成逻辑增加对可为空枚举类型支持
* refactor: change Items data type to List
2021-08-14 09:08:36 +00:00
Argo
06a43f914f !1720 fix(#I451AE): show in wrong place when set Filterable to true and set Height
* fix: 修复固定表头并开启数据过滤功能时弹窗位置不正确问题
2021-08-14 05:01:14 +00:00
Argo
0322772ff5 !1719 fix(#I45H57): localization function compatible CentOS/WSL host
* chore: bump version to 5.6.4
* fix: 修复 wsl 环境缺失文化时组件显示不正确问题
2021-08-13 16:58:00 +00:00
Argo
2c2820b5f9 !1718 fix(#I45GV8): resolve show toast when not provider OnSaveAsync method on IsTracking mode
* chore: bump version to 5.6.3
* fix: 修复 Add Edit Delete 逻辑
2021-08-13 21:02:18 +08:00
Argo
da945de399 !1717 feat(#I45DE4): add IsTracking parameter on Table component
* chore: 更新版本到 5.6.2
* doc: 更新 IsTracking 模式示例
* feat: 增加 IsTracking 参数用于跟踪模型
* doc: 增加关闭按钮资源文件
2021-08-13 05:34:27 +00:00
Argo-Tianyi
825f1f32ae fix: add namesapce for BootstrapInput component 2021-08-13 11:04:05 +08:00
Argo
1dbf520197 !1716 feat(#I45B26): add FloatingLabel component
* doc: 更新示例
* doc: 增加悬浮标签示例
* feat: 移除前置标签
* refactor: 重构代码
* doc: 增加 FloatingLabel 示例
* feat: 增加 FloatingLabel 组件
* refactor: 更改类型可继承
2021-08-13 02:39:01 +00:00
Nine
38921a64ee !1714 doc(#I458BW): add english translation of installwasm and installserver page
* doc: 修复文档
* doc: 修复资源文件丢失 ‘}’ 问题
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: InstallServer InstallWasm页面添加资源文件
2021-08-12 16:05:08 +00:00
Argo
97d239e1e4 !1715 feat(#I458DK): DynamicDataTableContext add DBNull process logic
* fix: 增加对 DBNull 的处理逻辑
* feat: 更改第二个回调参数为可选参数
2021-08-12 14:42:48 +00:00
Argo-Tianyi
c8fe737903 fix: add missing namespace 2021-08-12 16:44:42 +08:00
Argo
0064372daf !1713 feat(#I4567F): add HeaderTemplate on ModalDialog/Dialog component
* doc: 更新说明文档
* chore: 更新版本号 5.6.1
* doc: 增加自定义Header模板复杂示例
* feat: 增加 HeaderTemplate
2021-08-12 08:36:01 +00:00
Argo-Tianyi
f257533179 chore: bump version to 5.6.0 2021-08-13 00:21:23 +08:00
Argo
936326b4c1 !1712 fix(#I453H8): resolve set enabled to false not work in EditDialog
* doc: 格式化文档
* doc: 增加 EditDialog 弹窗示例
* fix: 修复 EditDialog 未判断 Enaable 参数问题
2021-08-12 04:11:19 +00:00
Argo-Tianyi
9be042d5cc Revert "!1707 doc(#I4515X): add english translation of localization page"
This reverts commit 6231e2e017.
2021-08-12 12:35:51 +08:00
Jacheers
9c0f2f80d9 !1711 【轻量级 PR】:doc: update Blazor word
* InstallContent.razor文件第24行“Blazor App”误为“Blazozr App”
2021-08-11 16:24:50 +00:00
Argo
906831033a !1710 chore(#I451BN): update the project settings for dependence version
* chore: 更新项目文件
2021-08-11 16:17:26 +00:00
Argo
2196238b8b !1709 feat(#I450PE): add index parameter method of ActiveTab on Tab component
* doc: 增加 ActiveTab 示例
* feat: 增加 ActiveTab 方法
* feat: support align in table cell
2021-08-11 16:12:32 +00:00
Argo
9315bd2409 !1708 feat(#I451B7): switch support align parameter inside table cell
* feat: support align in table cell
2021-08-11 16:07:24 +00:00
Nine
6231e2e017 !1707 doc(#I4515X): add english translation of localization page
* Merge branch 'dev-en-localizer' of https://gitee.com/LongbowEnterprise…
* doc: 本地化文档添加资源文件以
* doc: 本地化文档添加资源文件以
2021-08-11 16:02:36 +00:00
Argo
4fa6c1916b !1706 feat(#I450MD): upgrade bootstrap css framework to v5.1
* doc: 更新更新日志路径
* chore: 更新配置文件依赖组件版本号使用通配符
* chore: 更新打包文件
* chore: 更新依赖版本号
* style: 增加 color 最大宽度样式
* chore: 移除字体设置
* chore: 移除 sourceMap 链接
* chore: 移除 map 文件
* chore: add map files
* chore: update bootstrap to 5.1
2021-08-11 11:13:32 +00:00
Argo
deab1c60b5 !1705 fix(#I44WS2): resolve dialog flash after click button inside popup window
* fix: 修复点击弹窗中按钮后闪烁问题
* chore: remove abstractions dependence
2021-08-11 04:31:45 +00:00
Argo
37e4f2e094 !1704 chore(#I44WDE): upgrade framework version to 5.0.9
* chore: 更新依赖为 5.0.9
* chore: 更新脚本升级 sdk 版本 400
2021-08-11 03:24:34 +00:00
Argo
673ff3f2b9 !1703 fix(#I44W1K): resolve popup confirm dialog flash after second click
* fix: 修复 PopupConfirm 按钮多次点击按钮失效问题
2021-08-11 02:58:46 +00:00
Argo
1c8f8d118b !1702 perf(#I44V2G): upgrade to net6.0 preview7
* chore: upgrade net6.0 preview7
2021-08-11 01:46:09 +00:00
Argo
1346b55e1b !1701 feat(#I44TYN): add NullSwitch component support Nullable<bool>
* chore: bump version to 5.5.4
* doc: 增加 NullSwitch 组件示例
* doc: 更新示例
* feat: 新增 NullSwitch 组件支持可为空 Switch 组件
* refactor: 移动部分属性到 Toggle 类中
2021-08-10 13:00:41 +00:00
Argo
72107cf2f7 !1700 feat:(#I44QUY): don't show the label front input in table cell under ValidateForm
* style: 增加 Table 组件内置到 form 中的样式
* doc: 更新表单中使用 Table 示例
2021-08-10 07:10:47 +00:00
Argo
d3da06b63f !1699 fix(#I44N03): not reset checkbox state when client add button
* fix: 修复点击新建按钮后行选中状态未清除问题
2021-08-09 16:31:56 +00:00
Argo
85539cfc27 !1698 fix(#I44MZ9): can't click add/edit button after click delete button
* chore: bump  version to 5.5.3
* refactor: 重构代码
* fix: 增加 d-none 样式修复点击删除按钮后无法点击新建按钮问题
2021-08-09 16:12:55 +00:00
Argo
155de49306 !1697 fix(#I44MZ1): double/float/decimal data type of TableColumn throw exception when click edit button
* fix: 修复浮点数值设置 Step 编辑模式下报错问题
2021-08-09 16:08:54 +00:00
Argo
631c939e71 !1696 feat(#I44LZT): carousel item support width 100%
* feat: 移除 sealed 关键字
* style: 增加宽度 100% 样式
2021-08-09 10:16:39 +00:00
Kyle_Young
aafce4a023 !1695 feat: set width to 100%
* update src/BootstrapBlazor/Components/Carousel/CarouselImage.razor.
2021-08-09 10:07:16 +00:00
Argo
12066f50fe !1694 fix(#I44GIG): table filter support double and decimal data type
* chore: bump version to 5.5.2
* fix: NumberFilter 更改为泛型支持多种数据类型
2021-08-09 04:53:45 +00:00
Argo
ac91d53091 !1693 refactor(#I44I8C): adjust dropdown-arrow for multiple select
* refactor: 更新多项选择器组件小箭头支持向上展开时隐藏
2021-08-09 04:21:58 +00:00
Argo
3960c54c26 !1692 feat(#I44I7S): remove dropdown menu max height style
* style: remove dropdown-menu style
2021-08-09 04:17:49 +00:00
Argo
29e36f4df5 !1691 feat(#I44F4H): EditForm/InCell mode support Readonly parameter on Table component
* doc: 表单编辑示例增加 readonly 示例
* style: 微调样式放置标签出现背景色
* feat: 增加 EditForm 对 Readonly 支持
* fix: 修复 CheckboxList 数据源给错问题
* chore: 更新 nuget 数据源配置
* doc: 示例更新地址列为只读列不可编辑
* style: 增加行内只读列背景色
* feat: 增加行内编辑对 readonly 字段支持
2021-08-08 09:35:53 +00:00
Nine
4a748c87d4 !1689 doc(#I44B3G): add english translation of template and globalization page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc:添加 Globalization 页面资源文件以及全球化
* doc: 添加模板页面资源文件以及全球化
2021-08-07 08:08:58 +00:00
Argo
82d1e663d0 !1690 feat(#I44CUD): table component add OnAfterSaveAsync parameter
* chore: bump version 5.5.2-beta01
* doc: 增加 OnAfterSaveAsync 回调方法说明
* refactor: 移除 loading 私有字段
* feat: 增加 OnAfterSaveAsync 回调方法
2021-08-07 08:05:39 +00:00
Argo
3e63782f6a !1688 doc(#I448F3): update docs for Search component
* doc: remove script of ad
* doc: update attribute for Search
* doc: update docs for Search
* refactor: add await keyword
2021-08-06 07:42:25 +00:00
Argo
6b2be0b8ad !1687 feat(#I444LV): Search auto focus after click search button
* doc: 更新示例文档
* feat: 点击 Search 按钮后获得焦点
* feat: 公开 FocusAsync 方法
2021-08-05 16:31:44 +00:00
Argo
bd1ae94dd7 !1686 fix(#I4421V): SearchDialog missing layout parameter from Table
* chore: bump version to 5.5.1
* fix: 修复 SearchDialog 未使用布局设置参数问题
* fix: 修复代码文件链接错误
2021-08-05 08:18:33 +00:00
Argo-Tianyi
a086096ad3 chore: bump version to 5.5.0 2021-08-06 00:06:40 +08:00
Argo
080716ce4f !1685 feat(#I43XTG): use parameters in EditForm mode on Table component
* doc: 增加 Card 两行样式
* style: 行内编辑下拉框充满
* style: 微调行内编辑组件周边间隙
* style: 移除行内编辑行背景色样式
* style: 行内编辑微调边距
* feat: 移除编辑行背景色
* feat: 更新表单编辑模式下布局
2021-08-04 16:04:26 +00:00
Argo
a4af8f7b7d !1684 feat(#I43XRX): support new item function in EditInCell mode on Table component
* feat: 增加行内编辑新建功能
* fix: 修复编辑模板 Footer 顶部无间隙问题
* style: 移除 modal-footer 顶部间隙
2021-08-04 15:28:06 +00:00
大胃Q
8b06ac2774 !1682 feat(#I43XRL): add click event for the middle item in Cascader component
* 修复级联选择  中间级别菜单 无法选中的bug
2021-08-04 15:23:36 +00:00
Argo
cffe83c216 !1683 feat(#I43XM7): add IsAutoFocus and IsAutoClearAfterSearch parameter on Search component
* doc: 更新自动获取焦点示例
* feat: Search 增加自动获得焦点功能
2021-08-04 13:55:46 +00:00
Argo
f48f2d48cb !1681 fix(#I43SQJ): add three parameters on table can change layout of EditDialog
* chore: bump version to 5.4.7
* doc: 更新 Table 参数列表
* fix: 修复内置编辑弹窗内布局默认为一行两列
* chore: 更新样式
2021-08-04 03:21:42 +00:00
Argo-Tianyi
854d1d8dba chore: update dependence lib 2021-08-04 10:31:50 +08:00
Argo
1834c12809 !1680 doc(#I43STU): add sample code of update Markdown content by call async method
* doc: 增加异步加载数据示例
2021-08-04 02:30:04 +00:00
Argo
e1fb947782 !1679 chore: bump extensions version to 5.1.1
* chore: bump version to 5.1.1
* chore: 更新 Nuget.Config 文件内容
2021-08-03 15:19:20 +00:00
Argo
f7ada54151 !1678 fix(#I43RIH): markdown not support set value in async
* chore: bump version to 5.1.0
* chore: 更新打包配置信息
* chore: 更新项目文件
* chore: 更新打包脚本支持 setMarkdown 方法
* chore: 更新 Markdown 项目打包脚本
* chore: 更新文件内联配置文件
* chore: 更新 Markdown 组件配置文件
2021-08-03 14:57:27 +00:00
Argo
9c44328a22 !1677 doc(#I43EJP): remove duplicate sample code
* doc: 增加 AD 代码
* doc: 移除重复示例
2021-08-03 11:45:52 +00:00
Argo
29d8532541 !1676 feat(#I1L30Y): update class for Tabs component
* Merge branch 'dev' into dev-tab
* chore: 更新样式文件
* refactor: 更新 Nuget.Config 文件
* refactor: remove height setting form body
* wip: 临时提交
* feat: ModalDialog 增加 Class 参数用于自定义弹窗样式
* feat: 增加 Class 属性用于自定义弹窗样式
* feat: DialogService 重构代码
* chore: 独立打包配置文件
* chore: 更新打包样式
* feat: 微调 Table 组件行内编辑间隙
2021-08-03 07:15:14 +00:00
Argo
84a208a92b !1675 feat(#I43ONF): add Class parameter on Dialog component
* feat: ModalDialog 增加 Class 参数用于自定义弹窗样式
* feat: 增加 Class 属性用于自定义弹窗样式
* feat: DialogService 重构代码
* chore: 独立打包配置文件
* chore: 更新打包样式
* feat: 微调 Table 组件行内编辑间隙
2021-08-03 07:10:55 +00:00
Argo
945ffa04cb !1674 chore(#I43ODR): separate bundle script into target file
* chore: 独立打包配置文件
* chore: 更新打包样式
* feat: 微调 Table 组件行内编辑间隙
2021-08-03 06:51:30 +00:00
Argo
0affa249cf !1673 fix(#I43DZ9): resolve can input when Set IsDisabled to true on ColorPicker component
* chore: bump version to 5.4.5
* fix: 修复 ColorPicker 组件禁用状态仍然可输入
2021-08-01 16:53:46 +00:00
Argo
3b136056ee !1672 feat(#I43DYV): redesign ColorPicker component
* refactor: 升级脚本版本号
* Merge branch 'dev' into dev-color
* doc: 增加 ColorPicker 组件内置表单示例
* feat: ColorPicker 组件兼容 ValidateForm
* style: ColorPIcker 适配 Row 布局
* doc: 更新示例
* refactor: 更新 color-picker 样式
* chore: 更新打包脚本
* refactor: 精简代码
* chore: 移除 color 相关脚本与样式
2021-08-01 16:41:05 +00:00
Argo
ea50046ca2 !1671 feat(#I43BBA): add Empty on Table component
* chore: 更新打包样式
* Merge branch 'dev' into dev-table-empty
* doc: 更新打包样式
* doc: 更新示例
* doc: 更新无数据相关参数说明
* doc: 增加 EmptyText 资源文件
* style: 增加无数据时 Empty 样式
* feat: Table 增加 Empty 相关参数
* doc: Empty 组件更新参数说明 Desc 重命名为 Text
* doc: Empty 组件更新资源文件
* feat: 重构 Empty 组件
2021-08-01 16:35:21 +00:00
Argo
2f6862f74d !1670 feat(#I43DYN): add LabelAlign parameter on SearchDialog component
* Merge branch 'dev' into dev-searchdialog
* doc: 更新参数说明
* doc: 增加右对齐搜索弹窗示例
* feat: 增加 LabelAlign 参数
* refactor: 移除 parametr 标签
* feat: SearchDialog 增加对齐方式参数
* feat: Editdialog 增加 LabelAlign 参数
* refactor: 重命名 TextAlign 为 LabelAlign
* doc: 更新示例弹窗内布局每行 2 个组件
* feat: EditDialog 增加行布局参数
* feat: 编辑搜索弹窗移除 modal-footer 样式
* chore: 更新弹窗 footer 样式
* doc: 更新示例文档
* revert: 增加 Data 数据判断
* refactor: 移除对 Data 数据源判断
* chore: 更新索引
* feat: Spinner 组件适配 bs5
* doc: 更新文档说明
* doc: 增加 EditorForm 参数说明
* doc: 更新按钮右侧对齐示例
* doc: 更新 Inline 模式示例
* refactor: 使用 is-center 样式
* chore: 更新样式
* chore: 增加对齐样式
* feat: EditorForm 增加标签对齐参数
2021-08-01 16:31:13 +00:00
Argo
2e684551cd !1669 feat(#I43DYL): add LabelAlign parameter on EditDialog component
* Merge branch 'dev' into dev-editdialog
* Merge branch 'dev' into dev-editdialog
* doc: 更新参数说明
* doc: 增加 EditDialog 弹出右对齐弹窗示例
* refactor: 增加 LabelAlign 参数
* chore: 移除 parameter 标签
* feat: Editdialog 增加 LabelAlign 参数
* refactor: 重命名 TextAlign 为 LabelAlign
* doc: 更新示例弹窗内布局每行 2 个组件
* feat: EditDialog 增加行布局参数
* feat: 编辑搜索弹窗移除 modal-footer 样式
* chore: 更新弹窗 footer 样式
* doc: 更新示例文档
* revert: 增加 Data 数据判断
* refactor: 移除对 Data 数据源判断
* chore: 更新索引
* feat: Spinner 组件适配 bs5
* doc: 更新文档说明
* doc: 增加 EditorForm 参数说明
* doc: 更新按钮右侧对齐示例
* doc: 更新 Inline 模式示例
* refactor: 使用 is-center 样式
* chore: 更新样式
* chore: 增加对齐样式
* feat: EditorForm 增加标签对齐参数
2021-08-01 16:27:43 +00:00
Argo
628b744fd9 !1667 feat(#I43DXD): add LabelAlign parameter on EditorForm component
* Merge branch 'dev' into dev-align
* doc: 更新参数说明
* doc: 更新示例弹窗内布局每行 2 个组件
* feat: EditDialog 增加行布局参数
* feat: 编辑搜索弹窗移除 modal-footer 样式
* chore: 更新弹窗 footer 样式
* doc: 更新示例文档
* revert: 增加 Data 数据判断
* refactor: 移除对 Data 数据源判断
* chore: 更新索引
* feat: Spinner 组件适配 bs5
* doc: 更新文档说明
* doc: 增加 EditorForm 参数说明
* doc: 更新按钮右侧对齐示例
* doc: 更新 Inline 模式示例
* refactor: 使用 is-center 样式
* chore: 更新样式
* chore: 增加对齐样式
* feat: EditorForm 增加标签对齐参数
2021-08-01 16:21:31 +00:00
Argo
9eb11e7ec4 !1668 feat(#I43DY8): remove ad link
* chore: 移除冗余样式
* chore: 移除 ad
* refactor: 微调小按钮位置
* doc: 更改广告位置
* chore: 调整广告位置
2021-08-01 16:19:10 +00:00
Argo
d9cd820544 !1666 feat(#I43CCA): spinner compatible bs5
* chore: bump version to 5.4.4
* feat: Spinner 组件适配 bs5
2021-08-01 03:31:07 +00:00
Argo
3bc979089b !1665 feat(#I43BXP): Checkbox support inline layout
* Merge branch 'dev' into dev-checkbox
* doc: Checkbox 示例更改为 inline 布局
* feat: 适配 Checkbox inline 布局
* feat: 增加 btn-block 样式
* doc: Table 编辑模板增加 inline 布局示例
* feat: EditDialog 增加行布局参数
* doc: SearchDialog 增加行布局示例
* feat: SearchDialog 支持行布局参数
* feat: DialogBase 增加行布局参数
* feat: EditForm 支持 inline 模式
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:58:00 +00:00
Argo
d5017b6e7b !1663 feat(#I43BX5): add btn-block style compatible bs4
* Merge branch 'dev' into dev-block
* feat: 增加 btn-block 样式
* doc: Table 编辑模板增加 inline 布局示例
* feat: EditDialog 增加行布局参数
* doc: SearchDialog 增加行布局示例
* feat: SearchDialog 支持行布局参数
* feat: DialogBase 增加行布局参数
* feat: EditForm 支持 inline 模式
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:47:16 +00:00
Argo
cb5eb42583 !1662 feat(#I43BWZ): EditDialog support Inline layout
* doc: Table 编辑模板增加 inline 布局示例
* feat: EditDialog 增加行布局参数
* doc: SearchDialog 增加行布局示例
* feat: SearchDialog 支持行布局参数
* feat: DialogBase 增加行布局参数
* feat: EditForm 支持 inline 模式
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:38:03 +00:00
Argo
e6766ce550 !1661 feat(#I43BWW): SearchDialog add inline layout
* doc: SearchDialog 增加行布局示例
* feat: SearchDialog 支持行布局参数
* feat: DialogBase 增加行布局参数
* feat: EditForm 支持 inline 模式
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:35:54 +00:00
Argo
098b973bb9 !1660 feat(#I43BWU): add inline layout for EditForm component
* feat: EditForm 支持 inline 模式
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:34:44 +00:00
Argo
200bc26955 !1659 feat(#I43BWR): add inline layout for Row component
* doc: 更新 Row inline 布局示例
* chore: 更新打包脚本与样式
* doc: 更新注释
* style: 适配 CheckboxList 组件 inline 布局
* style: 适配 inline 模式下 switch 组件
* style: 修复 inline 模式下垂直对齐问题
* feat: 增加 inline 模式
* feat: 增加 inline 样式
2021-07-31 16:33:16 +00:00
Argo
646e3813da !1658 feat(#I43BWO): add localization for error message when throw exception
* feat: 增加错误提示信息本地化
* refactor: 调整 z-index 出错时覆盖 header
* doc: 错误信息节点增加 span
* chore: 增加 App 资源文件
2021-07-31 16:32:00 +00:00
Argo
b95eb655a4 !1657 feat(#I43BWN): disable auto close column list dropdown on table component
* feat: Table 组件 ColumnList 下拉框不自动关闭
2021-07-31 16:30:29 +00:00
Argo
a740daefcc !1656 fix(#I43A3Q): resolve cancel button not show when set ShowDeleteButton to false
* chore: bumb version to 5.4.3
* fix: 修复 InCell 模式下不显示 delete 按钮时 cancel 按钮也不可用
2021-07-31 04:40:59 +00:00
Argo
6c3b5ee245 !1655 feat(#I43A1B): resolve can not pick the front day that is disabled in preview month
* doc: 日期范围示例更改为45天
* fix: 修复当月前几个日期无法选中问题
* doc: remove space line
2021-07-31 04:17:01 +00:00
Argo
cc06c39579 !1654 feat(#I439RJ): division source link into targets config file
* refactor: separate source link to target file
2021-07-31 02:58:21 +00:00
Argo
b8c3c5539a !1653 fix(#I439LU): the selected day in other month style is current
* doc: 更新设置时间范围示例
* fix: 修复跨越后当前日期样式错误问题仍然是 current
2021-07-31 02:28:20 +00:00
Argo
7504ef4dee !1651 feat(#I439H7): resolve can pick the date out of range value
* fix: 修复选中设置时间范围外日期时点击确认后仍然改变值
2021-07-31 02:03:16 +00:00
Argo
5cbce6d684 !1650 fix(#I435I5): all menu item will be set active when put menu in route / page
* chore: bump version to 5.4.2
* fix: 修复 / 路由页面内菜单禁用导航后全部被设置为 active 问题
2021-07-30 07:01:55 +00:00
Argo
f821650298 !1649 feat(#I434SC): add loading for Search component
* feat: 增加 Search 组件搜索时 loading 样式
* feat: 重构 AutoComplete 组件移动样式
2021-07-30 04:23:17 +00:00
Argo
3d9c3b9e34 !1648 fix(#I431UW): throw exception when set ShowDetailRow to true use Items as data source in table component
* chore: bump version to 5.4.1
* Merge branch 'dev' into dev-table
* doc: TableColumn 页面表头移除汉字使用资源文件
* fix: 修复 ColumnVisibles 为空导致组件异常问题
2021-07-29 16:23:30 +00:00
Argo
85da2d726b !1647 fix(#I431US): remove static instance in Title service
* doc: 更新 NavMenu 代码使用 TitleService 方法设置 Title
* feat: 重构 TitleService 服务
2021-07-29 16:18:39 +00:00
Argo
a76f17f97e !1646 feat(#I42KQH): reset toast z-index to 1090 when modal is open
* style: 更新 弹窗 打开后 Toast 坐标 1090
2021-07-29 07:55:30 +00:00
Argo-Tianyi
c8c530191a chore: bump version to 5.4.0 2021-07-29 10:54:34 +08:00
Argo
a1965745ff !1645 feat(#I42WFL): refactor dropdown component support dynamic reset items parameter
* doc: 更新 Dropdown 组件动态更新 Items 示例
* feat: Dropdown 支持动态更改 Items
2021-07-29 02:52:46 +00:00
Argo
a724ce9be4 !1644 feat(#I42W80): add ShowEdit/DeleteButtonCallback parameter on Table component
* feat: 增加编辑与删除按钮回调方法用于控制是否显示等功能
2021-07-29 02:34:05 +00:00
Argo
b719c826d6 !1643 doc(#I42VZL): add en json file for install page
* doc: 更改快速上手英文名称
* doc: 添加Install英文资源
2021-07-29 02:14:04 +00:00
Argo
60c7cafb4e !1642 refactor(#I42VKX): remove obsolete method or parameters
* chore: 移除 obsolete 过期方法
2021-07-29 01:34:59 +00:00
Argo
0f936e3ff3 !1641 fix(#I42V4Y): table detail mode colspan incorrect when set ShowColumnList to true
* feat: 明细行合并单元格支持设置列是否显示模式
2021-07-28 16:36:01 +00:00
Nine
34c93e54fd !1639 doc(#I42V3R): add english translation of install page
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 添加Install页面的资源文件以及页面的全球化
* doc: 添加动态输出文字资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc(#I42OB8):添加主页页脚资源文件以及全球化
* doc(#I42OB8): 添加主页资源文件以及全球化
* refactor((#I42M9M): 格式化文档
* refactor(#I42M9M): 删除多余命名空间
* doc(#I42M9M): 更新简介文档的url连接
2021-07-28 16:25:58 +00:00
Argo
92424835d8 !1640 fix(#I42V4G): resolve colspan incorrect when set ShowLineNo to true
* fix: 明细行模式下开启 ShowLineNo 后合并单元格数量不正确
2021-07-28 16:18:12 +00:00
Argo
333cc4606c !1638 fix(#I42V1Q): resolve can select item when set IsDisable to true
* chore: bump version to 5.3.6
* fix: 修复禁用逻辑
* feat: 模板增加分组支持
* refactor: 移除 Value 数据
* refactor: 增加禁用模式判断
* fix: 修复 Select 下拉框禁用模式下仍然可选
2021-07-28 15:52:52 +00:00
Argo
ac8c0c3337 !1637 doc(#I42SBY): update footer link align left
* chore: 更新 footer 左对齐
* style: 更新样式
* chore: 更新资源文件
* doc: 增加动态文字样式
2021-07-28 07:48:34 +00:00
Nine
ac67f88581 !1636 doc(I42OB8): add english translation of home page
* doc: 添加动态输出文字资源文件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc(#I42OB8):添加主页页脚资源文件以及全球化
* doc(#I42OB8): 添加主页资源文件以及全球化
* refactor((#I42M9M): 格式化文档
* refactor(#I42M9M): 删除多余命名空间
* doc(#I42M9M): 更新简介文档的url连接
2021-07-28 04:30:24 +00:00
Argo
efc817ec5b !1635 fix(#I42O73): resolve introduction throw exception when call dispose
* fix: 修复 Dispose 时报错问题
* doc: update resource file
2021-07-27 14:06:01 +00:00
Nine
d57d04b69f !1634 doc(#I42M9M): refactor localizer of Introduction doc
* refactor((#I42M9M): 格式化文档
* refactor(#I42M9M): 删除多余命名空间
* doc(#I42M9M): 更新简介文档的url连接
2021-07-27 13:33:40 +00:00
Argo
38b06117d4 !1633 feat(#I42JZQ): add BeforeRowButtonTemplate on Table component
* doc: 增加 BeforeRowButtonTemplate 文档说明
* doc: 更新 BeforeRowButtonTemplate 文档
* feat: Table 组件增加 BeforeRowButtonTemplate
2021-07-27 03:52:14 +00:00
Argo-Tianyi
85e8a5b590 chore: bump version to 5.3.4 2021-07-27 10:08:48 +08:00
Argo
0e1278d312 !1632 fix(#I42ETN): add active row style in DetailRow mode
* chore: bump version to 5.3.3
* fix: 修复明细行模式下选中行样式
2021-07-26 18:09:08 +00:00
Argo
95390dd9bc !1631 chore(#I42HAV): redesign bundle config file
* chore: 重构项目内部脚本与样式文件打包配置
2021-07-26 11:56:40 +00:00
Argo
d0682ae9b1 !1630 doc(#I42B4W): rename css/javascript file name
* chore: 打包脚本排序
* refactor: 移除 hotReloadProfile 配置项
* chore: 更新打包配置文件
* doc: rename file name
* chore: add file nesting config
* refactor: 更新 Alert 样式
2021-07-25 16:22:41 +00:00
Argo
53ecc3867d !1629 doc(#I42B4N): refactor introduction page
* refactor: 增加 cs 文件
* doc: 更新资源文件内容
2021-07-25 16:19:36 +00:00
Nine
343a37e2e0 !1628 doc(I429JT): add English translation of profile page
* doc :  遗漏简介页面文档
* doc: Introduction 页面添加英文翻译
2021-07-25 13:45:33 +00:00
Argo
93240d3e1c !1627 feat(#I429IM): add strip css for table detail function
* chore: bump version to 5.3.2
* style: 修复明细行下背景色问题
* style: 修复固定列最右侧滚动条列被穿透问题
2021-07-24 12:24:38 +00:00
Argo
a84771f7b2 !1626 feat(#I423Q9): add ShowFilterHeader parameter on Table component
* doc: 更新示例
* feat: 字符串类型过滤条件增加实时响应功能
* feat: ValidateBase 增加 OnValueChanged 回调方法
* feat: 重构 父类 OnFilterValueChanged 方法
* feat: DateTimePicker 增加 OnDateTimeChanged 回调方法
* feat: 增加清除过滤条件逻辑
* style: 增加清除过滤条件按钮样式
* feat: 增加清除过滤条件逻辑
* doc: 过滤行示例代码增加枚举与布尔类型
* feat: Dropdown 支持集成
* feat: 过滤组件支持 FilterRow 模式
* refactor: 更改 IsRow 为 IsHeaderRow
* feat: TableFilter 支持过滤行逻辑
* style: 微调 FilterButton 样式
* feat: 增加 FilterButton 按钮
* Merge branch 'dev' into dev-table
* doc: 更新测试示例
* style: 增加多表头样式
* feat: 增加 ShowFilterHeader 配置
* doc: 合并 Filter 代码
2021-07-23 04:34:02 +00:00
Argo
aa3455c6e2 !1625 feat(#I423P6): add OnValueChanged callback on ValidateBase component
* doc: 更新 Cascader 参数文档
* feat: ValidateBase 增加 OnValueChanged 回调方法
* feat: Dropdown 支持集成
2021-07-23 04:24:20 +00:00
Argo
790ce871af !1624 feat(#I420W5): set Display empty default height to 35px
* style: 增加 Display 空值时高度
2021-07-22 11:40:31 +00:00
Argo
36113acf41 !1623 fix(#I420F0): update Select for not render selected item
* chore: bump version to 5.3.0
* doc: 更新示例文档
* doc: 更新 Select 示例
* fix: 更新 SelectedItem 逻辑
2021-07-22 10:41:15 +00:00
Argo
8f670a6281 !1622 fix(#I41ZUB): resolve localization in WTM not retrieve right resource from resx file
* fix: 修复本地化上一个工厂未找到资源逻辑判断
* refactor: 优化 Factory 类增加修饰符
2021-07-22 09:37:37 +00:00
Argo
139b9e0327 !1621 feat(#I41UHU): toolbar on table compatible bs5
* chore: bump version to 5.2.5
* fix: 修复 Table 组件搜索按钮工具栏未适配 bs5 问题
2021-07-21 15:03:21 +00:00
Argo
accafea5a7 !1620 feat(#I41UHR): Switch compatible in Table
* style: 增加 Switch 在 Table 组件内样式
2021-07-21 14:59:40 +00:00
Argo
3d541beae7 !1619 feat(#I41UE4): bootstrap blazor compatible the third part localization
* chore: bump version to 5.2.4
* refactor: 优化代码
* chore: 增加 DI 引用
* feat: 更新逻辑取被 BB 覆盖的本地化引擎
* feat: 支持 abp 本地化实验
2021-07-21 13:55:43 +00:00
circlelee1981
b7c4a1f6ea !1617 fix(#I41GPD): update StringFilter the default value
* update StringFilter.razor.cs string类型默认筛选条件修正
2021-07-20 01:58:35 +00:00
Argo
abbec239b6 !1615 fix(#I40STK): resolve colspan incorrect when set IsMultipleSelected to true
* chore: 更新打包文件
* fix: 修复开启多选后明细行 colspan 不正确问题
2021-07-18 17:06:54 +00:00
Argo
1fb750a295 !1614 fix(#I4175P): tab support not found render template
* feat: Layout 增加 NotFound 模板
* feat: Tab 组件增加 NotFound 模板
* feat: 增加资源文件
2021-07-18 16:18:23 +00:00
Argo
d2a0bdf863 !1613 doc(#I418DH): update carousel in home page
* chore: bump version to 5.1.2
* chore: 微调走马灯指示条颜色
* doc: 更改生态位置
* doc: 增加图片超链接
* doc: 更新 readme.md
* doc: 增加驰骋工作流链接
2021-07-18 13:34:52 +00:00
Argo
67548bee4e !1612 fix(#I40ISO): resolve can't selected the item return by OnSearchTextChanged callback
* fix: 修复 OnSearchTextChanged 导致选项无法选中问题
* doc: format document
2021-07-18 08:27:43 +00:00
Argo
b0170dcae1 !1611 fix(#I417RK): resolve throw exception when set ShowSearch to true on Select
* fix: 修复 Select 组件设置 ShowSearch 时回车提交报错问题
2021-07-18 06:56:51 +00:00
Argo
0b7b9610bc !1610 fix(#I417MJ): resolve throw exception in browser when select switch the active item in ValidateForm
* chore: 移除对 map 的依赖
* chore: 更新样式适配 bs5
* refactor: 增加 div 用于 tooltip 渲染
* revert(#I40ISO): 撤销提交
2021-07-18 04:43:29 +00:00
Argo
9029f7bfbf !1609 fix(#I40O7E): resolve filter dialog show on wrong position when fixed column
* fix: 修复固定列后过滤弹窗错位问题
2021-07-18 02:29:54 +00:00
Argo
65bd70e4cb !1608 fix(#I4163B): toast compatible bootstrap v5
* chore: bump version to 5.2.1
* fix: toast 组件适配 bs5
* chore: update props config error
* Squashed commit of the following:
2021-07-17 07:51:30 +00:00
Argo-Tianyi
db88ae9451 chore: bump version to 5.2.0 2021-07-17 14:41:23 +08:00
Argo
cd2b332881 !1607 feat(#I415NR): upgrade bootstrap to v5
* !1606 feat(#I415MH): colorpicker 适配 bs5
* !1605 feat(#I415CU): editor compatible bs5
* !1604 doc(#I40VVA): update tag sample code
* !1603 feat(#I40VV8): tag compatible bs5
* chore: bump version preview-6.0
* style: 微调 z-index 防止 header 被遮挡
* style: 微调 Select 组件小箭头样式
* refactor: 移除所有 form-inline form-group form-row
* doc: 微调 Index 样式
* refactor: coms 组件移除 form-inline
* doc: 组件页面适配 bs5
* refactor: SkeletonEditor 适配 bs5
* refactor: Camera 适配 bs5
* refactor: BarcodeReader 适配 bs5
* refactor: 更新 Upload 组件适配 bs5
* docs: 更新 tooltip 组件文档
* refactor: 重构 toggle 样式
* doc: Toasts 适配 bs5
* doc: textarea 适配 bs5
* doc: tabs 适配 bs5
* doc: switch 适配 bs5
* doc: swal 适配 bs5
* doc: Spinners 适配 bs5
* doc: Slider 适配 bs5
* doc: skeletons 适配 bs5
* refactor: Rates 适配 bs5
* refactor: Progress 适配 bs5
* !1601 feat(#I40LIR): DateTimePicker compatible bs5
* !1598 feat(#I40FRB): checkbox compatible bs5
* !1597 feat(#I40EW8): Cascader component compatible bs5
* !1596 feat(#I40E3S): row component compatible bs5
* !1595 feat(#I40DO6): dialog compatible bs5
* refactor: 解决 Transition 冲突
* Merge branch 'dev' into dev-bs5
* !1594 feat(#I40DN7): modal compatible bs5
* !1591 feat(#I40BGR): popover compatible bs5
* !1590 feat(#I40BGU): remove form-inline and form-group style sheet
* !1589 feat(#I40BGT): carousel compatible bs5
* !1588 feat(#I40BGS): auto expand by active item compatible bs5
* !1584 feat(#I404I2): popover compatible bs5
* !1583 feat(#I404I1): menu compatible bs5
* !1582 feat(#I404I0): longbow.lgbTab compatible bs5
* !1581 feat(#I403YI): table compatible bs5
* !1580 feat(#I403P0): badge remove base class add text-dark for info/warning
* !1579 feat(#I402YZ): dropdown widget compatible bs5
* !1578 feat(#I402YW): dropdown compatible bs5
* chore: 修复 Layout tooltip 不显示问题
* Merge branch 'dev' into dev-bs5
* !1577 feat(#I4020C): text-left/right compatible bs5
* !1576 feat(#I40203): tooltip compatible bs5
* !1575 refactor(#I401VC): remove form-select-input style from select component
* !1573 feat(#I401KX): collapse compatible bs5
* !1572 feat(#I4017Z): alert component compatible bs5
* !1571 feat(#I400W8): toggle compatible bs5
* !1570 feat(#I400RV): badge compatible bs5
* !1568 doc(#I4000I): redesign index layout compatible bs5
* !1567 feat(#I3ZZXX): margin/float css compatible bs5
* !1566 feat(#I3ZZUR): dropdown compatible bs5
* !1565 feat(: layout compatible bs5
* !1563 feat(#I3ZZPI): select compatible bs5
2021-07-17 06:38:25 +00:00
Argo-Tianyi
fc7d4b8630 chore: bump version to 5.1.4 2021-07-14 16:25:24 +08:00
Argo
c7d54d4f47 !1602 feat(#I40N2J): upgrade Formatter callback on TableColumn
* feat: 优化 Formatter 参数更改为 TableColumnContent 泛型
2021-07-14 07:59:23 +00:00
Argo
ff4b0d2434 !1600 refactor(#I40KEK): rename Data parameter to Lookup on Display component
* refactor: Display 组件 Data 更改为 Lookup
2021-07-14 02:56:14 +00:00
Argo
b49da5c8e7 !1599 fix(#I40ISO): resolve not show selected text when set OnSearchTextChanged callback
* fix: 修复自定义查询过滤条件时无法选中问题
2021-07-13 14:57:24 +00:00
Argo
15fbb06bae !1593 fix(#I40DLM): Modal show method can't show modal twice
* fix: 修复 Show 二次无法弹出对话框问题
2021-07-13 04:13:28 +00:00
Argo
3313e0b150 !1587 doc(#I40B2C): add Duration sample code
* doc: 增加 Duration 参数说明
* refactor: 微调方法名称
* doc: 增加设置时长示例代码
* doc: 优化 Transition 示例
2021-07-12 12:16:53 +00:00
Argo
9e3fb143b5 !1586 feat(#I40B0E): add duration parameter on Transition component
* feat: 增加 Duration 功能
2021-07-12 11:57:12 +00:00
Argo
f8459a7167 !1585 feat(#I4073Q): display component support customer class style sheet
* chore: bump version to 5.1.2
* feat: Display 组件支持自定义 class
2021-07-12 05:23:04 +00:00
Argo
69128eca17 !1574 refactor(#I401L8): improve Transition component and format doc
* fix: 增加合并 class 样式逻辑
* chore: 更新打包文件
* doc: 格式化文档
* refactor: 重构 Transition 组件增加注释
* chore: 格式化 js 脚本文件
* chore: 格式化项目文件
2021-07-10 07:22:06 +00:00
Argo
8398cbfc3a !1569 fix(#I4004S): not show body data when set Items and OnQueryAsync both
* chore: bump version to 5.1.1
* fix: 修复同时设置 Items 与 OnQueryAsync 时不显示内容问题
2021-07-09 15:02:18 +00:00
Argo-Tianyi
f8d1bbf78f Revert "!1564 feat(#I3ZZR5): layout compatible bs5"
This reverts commit af34f38476.
2021-07-09 20:24:46 +08:00
Argo
af34f38476 !1564 feat(#I3ZZR5): layout compatible bs5
* doc: 精简模板页样式
* !1563 feat(#I3ZZPI): select compatible bs5
2021-07-09 12:07:24 +00:00
Argo
670b6c910d !1561 fix(#I3ZW5B): resolve no data show in body first render on Table component
* chore: bump version to 5.1.0
* fix: 修复 Query 导致表格未显示数据
2021-07-09 04:03:26 +00:00
Nine
27d521420e !1559 feat(#I3QMQS): add Transitions component
* refactor:移动 Animate 样式到 组件内部
* docs:优化 Transition 文档
* refactor:删除  Enums 命名空间
* docs:移除文档中的 Enums 命名空间
* docs:更新 Transition 组件为新组件
* build:移除 props 文件中 bundle 配置
* feat : Transition组件 文档完成
* feat: Transition 组件完成
2021-07-08 09:04:11 +00:00
ReaZhuang
1a11547f55 !1560 perf(#I3ZQV4): improve AutoComplete keyboard event performance
* fix AutoComplete keyboard event
2021-07-08 08:40:40 +00:00
Argo-Tianyi
1779c62de3 chore: bump versionto 5.0.38 2021-07-08 10:40:47 +08:00
Argo
faa82ff0c5 !1558 doc(#I3ZLCU): update AutoComplete component doc
* doc: 更新 AutoComplete 组件参数文档
2021-07-07 16:22:12 +00:00
Argo
7a04736a36 !1557 doc(#I3ZLCR): update table fix column sample code
* doc: 更新菜单标记
* doc: 更新固定列文档
2021-07-07 16:15:06 +00:00
Argo
edebcd9da6 !1556 feat(#I3ZLCL): table fix column feature compatible light/dark header mode
* style: 增加 light dark 下固定列背景色适配
* fix: 增加 fix 背景色防止穿透
* fix: 防止鼠标悬停时表头穿透
2021-07-07 16:10:37 +00:00
Argo
5b38756101 !1554 feat(#I3ZKQU): keep original header when set MultipleTemplate on Table component
* chore: bump version to 5.0.38-beta06
* doc: 更新示例
* feat: 多表头时保持原始表头功能
* chore: 更新计算 filter 出现窗口位置方法
* chore: 更新多标头样式
2021-07-07 11:21:08 +00:00
Argo
70d827a6af !1552 fix(#I3ZJVJ): add localization for tooltip on table header sort function
* chore: bump version to 5.0.38-beta05
* doc: 增加表头排序 Tooltip 文档
* feat: Table 表头排序提示信息支持本地化
* doc: 增加排序 Tooltip 本地化
* chore: 更新 Table 客户端脚本支持 Tooltip 本地化
2021-07-07 09:27:37 +00:00
Argo
aea634d4ec !1551 fix(#I3ZDH6): resolve not expand child nodes in Table component
* fix: 修复 TableTree 失效问题
2021-07-06 11:31:11 +00:00
Argo
f74d459d11 !1550 fix(#I3ZDRF): can't check the row when set ClickToSelect to true in mobile mode
* fix: 移动端开启多行选择与 ClickToSelect 时 Checkbox 点击无效
2021-07-06 10:12:34 +00:00
Argo
b39ebcb782 !1549 fix(#I3Z9FG): can not checked the item click checkbox when set IsMultiple is true
* fix: 阻止事件冒泡
2021-07-06 02:26:25 +00:00
Argo
657a6293e9 !1548 fix(#I3Z9DJ): resolve filter popup show in wrong place
* script: 更新 Filter 弹窗脚本调用方式修复动态列过滤弹窗位置不正确问题
* doc: 增加 Filter 示例
2021-07-06 02:22:30 +00:00
Argo
3ac0341f43 !1547 revert(#I3Z3W8): missing DisplayName when only use AutoGenerateColumnAttribute
* chore: bump version to 5.0.38-beta04
* revert: 恢复 DisplayName 获取方法
* doc: 修复文档链接失效问题
2021-07-05 06:14:38 +00:00
Argo
e103d7f0ae !1546 doc(#I3Z3HQ): update only show advance search button sample code
* doc: 增加文档更新标签
* doc: 增加仅显示高级搜索示例
* fix: 修复语法错误
* doc: 增加 ShowSearchText 参数文档
2021-07-05 04:57:32 +00:00
Argo
a9f540bc00 !1545 feat(#I3Z3FZ): add ShowSearchText parameter on Table component
* feat: 增加 ShowSearchText 参数用于控制是否显示搜索文本框默认 true
2021-07-05 04:38:16 +00:00
Argo
bf5fc32f39 !1544 fix(#I3Z3BD): resolve CreateCallback delete use wrong cache key
* chore: bump version to 5.0.38-beta03
* fix: 修复 CreateCallback 缓存键值错误
2021-07-05 04:01:54 +00:00
Argo
61448d43ba !1543 feat(#I3Z2ZB): add common Attribute extensions methods
* refactor: 增加扩展方法
* refactor: 增加参数标识
* doc: 更新扩展方法示例
* feat: 增加扩展方法
2021-07-05 03:28:47 +00:00
Argo
ed3a77fa2f !1542 feat(#I3Z2TU): add dynamic assembly check in GetDisplayName method
* refactor: 支持自定义属性逻辑与以前一致
* refactor: 优化内部逻辑
* feat: 增加 InternalTable GetProperties 重载
* feat: GetDisplayName 逻辑兼容动态程序集
2021-07-05 03:18:40 +00:00
Argo
8bc5415bc0 !1541 fix(#I3Z2NH): resolve set ComponentType on AutoGenerateColumnAttribute not working issue
* fix: 修复 InternalTableColumn 未拷贝 ComponentType 值问题
* doc: 格式化示例文档
2021-07-05 03:04:37 +00:00
Argo
873c491aa1 !1540 feat(#I3Z00I): table support dynamic change column when use DataTable as datasource
* feat: 更新 Table GetValue 方法支持动态类型
* refactor: 更新 AddAutoGenerateColumnAttribute 参数
* refactor: 移除不用的命名空间
* doc: 增加动态列调整示例
* feat: 增加对动态类型列调整后更新数据逻辑
* refactor: 优化 Columns 属性逻辑移除 Lazy
* doc: 更新资源文件
* refactor: 精简代码
* feat: 移除 static 关键字
* refactor: 增加 IDynamicObject 接口
* doc: 增加注释文字
* Merge branch 'dev' into dev-dynamic
* feat: 扩展方法支持 AutoGenerateColumnAttribute 标签
* doc: 增加自定义验证标签示例
* feat: 增加验证标签逻辑
* feat: 增加动态对象上下文扩展方法
* refactor: 资源文件读取时增加动态程序集判断
* feat: 实现 DataTable 的增删改查功能
* feat: ValidateForm 资源文件查找增加动态程序集过滤
* refactor: 使用 nameof 代替字符串
* feat: 增加 Lazy 优化 GetColumns 性能
* refactor: QueryData 支持动态类型
* revert: 重置 SetPropertyValueLambda 方法
* doc: 移除 TODO
* refactor: 更新 DynamicObjectContext 消除警告
* Merge branch 'dev' into dev-dynamic
* feat: 增加动态类型逻辑
* feat: IDynamicObject 移除 ICloneable 接口
* Merge branch 'dev-emit' into dev-dynamic
* feat: 增加动态类生成辅助类
* doc: 更新示例
* feat: 准备使用 Emit 动态生成对象用于生成 Lambda 表达式
* feat: 增加设置默认值方法
* feat: 完善 Clone 方法
* feat: 完善 Clone 方法
* feat: 增加 Clone 功能
* feat: 增加保存功能
* feat: 更新编辑示例
* feat: 模型读写支持动态类型
* feat: 增加编辑功能
* feat: EditorForm 级联模型判定更新允许使用子类
* refactor: 移除不用的命名空间
2021-07-04 05:02:16 +00:00
Argo
53ee7f78b5 !1539 feat(#I3Z008): support add customer Attribute on dynamic class property
* refactor: 更新 EmitHelper 帮助类
2021-07-04 04:57:24 +00:00
Argo
28d64821e2 !1538 refactor(#I3YZVB): remove ICloneable from IDynamicObject
* refactor: 移除  ICloneable 接口
* refactor: 增加 IDynamicObject 接口
* doc: 增加注释文字
2021-07-04 02:41:29 +00:00
Argo
06ce616e95 !1537 refactor(#I3YZMP): update SelectedRows logic on Table component
* fix: 修复 SelectRows 数据被清空问题
2021-07-03 15:25:40 +00:00
Argo
79778a0f81 !1536 doc(#I3YZMG): add auto render after change Items parameter sample code
* doc: 更新 Table 数据源变化示例
* feat: 支持 Items 属性变化时更新 UI
* refactor: 更新 Table 内部 Items 逻辑区分 Items 与 Query 结果
* doc: 移除不使用的方法
2021-07-03 15:17:15 +00:00
Argo
cbf28f292e !1535 feat(#I3VXUH): support auto render UI after Items has changed
* feat: 支持 Items 属性变化时更新 UI
* refactor: 更新 Table 内部 Items 逻辑区分 Items 与 Query 结果
* doc: 移除不使用的方法
2021-07-03 15:14:13 +00:00
Argo
35a9fa857c !1534 feat(#I3VXUA): DateTime default set Value to DateTime.Now when equals DateTime.MinValue
* doc: 更新菜单状态
* doc: 更新 DatetimePicker 示例
* feat: 时间组件不允许为空时如果时间为最小时间默认当前时间
2021-07-02 16:24:05 +00:00
Argo
0e929ab2c1 !1533 fix(#I3YX2M): resolve the delete button on CardUpload not working
* release: bumb version to 5.0.38-beta01
* fix: 修复删除按钮未刷新 UI 问题
2021-07-02 11:41:10 +00:00
Argo
b40f10f731 !1532 fix(#I3Y4XW): resolve show upload card when set IsSingle to true
* fix: 修复设置 IsSignle 后仍然显示上传框问题
2021-07-02 11:37:16 +00:00
Argo
0100cd6750 !1531 refactor(#I3YTYH): update logic for IDynamicObject datasource on Table component
* refactor: 更新 Table 组件动态类型获取 GetItems 逻辑
2021-07-02 05:40:17 +00:00
Argo
4d963f7683 !1530 feat(#I3YTWL): ValidateForm support dynamic assembly check
* feat: 验证表单组件支持动态程序集判断
2021-07-02 05:33:33 +00:00
Argo
92cff04cb8 !1529 feat(#I3YTVC): Utility extensions method support dynamic assembly
* refactor: Utility 资源文件判断是否为动态程序集
* refactor: 移除 ICloneable 接口
* refactor: 格式化代码
2021-07-02 05:24:03 +00:00
Argo
a5524670ae !1528 doc(#I3YTTE): update IsOnlyRenderActiveTab sample code
* doc: 更新菜单状态
* doc: 增加 Tab 仅渲染当前标签页方法
* feat: 增加仅渲染当前 Tab 标签页控制参数 IsOnlyRenderActiveTab
2021-07-02 05:06:29 +00:00
Argo-Tianyi
b6ac4a612f chore: bump version to 5.0.37 2021-07-01 23:06:47 +08:00
Argo
54d3eca9f4 !1527 feat(#I3YRJ9): add IsOnlyRenderActiveTab parameter on Tab
* feat: 增加仅渲染当前 Tab 标签页控制参数 IsOnlyRenderActiveTab
2021-07-01 14:56:28 +00:00
Argo
ba2b33da46 !1526 feat(#I3YF5T): allow subclass of TModel of EditorForm from ValidateForm
* feat: EditorForm 级联模型判定更新允许使用子类
2021-06-29 16:38:52 +00:00
Argo
1974d083d6 !1525 feat(#I3YF59): add EmitHelper static class
* feat: 更新 EmitHelper 操作类
* feat: 增加动态类型逻辑
* feat: 增加动态类生成辅助类
2021-06-29 16:09:23 +00:00
Argo
3ae8e3938d !1524 refactor(#I3YEPI): ToastBox should inherit IDispose interface
* feat: 增加 IDispose 接口
2021-06-29 12:45:03 +00:00
Argo
e670269d0c !1523 fix(#I3YB14): not render when delete tab which the last tab not active
* chore: bump version to 5.0.37-beta04
* fix: 修复 Tab 选中中间标签删除时 UI 未刷新问题
2021-06-29 05:14:38 +00:00
Argo
ffb796b65e !1522 fix(#I3Y8M6): update style for InCell edit on TableSize is Compact
* chore: bump version to 5.0.37-beta03
* fix: 修复紧凑版 InCell 编辑模式样式
* refactor: 修复 InCell 模式取消按钮图标
2021-06-28 17:30:35 +00:00
Argo
1dc90525b2 !1521 doc(#I3Y3LG): add DataTable as data source used in Table component sample code
* doc: 更新示例代码
* feat: 内置 DataTable 自动获取 Items 功能
* refactor: DynamicObject 类移除虚类关键字
* refactor: 删除 Base 基类
* doc: 更新示例
* refactor: 重构代码
* doc: 增加 DataTable 支持示例
* feat: 增加 DataTable 支持
* refactor: 移除不使用的命名空间
2021-06-28 05:18:23 +00:00
Argo
a2ba55fb54 !1520 feat(#I3Y3L8): table component support DataTable as data source
* feat: Table 组件未设置数据源时动态数据自动生成
* feat: Table 组件支持动态对象 DataTable
* feat: 增加动态对象与上下文
* doc: remove unused namespace
2021-06-28 05:15:32 +00:00
Argo
2f4b9c0a2f !1519 refactor(#I3XZ71): improve Items inside Table component logic
* refactor: 优化 Items 逻辑
2021-06-27 01:45:37 +00:00
Argo
6a0fb7023e !1518 doc(#I3XYYS): add submit form async sample code
* refactor: 重构代码消除警告信息
* chore: bump version to 5.0.37-beta02
* doc: 更新验证表单菜单标志
* doc: 更新异步提交表单示例
2021-06-26 16:54:56 +00:00
Argo
b828b49351 !1517 perf(#I3XYYL): improve ValidateForm performace
* perf: 优化 ValidateForm 内部逻辑提高性能
2021-06-26 16:49:05 +00:00
Argo
a72cc715b1 !1516 fix(#I3XY2H): resolve show bootstrap validate tooltip when set SkipValidate
* chore: bump version to 5.0.37-beta01
* fix: 修复设置 SkipValidate 后 bootstrap 仍然进行验证
2021-06-26 08:39:13 +00:00
大胃Q
03893365d6 !1515 feat(#I3XWCK): add lazy loading feature on Tree
* Tree  添加懒加载相关功能
2021-06-25 12:29:54 +00:00
Argo
248cdb3890 !1513 feat(#I3XPW2): add SkipValidate on IEditorItem interface
* feat: 增加 SkipValidate 参数
* refactor: 优化 Utility 操作类
* refactor: 重构 Clone 代码
2021-06-24 11:57:32 +00:00
Argo-Tianyi
853224f56b release: bump version to 5.0.36 2021-06-24 07:47:41 +08:00
Argo
539be91da6 !1512 perf(#I3XIF0): refactor header Checkbox improve table performace
* chore: bump version to 5.0.36-beta10
* refactor: 移除表头 Checkbox 设置状态逻辑优化性能
2021-06-23 15:02:56 +00:00
Argo
9ec5e38a1c !1511 perf(#I3XIEJ): improve Checkbox performace
* refactor: 优化 Checkbox 内部逻辑方式进入死循环
2021-06-23 14:58:15 +00:00
Argo
f3c49bfc70 !1510 fix(#I3XIDI): can not checked the Checkbox on Table when Items is IEnumerable<T>
* refactor: 组件内部 Items 使用 List
2021-06-23 14:53:07 +00:00
Argo
34173fecdc !1509 fix(#I3XAJN): resolve EditTemplate not work in EditInCell mode
* chore: bump version to 5.0.36-beta09
* doc: 更新 InCell 编辑使用模板示例
* fix: 修复 InCell 模式下编辑模板未生效问题
2021-06-22 23:42:45 +00:00
Argo
880bbc70d4 !1508 fix(#I3X8QR): add comma end of the style on Switch component
* chore: bump version to 5.0.36-beta08
* fix: 修复 Switch 组件 style 缺失结束符
* doc: 更新注释
2021-06-22 14:57:21 +00:00
Argo
6dc4cf0ace !1507 doc(#I3WROS): update DateTimePicker in ValidateForm sample code
* Merge branch 'dev' into dev-datetime
* chore: bump version to 5.0.36-beta07
* doc: 更新时间选择框组件客户端验证示例
* fix: 修复时间框验证失败时未弹出 Tooltip 问题
* doc: 整理代码
2021-06-21 23:15:09 +00:00
Argo
104fa0e9e4 !1506 fix(#I3WBE9): resolve not show tooltip when validate failed on DateTime component
* fix: 修复时间框验证失败时未弹出 Tooltip 问题
* doc: 整理代码
2021-06-21 23:10:53 +00:00
Argo
c939f88aa5 !1505 doc(#I3WCI4): add ShowHeaderCloseButton sample code
* doc: 增加禁用标题栏右侧按钮示例
* chore: 更新菜单标志
* chore: bump version to 5.0.36-beta06
* refactor: DialogParameters 更改为只读属性
* feat: ModalDilaog 增加 ShowHeaderCloseButton 参数
2021-06-21 00:09:52 +08:00
Argo
b05a5fb0a8 !1504 feat(#I3WCHU): add ShowHeaderCloseButton parameter on Dialog
* chore: bump version to 5.0.36-beta06
* refactor: DialogParameters 更改为只读属性
* feat: ModalDilaog 增加 ShowHeaderCloseButton 参数
2021-06-21 00:06:42 +08:00
Argo
6a7305640c !1503 feat(#I3WAWM): add HasChildrenCallback func on Table component
* chore: bump version to 5.0.36-beta05
* doc: update comment for HasChildrenCallback
* feat: 增加 HasChildrenCallback 回调委托方法
2021-06-20 10:20:39 +08:00
Argo
a34408db77 !1502 doc(#I3WAW4): update sample code for IsDetails parameter
* doc: 更新菜单状态
* doc: 增加 IsDetails 示例
* doc: 增加 IsDetail 说明文档
* doc: 增加明细行按钮资源文件
* refactor: update comment
2021-06-20 09:46:52 +08:00
Argo
343e2288b1 !1501 feat(#I3WABX): add IsDetails parameter on Table component
* fix: 修复错误
* feat: 更新 ShowDetails 逻辑
* chore: bump version to 5.0.36-beta03
* feat: Table 组件增加 IsDetail 属性
2021-06-19 19:29:19 +08:00
Nine
30e42d9607 !1498 fix(#I3VOT3): show content in advance search dialog
* fix: 修复高级弹窗无内容问题
2021-06-18 12:53:35 +08:00
爱吃油麦菜
b523e54728 !1497 feat(#I3V0D1): add color parameter on RadioList component
* doc: add sample code for radio list color
* feat: add color parameter on RadioList
2021-06-18 12:14:53 +08:00
Argo
221b33446f !1496 doc(#I3W46B): add sample code for editor form customer component type
* chore: bump version to 5.0.36-beta02
* doc: update component status
* doc: 增加 EditItem 指定 ComponentType 示例
2021-06-18 11:44:51 +08:00
Argo
53578f8a37 !1495 feat(#I3W44K): edit item support set ComponentType parameter inline
* fix: 增加 Select 组件额外设置
* fix: 修复 EditorForm 对 ComponentType 支持
* refactor: 移除集合属性 set 关键字
2021-06-18 11:38:45 +08:00
最后一页
73d6011d20 !1494 feat(#I3W34J): edit form auto generate support customer component Select<>
* lz
2021-06-18 10:12:04 +08:00
爱吃油麦菜
32562c59d7 !1493 fix(#I3W0JF): resolve empty body in advance search dialog
* fix: 修复搜索按钮不显示内容问题
* fix: 修复重置按钮文字不正确问题
* refactor: 重置按钮颜色更改为 Secondary
* fix: Reset 方法增加只读属性过滤
2021-06-17 20:36:16 +08:00
Argo-Tianyi
dcc056d56e Merge branch 'dev-EditInCell' into dev 2021-06-17 17:23:22 +08:00
Nine
69dd835ef2 !1492 单元格编辑功能
* feat: add edit in cell feature
2021-06-17 16:53:20 +08:00
Argo-Tianyi
69694bc6a6 chore: bump version to 5.0.35 2021-06-17 16:50:37 +08:00
Argo
f14b8e8cec !1491 feat(#I3V2K1): add edit in cell feature
* Merge branch 'dev' into dev-table-incell-edit
* fix: EditInCell 模式下更改选中项时自动取消正在编辑的数据
* fix: 修复 EditForm 未出现编辑框问题
* refactor: 重构代码服用 Value Change Expression
* feat: 增加行内编辑逻辑
* feat: 增加取消编辑逻辑
* doc: 增加更新按钮与取消按钮资源文件读取
* chore: 增加资源文件
* style: 更新编辑样式
* feat: 增加 InCell 编辑生成组件功能
* feat: 增加渲染单元格功能
* refactor: 移除未使用的代码
* refactor: 精简 AutoGenerateTemplate 方法
* refactor: 移动通过数据类型生成组件方法到工具类中
* doc: add InCell sample code
* feat: add InCell mode
* refactor: rename GenerateComponentType
* refactor: 移动 GenerateComponent 方法到 Utility 中
2021-06-16 19:05:03 +08:00
Argo
9d98418171 !1490 fix(#I3VTXW): remove EditInCell segment
* fix: comment EditInCell segment
2021-06-16 17:33:58 +08:00
Argo
53e61919b1 !1489 fix(#I3VPUY): resolve row status incorrect when switch edit row under edit in cell mode
* fix: EditInCell 模式下更改选中项时自动取消正在编辑的数据
2021-06-16 10:06:03 +08:00
Argo
3a3298ce4b !1488 fix(#I3VOT3): can't edit row when click edit button in toolbar on edit form mode
* fix: 修复 EditForm 未出现编辑框问题
2021-06-15 22:36:44 +08:00
Argo
b4b1357b49 !1486 doc(#I3VFRB): update route parameter sample code
* doc: 增加路由参数示例
* chore: 更新版本号
* doc: 增加为空检测代码
2021-06-12 16:59:35 +08:00
Argo
df89d34bca !1485 refactor(#I3VFCV): refactor code for remove !
* refactor: 增加可为空限定
* refactor: 重构 ServiceProviderHelper 类
* chore: remove ! synx
* docs: 更改 Bar Chart 示例
2021-06-12 13:05:54 +08:00
紫夜
166bb8d0a5 !1484 fix(#I3VFB5): resolve throw exception when call show after click X close modal 2021-06-12 13:00:01 +08:00
Argo
d05c7387dd !1483 refactor(#I3VBCQ): update EFCore extensions project configuration file
* refactor: 重构代码消除警告信息
* fix: 修复 EFCore 扩展组件条件
* refactor: 消除警告信息
2021-06-11 12:33:35 +08:00
Argo
193b2d6ef3 !1482 feat(#I3VBB7): enable hot reload
* feat: enable hot reload feature
* chore: 更新项目文件支持 net6.0-preview4
* chore: 增加配置文件
* chore: 恢复框架为 5.0
* wip: update target framework
* feat: enable hot reload
2021-06-11 12:12:56 +08:00
Argo
a8da97307c !1481 refactor(#I3VB64): resolve warning message
* feat: 更新 PV 消除警告信息
* chore: 更新工程配置文件
* chore: 移除警告信息
* refactor: 更新 KV 参数类型
* refactor: 消除警告信息
* refactor: 更新参数
2021-06-11 11:49:50 +08:00
Argo-Tianyi
6b521def1b chore: update dependence lib version 2021-06-10 13:06:30 +08:00
Argo-Tianyi
1128cd93a7 release: bump version to 5.0.34 2021-06-10 12:46:21 +08:00
Argo
fe263f1259 !1480 feat(#I3V0D1): add RadioList component
* chore: 适配其他组件
* refactor: 更新 Radio 组件
* refactor: 调整级联参数
* doc: 增加支持枚举类型示例文档
* feat: 增加枚举类型简化写法
* doc: 更新属性说明
* refactor: remove unuse namesapce
* chore: 增加垂直分布样式
* feat: 增加默认值逻辑
* feat: 支持复杂类型双向绑定
* doc: 增加 RadioList 示例
* feat: 增加 Radio 组件数据绑定功能
* doc: 更新示例
* refactor: 复用样式
* chore: 增加样式
2021-06-09 14:45:11 +08:00
Argo
6f66c5ad71 !1479 refactor(#I3UX1E): update checkbox component remove CheckboxBase
* refactor: 更新 Radio 组件
* refactor: 重构 Checkbox 组件移除基类
2021-06-08 21:59:16 +08:00
Argo-Tianyi
244f013811 chore: bump version to 5.0.34-beta03 2021-06-06 21:50:28 +08:00
Argo
6fc9278dda !1478 feat(#I3UIZ8): add color option for Chart component
* chore: bump version to 5.0.21-beta01
* chore: 更新颜色脚本
* feat: 增加颜色配置信息
2021-06-06 21:32:00 +08:00
Argo
504910210a !1476 doc(#I3UHVJ): update document for Lookup menu item
* Merge branch 'dev-ad' into dev-doc
* doc: 移动 ad 到顶端
* doc: 移动端强制隐藏 AD
* doc: 更改 Theme Tooltip 触发方式
* doc: 更新日志增加本地化功能
* doc: 增加更新日志资源文件
* doc: theme 切换增加 tooltip 提示
* doc: 更新 Lookup 菜单显示
2021-06-06 20:57:45 +08:00
Argo
4b05c8c701 !1477 doc(#I3UHVM): update Ad position
* doc: 移动 ad 到顶端
* doc: 移动端强制隐藏 AD
2021-06-06 20:57:45 +08:00
Argo
307f343a20 !1475 doc(#I3UFLA): add merge cell functon
* chore: bump version to 5.0.34
* Merge branch 'dev' into dev-table-cell
* doc: 增加合并单元格示例
* doc: 增加合并单元格菜单
* doc: 更新资源文件
* doc: 增加单元格示例
* doc: 更新菜单文档
* feat: 增加合并单元格功能
* doc: 删除不使用的 TablesBase 基类
* feat: 显示继承接口 Lookup 与 OnCellRender 方法
* feat: 增加 OnCellRender 回调方法
2021-06-06 20:57:45 +08:00
Argo
5d8f04c92a !1474 doc(#I3UFKY): add cell merge sample code
* doc: 增加单元格示例
* doc: 更新菜单文档
* feat: 增加合并单元格功能
* doc: 删除不使用的 TablesBase 基类
* feat: 显示继承接口 Lookup 与 OnCellRender 方法
* feat: 增加 OnCellRender 回调方法
2021-06-05 00:54:16 +08:00
Argo
ce1b73631a !1473 feat(#I3TGX6): add cell merge function
* feat: 增加合并单元格功能
* doc: 删除不使用的 TablesBase 基类
* feat: 显示继承接口 Lookup 与 OnCellRender 方法
* feat: 增加 OnCellRender 回调方法
2021-06-05 00:51:22 +08:00
Argo
696a9c158b !1472 fix(#I3UFKE): validation throw exception when use ResourceName and Type
* feat: 兼容 Blazor 多语言设置
2021-06-05 00:46:59 +08:00
Argo
1dc586c6b7 !1471 doc(#I3UFK7): update lookup menu
* doc: 增加 Lookup 菜单资源文件
2021-06-05 00:41:58 +08:00
Argo
264d56c4c0 !1470 fix(#I3U03U): column header not align under fix header mode
* fix: 修复固定表头后列扩展时表头不对齐问题
2021-06-05 00:38:59 +08:00
Argo
326d9575f5 !1469 fix(#I3U1EI): text ellipsis not work when fix header
* chore: bump version to 5.0.34-beta01
* fix: 固定表头时文本省略失效
2021-06-04 11:54:40 +08:00
Argo
f62be01628 !1468 doc(#I3UBMO): update Empty sample code
* doc: 更新 Empty 示例
2021-06-04 11:32:24 +08:00
Argo
944e7d5aa5 !1467 refactor(#I3UBL7): update Empty component add ChildContent parameter
* chore: 更新 Empty 样式文件
* refactor: 更新 Empty 组件内部逻辑
* chore: 更新 Empty.razor.cs.css 样式文件
* chore: 更新 Empty 组件资源文件
* doc: 移动默认图片到 shared 工程
2021-06-04 11:27:40 +08:00
Argo
bdd2cc9b5a !1466 doc(#I3UBJV): update Lookup sample code
* doc: 增加 Lookup 相关菜单
* doc: 增加 Lookup 相关示例
* doc: 更新 Lookup 资源文件
* feat: 增加 Lookup 属性继承逻辑
* refactor:  移动 Lookup 参数到 IEditorItem 上
* feat: 增加 Lookup 参数
2021-06-04 11:24:56 +08:00
Argo
118a45a5d0 !1465 feat(#I3UBID): add Lookup parameter on TableColumn
* feat: 增加 Lookup 属性继承逻辑
* refactor:  移动 Lookup 参数到 IEditorItem 上
* feat: 增加 Lookup 参数
2021-06-04 11:21:08 +08:00
Argo-Tianyi
3520c6e5bb release: bump version to 5.0.33 2021-06-03 12:43:30 +08:00
Argo
1ed26b667b !1463 doc(#I3U52Q): update pie/doughnut Angle parameter sample code
* doc: update Angle sample code for Chart
2021-06-03 11:21:25 +08:00
Argo
d24d6a0a07 !1462 feat(#I3U510): Pie/Doughnut support Angle parameter
* chore: bump version to 5.0.19-beta03
* feat: Chart 支持半圆模式
2021-06-03 11:16:22 +08:00
Argo
4d2519ba99 !1461 doc(#I3TZET): remove ms-learn link add update log
* style: update style for ms-lean element
* feat: 增加更新日志按钮
* chore: 减少时间间隔
* feat: 增加更新日志引导
* doc: 移除拖拽文字
* doc: 增加 Blazor 学习资料
* doc: 更改弹出窗所属分类
* feat: 增加 gitee 日志默认打开
* doc: update menu status
* chore: rename CI work name
2021-06-02 12:09:08 +08:00
Argo
44e203a8e3 !1460 feat(#I3TX21): add FooterTemplate on Table component
* chore: bump version to 5.0.33-beta06
* Merge branch 'dev' into dev-footer-template
* doc: 增加 FooterTemplate 示例
* feat: 增加 FooterTemplate 功能
* refactor: 精简代码
* fix: 修复 Average 聚合函数出错问题
* doc: 更新 Aggregate 示例
* feat: 增加聚合函数解析功能
2021-06-02 00:27:40 +08:00
Argo
aeed60961e !1459 feat(#I3TX1Z): Footer support Aggregate parameter on Table
* fix: 修复 Average 聚合函数出错问题
* doc: 更新 Aggregate 示例
* feat: 增加聚合函数解析功能
2021-06-02 00:22:35 +08:00
Argo
3af40e7948 !1458 doc(#I3TSE6): add aggregate sample code for table
* Merge branch 'dev' into dev-footer
* doc: 增加聚合函数示例
* feat: 增加聚合函数枚举类型
* chore: add condition for environmennt tag
* chore: add environment for AD
* doc: add footer align sample code
* chore: add json resource for footer align
2021-06-01 13:14:28 +08:00
Argo
410c3a6ac8 !1457 doc(#I3TQAQ): add sample code for table footer alignment
* chore: add condition for environmennt tag
* chore: add environment for AD
* doc: add footer align sample code
* chore: add json resource for footer align
2021-06-01 00:24:08 +08:00
Argo
589ae936ea !1456 feat(#I3TQ96): add Align parameter on Table footer
* feat: 增加 TableFooter 对齐功能
* refactor: 精简级联参数
2021-06-01 00:04:14 +08:00
Argo
9ab6b2aba4 !1455 fix(#I3TPCD): resolve show preview url after delete upload images
* chore: bump version to 5.0.33-beta05
* fix: 修复有预览图片时单页面情况下删除时仍然显示预览图片问题
2021-05-31 19:00:40 +08:00
Argo
a5db64a646 !1454 fix(#I3TP63): throw exception when DefaultFileList is null
* chore: bump version to 5.0.33-beta04
* fix: 修复默认预览集合为空导致异常问题
2021-05-31 18:31:19 +08:00
Argo
2cb3e1e186 !1453 feat(#I3TOW5): Upload component support DefaultFileList parameter dynamic update
* chore: bump version to 5.0.33-beta03
* Merge branch 'dev' into dev-upload
* Merge branch 'dev' into dev-upload
* doc: 更改 DefaultFileList 为 List 类型
* doc: 更新代码
* feat: 增加单页面组件基类
* feat: 增加 GetUploadFiles 方法
* refactor: 格式化代码
2021-05-31 18:06:31 +08:00
Argo
465143040d !1452 chore(#I3TOV3): bump chart version to 5.0.19-beta02
* chore: update dependence
* chore: bump version to 5.0.19-beta02
2021-05-31 18:00:44 +08:00
Argo
ec6b9f1f7d !1451 doc(#I3TJIJ): add line chart NaN value sample code
* doc: 增加 Line 图表支持 null 示例
* feat: Line 增加 NaN 数据虚线支持
2021-05-31 00:20:22 +08:00
Argo
234279bd0f !1450 doc(#I3TJHO): add no tension line chart sample code
* doc: 增加无曲率折线图示例
2021-05-31 00:17:07 +08:00
Argo
4575f060e5 !1449 doc(#I3TJHF): update docs.json file for chart sample code
* doc: 更新示例文档代码配置
* doc: 更正 doughnut 图表文件名
* chore: 移除不使用的依赖包
2021-05-31 00:14:11 +08:00
Argo
f1b454a433 !1448 doc(#I3TIRQ): update chart sample code
* chore: bump version to 5.0.33-beta02
* chore: remove supported platform section
* chore: update dependence to latest
* chore: bump chart version to 5.0.19-beta01
2021-05-30 15:57:44 +08:00
Argo
7c3fb1c747 !1447 feat(#I3TINL): bump chart.js version to the latest
* doc: 增加 ChartToast 组件到示例文档中
* feat: 增加 ChartToast 组件
* refactor: 更新 OnInit 未 OnInitAsync
* feat: 增加 Bubble 图示例
* feat: 增加 Doughout 图示例文档
* feat: 更新 Pie 图示例
* feat: 跟新 Pie 图
* feat: 更新 Bar 图示例
* feat: 增加折线曲率设置
* doc: 更新 OnAfterUpdateAsync 回调委托示例
* feat: 增加 OnAfterUpdateAsync 回调委托
* feat: 增加 Chart 组件 Title 相关设置
* feat: 增加数据集更新指令功能
* doc: 更新 Line 示例
* feat: 移除 DataSource 恢复 OnInit 方法
* feat: 增加 ChartAction 枚举类型
* Merge branch 'dev-chore' into dev-chart
* chore: 拆分配置提高可读性
* chore: 增加 source link 功能
* chore: 移动公共配置信息到 props 文件中
* docs: 更新 props 配置信息
* chore: 增加 source link 功能
* chore: 移动公共配置信息到 props 文件中
* docs: 更新 props 配置信息
* doc: 增加升级更新说明
* Merge branch 'dev' into dev-chart
* Merge branch 'dev' into dev-chart
* Merge branch 'dev' into dev-chart
* Merge branch 'dev-fa' into dev-chart
* refactor: 移动 fa 到 Server 工程中
* refactor: 移动 fa 到 Server 工程中
* style: 更新网站样式
* Merge branch 'dev' into dev-chart
* chore: 改造 Line 适配新版本
* chore: 更新打包配置文件
* chore: 更新脚本文件
* chore: 更新样式文件
* refactor: 移动 Line 页面位置
* feat: 增加 Line 折线图
* Merge branch 'dev' into dev-chart
* Merge branch 'dev' into dev-chart
* fix: 修复 Chart 资源文件无法加载问题
* feat: 增加 Index 简介页面
* feat: 增加 Utility 辅助类
* docs: 增加 Chart 简介页面
* docs: 移动 Charts 示例
* docs: 更新菜单拆分图表分类
* chore: 增加图表资源文件
* chore: 更新组件版本号
2021-05-30 15:09:00 +08:00
Argo
c55aa1da03 !1446 chore(#I3TGAH): update blazor project configuration
* chore: update project config
2021-05-29 12:33:57 +08:00
Argo
c2c7168a1b !1445 doc(#I3TFW0): improve set web title logic when click menu item
* Merge branch 'pack' into dev-menu
* fix: 修复点击父级菜单时网站 Title 变更问题
* perf: 有子菜单时取消对内置 Tab 联动
* chore: bump depedence version to latest
2021-05-29 10:06:38 +08:00
Argo
6fc88f4371 !1444 doc(#I3TF3M): toggle component split css
* chore: 拆分 Toggle 样式到组件中
2021-05-28 19:44:49 +08:00
Argo
a54e19436b !1443 fix(#I3TEWC): resolve highlight and redirect issue on Menu component
* chore: 移除对 linux.dockerfile 的引用
* scripts: 更新 Menu 脚本屏蔽 # 地址
* Revert "!1427 fix(#I3RGT7): resolve navigate wrong address after refresh page"
2021-05-28 19:07:01 +08:00
Argo
230dd408ab !1442 doc(#I3TBKB): update Empty component sample code
* refactor: 更新 Empty 示例代码
* doc: 移动 Empty 相关菜单到 Data 下
* refactor: 重构代码
2021-05-28 11:58:42 +08:00
Argo
ffea12352e !1441 fix(#I3TBFW): update docker images for fix run fail after CI
* chore: update base images
2021-05-28 11:40:11 +08:00
Argo
1a5cfdb8b7 !1440 fix(#I3T6Z8): resolve can not show modal again when close dialog use ESC keyboard
* doc: 更新 Modal 组件支持键盘示例
* feat: 更新 Keyboard 生成代码片段
* scripts: 更新 Modal 组件客户端脚本
2021-05-27 15:29:41 +08:00
Argo
a0b1ed8230 !1439 doc(#I3T6VZ): add sample code for dialog support ESC keyboard
* docs: 增加 Dialog 组件支持键盘 ESC 示例
2021-05-27 15:23:53 +08:00
Argo
a3d3f99669 !1438 feat(#I3T6GQ): dialog component support ESC keyboard
* feat: Dialog 组件支持 IsKeyboard 参数
2021-05-27 14:38:00 +08:00
Argo
7b08b126bb !1437 perf(#I3T62J): remove font-awesome from BB
* docs: 更新样式文档
* refactor: 组件移除内置 fontawesome 图标
2021-05-27 13:47:24 +08:00
Argo-Tianyi
64b360881e docs: add friends link 2021-05-27 12:54:53 +08:00
Argo-Tianyi
2c211af219 release: dump version to 5.0.32 2021-05-27 10:28:04 +08:00
Argo
a363d0fba7 !1436 fix(#I3T3MQ): resolve query twice when enable auto refresh on Table component
* chore: bump version to 5.0.32-beta06
* fix: 修复自动刷新功能执行两次问题
* refactor: 移动代码到 OnInit 中
2021-05-26 22:39:56 +08:00
Argo
f58ce83293 !1435 fix(#I3SSRT): resolve customer lang resource not effect
* release: publish 5.0.32-beta05
* fix: 修复自定义语言无法显示问题
* refactor: 更新支持语言逻辑
* chore: 演示网站增加 Chart 程序集资源文件
2021-05-26 12:55:04 +08:00
Argo
f362d7707c !1434 chore(#I3S2RS): add dockfile
* chore: add dockerfile
* chore: add docker.yml
* chore: 增加 Dockerfile
2021-05-25 21:12:28 +08:00
Argo-Tianyi
da259fb225 Revert "!1432 chore(#I3S2RS): add Docker"
This reverts commit eef45dcf71.
2021-05-25 20:27:54 +08:00
Argo
e7c29fd8b7 !1433 revert(#I3SX9O): revert docker PR
* Merge branch 'dev-dockfile' into dev-docs
* Revert "!1432 增加了Docker"
* !1432 增加了Docker
* docs: 更新 h4 样式防止污染组件
2021-05-25 20:26:49 +08:00
Admin
eef45dcf71 !1432 chore(#I3S2RS): add Docker 2021-05-25 20:24:24 +08:00
Argo
41f56c818a !1431 fix(#I3SMEY): resolve dropdown overflow on Editor component
* release: publish 5.0.32-beta04
* fix: 修复 editor 下拉框样式溢出问题
2021-05-25 15:05:54 +08:00
Argo
d244daa174 !1430 fix(#I3SU8P): resolve only show Main partial html when user is not authenticated
* release: publish 5.0.32-beta03
* feat: Layout 增加权限判断
* feat: 改造 IsAuthorizedAsync 为静态方法
* refactor: 重命名 TabAuthorizeView 组件
2021-05-25 14:41:03 +08:00
Argo
e7577c1485 !1429 docs(#I3ST4E): update Layout document remove IsDark parameter
* docs: 移除 IsDark 参数
2021-05-25 11:23:54 +08:00
Argo
8655d6a986 !1428 fix(#I3SR6A): resolve localization resource load failed on Chart component
* fix: 修复 Chart 资源文件无法加载问题
2021-05-24 21:15:46 +08:00
Argo
7c7790e4e5 !1427 fix(#I3RGT7): resolve navigate wrong address after refresh page
* fix: 设置 Menu 默认 href 地址为 null
* chore: 更新打包样式文件
2021-05-24 12:28:35 +08:00
Argo
a2cbfae7ca !1426 docs(#I3SJEP): add IsKeyboard sample code for Modal component
* docs: 更新 Modal 键盘支持示例
* chore: update style
2021-05-23 18:11:57 +08:00
Argo
45574a1821 !1425 feat(#I3S18C): add IsKeyboard parameter on Modal component
* feat: Modal 组件增加 IsKeyboard 参数
* scripts: 更新客户端 js 脚本增加 keyboard 支持
2021-05-23 18:07:51 +08:00
cyss2020
4ea549f4ee !1424 feat(#I3SIAD): update datasets for Chart
* 修改 Chart  Update 时 js    config.data.datasets = option.data.datasets;
2021-05-22 23:21:38 +08:00
Argo
416db9af9b !1423 refactor(#I3SFVF): split Timer style into component
* chore: 拆分 Timer 样式到组件内
2021-05-21 20:46:02 +08:00
Argo
e3eb3a0ffc !1422 refactor(#I3SCJA): split pagination style
* docs: 拆分 Pagination 样式
* docs: 更新 split 脚本
2021-05-21 12:35:55 +08:00
luanxushen
a933f7b95b !1421 fix(#I3S7EE): resolve throw exception when drag bar after changed size on split component
* 1.Split组件修复了组件大小变化后鼠标拖拽异常的bug
2021-05-20 17:57:58 +08:00
Argo-Tianyi
a9eaa9fdd9 release: publish 5.0.31 2021-05-20 15:25:58 +08:00
Argo
acd75f6f40 !1420 feat(#I3S4QK): add authenticate on layout component
* feat: Layout 组件增加权限集成
2021-05-20 12:15:53 +08:00
Argo
4fa0af13f5 !1419 fix(#I3S21V): resolve table column set Editable to false not work
* fix: 修复 Editable 不生效问题
2021-05-19 19:57:54 +08:00
Argo
34dd69769d !1418 fix(#I3S20X): resolve table column visible parameter not work
* fix: 修复 Visible 不生效问题
2021-05-19 19:55:15 +08:00
Argo
0d02d5a6eb !1417 refactor(#I3RY7X): refactor Calendar component
* style: 移动样式表
* fix: 增加命名空间
* refactor: 重构 Calendar 组件移除 sealed 关键字
2021-05-19 11:36:36 +08:00
冥月辰风
17a6a4184d !1416 feat(#I3RXYZ) Add preview/next year button on calendar component
* Add  Calendar Right Side Menu:
2021-05-19 11:09:06 +08:00
Nine
d0443b6779 !1413 feat(#I3RA31): add Empty component
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc: 增加 Empty 文档
* feat: 增加 Empty 样式
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* doc:增加 Empty  组件示例
* feat: 增加 Empty  组件
* Merge branch 'dev' of https://gitee.com/LongbowEnterprise/BootstrapBla…
* refactor: 优化EFCore查询方法
* feat: 添加 IQueryable 扩展方法
2021-05-17 20:48:21 +08:00
Argo
0bb7355111 !1415 refactor(#I3RPH5): remove bg image from bootstrap input number component
* Merge branch 'dev' into dev-inputNumber
* style: 表内使用时不显示背景图
2021-05-17 20:05:33 +08:00
Argo
b5daf82c5c !1414 docs(#I3RPGM): add text align right sample code
* docs: 增加表单右对齐示例
2021-05-17 19:57:54 +08:00
Argo
188760b21b !1412 docs(#I3RIFZ): add customer layout in table cell sample code
* docs: 增加单元格内自定义布局示例
2021-05-17 00:29:11 +08:00
Argo
7791335414 !1411 feat(#I3RGZC): add BootstrapPassword component
* Merge branch 'dev' into dev-password-git
* docs: 增加密码框示例
* refactor: 增加 @ 标识
* feat: 增加密码框组件
* feat: 增加 Password 组件
2021-05-16 00:17:00 +08:00
Argo
a1d5c4093e !1410 feat(#I3RGX1): add border style for header style on Table component
* feat: Table Dark 模式增加一个边框
2021-05-15 23:33:35 +08:00
Argo
c00191e583 !1409 fix(#I3RGWS): not render active when set ClicktoSelect to true
* fix: 修复单点选中行效果丢失问题
2021-05-15 23:30:05 +08:00
Argo
fdc6846972 !1408 feat(#I3RGWC): hidden RenderFragment parameter on AutoGenerateColumnAttribute
* refactor: ITableColumn 接口显示继承
2021-05-15 23:21:58 +08:00
Argo-Tianyi
7afa39639b release: publish 5.0.31-beta01 2021-05-14 21:34:18 +08:00
Argo
13c4a5a308 !1406 fix(#I3RAQK): resolve Cascader UI mess
* style: 增加级联选择器样式
* refactor: 重构 active 逻辑
* refactor: 移除 li 节点样式
* refactor: 改造 Cascader 组件 dom 结构
2021-05-14 13:24:46 +08:00
Argo-Tianyi
2c97eb649d release: publish 5.0.30 2021-05-13 21:57:04 +08:00
Argo
d7245d7715 !1405 feat(#I3R87A): Menu support auto expand when mouse hover under collapsed status
* feat: Menu 组件增加大屏收缩效果
2021-05-13 21:17:39 +08:00
Argo
87894b3a76 !1404 feat(#I3R858): ValidateForm support ErrorMessage as localization key
* docs: 更新 Table 编辑示例
* feat: 表单验证增加 ErrorMessage 检索逻辑
2021-05-13 20:50:52 +08:00
Argo
b1d2a31324 !1403 feat(#I3R84R): add FormatParsingErrorMessage method on ValidateBase
* feat: ValidateBase 增加 FormatParsingErrorMessage 方法
2021-05-13 20:40:07 +08:00
刘亮
7bdc18f48c !1402 fix(#I3R83A): initialize selected items on Transfer component failed
* 修复Transfer是绑定List<string>设置不上value的问题
2021-05-13 20:21:39 +08:00
j4587698
7d64d8e125 !1400 feat(#I3R5NY): CheckboxLIst add IsVertical parameter
* 添加竖向显示
2021-05-13 19:43:38 +08:00
Argo
7c4004fbb7 !1401 docs(#I3R7AI): remove count label from quick star menu item
* refactor: 移除快速入门子项数量显示
2021-05-13 17:51:15 +08:00
Argo
ad3b3d1a0c !1399 fix(#I3PXMV): resolve Menu UI render on small screen
* feat: 增加鼠标悬停展开效果
* style: 微调侧边栏菜单样式
* style: 更新样式
* refactor: 移除 Layout 火柴棍效果
* refactor: 更新  Layout.razor.css 文件
* refactor: 更新 Menu.razor.css
* Merge branch 'dev' into dev-menu
* scripts: 更新 collapse 下脚本
* style: 更新 collapse 下样式
2021-05-13 13:45:51 +08:00
Argo
f6cf51040a !1398 fix(#I3R4RB): resolve Upload init default value on ValidateForm can't pass validate
* fix: 修复 Upload 组件初始化值时验证逻辑
2021-05-13 13:44:16 +08:00
Argo
4081d39e48 !1397 docs(#I3QWJ7): update enable/disable auto refresh feature on Table component
* release: publish 5.0.30-beta05
* docs: 增加按钮控制 Table 组件是否开启自动更新功能
* fix: Table 组件自动更新无法停止问题
2021-05-12 01:09:18 +08:00
Argo
27684f3c21 !1396 fix(#I3QWJ4): can't stop auto refresh when enable the function on table component
* fix: Table 组件自动更新无法停止问题
2021-05-12 01:07:36 +08:00
Argo
8c35ad8832 !1395 feat(#I3QL3S): add Target parameter on MenuItem for open new window
* release: publish 5.0.30-beta04
* refactor: 代码重构
* feat: MenuItem 增加 Target 属性
2021-05-10 11:42:50 +08:00
Argo
36c8cb0ecb !1394 fix(#I3QB2B): resolve Transfer component not response when load Items async
* release: publish 5.0.30-beta03
* fix: 修复 Transfer 异步加载数据后按钮点击后无响应问题
2021-05-07 21:06:50 +08:00
Argo
1089d977b8 !1393 fix(#I3Q0ND): resolve alway submit form when CardUpload in ValidateForm
* release: publish 5.0.30-beta02
* fix: 增加 type="button" 属性
2021-05-07 14:38:23 +08:00
Argo
ba51c7bf13 !1392 feat(#I3Q03B): async button in ValidateForm support Task.FromResult
* fix: ValidateForm 中异步提交按钮支持假异步
2021-05-07 13:32:56 +08:00
Argo
292af40f82 !1391 refactor(#I3PZI7): add margin-top style for li in side menu
* fix: 修复菜单侧边栏最后一个 li 样式问题
* chore: 增加 props 文件
2021-05-07 11:26:54 +08:00
Argo
8a885bd6b7 !1390 fix(#I3PTHG): resolve Download not working on wasm mode
* release: publish 5.0.30-beta01
* fix: Download 组件 wasm 模式下无法下载问题
2021-05-06 16:27:19 +08:00
Argo-Tianyi
ce2f02a0a6 release: publish 5.0.29 2021-05-06 12:29:48 +08:00
Argo
0fd6d13e60 !1389 docs(#I3PT99): update side menu sample code
* Merge branch 'dev' into dev-sidemenu
* style: 微调侧边栏样式
2021-05-06 12:28:13 +08:00
Argo
2d05f57b83 !1388 fix(#I3PT8M): resolve side menu shake when enable accordion function
* style: 微调菜单样式防止侧栏菜单收缩时抖动
2021-05-06 12:23:47 +08:00
Argo
a90b72a179 !1387 docs(#I3PPXY): update docs for localization
* release: publish 5.0.29-beta06
* docs: 更新配置文件回落文化为 en
2021-05-05 15:36:24 +08:00
Argo
3dccced09b !1386 fix(#I3PPV6): resolve throw exception on wasm mode
* refactor: 修复 wasm 模式 SupportedCultures 报错问题
2021-05-05 14:50:27 +08:00
Argo
39d2064d73 !1385 feat(#I3PPUT): add default value for Tab AdditionalAssemblies parameter
* refactor: Tab 组件 AdditionalAssemblies 增加 ssr 模式默认值
2021-05-05 14:46:58 +08:00
Argo
804493c764 !1384 perf(#I3POHN): improve localization logic
* release: publish 5.0.29-beta05
* feat: 多语言支持回落机制
2021-05-04 18:12:34 +08:00
Argo
7a948134b0 !1383 docs(#I3PKYS): update Menus component in Layout usage
* docs: Layout 组件 Menus 参数使用属性进行赋值
2021-05-04 15:15:46 +08:00
Argo
d61d853d60 !1382 perf(#I3PKM8): remove await keyword from JSRuntime InvokeVoidAsync method
* refactor: InvokeVoidAsync 移除 await 关键字
* refactor: InvokeAsync 增加可为空标记
2021-05-04 10:58:06 +08:00
Argo
bd81b0fa7b !1381 feat(#I3PKC7): Button IsAsync feature support Task.FromResult
* feat: 异步按钮支持假异步操作
2021-05-03 23:36:42 +08:00
Argo
45c6b14663 !1380 fix(#I3PK3K): ConfirmButton missing IDisposable interface
* fix: ConfirmButton 缺少 IDisposable 接口
2021-05-03 23:10:01 +08:00
Argo
af276d0e65 !1379 fix(#I3PK8W): localization of configuration not work for zh and en resourse
* fix: 修复资源文件未设置时仍然生效问题
2021-05-03 22:25:34 +08:00
Argo
f98bcb63ab !1378 refactor(#I3PK8I): rename FallbackCultureName to FallbackCulture
* refactor: 更改 FallbackCultureName 参数名
* refactor: 更新 GetCache 方法
* refactor: BootstrapBlazorOptions 属性 SupportedCultures 默认可为空
* refactor: CheckboxList 移除 Options
2021-05-03 22:07:19 +08:00
Argo
1185705ade !1376 feat(#I3PJKC): add TabItemTextDictionary parameter for Tab component
* chore: release 5.0.29-beta03
* docs: 增加 TabItemTextDictionary 参数说明
* feat: Tab 组件支持异步加载数据设置首页显示标题
* refactor: Tab 组件增加 TabItemTextDictionary 参数
* refactor: Main 参数移除增加不可为空标签
* refactor: SideMenu OnClick 回调移除默认值
* refactor: MenuLink 增加 Url 过滤 / 功能
* refactor: 更新代码精简逻辑
* refactor: 删除不用的变量
2021-05-03 11:00:06 +08:00
Argo
f144ef33e5 !1375 docs(#I3PIH5): update ValidateForm docs for SetError method
* release: publish beta version 5.0.29-beta02
* docs: 更新 ValidateForms 文档
2021-05-02 01:49:56 +08:00
Argo
693af9ab68 !1374 feat(#I3PIH3): ValidateForm support set model value in OnInitializeAsync method
* feat: ValidateForm 支持异步设置 Model 值
2021-05-02 01:39:10 +08:00
Argo
f95bebfbb2 !1373 fix(#I3P231): resolve ValidateForm not support init Model in OnInitializeAsync method
* refactor: 更新 ValidateForm 异步示例
* refactor: ValidateBase 更改 ValidateForm 方法
* refactor: 更新 ValidateForm 内部缓存键值类型
2021-05-02 01:35:35 +08:00
Argo
72687d0b83 !1372 fix(#I3P21L): Menu component sub menu not support accordion function
* fix: 修复手风琴效果不正确问题
2021-05-02 01:33:19 +08:00
Argo
4183b0be9c !1371 fix(#I3PIFP): ModalDialog add localization feature for close button
* fix: 更新 UI 关闭按钮使用资源文件
* fix: ModalDialog 关闭按钮未使用资源文件
* docs: 更新英语资源文件
* docs: 更新资源文件
2021-05-01 23:46:26 +08:00
Argo
4caea5dfa0 !1370 docs(#I3OZIR): add sample code for dynamic component in ValidateForm
* docs: 更新菜单状态
* docs: 增加动态变更表单内组件示例
2021-04-30 14:19:38 +08:00
Argo
18ac8ccec7 !1369 feat(#I3OZDW): add TryRemoveValidator method on ValidateForm component
* feat: ValidateForm 增加 RemoveValidator 方法
* fix: 修复 ValdiateForm 未继承 IAsyncDisable 接口问题
2021-04-30 14:01:47 +08:00
Argo
b7c73137b5 !1368 chore(#I3OYLF): format component javascript
* refactor: 更新打包文件
* refactor: 表单验证脚本更改为 Extend 方式
* refactor: Menu 脚本增加 $ 防止被覆盖
* refactor: html5edit 更改为 bb_html5edit
* refactor: Table 脚本增加 $ 参数防止被覆盖
* refactor: Upload 组件脚本增加 $ 参数防止被覆盖
* refactor: Slider 组件脚本更名为 bb_slider
* docs: 删除 Slider 文件夹下 rate 打包脚本
2021-04-30 11:02:52 +08:00
Argo
cdc69c2320 !1367 fix(#I3OYHK): ValidateForm add IAsyncDisposable interface
* fix: 修复 ValidateForm 使用 SetError 方法后页面有 Tooltips
2021-04-30 10:48:56 +08:00
Argo-Tianyi
481be3a5b2 release: publish 5.0.28 2021-04-29 17:20:23 +08:00
Argo
4fd5a23ecd !1366 fix(#I3OVJC): resolve Checkbox not show invalid message when enable ValidateAllProperties on ValidateForm
* fix: 修复验证所有属性时 CheckboxList 无验证问题
* refactor: 代码复用使用 Validate 方法
* refactor: 提炼 Validate 方法代码复用
* Merge branch 'dev' into dev-checkboxlist
* refactor: ValidateForm 验证跳过集合
* refactor: 使用 OfType 代替 Where 过滤条件
* refactor: 移除 sealed 关键字
2021-04-29 17:13:38 +08:00
Argo
a4d112e0a4 !1365 fix(#I3OUQZ): validate form support complex class validation function
* revert: 移除表单验证过滤条件
2021-04-29 16:13:40 +08:00
Argo
305283993c !1364 docs(#I3OTB9): update table detail row sample code menu text
* docs: 更新英语下明细行菜单
2021-04-29 13:25:28 +08:00
Argo
e6bdaae6ce !1363 feat(#I3OT83): sub class support new keyword override parent class property
* feat: 内部使用 GetProperty 方法统一使用 GetProperties
2021-04-29 13:22:57 +08:00
Argo
ce64046690 !1362 feat(#I29FLZ): redesign SideMenu UI support float submenu on Collapsed mode
* feat: 增加侧栏收缩状态下级联选中功能
* revert: 移除间隙防止鼠标在间隙时菜单消失
* style: 微调收缩模式下子菜单间隙
* feat: 收缩模式下移除缩进功能
* style: 更新收缩模式下子菜单展开箭头样式
* feat: 微调收缩状态下样式
* style: 更新样式
* Merge branch 'dev' into dev-menu-collapse
* chore: 更新 Collapsed 状态下脚本
* feat: 移除 SideMenu 的 IsCollapsed 参数
* feat: 增加收缩状态下样式
* style: 增加收缩图标样式
* docs: 更新动态更新菜单数据源示例
* scripts: 支持动态更新数据源
* fix: 修复变量错误问题
* Merge branch 'dev' into dev-menu-collapse
* refactor: 移除 bugs 文件
* Merge branch 'dev' into dev-menu-collapse
* feat: 菜单增加全部展开功能
* feat: 增加自动展开功能
* docs: 增加全部展开按钮
* chore: 增加全部展开资源文件
* scripts: 更新脚本支持全部展开
* fix: Tree 组件内 Checkbox 禁止显示 Label
* chore: 规范化资源文件
* refactor: 更新侧边栏菜单示例
* style: 更新侧边栏菜单样式
* docs: 删除 menus 资源文件
* docs: Menus 示例文档增加多语言支持
* refactor: 移除 IndentSize 属性
* perf: 提高性能
* refactor: 精简代码
* feat: 增加菜单初始化功能
* refactor: 移除 DisabledNavigation 属性
* style: 精简样式
* feat: 更新过期方法提示信息
* feat: TopMenu 增加单独使用保护
* refactor: 格式化代码
* docs: 更新菜单数据源增加异步模拟方法
* feat: 修复顶栏下拉菜单无法收起问题
* feat: 增加空集合保护
* feat: 增加默认构造函数
* feat: 从新设计 MenuItem Items 属性
* fix: 修复顶栏 dropdown 无法收缩问题
* feat: 微调顶栏带图标菜单样式
* docs: 增加资源文件
* wip
* style: 增加顶栏宽度设置
* feat: 顶栏 MenuLink 移除前后图标占位
* feat: 增加顶栏切换菜单动画效果
* refactor: 更新顶栏菜单
* feat: 侧栏增加禁用支持
* feat: 顶栏不进行缩进操作
* refactor: 移除不用的方法
* chore: 更新样式
* feat: 增加 MenuItem 扩展方法
* refactor: 增加禁用样式
* chore: 精简样式 nav-link-text 更改为 text
* style: 移除顶端间隙
* refactor: 微调 badge 顺序
* scripts: 增加首次加载展开节点功能
* refactor: 精简样式
* feat: 防止 SideMenu 独立使用
* refactor: 精简样式
* chore: 精简 javascript 脚本
* docs: 更新样式表顺序
* docs: 更新示例文档
* feat: 增加菜单手风琴功能切换
* feat: 根节点不缩进
* style: 微调菜单左右间距
* chore: 增加资源文件
* chore: 更新脚本
* style: 减少右侧间隙
* chore: 完善手风琴效果
* feat: 增加递归设置 Indent 方法
* docs: 微调侧边栏菜单宽度为 300
* feat: 设置几个菜单匹配方式为 MatchLink.All
* chore: 更新侧边栏菜单样式
* feat: Menu 组件增加侧边栏脚本调用方法
* feat: MenuLink 右侧箭头占位
* chore: 更新侧边栏右侧箭头样式
* chore: 增加侧边栏菜单脚本
* docs: 更新资源文件行设置菜单
* style: 更新菜单背景色
* feat: Menu 组件增加缩进参数默认 16
* refactor: 重构侧边栏菜单
* refactor: 更新代码使用 Enumerable.Empty
* feat: 增加缩进功能
* feat: 增加 Indent 属性
* style: 增加菜单集合右侧小箭头样式
* style: 更新样式
* docs: 更新注释文档
* Merge branch 'dev' into dev-Menu
* Merge branch 'dev' into dev-Menu
* fix: 修复翻页或者更改每页显示条目数后 ShowTips 失效问题
* Merge branch 'dev' into dev-Menu
* wip: 侧边栏菜单优化(未完成)
* refactor: remove OnCollapsed default value
* feat: SideMenu add IsCollapsed parameter
2021-04-29 12:46:25 +08:00
Argo
d7547b76a2 !1361 docs(#I3OGXE): add microsoft docs learn
* docs: 增加 mvp 链接
* docs: 更新 ms-docs 文章
* chore: 增加图片
2021-04-27 21:17:49 +08:00
Argo
dbaebf2c2e !1360 docs(#I3OER7): add ad external link
* chore: 更新 ad 广告脚本顺序与样式
* chore: 更新广告样式
* chore: 增加样式
* chore: 增加 banner
* chore: 增加流量脚本
2021-04-27 15:55:36 +08:00
Argo
8fd8689969 !1359 feat(#I3ODK8): TryConvertTo throw exception when type is string
* fix: 修复 TryConvertTo 报错问题
2021-04-27 14:06:33 +08:00
Argo
b038291382 !1358 feat(#I3OAUQ): Select support Placeholder
* docs: 更新 Select 绑定可为空类型示例
* feat: 可为空类型首选项支持 PlaceHolder 设置
2021-04-26 21:45:29 +08:00
Argo
a0fb963bc3 !1357 feat(#I3O7QY): add TryConvertTo string extensions method
* refactor: 增加错误保护
* test: 更新输出日志信息
* refactor: 删除不用的代码
* feat: 增加 TryConvertTo 方法
* test: 更新性能测试
2021-04-26 15:04:58 +08:00
刘亮
3b37589ef9 !1356 feat(#I3O56M): CheckboxList MultiSelect support List<Guid> data
* Merge branch 'dev' of gitee.com:LongbowEnterprise/BootstrapBlazor into dev
* fix checkboxlist and multiselect when bind-value is a List<guid>
* update bind to new property
2021-04-26 10:53:08 +08:00
Argo
4e082ca7da !1355 fix(#I3HWSW): throw exception when use new keyword change property Type in sub class
* fix: 修复获取属性时遇到 new 关键字重写属性报错问题
2021-04-26 00:39:48 +08:00
刘亮
7549240abf !1354 fix(#I3HWSW): throw exception when use new keyword change property Type in sub class
* update bind to new property
2021-04-26 00:14:52 +08:00
阿凡达
f0f2c733da !1353 docs: update SwalCategory xml doc
* update src/BootstrapBlazor/Components/SweetAlert/SwalOption.cs.
2021-04-25 21:34:56 +08:00
Argo
35c550bfa3 !1352 fix(#I3O3QP): checkbox label should not shown in Tree component
* fix: Tree 组件内 Checkbox 禁止显示 Label
2021-04-25 19:38:03 +08:00
Argo
5638f86466 !1351 fix(#I3MJKW): resolve throw exception InputUpload component
* release: publish 5.0.28-beta01
* fix: 修复 InputUpload 抛异常问题
2021-04-23 20:24:20 +08:00
Argo
795d39a07d !1350 fix(#I3MC54): resolve Pagination component not render after change ItemsPerPage source
* Merge branch 'dev-docs' into dev-fix
* fix: 每页显示数量变更时重新刷新组件
* chore: 更新依赖组件 5.0.18
2021-04-22 18:39:12 +08:00
Argo
41a1382e76 !1349 chore(#I3NMBT): extensions upgrade to 5.0.18
* chore: 扩展组件更新到 5.0.18
* docs: 更新英文 main 编译状态链接
2021-04-22 14:58:39 +08:00
Argo-Cloud
ac4e5c03c6 release: publish 5.0.27 2021-04-22 14:37:18 +08:00
Argo
28aacd755f !1348 feat(#I3NM1W): redesign Transfer component support Validation
* docs: 更新异步加载数据源示例
* feat: 支持客户端验证
* style: 增加客户端验证样式
* Merge branch 'dev-docs' into dev-transfer
* docs: 增加资源文件
* docs: 删除资源文件
* !1344 docs(#I3NF1P): Menu support localization
* docs: 更新示例文档
* feat: 支持表单验证
* perf: 未双向绑定时减少 invoke 调用
* style: 增加 Transfer 项目样式防止折行
* docs: 更新 github action main 分支状态
* docs: 更新资源文件
* docs: 更新 action 链接
2021-04-22 14:35:21 +08:00
Argo
bebdf4e7c6 !1346 docs(#I3NFM4): update readme.md
* chore: 增加 build actions
* docs: 更新 readme 文档
2021-04-21 16:30:46 +08:00
Argo
2fb689e987 !1345 fix(#I3NF8X): InputNumber throw exception in wasm mode on Centos server
* fix: 修复 wasm 模式下 InputNumber 报错问题
2021-04-21 16:06:59 +08:00
Argo
98f945121b !1344 docs(#I3NF1P): Menu support localization
* docs: 更新资源文件
* docs: Table 支持多语言
* docs: 数据组件支持多语言
* docs: 表单组件支持多语言
* docs: 消息组件支持多语言
* docs: 导航菜单支持多语言
* docs: 布局组件多语言
* docs: 增加组件总览多语言
* docs: 增加快速上手英文菜单
* refactor: 更新首页响应式布局
* style: 微调按钮宽度
* chore: BaseLayout 增加 c# 代码
* chore: 增加资源文件
* style: 更新 theme z-index 值
* feat: CultureChooser 组件支持本地化
* Merge branch 'dev' into dev-localizer
* refactor: WIP
2021-04-21 15:52:58 +08:00
Argo
4be6ccbc92 !1343 docs(#I3N1EB): update download sample code
* docs: 更新示例
* refactor: 格式化文档
* chore: 打包 js 文件
2021-04-20 17:03:08 +08:00
j4587698
bc0ba0733c !1342 feat(#I3J3DD): Download component support URL link feature
* 下载组件增加获取url的功能
2021-04-20 16:15:58 +08:00
Argo
d91bd93554 !1341 docs(#I3MZ20): update async get data from webapi cascading update select Items sample code
* release: publish 5.0.27-beta07
* docs: 更新异步级联更新下拉框示例
2021-04-20 12:58:09 +08:00
Argo
818bea5062 !1340 fix(#I3IA28): increase delay interval to 300 prevent removeChild throw exception
* fix: 修复 removeChild 客户端脚本错误
2021-04-20 12:40:50 +08:00
Argo
b12513bbe6 !1339 fix(#I3MZ03): checkbox component show label on transfer panel inside ValidateForm
* fix: Transfer 内部 Checkbox 为针对 ValidateForm 适配问题
2021-04-20 12:35:48 +08:00
Argo
314b837d63 !1338 fix(#I3MR1F): resolve Option not render in Select component
* fix: Select 组件 Options 不能加载问题
2021-04-19 20:07:22 +08:00
Argo
253618307e !1337 fix(#I3MNBI): remove duplicate OnClickWithoutRender callback
* refactor: 移除重复的 OnClickWithoutRender
2021-04-19 18:40:30 +08:00
Argo-Cloud
ede70e7010 release: publish 5.0.27-beta04 2021-04-19 15:39:52 +08:00
Argo
22b472fab6 !1336 refactor(#I3MDXO): redesign Select component
* refactor: 更新 Dropdown 组件适配 SelectBase 改动
* docs: 更新 Select 示例代码
* refactor: 重构 SelectBase 精简代码
* refactor: 移除 bind-Items 双向绑定
2021-04-19 15:38:30 +08:00
Argo
bbc442b0f6 !1335 feat(#I3LVCV): Select support bind-Items feature
* docs: 更新 Select 级联参数示例
* refactor: 重构代码
* feat: 更新首次加载触发条件
* feat: 增加 Items 双向绑定支持
* docs: 更新过期提示信息
* refactor: 增加 Items 为空检查
* refactor: 增加 Items 双向绑定支持
2021-04-19 00:31:49 +08:00
Argo
c6a51e3e29 !1334 fix(#I3LVBZ): MultiSelect OnParameterSet should check CurrentValueAsString
* docs: 更改级联参数示例
* fix: 修复级联更改数据源不正确问题
2021-04-19 00:30:21 +08:00
Argo
866824d7ea !1333 refactor(#I3LS7P): multi-select change Items type to IEnumerable<T>
* docs: 更新 MultiSelect 组件示例文档
* feat: MultiSelect 数据源更改为 IEnumerable 支持 out 关键字
2021-04-18 22:50:50 +08:00
Argo
bce5422c24 !1332 refactor(#I3LFLZ): remove MultiSelect Items bind
* release: publish 5.0.27-beta03
* docs: 更新 OnSelectedItemsChanged 方法示例
* feat: 移除 Items 双向绑定
* Revert "feat: 移除 OnSelectedItemsChanged 回调"
* docs: 更新 MultSelect 示例文档
* feat: 移除 OnSelectedItemsChanged 回调
2021-04-18 17:29:41 +08:00
Argo
b81130da87 !1331 docs(#I3L2BR): add catch for ExampleExtensions
* docs: 获取源码方法增加 TaskCancelException 捕获
2021-04-18 15:53:53 +08:00
Argo
cc0e92a511 !1330 refactor(#I3L26F): Modal disposing changed to async
* refactor: 增加 TaskCanceledException 保护
* refactor: Modal 使用异步销毁方法
2021-04-18 15:51:42 +08:00
Argo
7166fceed1 !1329 fix(#I3KWF7): button submit type not work in ValidateForm on IsAsync mode
* fix: 修复表单提交按钮异步操作时图标不变化
2021-04-18 14:21:48 +08:00
Argo
69d26ba5af !1328 feat(#I3KWB0): update FormatValueString method in MultiSelect
* refactor: MultiSelect 内部使用缓存提高性能
* docs: 更新 MultiSelect 示例文档
* fix: MultiSelect 内部支持异步赋值
2021-04-18 14:20:07 +08:00
Argo
6246d0792f !1327 feat(#I3JCAS): add stream parameter override method on Download component
* feat: 增加一个流参数重载方法
* docs: 更新 Download 组件示例
* refactor: 优化 Download 组件代码
* docs: 更新 Download 组件示例代码
* refactor: 重构代码增加注释
* chore: 格式化脚本
* docs: 增加 Option 注释
2021-04-17 16:32:11 +08:00
Argo
c608060f44 !1326 feat(#I3J9XZ): MultSelect support bind-Items
* release: publish 5.0.27-beta02
* docs: 更新 MultiSelect 示例
* feat: MultiSelect 组件 Items 增加双向绑定支持
* docs: 更新 MultiSelect 示例文档
* refactor: 更新 SelectedItems 内部逻辑
2021-04-17 14:20:16 +08:00
Argo
b85a89a671 !1325 fix(#I3J8UD): sub class of ValidationAttribute not working on ValidateForm
* fix: 修复 Validation 派生类不生效问题
2021-04-17 11:56:23 +08:00
j4587698
08b3745b8d !1322 feat(#I3J3DD): add Download component
* 添加示例页面
* 增加Download组件
2021-04-17 10:22:09 +08:00
Argo
2d57844dce !1324 fix(#I3J5CT): throw client javascript exception can't find $.initTheme function when reboot app
* chore: 增加 version 关键字
* chore: 微调脚本加载顺序
2021-04-16 15:22:11 +08:00
Argo
234e7b3f17 !1323 feat(#I3J5C9): Transfer support bind-Items feature
* chore: 增加 SetItems 方法过期标签
* docs: 微调样式
* refactor: 优化性能
* docs: 更新双向绑定示例
* fix: 修复全选为过滤搜索条件问题
* docs: 更新示例代码独立数据源
* style: 微调搜索栏样式
* docs: 更新示例文档
* docs: 增加资源文件
* refactor: 重构内部逻辑
* refactor: 移除基类
* docs: 更新更改数据源示例
* feat: 增加 SetItems 方法
2021-04-16 15:19:08 +08:00
Argo
71915a8669 !1321 feat(#I3J1VX): Display support Nullable<bool> and Null
* fix: 修复 bool? 类型与 Null 值显示不正确问题
2021-04-16 00:34:24 +08:00
Argo-Cloud
b57b70855e release: publish 5.0.27-beta01 2021-04-15 19:32:21 +08:00
Argo
aaa8d5f2d6 !1320 fix(#I3J0GH): render twice in Dialog component
* fix: 移除 StateHasChanged 方法
2021-04-15 17:56:24 +08:00
Argo
7c24ec65a2 !1319 fix(#I3IXZW): Button IsAsync function not working in 5.0.26
* fix: 按钮异步提交功能丢失
* refactor: wip
2021-04-15 14:08:15 +08:00
Argo
a7b3bf4105 !1318 feat(#I3IWEU): extensions upgrade version to 5.0.17
* chore: 部署脚本增加 dotnet restore
* chore: 扩展类版本更新到 5.0.17
* chore: 更新 sdk 到  5.0.202
2021-04-15 11:18:51 +08:00
Argo-Cloud
1feb75425e release: publish 5.0.26 2021-04-15 10:46:22 +08:00
Argo
8b1fd0cc7c !1317 fix(#I3IVZV): Avatar GetUrlAsync not working after render
* fix: 修复 GetUrlAsync 不生效问题
2021-04-15 10:46:19 +08:00
Argo
e49bfaab5f !1316 fix(#I3IVUS): should be Show Text value on Display component when provider Data parameter
* fix: 修复 Display 组件提供 Data 后显示内容不正确问题
2021-04-15 10:35:57 +08:00
Argo
1711200a39 !1315 fix(#I3ITV3): CloseOtherTabs and CloseAllTabs not rerender UI
* release: publish 5.0.26-beta08
* fix: Tab 公开方法 CloseOtherTabs 与 CloseAllTabs 未刷新 UI 问题
2021-04-14 19:13:26 +08:00
Argo
22e56afff6 !1314 feat(#I3ISWR): add OnCollapseChanged callback on Collapse component
* docs: 增加 Collapse 点击事件回调示例
* feat: 增加 CollapseItem 点击事件
* feat: 增加 Collapse 状态回调方法
2021-04-14 17:02:35 +08:00
Argo
fe9d30a0a2 !1313 feat(#I3IQKI): add TitleColor parameter on Collapse component
* docs: Collpase 增加 TitleColor 示例
* feat: Collapse 增加 TitleColor 参数
* style: 更新 CollapseItem Title 样式
2021-04-14 15:49:42 +08:00
Argo
2761d641d0 !1312 fix(#I3IR9J): Button support change the Icon parameter dynamic
* fix: Icon 支持动态更新
2021-04-14 14:36:27 +08:00
Argo-Cloud
39bf5c595b release: publish 5.0.26-beta07 2021-04-14 11:20:00 +08:00
Argo
c00fab53d4 !1311 feat(#I3IQ1A): MultiSelect support reset SelectedItems after call SetItems method
* docs: 更新 MultiSelect 组件更新数据源重置候选项示例
* feat: MultiSelect 组件切换数据源时支持已选项
2021-04-14 11:12:01 +08:00
Argo
4b24062b44 !1310 feat(#I3IOAD): Avatar component support change GetUrlAsync callback
* fix: 修复 Avatar 组件在表格中无法更新问题
2021-04-14 00:41:00 +08:00
Argo
72b491488e !1309 fix(#I3ILGW): PopoverConfirm button not work with DialogService
* release: publish 5.0.26-beta06
* fix: 修复 Table 组件行内删除按钮不选中行问题
* refactor: 移动 Show 方法到按钮类中
* refactor: 移除对 IsAsync 的支持直接使用 OnClick
* docs: 更新文档
* refactor: 移除 Hide 方法
* Revert "refactor: 删除不使用的文件"
* refactor: 精简服务类内部代码
* refactor: 使用 OnClickButton 优化性能
* refactor: 移除 PopoverConfirmBase 基类
* docs: 更新注释文档
* refactor: 删除不使用的文件
2021-04-13 22:58:46 +08:00
Argo
e20fbd193f !1307 feat(#I3ILXS): add generic method ToEnumDisplayName<TEnum> for EnumExtensions
* feat: 增加 ToEnumDisplayName 泛型方法
* refactor: 增加 Enum 泛型方法
2021-04-13 16:08:45 +08:00
Argo
2b55cbb8ed !1306 docs(#I3IK0J): update Labels sample code link
* docs: 更改 BB 仓库分支为 main
* docs: 增加 ConfigureAwait 方法
* test: 增加一个 delegate 单元测试
* docs: 更改 Labels 位置
2021-04-13 15:53:50 +08:00
Argo
12ba06f35c !1305 refactor(#I3IGXO): RequiredValidator redesign make sure Localizer avaliable
* refactor: RequiredValidator 内部资源文件处理更新
2021-04-12 22:22:15 +08:00
Argo
b8ff10d26b !1304 fix(#I3IGA9): TitleService throw exception object disposed
* refactor: 重构 Title 组件内部逻辑
2021-04-12 18:55:01 +08:00
Argo-Cloud
2edcc489ca release: publish 5.0.26-beta05 2021-04-12 18:27:08 +08:00
Argo
0bb2ae50a4 !1303 fix(#I3IG3A): Layout throw exception when call DisposeAsync
* fix: Layout 组件 DisposeAsync 抛出异常
2021-04-12 18:22:12 +08:00
Argo
ec234e8d3c !1302 docs(#I3IFZU): update README.md file
* docs: 更改 BootstrapBlazor 分支为 main
2021-04-12 18:11:57 +08:00
Argo
99a501d5d2 !1301 chore(#I3ICOP): upgrade sdk to 5.0202
* refactor: 更新依赖组件到 5.05
2021-04-12 13:12:15 +08:00
Argo-Cloud
1af4e6308c release: publish 5.0.26-beta04 2021-04-11 23:59:39 +08:00
Argo
958a9d6ae0 !1300 feat(#I3IA2H): Table SaveModelAsync method support ShowLoading parameter
* docs: 增加 Loading 示例代码链接
* feat: 增加内部 InternalToggleLoading 方法
* refactor: 增加 ShowLoading 支持
* feat: 增加内部 ToggleLoading 方法
2021-04-11 23:33:07 +08:00
Argo
12b49f6fa5 !1299 fix(#I3IA28): resolve throw invalid exception when reload Table component
* fix: 增加 Disposing 保护
2021-04-11 23:29:05 +08:00
Argo-Cloud
bb054152be release: publish 5.0.26-beta03 2021-04-10 23:49:36 +08:00
Argo
bdadf3a83c !1297 feat(#I3I8CP): Table sort feature support ShowLoading parameter
* feat: 重新设计 ShowLoading 方法
* docs: 更新注释
* refactor: 完善 ShowLoading 逻辑
* refactor: 精简代码
* feat: 精简 Loading 代码
* feat: 精简 Loading 代码
* refactor: 精简 Loading 代码
* feat: 更新 OnSortAsync 代码
* script: 更新脚本
2021-04-10 23:45:06 +08:00
Argo-Cloud
e52a236c26 release: publish 5.0.26-beta02 2021-04-09 16:26:01 +08:00
Argo
4ba98c0471 !1293 feat(#I3I447): page and page items support ShowLoading parameter
* feat: Table 组件翻页方法支持 ShowLoading
* feat: 增加 wasm 模式脚本调用判断
* scripts: 更新脚本
2021-04-09 16:25:25 +08:00
Argo
d7f6ef805a !1292 fix(#I3I3OX): not rerender ui after DELETE file on CardUpload component
* style: 更新 CardUpload 宽度
* fix: 修复 CardUpload 无法删除问题
2021-04-09 15:48:34 +08:00
Argo
d8c9f17321 !1291 feat(#I3I268): EditDialog support Table ShowLoading parameter
* feat: EditDialog 增加遮罩
* docs: 更新菜单状态
* script: 增加 EditDialog 遮罩样式与脚本
* docs: 增加数据加载示例文档
* docs: 增加数据加载菜单
* refactor: 移除双向绑定
2021-04-09 12:36:41 +08:00
Argo
b157b76610 !1290 fix(#I3I010): redesign ShowLoading logic of Table component
* release: 5.0.26-beta01
* feat: 搜索相关按钮支持 ShowLoading 功能
* feat: 删除按钮支持 Loading 功能
* perf: 工具栏按钮使用无刷新方法提高性能
* feat: 编辑按钮对 Loading 支持
* feat: 新建按钮增加对 Loading 支持
* refactor: Table 组件刷新按钮提高性能使用无刷新方法
2021-04-09 01:55:14 +08:00
Argo
918266778a !1289 chore(#I3HZQO): upgrade extensions to 5.0.16
* chore: 依赖扩展组件升级到 5.0.16
* chore: 依赖组件升级到 5.0.16
2021-04-08 21:33:44 +08:00
Argo-Cloud
2cdea01d9e release: publish 5.0.25 2021-04-08 20:36:08 +08:00
Argo
a2947ffd2c !1285 feat(#I3HZA6): add SetItems on MultiSelect component
* docs: MultiSelect 增加级联选择示例
* feat: MultiSelect 增加 SetItems 方法
2021-04-08 19:13:11 +08:00
circlelee1981
252d9a713f !1281 fix(#I3HYGJ): throw exception after callback from webapi if close dialog manual
* update Modal.razor.cs 避免重复关闭
2021-04-08 17:12:52 +08:00
Argo
252187a361 !1283 fix(#I3HYFW): revert !1280 PR for fix can't catch property inherit from parent class
* 修复Lambda 扩展方法无法获取基类属性,添加相应单元测试
2021-04-08 17:10:06 +08:00
Argo-Cloud
8420543845 release: publish 5.0.24 2021-04-08 14:58:20 +08:00
Argo
2dab2c3005 !1280 fix(#I3HWSW): throw exception when use new keyword change property Type in sub class
* docs: 格式化文档
* test: 增加单元测试
* fix: Lambda 扩展方法获取属性方法支持继承类使用 new 关键字更改属性类型
* docs: 更新 Items 注释文档
* chore: 更新依赖组件
2021-04-08 14:44:47 +08:00
Argo
cd4322cc20 !1278 feat(#I3HT3D): Upload component support inside ValidateForm
* style: 更新头像上传框样式
* docs: 增加头像框上传组件在表单中使用示例
* feat: 上传组件支持数据验证
* feat: 表单数据验证逻辑增加对 Upload 组件支持
* refactor: Chart/Markdown 组件继承 IDisposable 接口
* feat: 增加 ValidateFile 方法
* feat: AvatarUpload 支持上传文件改变时立即客户端验证
* feat: InputUpload 支持文件改变时立即进行客户端验证
2021-04-07 19:18:56 +08:00
Argo
6217855c84 !1277 refactor(#I3HSBU): Chart/Markdown implement IDisposable interface
* chore: 更新扩展组件版本
* refactor: IAsyncDisposable 接口更新
* refactor: Chart/Markdown 组件继承 IDisposable 接口
2021-04-07 19:10:59 +08:00
Argo
bfc54e86b2 !1276 feat(#I3HK4J): add IsTree parameter on Table component
* docs: 更新 Table 树形数据文档
* feat: Table 组件树形结构又 IsTree 参数控制
2021-04-07 00:40:32 +08:00
Argo
f06d7feda1 !1272 perf(#I3H1FQ): update component inherits IDisposable or IAsyncDisposable interface
* refactor: BootstrapComponentBase 移除 IDispose 接口
* refactor: QRCode 继承 IDispose 接口
* refactor: Rate 继承 IDispose 接口
* refactor: MultiSelect 继承 IDispose 接口
* refactor: Slider 继承 IDispose 接口
* refactor: Swal 继承 IDispose 接口
* refactor: Title 继承 IDispose 接口
* refactor: TableFilter 继承 IDispose 接口
* refactor: Toast 继承 IDispose 接口
* refactor: Timer 继承 IDispose 接口
* refactor: Modal 继承 IDispose 接口
* refactor: Message 继承 IDispose 接口
* refactor: Editor 继承 IDispose 接口
* refactor: Table 组件按钮继承 IDispose 接口
* refactor: Dialog 继承 IDispose 接口
* refactor: TimePickerCell 继承 IDispose 接口
* refactor: ColorPicker 继承 IDispose 接口
* refactor: Captcha 组件继承 IDisposable 接口
* refactor: Camera 继承 IAsyncDisposable 接口
* refactor: ValidateBase 移除 Dispose 方法
* refactor: BarcodeReader 继承 IAsyncDisposable 接口
* feat: Layout 继承 IAsyncDisposable 接口
* revert: 移除 DEBUG 宏定义
2021-04-06 11:51:13 +08:00
Argo
dc10c2ad2d !1271 feat(#I3GOGP): add Data parameter on Display component
* release: publish 5.0.24-beta06
* docs: 更新 Display 组件示例
* feat: Display 组件增加 Data 参数
* release: publish 5.0.24-beta05
2021-04-06 01:48:19 +08:00
Argo
8d9e4bc00a !1270 refactor(#I3GLM6): update the popconfirm button default value
* docs: 更新确认弹窗示例
* docs: 更新确认弹窗按钮默认值
2021-04-06 00:40:31 +08:00
Argo
aa3de4ee74 !1269 fix(#I3GJ68): update extensions version resolve chart and markdown component throw exception
* fix: 更新依赖组件到 5.0.16-beta01
* refactor: 更新依赖组件到最新版
* release: 扩展组件升级到 5.0.14
* refactor: 更新 WebsiteOpitons 支持本地环境
* revert: 移除 Display 同步格式化回调方法
2021-04-05 23:55:29 +08:00
Argo
0f68ef4022 !1268 feat(#I3FKWM): Display provider FormatterAsync callback
* docs: 更新同步格式化回调委托示例
* feat: Display 组件增加同步格式化字符串回调委托
* docs: 更新异步格式化回调委托示例
* feat: Display 组件支持异步格式化
2021-04-05 15:40:35 +08:00
Argo-Cloud
657ed3cf69 release: publish 5.0.24-beta04 2021-04-05 02:02:12 +08:00
Argo
36fb575512 !1267 refactor(#I3FBXA): remove CultureStorageExtensions class
* docs: 更新文档错别字 Content
* refactor: 移除 CultureStorageExtensions 扩展
2021-04-05 01:55:03 +08:00
Argo
4b6e0edaf5 !1266 refactor(#I3FBU8): remove TItem Item parameter
* refactor: 合并 OnClickWithourRender 回调委托
* refactor: 重构 TableCellButton 精简代码
2021-04-05 01:45:12 +08:00
Argo
6a28892db4 !1265 docs(#I3FA8Y): update popconfirm button in cell sample code
* release: publish 5.0.24-beta03
* docs: 更新表格单元格内显示确认弹窗示例
2021-04-04 23:07:36 +08:00
Argo
d299f8b4cf !1264 fix(#I3F9DM): upload validation always failed
* fix: 修复 Upload 客户端验证失效问题
2021-04-04 21:47:37 +08:00
Argo
e036b4ee7c !1263 feat(#I3F81W): add Display component
* docs: 更新示例文档增加 form-inline 示例
* docs: 更新内联样式下 Display 组件示例
* feat: EditorForm 支持 Display 组件
* style: 更新 EditorForm 内 Display 组件样式
* docs: 更新 EditorForm 示例代码
* docs: 更新 Display 组件示例代码
* feat: Display 组件内置对枚举集合数组处理逻辑
* feat: 增加 DisplayBase 基类
* refactor: 重构代码使用 NullableUnderlyingType 变量
* refactor: 重构代码 FormatValueAsString 使用参数
* feat: TooltipComponentBase 继承 IAsyncDisposable 接口
* feat: 更新 Checkbox 默认颜色
* docs: 更新 Display 组件示例文档
* feat: 增加 Display 组件
* docs: 更新 Inputs 组件文档
* feat: 增加组件统计合计配置功能
* docs: 增加 Display 组件菜单
2021-04-04 19:33:03 +08:00
Argo
ab8b333e14 !1262 feat(#I3F0V9): add GetUrlAsync callback method on Avatar
* docs: 更新 Avatar 异步加载图片示例
* feat: Avatar 支持异步加载图片
2021-04-04 00:29:29 +08:00
Argo
d9bbf0853a !1261 feat(#I3EZMH): Checkbox support Color parameter
* docs: 更新示例代码
* feat: Checkbox 组件增加 Color 颜色设置
2021-04-03 21:29:17 +08:00
Argo
8bf4f7aa8d !1260 feat(#I3EZGY): add IsDiabled on SelectItem
* docs: 增加 Select 选项禁用示例
* feat: 增加禁用项点击事件保护
* style: 增加 IsDisabled 样式
* scripts: 更新脚本增加针对 IsDisabled 选项逻辑
* feat: 增加 IsDisalbed 属性
2021-04-03 21:11:13 +08:00
Argo
9b364ae87d !1259 fix(#I3EY3W): SelectedRows of Table always null if not use bind-SelectedRows
* release: publish 5.0.24-beta02
* fix: 修复 SelectedRows 为空
2021-04-03 18:17:52 +08:00
Argo
3e2e6e0198 !1258 feat(#I3EX6X): add Title component
* docs: 更新网站 Title 示例
* docs: 更新首页网站标题
* refactor: 增加资源文件
* feat: 增加 IDisposable 接口逻辑
* docs: 更新 Title 组件文档
* Merge branch 'dev' into dev-title
* docs: 增加网站标题示例文档
* feat: 增加 Title 服务
* scripts: 增加 SetTitle 脚本
2021-04-03 18:01:41 +08:00
Argo
e4a3a886c7 !1257 fix(#I3EVJM): resolve throw exception when change page has Dialog component
* fix: 修复切换页面导致脚本错误问题
* Merge branch 'dev' into dev-toast
* Merge branch 'dev-dialog2' into dev-toast
* Merge branch 'dev-dialog' into dev-toast
* docs: 格式化文档
* docs: 更新 Toasts 文档
* fix: 修复 Modal 组件未释放资源问题
* refactor: SweetAlert 继承 IDispose 接口
2021-04-03 15:45:51 +08:00
Yinmany
c51c2b67e9 !1256 fix(#I3EVJM): Modal should be call dispose method
* update src/BootstrapBlazor/Components/Modal/Modal.razor.cs.
2021-04-03 14:31:46 +08:00
Argo
743ae67586 !1255 feat(#I3EVG0): update DefaultFileList parameter logic in Upload
* refactor: 重构代码
* refactor: 更改 DefaultFileList 逻辑首次加载时读取
2021-04-03 10:57:06 +08:00
Argo
10105843ef !1254 revert(#I3EVFW): revert Avatar logic
* fix: 修复示例文档 Icon 模式未设置图标问题
2021-04-03 10:54:36 +08:00
Argo
de240b9d1c !1253 fix(#I3EVFA): update InputNumber throw exception on ShowButton mode
* fix: 修复 InputNumber 显示按钮时 float double decimal 报错问题
2021-04-03 10:47:07 +08:00
Argo
7ac372fbc5 !1251 fix(#I3EPOP): step attribute missing on Input type is number
* release: publish 5.0.24-beta01
* fix: 修复 Step 生成不正确问题
2021-04-02 02:38:20 +08:00
Argo
6fa9cd4916 !1250 feat(#I3EPO5): add global config for Toast placement
* feat: 全局配置增加 ToastPlacement 设置项
* feat: 增加泛型 Copy 方法
2021-04-02 01:58:01 +08:00
Argo
0d2d01e4d2 !1249 fix(#I3EPN1): column show/hide feature not work on Table card view mode
Merge pull request !1249 from Argo/dev-chore
2021-04-02 00:53:28 +08:00
circlelee1981
48cfc05834 !1247 SearchText lambda expression should be use Or logic
* update DefaultDataService 参与搜索的各条件用"OR"运算
2021-04-02 00:26:47 +08:00
Argo
07c9da99e1 !1248 feat(#I3EGFT): TimePicker can use mouse wheel choose time
* refactor: 兼容 firefox
* feat: 增加滚轮逻辑代码
* refactor: 增加 Interop 类带返回值方法
* script: 增加滚轮 js 效果代码
2021-04-02 00:18:43 +08:00
Argo
3fc6c80c86 !1245 chore(#I3EM8C): update dependence to 5.0.23
* chore: 更新扩展组件版本
* chore: 扩展类版本更新到 5.0.13
* refactor: 移除 Markdown 版本号
2021-04-01 16:00:22 +08:00
Argo-Cloud
f8dcc0b6b2 release: publish 5.0.23 2021-04-01 13:47:35 +08:00
Argo
73a34d169d !1244 docs(#I3EJIM): update selected rows in line Button sample code
* docs: 更新行内按钮操作后选中当前行示例
* feat: 行内按钮支持设置当前行选中功能
* fix: 修复小屏幕下行号不正确问题
2021-04-01 12:08:54 +08:00
Argo
bdda880aa5 !1243 fix(#I3EJHX): table line no keep increase on mobile mode
* fix: 修复小屏幕下行号不正确问题
2021-04-01 12:04:49 +08:00
Argo
62cae7a29e !1242 feat(#I3EIU2): InputNumber set default value for single double decimal
* feat: Step 增加默认值
2021-04-01 11:01:38 +08:00
Argo
abbbfdd0a3 !1241 feat(#I3EHKZ): add checkbox-list style for min-height default value 35px
* style: 更新样式设置最小高度
2021-04-01 00:26:46 +08:00
Argo
c1e6fffdee !1240 refactor(#I3EHK7): redesign EditorForm cascading value for show label
* feat: 修复 EditorForm 级联参数确保 ShowLabel 判断准确
2021-04-01 00:12:32 +08:00
Argo
324455eedd !1239 fix(#I3EGGO): validate component should not auto show label when bind data
* fix: 修复 EditorForm ShowLabel 逻辑
2021-03-31 18:13:54 +08:00
Argo-Cloud
4941e31bb7 release: publish 5.0.23-beta13 2021-03-31 17:40:51 +08:00
Argo
4a15cd7608 !1238 feat(#I3D6UP): update ValidateForm/EditorForm/Validate component ShowLabel logic
* docs: 增加表单标签菜单
* docs: 更新文档
* feat: 调整 CheckboxList 显示内容
* feat: 优先考虑 EditorForm 未嵌套 ValidateForm 情况
* docs: 增加 label 文档
* refactor: 更改方法关键字
* feat: 更新 Checkbox ShowLabel 逻辑
* feat: 更新 ShowLabel 逻辑
* refactor: Toggle 组件使用 IsShowLabel 参数
* refactor: EditForm 更改为 ValidateForm
* feat: ValidateForm 增加 ShowLabel 参数
* feat: EditorForm ShowLabel 参数使用 ValidateForm 级联值
2021-03-31 17:40:16 +08:00
Argo
437b4d96c7 !1237 feat(#I3EG1S): avatar/upload support reset Url parameter use code
* feat: 更改参数逻辑
2021-03-31 17:39:05 +08:00
Argo-Cloud
7d740425e7 release: publish 5.0.23-beta12 2021-03-31 01:27:43 +08:00
Argo
8155325018 !1236 fix(#I3EB63): not restore the default display text when use variable
* fix: 修复标签不能动态改变问题
2021-03-31 01:13:28 +08:00
Argo
3555963903 !1235 docs(#I3EB62): update docs for table edit sample code
* docs: 更新无限弹窗示例
* docs: 增加 TableEdit 示例文档说明
* Merge branch 'dev' into dev-docs
* refactor: remove SetKey
* refactor: update key
* refactor: 优化代码
* docs: update sample code link
2021-03-31 01:04:50 +08:00
Argo
05246ee852 !1234 fix(#I3EB4V): ValidateForm valid failed when change model by code
* fix: 修复 ValidateForm 表单不支持动态更改 Model 问题
2021-03-31 00:18:44 +08:00
zglp
f215ecec7b !1230 docs(#I3E9Q5): update Dialog ShowModal sample code
* 移除多余空格
* Merge remote-tracking branch 'Argo/dev-dialog-table' into dev-DialogShowModal
* Merge branch 'dev' into dev-DialogShowModal
* fix: 修复弹窗实战示例2
* 修复对话框调用ShowModal组件渲染两次
2021-03-30 17:44:54 +08:00
Argo
68283dda24 !1233 docs(#I3E8DI): remove unused c# file
* refactor: 重构代码逻辑
* refactor: 移除文件
* docs: 更新明细行示例代码
2021-03-30 15:52:05 +08:00
Argo
ad35968019 !1231 docs(#I3E7HZ): update Table AufoRefresh sample code
* docs: 更新配置文档
* docs: 更新 Table 组件自动更新文档示例
2021-03-30 14:35:26 +08:00
Argo
3610c1e89f !1229 docs(#I3E6RM): update Table Column sample code
* docs: 更新列示例文档
* chore: update nuget package source
* chore: update eidtorconfig file
2021-03-30 13:03:49 +08:00
Argo-Cloud
a03d6d4869 chore: add nuget.config file 2021-03-29 17:17:19 +08:00
Argo-Cloud
5517556bb9 release: markdown 组件发布 beta01 版本 2021-03-29 16:48:48 +08:00
Argo
37c562d176 !1228 feat(#I3E183): VadliateForm support async submit button
* docs: 增加异步提交表单示例
* feat: 验证表单支持异步提交按钮
2021-03-29 15:29:07 +08:00
j4587698
b27ed69ada !1227 feat(#I3DX9J): add IsViewer for Markdown component
* 添加MarkdownEditor的Viewer模式
2021-03-29 15:23:38 +08:00
Argo
d37f192a66 !1226 feat(#I3DZKZ): add logic for single async button on Table Toolbar
* docs: 更新示例文档
* feat: 增加异步按钮单独控制功能
2021-03-29 12:03:02 +08:00
Argo
ecf6bd1464 !1225 fix(#I3DYX5): select All item in Table filter not trigger OnQueryAsync method
* fix: 修复 Table Filter 功能选择全部时不重新查询问题
2021-03-29 11:04:18 +08:00
Argo
52462a457c !1224 feat(#I3DYJF): add style for label not required in validate form
* style: 微调表单组件内 Label 对齐方式
2021-03-29 10:35:36 +08:00
Argo
c0a19c9596 !1223 fix(#I3DXDI): expand all items when click padding area on Collapse body
* release: publish 5.0.23-beta10
* refactor: 增加静态关键字
* fix: 移除点击事件
2021-03-29 00:23:40 +08:00
Argo
82366af97a !1222 refactor(#I3DWY8): change service lifetime to scope
* refactor: 移除 BootstrapBlazorRoot 代码
* refactor: 重构代码
* feat: 更新 ServiceProviderHelper 逻辑
* refactor: 重构代码
* refactor: 更改服务生命周期为 Scope
2021-03-28 18:58:09 +08:00
Argo
e7c9a879e9 !1221 docs(#I3DWJQ): update async download sample code
* release: publish 5.0.23-beta08
* docs: 更新异步下载示例
2021-03-28 15:14:42 +08:00
Argo
9d316d6abf !1220 feat(#I3DWIV): ToolbarButton support IsAsync mode
* docs: 更新异步下载示例
* feat: TableToolbarButton 支持 IsAsync 功能
* docs: 更新 Table 组件数据导出示例
* feat: 更改 ToastBox 参数形式
* feat: ToastOption 配置类内置 ToastBox 实例用于关闭弹窗
* refactor: 精简代码
* scripts: 增加关闭弹窗方法
* docs: 增加异步下载示例
* docs: 更新注释文档
2021-03-28 15:07:28 +08:00
Argo
8614831edc !1219 feat(#I3DWIO): add Close method on ToastOption
* docs: 更新 Table 组件数据导出示例
* feat: 更改 ToastBox 参数形式
* feat: ToastOption 配置类内置 ToastBox 实例用于关闭弹窗
* refactor: 精简代码
* scripts: 增加关闭弹窗方法
* docs: 更新注释文档
2021-03-28 15:05:36 +08:00
Argo
3fbf39878a !1218 fix(#I3DVN9): filter the Editable property on EditDialog if not set Items value
* Merge branch 'dev' into dev-editor-dialog
* release: publish 5.0.23-beta07
* fix: EditDialog 自动使用 Editable 条件的属性
* refactor: 更改参数类型为 KeyValuePair<string, object?>
2021-03-28 02:15:46 +08:00
Argo
74e4268f01 !1217 refactor(#I3DVN8): use KeyValuePair<string, object?> type for NET6.0
* refactor: 更改参数类型为 KeyValuePair<string, object?>
2021-03-28 02:08:42 +08:00
Argo
e592416919 !1216 fix(#I3DVN3): not filter the Searchable condition in SearchDialog
* fix: SearchDialog 未过滤 Searchable 条件
* refactor: 更新 GenerateColumns 方法
2021-03-28 01:40:48 +08:00
Argo
b525035da4 !1215 fix(#I3DVN2): update Button logic prevent reassign OnClick event callback
* fix: 修复 Button 点击事件二次赋值问题
2021-03-28 01:38:25 +08:00
Argo
ec3a123bfb !1214 feat(#I3DVAK): add IsAsync parameter on Button
* docs: 更新按钮菜单状态
* docs: 增加异步加载示例
* feat: Button 增加 IsAsync 属性
* refactor: 移除不使用的代码
2021-03-27 20:17:39 +08:00
Argo
5f121ec1ce !1213 fix(#I3DUHU): duplicate add Button in table toolbar when switch ShowButton
* release: pubulish 5.0.23-beta06
* fix: 修复按钮添加后无法移除问题
2021-03-27 14:53:50 +08:00
Argo
fbe7fd228b !1212 docs(#I3DU7B): add row menu link
* refactor: 移除测试按钮
* docs: add row component menu
* docs: update checkboxlist IsDisabled doc
* docs: 增加 ValidateForm 视频链接
2021-03-27 13:30:03 +08:00
Argo
72420740ea !1211 feat(#I3DU67): upload support Disable feature
* feat: 卡片式上传组件支持禁用
* style: 更新卡片式上传组件样式
* feat: 头像上传组件支持禁用
* style: 头像类型上传组件更新样式
* feat: 上传按钮样式组件支持禁用
* style: 更新样式
* refactor: InputUpload 增加禁用功能
2021-03-27 12:59:36 +08:00
Argo
11dace83c6 !1210 docs(#I3DTRQ): add DataService sample code
* docs: 增加自定义数据服务示例
2021-03-27 10:46:19 +08:00
Argo
82ca776f88 !1209 feat(#I3DTRL): add disable feature on CheckboxList
* docs: CheckboxList 增加禁用示例
* feat: CheckboxList 支持禁用功能
2021-03-27 10:44:50 +08:00
Argo
978279f363 !1208 fix(#I3DP5D): remove editable is false items in Table use EditMode is EditForm
* release: publish 5.0.23-beta05
* fix: 修复 EditMode 为 EditForm 时自动生成 Editable = false 列仍然出现
2021-03-26 21:10:13 +08:00
Argo
18b1c3bf86 !1207 refactor(#I3DP46): remove BootstrapBlazorRoot component
* release: publish 5.0.23-beta04
* feat: 完善 ServiceProviderHelper 逻辑
2021-03-26 20:55:53 +08:00
Argo
e5cf86ea4f !1206 feat(#I3DN0R): redesign Upload component for inside in ValidateForm
* release: publish 5.0.23-beta03
* docs: 更新资源文件
* docs: 更新设置预览地址示例
* docs: 更新示例文档
* feat: 增加表单内使用显示标签方法
* refactor: 增加泛型支持
2021-03-26 17:30:39 +08:00
Argo
c162fc28e5 !1205 docs(#I3DKZQ): add Bulma link
* docs: 增加 Bulma 链接
2021-03-26 15:55:30 +08:00
Argo
5ea38c99d1 !1204 fix(#I3DHAR): improve ServiceProviderHelper class use BootstrapBlazorRoot make sure use the same ServiceProvider
* docs: 格式化 wasm 代码
* refactor: 精简代码移除注册服务代码
* docs: 示例文档增加 BootstrapBlazorRoot 组件
* feat: 增加 BootstrapBlazorRoot 组件
* refactor: 更改注入服务生命周期为 Singleton
* docs: 更改 SwalService 注入服务位置
* docs: 增加主题切换配置
* docs: 更新 Theme 主题切换按钮 z-index = 10
2021-03-26 15:04:25 +08:00
Argo
ca286e8e99 !1203 feat(#I3DF9O): add ShowResetSearch parameter default value is true
* docs: 更新清空搜索按钮文档
* feat: 增加清空搜索按钮控制参数
2021-03-26 00:18:17 +08:00
Argo
131473a5c0 !1202 docs(#I3DECD): update table export sample code
* docs: 更新导出示例链接
* docs: 更新导出功能示例
2021-03-25 23:21:46 +08:00
Argo
eb992f8ada !1201 docs(#I3DDGK): update table filter sample code
* docs: 更新示例文档链接
* docs: 更新过滤示例代码
2021-03-25 22:23:30 +08:00
Argo-Cloud
c04a142697 release: publish 5.0.23-beta01 2021-03-25 22:44:02 +08:00
zglp
120c22ccb3 !1198 fix(#I3DC8H): missing ValidateContext in CustomerValidator
* 修复自定义ValidationAttribute时ValidationContext为null
2021-03-25 20:43:18 +08:00
Argo
6cd9acf32d !1200 feat(#I3D7YR): add red * before label when bind field has required attribute
* feat: 增加 Required 标签检查
* docs: 更新文档
* style: 更新样式
* feat: 表单组件支持必填项显示 *
* feat: VaildateBase 增加 Required 属性用于增加 html 标签
* feat: ValidateForm 增加 ShowRequiredMark 参数默认为 true
* refactor: 使用注入服务获取 JsonLocalzationOptions
2021-03-25 18:32:01 +08:00
Argo
f722ad07fe !1199 feat(#I3D71B): update ServiceProviderHelper logic for make ServiceProvider same scope
* refactor: 根据 ServiceProviderHelper 调整代码
* feat: 增加 ssr 模式对 HttpContextAccessor 的注入
* feat: 更新 ServiceProviderHelper 内部逻辑保证 Scope 一致性
2021-03-25 15:31:20 +08:00
Argo
de747e1bc2 !1197 feat(#I3CXJY): Select auto generate Items if TValue is enum
* docs: 精简代码不需要设置 Items
* docs: 更新 ValidateForms 中对 Select 枚举类型处理示例
* feat: Select 组件内置对枚举类型的处理
* docs: 更新 ValidateForm 示例文档
* refactor: 更新 SetError 方法
2021-03-24 16:04:34 +08:00
zglp
d05b6bba8c !1195 fix(#I3CTEJ): update OnTreeExpand method
* 修复OnTreeExpand中调用异步函数出错
2021-03-24 11:36:04 +08:00
Argo
a28667f25e !1196 docs(#I3CSYA): update dependence lib
* chore: 更新依赖组件到最新版
* chore: 扩展类更新版本懂啊 5.0.12
2021-03-24 11:23:29 +08:00
刘亮
23e385b107 !1194 feat(#I3CSX1): add SetError override method
* 加入SetError的一个重载,使用字符串指定字段
2021-03-24 11:16:51 +08:00
Argo Zhang
c50d429102 docs: add link for changelog 5.0.22 2021-03-24 10:37:31 +08:00
Argo Zhang
a9ccb16e19 release: publish 5.0.22 2021-03-24 10:28:15 +08:00
Argo Zhang
49ecc6cc27 docs: update changelog 5.0.22 2021-03-24 10:22:57 +08:00
Argo-Cloud
e24d35e3b7 release: publish 5.0.22-beta04 2021-03-24 03:02:18 +08:00
Argo
6c6af4a444 !1193 feat(#I3CQYI): add OnEditAsync callback on Table
* feat: 增加 OnEditAsync 回调委托
2021-03-24 00:54:53 +08:00
Argo
e84bbc3e4d !1192 feat(#I3CQY7): redesign row component for grid layout
* docs: 微调文档
* chore: 开启压缩
* Merge branch 'dev' into dev-rows
* docs: 更新示例代码
* scripts: 支持嵌套使用
* Merge branch 'dev' into dev-rows
* feat: IValidateComponent 增加禁用与跳过属性
* docs: 更新示例代码
* refactor: 精简代码
* feat: 增加 grid 脚本用于自动布局
* docs: 更新嵌套示例
* docs: 更新 Row 组件示例使用实际组件呈现
* style: 更新 Select 在 Row 组件中的布局样式
* style: 增加 Switch 组件在 form-row 中的布局样式
* docs: 更新示例
* feat: 完善布局脚本
* docs: 更新示例
* chore: 增加样式与脚本
* refactor: 更新 Row 组件
* feat: 增加 row 类型与每行组件数量枚举类型
* revert: 重置 BootstrapComponentBase
2021-03-24 00:37:10 +08:00
Argo
4b5524c583 !1191 feat(#I3CQXQ): auto generate column can customer component for property
* Merge branch 'dev' into dev-EditorForm
* docs: 移除布尔类型数据渲染模板
* feat: 组件内部处理 bool 数据类型呈现组件
* feat: IEditorItem 增加 ComponentType 属性可自定义呈现组件
2021-03-24 00:19:29 +08:00
Argo
8caca1b0e5 !1190 docs(#I3CQXN): update table detail row sample code
* docs: 更新明细行示例
2021-03-24 00:13:05 +08:00
Argo
fa56698d87 !1189 fix(#I3CPLZ): update item count in EFCore data service
* release: 发布 5.0.12-beta02
* fix: 修复 EFCore 页码不正确问题
2021-03-23 18:42:01 +08:00
Argo
3b24f9ccc7 !1188 feat(#I3CPJK): Switch compatible with Row
* style: 增加 Switch 组件在 form-row 中的布局样式
2021-03-23 18:30:03 +08:00
Argo
6d35296b37 !1187 feat(#I3CPJ8): Select compatible with Row
* style: 更新 Select 在 Row 组件中的布局样式
2021-03-23 18:26:57 +08:00
Argo
ca6ece9ac8 !1186 perf(#I3CPID): improve validate performance
* feat: IValidateComponent 增加禁用与跳过属性
2021-03-23 18:23:02 +08:00
zglp
7f78203481 !1172 feat(#I3CFJS): keep Tree expand state after edit
* 修复编辑后Table树形结构自动收缩的问题
* 添加具有单表维护功能的树形数据案例
* 修复Table树形结构数据源不更新问题
2021-03-22 14:07:30 +08:00
Argo
14668753de !1185 fix(#I3CFAS): update logic in EFCore extensions
* fix: 修复默认条件导致递归无限循环问题
* fix: 修复 EFCore 扩展导致高级搜索高亮问题
* fix: 修复 EFCore 扩展过滤条件缺失 Filter 判断问题
2021-03-22 13:43:33 +08:00
circlelee1981
4aec42a6ae !1181 fix(#I3CFAS): remove condition default parameter
* update IQueryableExtensions.cs 去除condition参数的默认值, 避免递归运算
2021-03-22 13:41:30 +08:00
Argo
1d106f0261 !1184 docs(#I3CF7E): update Foo sample code
* refactor: 拆分 Educations 到 Rows 组件内部
2021-03-22 13:28:18 +08:00
Argo
4cb72b5584 !1183 fix(#I3CF4K): use same service lifetime in EFCore extensions
* release: 发布 5.0.12-beta01
* fix: 修复注册服务生命周期不一致问题
2021-03-22 13:25:54 +08:00
Argo
09b750b57f !1182 docs(#I3CF12): update fixed column sample code
* docs: 更新固定列示例代码
* docs: 格式化文档
* docs: update components (#74)
2021-03-22 12:37:59 +08:00
Argo
10b205b67d !1178 fix(#I3CCK1): update SwalService for Delay parameter use WebSiteOption config
* fix: 修复 Swal 组件延时时间未使用全局配置问题
2021-03-21 21:59:13 +08:00
Argo
288e32da5e !1177 fix(#I3CCIQ): update Message for effect of WebsiteOption MessageDelay config
* feat: Message 组件支持全局配置延时时间
* refactor: 移除 MessageBase 基类
2021-03-21 21:43:32 +08:00
Argo
2b429cb9e0 !1176 docs(#I3CC5Q): update target framework config
* docs: 更新 Table 树形数据视频链接
* chore: 更改目标框架设置文件
* release: publish 5.022-beta03
* chore: 更新框架版本脚本
2021-03-21 17:57:01 +08:00
Argo
5f9d9388a8 !1175 fix(#I3CBSW): use ManualEventReset compatible with web assembly
* refactor: 修复 wasm 版本号无法使用 FileVersionInfo 类问题
* refactor: 移除 ManualResetEventSlim 类修复 wasm 无法使用问题
2021-03-21 14:57:27 +08:00
Argo
29bbffe68e !1174 chore(#I3CBS1): use props file set TargetFramework
* chore: 统一设置框架
* chore: net5.0 框架消除 8620 警告
* refactor: 重构参数集合可为空消除警告
2021-03-21 14:50:57 +08:00
Argo
217cc078ca !1173 feat(#I3CBQT): wasm add check browser compatibility
* feat: 增加不支持 wasm 检测
2021-03-21 14:29:47 +08:00
Argo
d6b05efc5d !1171 feat(#I3CBI6): add complex poco data annotation validation
* release: publish 5.0.22-beta02
* docs: 更新 SetError 示例
* feat: 更新 SetError 方法
* feat: 更新 ValidateContext DisplayName
* docs: 更新资源文件
* docs: 增加复杂类型数据验证支持
* docs: 增加资源文件
* feat: ValidateForm 支持验证所有字段
* feat: 重新设计验证逻辑支持复杂类型
* feat: Lambda 扩展方法增加 GetPropertyValue 方法
* feat: Validate 组件 id 生成规则增加 Model 值
* refactor: 增加级联参数判断
2021-03-21 11:31:03 +08:00
Argo
dfbc622273 !1170 refactor(#I3CA0I): rename DynamicComponent to BootstrapDynamicComponent
* docs: 更新文档链接
* refactor: DynamicComponent 改名为 BootstraplDynamicComponent
* feat: 增加 BootstrapDynamicComponent 类
2021-03-20 15:08:21 +08:00
Argo
33557825cf !1169 docs(#I3C8Q3): update dialog samples
* docs: update dialog samples
* docs: 更新无限弹窗示例
* feat: 移除 KeepChildrenState 参数
* fix: 修复 Tab 组件在弹窗中 active 蓝条初始化不正确问题
2021-03-20 00:29:53 +08:00
Argo
ee21d06ffa !1168 fix(#I3C8PH): update Tab miss under line style in Dialog when first render
* fix: 修复 Tab 组件在弹窗中 active 蓝条初始化不正确问题
2021-03-20 00:15:21 +08:00
Argo-Cloud
9088449686 release: publish 5.0.22-beta01 2021-03-19 15:42:06 +08:00
Argo
d44a8a59b8 !1167 feat(#I3C6GH): add loading icon for delay load tree children data on Table
* docs: 更新示例代码增加 1 秒延时示例
* feat: 增加属性数据节点展开动画效果
* style: 移除树形数据节点样式
2021-03-19 15:41:30 +08:00
Argo
fefaa2ba00 !1166 docs(#I3C4HV): update fix header sample code
* docs: 更新固定表头示例
2021-03-19 11:29:42 +08:00
Argo
175cd55b8b !1165 docs(#I3C4F0): update multiple table header sample
* docs: Table 组件更新多表头示例
2021-03-19 11:21:50 +08:00
Argo
3b0314026b !1164 fix(#I3C436): update row logic
Merge pull request !1164 from Argo/dev-rows
2021-03-19 10:47:07 +08:00
liu liang
7053d7345d feat: update row logic
(cherry picked from commit e72baf078b757a761b5cb1765033e7876c71a674)
2021-03-19 10:44:27 +08:00
Argo
1bb9c2aa51 !1163 fix(#I3C2W4): advance search button highlight when use NullDataService
* fix: 修复内置数据注入服务导致高级搜索高亮
2021-03-19 00:17:19 +08:00
Argo
9b39bbcb5e !1162 docs(#I3C2W1): add changelog markdown file
* docs: 增加 changelog 文档
* docs: 更新 Readme 文档增加小挂件
2021-03-19 00:14:38 +08:00
Argo
98d00a409e !1161 fix(#I3C205): move switch click handler to span element
* fix: 移动 onclick 事件到 span 元素上
* refactor: 移除自定义显示文本
* style: 微调小屏幕下 Table 组件的值列高度问题
* style: 微调 switch 组件在表单内的高度
* refactor: 移除 SwitchBase 基类
2021-03-18 19:24:23 +08:00
Argo-Cloud
f08b573e8f chore: update dependeces version to 5.0.11 2021-03-18 16:48:41 +08:00
Argo-Cloud
9bb79547e2 chore: upgrade extension version to 5.0.11 2021-03-18 16:41:38 +08:00
998 changed files with 117130 additions and 75088 deletions

View File

@@ -64,8 +64,8 @@ dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:silent
dotnet_prefer_inferred_tuple_names = true:suggestion
dotnet_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:silent
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
@@ -88,9 +88,10 @@ dotnet_naming_symbols.constant_fields.required_modifiers = const
# var preferences
csharp_style_var_for_built_in_types = true:silent
csharp_style_var_when_type_is_apparent = true:silent
csharp_style_var_elsewhere = true:silent
csharp_style_var_elsewhere = true:silent
csharp_prefer_static_local_function= true:silent
# Expression-bodied members
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_methods = false:silent
csharp_style_expression_bodied_constructors = false:silent
csharp_style_expression_bodied_operators = false:silent
csharp_style_expression_bodied_properties = true:silent

110
.filenesting.json Normal file
View File

@@ -0,0 +1,110 @@
{
"help": "https://go.microsoft.com/fwlink/?linkid=866610",
"root": true,
"dependentFileProviders": {
"add": {
"addedExtension": {},
"pathSegment": {
"add": {
".*": [
".js",
".css",
".html",
".htm",
".less",
".scss",
".coffee",
".iced",
".config",
".cs",
".vb",
".json"
]
}
},
"extensionToExtension": {
"add": {
".js": [
".cs",
".razor",
".coffee",
".iced",
".ts",
".tsx",
".jsx"
],
".css": [
".cs",
".razor",
".less",
".scss",
".sass",
".styl"
],
".html": [
".md",
".mdown",
".markdown",
".mdwn"
],
".map": [
".js",
".css"
],
".svgz": [
".svg"
],
".designer.cs": [
".resx"
],
".cs.d.ts": [
".cs"
]
}
},
"fileToFile": {
"add": {
".bowerrc": [
"bower.json"
],
".npmrc": [
"package.json"
],
"npm-shrinkwrap.json": [
"package.json"
],
"yarn.lock": [
"package.json"
],
".yarnclean": [
"package.json"
],
".yarnignore": [
"package.json"
],
".yarn-integrity": [
"package.json"
],
".yarnrc": [
"package.json"
],
"package-lock.json": [
"package.json"
]
}
},
"fileSuffixToExtension": {
"add": {
"-vsdoc.js": [
".js"
]
}
},
"allExtensions": {
"add": {
}
}
}
}
}

32
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,32 @@
name: Build Project
on:
push:
branches:
- main
- dev
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 2.1.x
- name: Setup .NET Core 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Build
env:
NUGET_API_KEY: ${{secrets.NUGET_API_KEY}}
Bundle: True
run: |
dotnet restore src/BootstrapBlazor --no-cache
dotnet build src/BootstrapBlazor

15
.github/workflows/docker.yml vendored Normal file
View File

@@ -0,0 +1,15 @@
name: Docker Image CI
on:
push:
branches:
- dev-dockerfile
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build the Docker image
run: docker build . --file src/BootstrapBlazor.Server/Linux.Dockerfile --tag bb:$(date +%s)

View File

@@ -4,6 +4,7 @@ on:
push:
branches:
- pack
- hotfix
jobs:
pack:
@@ -12,14 +13,21 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.201
dotnet-version: 2.1.x
- name: Setup .NET Core 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Publish to Nuget
env:
NUGET_API_KEY: ${{secrets.NUGET_API_KEY}}
Bundle: True
run: |
dotnet pack src/BootstrapBlazor -c Release -o publish
dotnet nuget push publish/BootstrapBlazor.*.nupkg -s https://api.nuget.org/v3/index.json -k $NUGET_API_KEY --skip-duplicate

View File

@@ -12,10 +12,15 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.201
dotnet-version: 2.1.x
- name: Setup .NET Core 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Publish wasm
run: |

View File

@@ -1,4 +1,4 @@
name: Package to Nuget
name: Package Extensions to Nuget
on:
push:
@@ -12,14 +12,20 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Setup .NET Core
- name: Setup .NET Core 2.1
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.201
dotnet-version: 2.1.x
- name: Setup .NET Core 5
uses: actions/setup-dotnet@v1
with:
dotnet-version: 5.0.x
- name: Publish to Nuget
env:
NUGET_API_KEY: ${{secrets.NUGET_API_KEY}}
Bundle: True
run: |
dotnet pack src/Extensions/Components/BootstrapBlazor.Chart -c Release -o publish
dotnet nuget push publish/BootstrapBlazor.Chart.*.nupkg -s https://api.nuget.org/v3/index.json -k $NUGET_API_KEY --skip-duplicate
@@ -38,3 +44,6 @@ jobs:
dotnet pack src/Extensions/DataServices/BootstrapBlazor.DataAcces.FreeSql -c Release -o publish
dotnet nuget push publish/BootstrapBlazor.DataAcces.FreeSql.*.nupkg -s https://api.nuget.org/v3/index.json -k $NUGET_API_KEY --skip-duplicate
dotnet pack src/Middleware/BootstrapBlazor.Middleware -c Release -o publish
dotnet nuget push publish/BootstrapBlazor.Middleware.*.nupkg -s https://api.nuget.org/v3/index.json -k $NUGET_API_KEY --skip-duplicate

5
.gitignore vendored
View File

@@ -1,4 +1,4 @@
###### -- File Created With Git Source Control Provider 2015 -- ######
###### -- File Created With Git Source Control Provider 2015 -- ######
###### -- From https://github.com/github/gitignore -- ######
###### -- Warning Regenerating this file will erase all your custom ignores, unless you add them below the Custom Ignore section at the bottom -- ######
## Ignore Visual Studio temporary files, build results, and
@@ -354,3 +354,6 @@ src/**/*.xml
# Coverage
coverage*.xml
tools/
# Upload Folder
src/**/wwwroot/**/uploader

View File

@@ -36,7 +36,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "appveyor", "appveyor", "{1E
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "github", "github", "{F0754254-903C-411B-972C-EC91254B4A67}"
ProjectSection(SolutionItems) = preProject
.github\workflows\build.yml = .github\workflows\build.yml
.github\workflows\deploy.yml = .github\workflows\deploy.yml
.github\workflows\docker.yml = .github\workflows\docker.yml
.github\workflows\pack.yml = .github\workflows\pack.yml
.github\workflows\publish.yml = .github\workflows\publish.yml
.github\workflows\release.yml = .github\workflows\release.yml
@@ -95,6 +97,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.WebAssembly
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.WebAssembly.ServerHost", "src\Wasm\BootstrapBlazor.WebAssembly.ServerHost\BootstrapBlazor.WebAssembly.ServerHost.csproj", "{FFFD2EB7-AE88-4DAD-A825-528B2CEFB4B5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "config", "config", "{8AB9DB43-233A-4D49-99FA-FA540C2109F2}"
ProjectSection(SolutionItems) = preProject
.editorconfig = .editorconfig
.filenesting.json = .filenesting.json
.gitattributes = .gitattributes
.gitignore = .gitignore
.issuetracker = .issuetracker
appveyor.yml = appveyor.yml
Directory.Build.props = Directory.Build.props
NuGet.Config = NuGet.Config
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "middleware", "middleware", "{4A7F4513-C515-40DD-A217-169E1CBB2827}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BootstrapBlazor.Middleware", "src\Middleware\BootstrapBlazor.Middleware\BootstrapBlazor.Middleware.csproj", "{59B49D4C-05FB-4E51-AB40-9498ADC71DD0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -149,6 +167,10 @@ Global
{FFFD2EB7-AE88-4DAD-A825-528B2CEFB4B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FFFD2EB7-AE88-4DAD-A825-528B2CEFB4B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FFFD2EB7-AE88-4DAD-A825-528B2CEFB4B5}.Release|Any CPU.Build.0 = Release|Any CPU
{59B49D4C-05FB-4E51-AB40-9498ADC71DD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59B49D4C-05FB-4E51-AB40-9498ADC71DD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{59B49D4C-05FB-4E51-AB40-9498ADC71DD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59B49D4C-05FB-4E51-AB40-9498ADC71DD0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -161,6 +183,7 @@ Global
{F0754254-903C-411B-972C-EC91254B4A67} = {A627F6CC-94FC-4E48-B3CC-F0EA16700527}
{B84D315E-967D-4FBF-9B72-1F3128155CB0} = {A627F6CC-94FC-4E48-B3CC-F0EA16700527}
{190F25CF-C6F9-4964-97E9-F6A912D527AE} = {7C1D79F1-87BC-42C1-BD5A-CDE4044AC1BD}
{22328011-53B3-447A-B781-AC3C196B2847} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{C8E79F4C-8C55-4E13-96B5-3D2BD6A07B74} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{CD062AB6-244D-402A-8F33-C37DAC5856CC} = {22328011-53B3-447A-B781-AC3C196B2847}
{56FEFF09-85FC-408D-A397-6E264E68414E} = {22328011-53B3-447A-B781-AC3C196B2847}
@@ -174,6 +197,8 @@ Global
{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}
{4A7F4513-C515-40DD-A217-169E1CBB2827} = {A2182155-43ED-44C1-BF6F-1B70EBD2DFFE}
{59B49D4C-05FB-4E51-AB40-9498ADC71DD0} = {4A7F4513-C515-40DD-A217-169E1CBB2827}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0DCB0756-34FA-4FD0-AE1D-D3F08B5B3A6B}

90
CHANGELOG.zh-CN.md Normal file
View File

@@ -0,0 +1,90 @@
<h1 align="center">Bootstrap Blazor 组件库</h1>
<div align="center">
<h2>一套基于 Bootstrap 和 Blazor 的企业级组件库</h2>
[![Nuget](https://img.shields.io/nuget/v/BootstrapBlazor.svg?color=red&logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Nuget](https://img.shields.io/nuget/dt/BootstrapBlazor.svg?logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Commit Date](https://img.shields.io/github/last-commit/ArgoZhang/BootstrapBlazor/master.svg?logo=github&logoColor=green&label=commit)](https://github.com/ArgoZhang/BootstrapBlazor)
</div>
---
### 发布周期
- 主版本号:与 Microsoft .NET 主版本号一致
- 次版本号:与 Microsoft .NET 次版本号一致
- 修订版本号:每周四发布正式版(翻车紧急修复会跳版本号)日常每天发布新功能测试版本或者修复 BUG 测试版本 beta-##
---
### 5.0.22
`2021-03-24`
#### 增加功能
- !1193 feat(#I3CQYI): Table 组件编辑按钮增加回调委托 [#I3CQYI](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1193)
- !1192 feat(#I3CQY7): 增加 Row 组件用于栅格系统布局 [#I3CQY7](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1192)
- !1191 feat(#I3CQXQ): 自动生成标签 AutoGenerateColumn 增加 ComponentType 属性用于自定义呈现组件 [#I3CQXQ](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1191)
- !1188 feat(#I3CQY7): Switch 组件适配 Row 组件支持 row form-row form-inline 三种模式 [#I3CQY7](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1188)
- !1187 feat(#I3CPJ8): Select 组件适配 Row 组件支持 row form-row form-inline 三种模式 [#I3CPJ8](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1187)
- !1172 feat(#I3CFJS): Table 组件树形数据支持 CRUD 并且保持编辑前展开收缩状态 [#I3CFJS](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1172)
- !1173 feat(#I3CBQT): 增加演示网站 wasm 模式对浏览器是否兼容性提示功能 [#I3CBQT](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1173)
- !1171 feat(#I3CBI6): DataAnnotation 支持复杂类型的验证 [#I3CBI6](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1171)
- !1167 feat(#I3C6GH): Table 组件展开树形数据是增加 Spin 动画效果 [#I3C6GH](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1167)
#### 问题修复
- !1189 fix(#I3CPLZ): 更新 EFCore 数据注入服务获取记录总数逻辑 [#I3CPLZ](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1189)
- !1185 fix(#I3CFAS): 修复 EFCore 数据注入服务排序导致递归循环引用问题 [#I3CFAS](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1185)
- !1183 fix(#I3CF4K): 更新 EFCore 数据注入服务使服务生命周期内部与参数一致默认 Scope [#I3CF4K](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1183)
- !1178 fix(#I3CCK1): 修复全局配置 SwalDelay 参数在 Swal 组件中未生效问题 [#I3CCK1](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1178)
- !1177 fix(#I3CCIQ): 修复全局配置 MessageDelay 参数在 Message 组件中未生效问题 [#I3CCIQ](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1177)
- !1175 fix(#I3CBSW): 修复 Timer 计时器组件不兼容 wasm 模式问题 [#I3CBSW](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1175)
- !1168 fix(#I3C8PH): 修复 Tab 组件首次加载时活动标签页蓝色火柴棍特效不能正常呈现问题 [#I3C8PH](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1168)
- !1163 fix(#I3C2W4): 修复内置数据服务导致高级搜索默认高亮状态问题 [#I3C2W4](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1163)
- !1161 fix(#I3C205): 更新 Switch 组件点击事件触发组件 [#I3C205](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1161)
#### 示例更新
- !1190 docs(#I3CQXN): 更新 Table 组件明细行示例代码
- !1182 docs(#I3CF12): 更新 Table 组件更新固定列示例代码
- !1169 docs(#I3C8Q3): 更新 dialog 示例代码
- !1166 docs(#I3C4HV): 更新 Table 组件固定表头示例代码
- !1165 docs(#I3C4F0): 更新 Table 组件多表头示例代码
#### 性能优化
- !1186 perf(#I3CPID): 优化 ValidateForm 组件提高内部性能 [#I3CPID](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1186)
- !1170 refactor(#I3CA0I): DynamicComponent 改名为 BootstrapDynamicComponent [#I3CA0I](https://gitee.com/LongbowEnterprise/BootstrapBlazor/pulls/1170)
### 5.0.21
`2021-03-18`
* !1158 feat(#I3BULP): Table 组件增加数据服参数未设置时使用全局注入数据服务
* !1157 feat(#I3BUL0): MultiSelect 组件支持双向绑定数组类型
* !1155 feat(#I3BNXX): ValidateForm 组件增加 ValidateAllProperties 参数是否开启检查所有字段默认 false 仅检查表单中的绑定字段
* !1154 feat(#I3BN0L): ValidateForm 组件增加 SetError 方法可主动设置绑定字段提示信息
* !1153 feat(#I3BKXC): 优化 Upload 组件 ButtonUpload 模式上传失败后鼠标悬停图标
* !1152 fix(#I3ALSP): 修复 Upload 组件 ShowProgress 与 IsMultiple 参数共同使用时出错问题
* !1151 fix(#I3BGMV): 修复 Table 组件固定列后选中行样式被遮挡问题
* !1147 fix(#I3AB7H): Upload 组件上传中增加 Spin 动画
* !1145 fix(#I3BEBQ): 修复 Cascader 组件选中项样式
* !1144 fix(#I3BBNS): 修复 Table 组件加载树形数据后与 ClickToSelect 参数冲突问题
* !1143 perf(#I3BBMK): 优化 SweetAlert 组件内部弹窗性能
* !1142 feat(#I3BADG): Dialog 组件支持无限弹窗
* !1140 fix(#I3B9GU): 修复 Cascader 组件选择后显示文字不更新问题
* !1139 feat(#I3B8RN): 演示站点增加切换主题功能
* !1138 feat(#I3B8FX): Table 组件增加 ShowErrorToast 参数用于控制是否显示操作提示弹窗
* !1137 feat(#I3B7UV): 新增 Cascader 组件
* !1136 fix(#I3B502): 修复 Table 组件 ClickToSelect 属性与扩展操作按钮冲突问题
* !1134 fix(#I3B50S): 修复 Table 组件树形数据点击节点无刷新问题
* !1131 docs(#I3B1VU): Table 组件更新分页示例
* !1130 feat(#I3B1VL): EditorForm 组件自动布局支持 Textarea 组件类型
* !1128 fix(#I3AZOI): 修复 Menu 组件顶栏超过 5 个子菜单时样式不正确问题
* !1127 perf(#I3AYCH): 优化 Dialog 组件性能阻止点击关闭等按钮导致子组件二次渲染问题

View File

@@ -1,5 +1,6 @@
<Project>
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<Copyright>Argo Zhang</Copyright>
<Authors>Argo Zhang(argo@163.com)</Authors>
<Company>Longbow</Company>

7
NuGet.Config Normal file
View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<add key="Blazor" value="https://nuget.blazor.zone/v3/index.json" />
</packageSources>
</configuration>

View File

@@ -1,15 +1,15 @@
<h1 align="center">Bootstrap Blazor Component</h1>
<h1 align="center">Bootstrap Blazor Component</h1>
<div align="center">
<h2>A set of enterprise-class UI components based on Bootstrap and Blazor.</h2>
[![Github build](https://img.shields.io/github/workflow/status/ArgoZhang/BootstrapBlazor/Package%20to%20Nuget/master?label=master&logo=github&logoColor=green)](https://github.com/ArgoZhang/BootstrapAdmin/actions?query=workflow%3A%22Auto+Build+CI%22+branch%3Amaster)
[![Github build](https://img.shields.io/github/workflow/status/ArgoZhang/BootstrapBlazor/Build%20Project/main?label=main&logo=github&logoColor=green)](https://github.com/ArgoZhang/BootstrapBlazor/actions?query=workflow%3A%22Build+Project%22+branch%3Amain)
[![Nuget](https://img.shields.io/nuget/v/BootstrapBlazor.svg?color=red&logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Nuget](https://img.shields.io/nuget/dt/BootstrapBlazor.svg?logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Github](https://img.shields.io/github/license/argozhang/bootstrapblazor.svg?logo=git&logoColor=red)](https://github.com/ArgoZhang/BootstrapBlazor/blob/master/LICENSE)
[![Github](https://img.shields.io/github/license/argozhang/bootstrapblazor.svg?logo=git&logoColor=red)](https://github.com/ArgoZhang/BootstrapBlazor/blob/main/LICENSE)
[![Repo Size](https://img.shields.io/github/repo-size/ArgoZhang/BootstrapBlazor.svg?logo=github&logoColor=green&label=repo)](https://github.com/ArgoZhang/BootstrapBlazor)
[![Commit Date](https://img.shields.io/github/last-commit/ArgoZhang/BootstrapBlazor/master.svg?logo=github&logoColor=green&label=commit)](https://github.com/ArgoZhang/BootstrapBlazor)
[![Commit Date](https://img.shields.io/github/last-commit/ArgoZhang/BootstrapBlazor/main.svg?logo=github&logoColor=green&label=commit)](https://github.com/ArgoZhang/BootstrapBlazor)
</div>

View File

@@ -1,4 +1,18 @@
# Bootstrap Blazor Component
<h1 align="center">Bootstrap Blazor 组件库</h1>
<div align="center">
<h2>一套基于 Bootstrap 和 Blazor 的企业级组件库</h2>
[![Github build](https://img.shields.io/github/workflow/status/ArgoZhang/BootstrapBlazor/Build%20Project/main?label=main&logo=github&logoColor=green)](https://github.com/ArgoZhang/BootstrapBlazor/actions?query=workflow%3A%22Build+Project%22+branch%3Amain)
[![Nuget](https://img.shields.io/nuget/v/BootstrapBlazor.svg?color=red&logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Nuget](https://img.shields.io/nuget/dt/BootstrapBlazor.svg?logo=nuget&logoColor=green)](https://www.nuget.org/packages/BootstrapBlazor/)
[![Github](https://img.shields.io/github/license/argozhang/bootstrapblazor.svg?logo=git&logoColor=red)](https://github.com/ArgoZhang/BootstrapBlazor/blob/main/LICENSE)
[![Repo Size](https://img.shields.io/github/repo-size/ArgoZhang/BootstrapBlazor.svg?logo=github&logoColor=green&label=repo)](https://github.com/ArgoZhang/BootstrapBlazor)
[![Commit Date](https://img.shields.io/github/last-commit/ArgoZhang/BootstrapBlazor/main.svg?logo=github&logoColor=green&label=commit)](https://github.com/ArgoZhang/BootstrapBlazor)
</div>
---
<a href="README.md">English</a> | <span>中文</span>
@@ -23,18 +37,32 @@ Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架:
本项目是利用 Bootstrap 样式进行封装的 UI 组件库
## 生态伙伴
WTM 快速开发框架设计的核心理念就是”尽一切可能提高开发效率“。WTM框架把常规编码结构化重复编码自动化它不仅是一个框架它是强有力的生产力工具目前 WTM 快速开发框架已深度集成 Blazor 欢迎大家使用 [传送门](https://wtmdoc.walkingtec.cn)
<a href="https://wtmdoc.walkingtec.cn" target="_blank"><img src="http://images.gitee.com/uploads/images/2021/0718/194451_5b6cff04_554725.png" width="100px" /></a>
## 开发环境搭建
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)
## 相关资源
- [Blazor 官方文档](https://docs.microsoft.com/zh-cn/aspnet/core/blazor/?WT.mc_id=DT-MVP-5004174)
- [MS Learn 平台 Blazor 教程](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/?WT.mc_id=DT-MVP-5004174)
- [生成 Blazor Web 应用](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/?WT.mc_id=DT-MVP-5004174)
- [什么是 Blazor](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/2-understand-blazor-webassembly?WT.mc_id=DT-MVP-5004174)
- [练习 - 配置开发环境](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/3-exercise-configure-enviromnent?WT.mc_id=DT-MVP-5004174)
- [Blazor 组件](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/4-blazor-components?WT.mc_id=DT-MVP-5004174)
- [练习 - 添加组件](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/5-exercise-add-component?WT.mc_id=DT-MVP-5004174)
- [数据绑定和事件](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/6-csharp-razor-binding?WT.mc_id=DT-MVP-5004174)
- [练习 - 数据绑定和事件](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/7-exercise-razor-binding?WT.mc_id=DT-MVP-5004174)
- [总结](https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/8-summary?WT.mc_id=DT-MVP-5004174)
## QQ交流群
[![QQ](https://img.shields.io/badge/QQ-795206915(满)-red.svg?logo=tencent%20qq&logoColor=red)](https://qm.qq.com/cgi-bin/qm/qr?k=1-jF9-5WA_3GFiJgXem2U_AQfqbdyOlV&jump_from=webapi) [![QQ](https://img.shields.io/badge/QQ-675147445-green.svg?logo=tencent%20qq&logoColor=red)](https://qm.qq.com/cgi-bin/qm/qr?k=Geker7hCXK0HC-J8_974645j_n6w0OE0&jump_from=webapi)
[![QQ](https://img.shields.io/badge/QQ-795206915-green.svg?logo=tencent%20qq&logoColor=red)](https://qm.qq.com/cgi-bin/qm/qr?k=1-jF9-5WA_3GFiJgXem2U_AQfqbdyOlV&jump_from=webapi) [![QQ](https://img.shields.io/badge/QQ-675147445-green.svg?logo=tencent%20qq&logoColor=red)](https://qm.qq.com/cgi-bin/qm/qr?k=Geker7hCXK0HC-J8_974645j_n6w0OE0&jump_from=webapi)
## 视频教程

View File

@@ -2,6 +2,7 @@
cd ~/BootstrapBlazor
git pull
dotnet restore --no-cache
dotnet publish src/BootstrapBlazor.WebConsole -c Release
systemctl stop ba.blazor

View File

@@ -0,0 +1 @@
setx Bundle=True

View File

@@ -1,16 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsWebProject>true</IsWebProject>
</PropertyGroup>
<ItemGroup>
<SupportedPlatform Include="browser" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Longbow.Tasks" Version="5.0.0" />
<PackageReference Include="BootstrapBlazor.Middleware" Version="1.*" />
<PackageReference Include="Longbow.Tasks" Version="5.*" />
</ItemGroup>
<ItemGroup>

View File

@@ -6,6 +6,7 @@ using BootstrapBlazor.Shared;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Options;
using System;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
@@ -26,10 +27,17 @@ namespace BootstrapBlazor.Server.Controllers.Api
/// <param name="options"></param>
/// <returns></returns>
[HttpGet]
public Task<string> Get([FromQuery] string fileName, [FromServices] HttpClient client, [FromServices] IOptions<WebsiteOptions> options)
public async Task<string> Get([FromQuery] string fileName, [FromServices] HttpClient client, [FromServices] IOptions<WebsiteOptions> options)
{
var ret = "";
client.BaseAddress = new Uri(options.Value.RepositoryUrl);
return client.GetStringAsync(fileName);
try
{
ret = await client.GetStringAsync(fileName);
}
catch (HttpRequestException ex) { ret = ex.StatusCode == HttpStatusCode.NotFound ? "无" : ex.StatusCode.ToString() ?? "网络错误"; }
catch (Exception) { }
return ret;
}
/// <summary>

View File

@@ -0,0 +1,19 @@
#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat
FROM mcr.microsoft.com/dotnet/aspnet:5.0 AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
WORKDIR /
COPY . .
WORKDIR "src/BootstrapBlazor.Server"
FROM build AS publish
RUN dotnet publish -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "BootstrapBlazor.Server.dll"]

View File

@@ -1,29 +0,0 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace Microsoft.Extensions.DependencyInjection
{
/// <summary>
///
/// </summary>
internal static class CultureStorageExtensions
{
/// <summary>
/// 添加本地化持久化策略服务
/// </summary>
/// <param name="services"></param>
public static IServiceCollection AddCultureStorage(this IServiceCollection services)
{
services.TryAddSingleton<ICultureStorage, DefaultCultureStorage>();
return services;
}
internal class DefaultCultureStorage : ICultureStorage
{
public CultureStorageMode Mode { get; set; }
}
}
}

View File

@@ -21,11 +21,14 @@
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon">
<link rel="apple-touch-icon" href="favicon.png">
<base href="~/">
<link rel="stylesheet" href="_content/BootstrapBlazor.Chart/css/bootstrap.blazor.chart.bundle.min.css">
<link rel="stylesheet" href="_content/BootstrapBlazor.Markdown/css/bootstrap.blazor.markdown.min.css">
<link rel="stylesheet" href="_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css">
<link rel="stylesheet" href="_content/BootstrapBlazor.Shared/lib/highlight/vs.css">
<link rel="stylesheet" href="_content/BootstrapBlazor.Shared/css/site.css">
<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor/css/motronic.min.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor.Chart/css/bootstrap.blazor.chart.bundle.min.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor.Markdown/css/bootstrap.blazor.markdown.min.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor.Shared/lib/highlight/vs.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor.Shared/css/site.css" asp-append-version="true">
<link rel="stylesheet" href="_content/BootstrapBlazor.Shared/css/motronic.css" asp-append-version="true">
<environment include="Staging,Production">
<script>
var _hmt = _hmt || [];
@@ -44,23 +47,24 @@
</app>
<div id="blazor-error-ui">
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
<span>
<environment include="Staging,Production">
An error has occurred. This application may no longer respond until reloaded.
</environment>
<environment include="Development">
An unhandled exception has occurred. See browser dev tools for details.
</environment>
</span>
<a href="" class="reload">Reload</a>
<a class="dismiss"><i class="fa fa-times"></i></a>
</div>
<script src="_framework/blazor.server.js"></script>
<script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js"></script>
<script src="_content/BootstrapBlazor.Chart/js/bootstrap.blazor.chart.bundle.min.js"></script>
<script src="_content/BootstrapBlazor.TableExport/js/export.min.js"></script>
<script src="_content/BootstrapBlazor.Markdown/js/bootstrap.blazor.markdown.min.js"></script>
<script src="_content/BootstrapBlazor.Shared/lib/highlight/highlight.min.js"></script>
<script src="_content/BootstrapBlazor.Shared/lib/summernote/summernote-zh-CN.min.js"></script>
<script src="_content/BootstrapBlazor.Shared/js/common.js"></script>
<script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.Chart/js/bootstrap.blazor.chart.bundle.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.TableExport/js/export.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.Markdown/js/bootstrap.blazor.markdown.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.Shared/lib/highlight/highlight.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.Shared/lib/summernote/summernote-zh-CN.min.js" asp-append-version="true"></script>
<script src="_content/BootstrapBlazor.Shared/js/common.js" asp-append-version="true"></script>
<script src="_framework/blazor.server.js" asp-append-version="true"></script>
</body>
</html>

View File

@@ -1,4 +1,4 @@
{
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
@@ -29,4 +29,4 @@
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}"
}
}
}
}

View File

@@ -11,7 +11,10 @@ using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace BootstrapBlazor.Server
{
@@ -49,13 +52,14 @@ namespace BootstrapBlazor.Server
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
public void ConfigureServices(IServiceCollection services)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
services.AddCors();
services.AddResponseCompression();
services.AddControllers();
services.AddRazorPages();
services.AddServerSideBlazor();
services.AddCultureStorage();
services.AddBlazorBackgroundTask();
@@ -64,11 +68,17 @@ namespace BootstrapBlazor.Server
{
// 统一设置 Toast 组件自动消失时间
options.ToastDelay = 4000;
options.Themes.Add(new System.Collections.Generic.KeyValuePair<string, string>("Ant Design (完善中)", "_content/BootstrapBlazor.Shared/css/ant.css"));
options.Themes.AddRange(Configuration.GetSection("Themes")
.GetChildren()
.Select(c => new KeyValuePair<string, string>(c.Key, c.Value)));
}, options =>
{
// 附加自己的 json 多语言文化资源文件 如 zh-TW.json
options.AdditionalJsonAssemblies = new Assembly[] { typeof(BootstrapBlazor.Shared.App).Assembly };
options.AdditionalJsonAssemblies = new Assembly[]
{
typeof(BootstrapBlazor.Shared.App).Assembly,
typeof(BootstrapBlazor.Components.Chart).Assembly
};
});
// 增加多语言支持配置信息
@@ -151,6 +161,7 @@ namespace BootstrapBlazor.Server
app.UseRouting();
app.UseCors(builder => builder.WithOrigins(Configuration["AllowOrigins"].Split(',', StringSplitOptions.RemoveEmptyEntries)).AllowAnyHeader().AllowAnyMethod().AllowCredentials());
app.UseBootstrapBlazor();
app.UseEndpoints(endpoints =>
{
endpoints.MapDefaultControllerRoute();

View File

@@ -7,6 +7,7 @@
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowOrigins": "http://localhost:5000",
"WebsiteOptions": {
"ServerUrl": "http://localhost:50853",
"WasmUrl": "http://localhost:50855"

View File

@@ -15,7 +15,7 @@
"ToastDelay": 4000,
"MessageDelay": 4000,
"SwalDelay": 4000,
"FallbackCultureName": "en-US",
"FallbackCulture": "en",
"SupportedCultures": [
"zh-CN",
"en-US"
@@ -25,6 +25,13 @@
"ServerUrl": "https://www.blazor.zone",
"AdminUrl": "https://admin.blazor.zone",
"ImageLibUrl": "https://imgs.blazor.zone",
"WasmUrl": "https://wasm.blazor.zone"
"WasmUrl": "https://wasm.blazor.zone",
"TotalCount": 90
},
"Themes": {
"Motronic (已集成)": "_content/BootstrapBlazor/css/motronic.min.css",
"Ant Design (完善中)": "_content/BootstrapBlazor.Shared/css/ant.css",
"LayUI (完善中)": "_content/BootstrapBlazor.Shared/css/layui.css",
"Bluma (完善中)": "_content/BootstrapBlazor.Shared/css/bluma.css"
}
}

View File

@@ -8,3 +8,4 @@
</LayoutView>
</NotFound>
</Router>
<Title></Title>

View File

@@ -3,7 +3,11 @@
// Website: https://www.blazor.zone or https://argozhang.github.io/
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Microsoft.JSInterop;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared
{
@@ -12,23 +16,25 @@ namespace BootstrapBlazor.Shared
/// </summary>
public sealed partial class App
{
/// <summary>
///
/// </summary>
[Inject]
[NotNull]
private IJSRuntime? JSRuntime { get; set; }
[Inject]
[NotNull]
private IStringLocalizer<App>? Localizer { get; set; }
/// <summary>
///
/// </summary>
/// <param name="firstRender"></param>
protected override void OnAfterRender(bool firstRender)
protected override async Task OnAfterRenderAsync(bool firstRender)
{
base.OnAfterRender(firstRender);
await base.OnAfterRenderAsync(firstRender);
if (firstRender && JSRuntime != null)
if (firstRender)
{
JSRuntime.InvokeVoidAsync("$.loading");
await JSRuntime.InvokeVoidAsync("$.loading", OperatingSystem.IsBrowser(), Localizer["ErrorMessage"].Value, Localizer["Reload"].Value);
}
}
}

View File

@@ -1,7 +1,6 @@
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
<IsPackable>true</IsPackable>
<Version>5.0.0</Version>
</PropertyGroup>
@@ -18,10 +17,9 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="BootstrapBlazor.Chart" Version="5.0.10" />
<PackageReference Include="BootstrapBlazor.Markdown" Version="5.0.10" />
<PackageReference Include="BootstrapBlazor.TableExport" Version="5.0.10" />
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
<PackageReference Include="BootstrapBlazor.Chart" Version="5.*" />
<PackageReference Include="BootstrapBlazor.Markdown" Version="5.*" />
<PackageReference Include="BootstrapBlazor.TableExport" Version="5.*" />
</ItemGroup>
<ItemGroup>

View File

@@ -34,8 +34,6 @@ namespace Microsoft.Extensions.DependencyInjection
{
private HttpClient Client { get; set; }
private bool IsWebAssembly { get; set; }
private string ServerUrl { get; set; }
/// <summary>
@@ -43,15 +41,13 @@ namespace Microsoft.Extensions.DependencyInjection
/// </summary>
/// <param name="client"></param>
/// <param name="options"></param>
/// <param name="storage"></param>
public ExampleService(HttpClient client, IOptions<WebsiteOptions> options, ICultureStorage storage)
public ExampleService(HttpClient client, IOptions<WebsiteOptions> options)
{
Client = client;
Client.Timeout = TimeSpan.FromSeconds(5);
Client.BaseAddress = new Uri(options.Value.RepositoryUrl);
ServerUrl = options.Value.ServerUrl;
IsWebAssembly = storage.Mode == CultureStorageMode.LocalStorage;
}
/// <summary>
@@ -63,7 +59,7 @@ namespace Microsoft.Extensions.DependencyInjection
var content = "";
try
{
if (IsWebAssembly)
if (OperatingSystem.IsBrowser())
{
Client.BaseAddress = new Uri($"{ServerUrl}/api/");
content = await Client.GetStringAsync($"Code?fileName={CodeFile}");
@@ -73,7 +69,8 @@ namespace Microsoft.Extensions.DependencyInjection
content = await Client.GetStringAsync(CodeFile);
}
}
catch (HttpRequestException) { content = ""; }
catch (HttpRequestException) { content = "网络错误"; }
catch (TaskCanceledException) { }
catch (Exception) { }
return content;
}

View File

@@ -3,10 +3,10 @@
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using BootstrapBlazor.Shared.Pages;
using BootstrapBlazor.Shared.Pages.Components;
using Microsoft.Extensions.DependencyInjection.Extensions;
using Microsoft.Extensions.Localization;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading.Tasks;
@@ -34,8 +34,16 @@ namespace Microsoft.Extensions.DependencyInjection
/// </summary>
internal class TableDemoDataService<TModel> : DataServiceBase<TModel> where TModel : class, new()
{
[NotNull]
private List<TModel>? Items { get; set; }
private IStringLocalizer<TModel> Localizer { get; set; }
public TableDemoDataService(IStringLocalizer<TModel> localizer)
{
Localizer = localizer;
}
/// <summary>
/// 查询操作方法
/// </summary>
@@ -44,7 +52,10 @@ namespace Microsoft.Extensions.DependencyInjection
public override Task<QueryData<TModel>> QueryAsync(QueryPageOptions options)
{
// 此处代码实战中不可用,仅仅为演示而写
if (Items == null || Items.Count == 0) Items = TablesBase.GenerateItems().Cast<TModel>().ToList();
if (Items == null || Items.Count == 0)
{
Items = Foo.GenerateFoo((IStringLocalizer<Foo>)Localizer).Cast<TModel>().ToList();
}
var total = Items.Count;
@@ -59,25 +70,21 @@ namespace Microsoft.Extensions.DependencyInjection
///
/// </summary>
/// <param name="model"></param>
/// <param name="changedType"></param>
/// <returns></returns>
public override Task<bool> SaveAsync(TModel model)
public override Task<bool> SaveAsync(TModel model, ItemChangedType changedType)
{
var ret = false;
if (model is Foo foo)
{
var item = Items?.FirstOrDefault(item =>
if (changedType == ItemChangedType.Add)
{
var f = item as Foo;
return f?.Id == foo.Id;
});
if (item == null)
{
var id = Items!.Count + 1;
var id = Items.Count + 1;
while (Items.FirstOrDefault(item => (item as Foo)!.Id == id) != null)
{
id++;
}
item = new Foo()
var item = new Foo()
{
Id = id,
Name = foo.Name,
@@ -88,10 +95,15 @@ namespace Microsoft.Extensions.DependencyInjection
Education = foo.Education,
Hobby = foo.Hobby
} as TModel;
Items?.Add(item!);
Items.Add(item!);
}
else
{
var item = Items.First(item =>
{
var f = item as Foo;
return f?.Id == foo.Id;
});
var f = item as Foo;
f!.Name = foo.Name;
f!.Address = foo.Address;
@@ -108,7 +120,11 @@ namespace Microsoft.Extensions.DependencyInjection
public override Task<bool> DeleteAsync(IEnumerable<TModel> models)
{
foreach (var model in models) Items?.Remove(model);
foreach (var model in models)
{
Items?.Remove(model);
}
return base.DeleteAsync(models);
}
}

View File

@@ -54,6 +54,11 @@ namespace BootstrapBlazor.Shared
/// </summary>
public string RepositoryUrl { get; set; } = "https://gitee.com/LongbowEnterprise/BootstrapBlazor/raw/dev/src/BootstrapBlazor.Shared/Pages/Samples/";
/// <summary>
///
/// </summary>
public string WikiUrl { get; set; } = "https://gitee.com/LongbowEnterprise/BootstrapBlazor/wikis/%E6%9B%B4%E6%96%B0%E6%97%A5%E5%BF%97?sort_id=4062034";
/// <summary>
/// 获得 QQ 1 群链接地址
/// </summary>
@@ -92,6 +97,11 @@ namespace BootstrapBlazor.Shared
/// </summary>
public string CurrentTheme { get; set; } = "";
/// <summary>
/// 获得/设置 组件总数
/// </summary>
public int TotalCount { get; set; }
/// <summary>
/// 构造函数
/// </summary>

View File

@@ -1,103 +0,0 @@
{
"BootstrapBlazor.Shared.Pages.Components.Block": {
"Title": "",
"SubTitle": "Demo"
},
"BootstrapBlazor.Shared.Pages.Components.AttributeTable": {
"Title": "Attributes"
},
"BootstrapBlazor.Shared.Pages.Components.MethodTable": {
"Title": "Methods"
},
"BootstrapBlazor.Shared.Common.AttributeItem": {
"Name": "Parameter",
"Description": "Description",
"Type": "Type",
"ValueList": "ValueList",
"DefaultValue": "DefaultValue"
},
"BootstrapBlazor.Shared.Common.EventItem": {
"Name": "Parameter",
"Description": "Description",
"Type": "Type"
},
"BootstrapBlazor.Shared.Common.MethodItem": {
"Title": "Methods",
"Name": "Parameter",
"Description": "Description",
"Type": "Type",
"Parameters": "Parameters",
"ReturnValue": "ReturnValue"
},
"BootstrapBlazor.Shared.Shared.ComponentLayout": {
"Title": "Enterprise-level component library based on Bootstrap and Blazor",
"Example": "Example",
"Video": "Video"
},
"BootstrapBlazor.Shared.Pages.Alerts": {
"Title": "Alert",
"SubTitle": "Displays important alert messages.",
"BaseUsageText": "Basic usage",
"IntroText1": "Alert components are non-overlay elements in the page that does not disappear automatically.",
"AlertPrimaryText": "A simple primary alert—check it out!",
"AlertSecondaryText": "A simple secondary alert—check it out!",
"AlertSuccessText": "A simple success alert—check it out!",
"AlertDangerText": "A simple danger alert—check it out!",
"AlertWarningText": "A simple warning alert—check it out!",
"AlertInfoText": "A simple info alert—check it out!",
"AlertDarkText": "A simple dark alert—check it out!",
"CloseButtonUsageText": "Close button",
"IntroText2": "Customize the close button as texts or other symbols.",
"WithIconUsageText": "With Icon",
"IntroText3": "Displaying an icon improves readability.",
"ShowBarUsageText": "With Bar",
"IntroText4": "Show <code>Tip</code>"
},
"BootstrapBlazor.Shared.Pages.QRCodes": {
"Title": "QRCode",
"SubTitle": "Generate QR code",
"BaseUsageText": "Basic usage",
"IntroText1": "Click the Generate button to generate a <code>QRCode</code>",
"SuccessText": "QR code generated successfully",
"CallbackDescription": "Call back after QR code generation"
},
"BootstrapBlazor.Shared.Pages.Anchors": {
"Title": "Anchor",
"SubTitle": "Hyperlinks to scroll on one page.",
"BaseUsageText": "Basic usage",
"IntroText1": "For displaying anchor hyperlinks on page and jumping between them.",
"IntroText2": "Click <code>Anchor</code> item try it",
"ContentText1": "<p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p><p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p><p>Aenean lacinia bibendum nulla sed consectetur. Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Donec sed odio dui. Donec ullamcorper nulla non metus auctor fringilla.</p><p>Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</p><p>Praesent commodo cursus magna, vel scelerisque nisl consectetur et. Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>"
},
"BootstrapBlazor.Shared.Pages.Components.Foo": {
"Name": "Name",
"DateTime": "DateTime",
"Address": "Address",
"Count": "Count",
"Complete": "Complete",
"Education": "Education",
"Hobby": "Hobby",
"Name.Required": "{0} is required.",
"Address.Required": "{0} is required.",
"Education.Required": "{0} is required.",
"Hobby.Required": "{0} is required.",
"Name.PlaceHolder": "required",
"Hobbys": "Swimming,Climb,Shoot,Chess",
"Foo.Name": "Zhangsan {0}",
"Foo.Address": "Lane {0} of Jinshajiang Road, Putuo District, Shanghai",
"Foo.Address2": "Earth, China, Lane {0} of Jinshajiang Road, Putuo District, Shanghai. Here is an example of super long cell",
"Foo.BindValue": "BindValue"
},
"BootstrapBlazor.Shared.Pages.Components.EnumEducation": {
"PlaceHolder": "Click to select ...",
"Primary": "Primary",
"Middel": "Middel"
},
"BootstrapBlazor.Shared.Pages.Inputs": {
"PlaceHolder": "please input ..."
},
"BootstrapBlazor.Shared.Pages.Components.ThemeChooser": {
"Title": "Click to choose theme",
"HeaderText": "Themes"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,103 +0,0 @@
{
"BootstrapBlazor.Shared.Pages.Components.Block": {
"Title": "未设置",
"SubTitle": "示例"
},
"BootstrapBlazor.Shared.Pages.Components.AttributeTable": {
"Title": "Attributes 属性"
},
"BootstrapBlazor.Shared.Pages.Components.MethodTable": {
"Title": "Methods 方法"
},
"BootstrapBlazor.Shared.Common.AttributeItem": {
"Name": "参数",
"Description": "说明",
"Type": "类型",
"ValueList": "可选值",
"DefaultValue": "默认值"
},
"BootstrapBlazor.Shared.Common.EventItem": {
"Name": "参数",
"Description": "说明",
"Type": "类型"
},
"BootstrapBlazor.Shared.Common.MethodItem": {
"Title": "Methods 方法",
"Name": "参数",
"Description": "说明",
"Type": "类型",
"Parameters": "参数",
"ReturnValue": "返回值"
},
"BootstrapBlazor.Shared.Shared.ComponentLayout": {
"Title": "基于 Bootstrap 和 Blazor 的企业级组件库",
"Example": "示例",
"Video": "相关视频"
},
"BootstrapBlazor.Shared.Pages.Alerts": {
"Title": "Alert 警告",
"SubTitle": "用于页面中展示重要的提示信息。",
"BaseUsageText": "基本用法",
"IntroText1": "页面中的非浮层元素,不会自动消失。",
"AlertPrimaryText": "主要的警告框",
"AlertSecondaryText": "次要的警告框",
"AlertSuccessText": "成功的警告框",
"AlertDangerText": "危险的警告框",
"AlertWarningText": "警告的警告框",
"AlertInfoText": "信息的警告框",
"AlertDarkText": "黑暗的警告框",
"CloseButtonUsageText": "关闭按钮",
"IntroText2": "提供关闭按钮的警告框",
"WithIconUsageText": "带 Icon",
"IntroText3": "表示某种状态时提升可读性。",
"ShowBarUsageText": "显示左侧 Bar",
"IntroText4": "作为 <code>Tip</code> 使用"
},
"BootstrapBlazor.Shared.Pages.QRCodes": {
"Title": "QRCode 二维码",
"SubTitle": "用于二维码生成",
"BaseUsageText": "基本用法",
"IntroText1": "点击生成按钮,生成特定的 <code>QRCode</code>",
"SuccessText": "二维码生成成功",
"CallbackDescription": "二维码生成后回调委托"
},
"BootstrapBlazor.Shared.Pages.Anchors": {
"Title": "Anchor 锚点",
"SubTitle": "用于跳转到页面指定位置",
"BaseUsageText": "基本用法",
"IntroText1": "需要展现当前页面上可供跳转的锚点链接,以及快速在锚点之间跳转",
"IntroText2": "点击下面 <code>Anchor</code> 项目,页面滚动到相对应的章节",
"ContentText1": "<p>与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</p><p>控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;</p><p>页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</p><p>简化流程:设计简洁直观的操作流程;</p><p>清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;</p><p>帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</p>"
},
"BootstrapBlazor.Shared.Pages.Components.Foo": {
"Name": "姓名",
"DateTime": "日期",
"Address": "地址",
"Count": "数量",
"Complete": "是/否",
"Education": "学历",
"Hobby": "爱好",
"Name.Required": "{0}是必填项",
"Address.Required": "{0}是必填项",
"Education.Required": "{0}是必选项",
"Hobby.Required": "请选择一种{0}",
"Name.PlaceHolder": "不可为空",
"Hobbys": "游泳,登山,打球,下棋",
"Foo.Name": "张三 {0}",
"Foo.Address": "上海市普陀区金沙江路 {0} 弄",
"Foo.Address2": "地球、中国、上海市普陀区金沙江路 {0} 弄 这里是超长单元格示例",
"Foo.BindValue": "绑定值"
},
"BootstrapBlazor.Shared.Pages.Components.EnumEducation": {
"PlaceHolder": "请选择 ...",
"Primary": "小学",
"Middel": "中学"
},
"BootstrapBlazor.Shared.Pages.Inputs": {
"PlaceHolder": "请输入 ..."
},
"BootstrapBlazor.Shared.Pages.Components.ThemeChooser": {
"Title": "点击切换主题",
"HeaderText": "请选择主题"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
@inherits BootstrapComponentBase
<h4>@Title</h4>
<AnchorLink Text="@Title" Id="@Name" />
<p>@(new MarkupString(Introduction))</p>

View File

@@ -39,6 +39,12 @@ namespace BootstrapBlazor.Shared.Pages.Components
[NotNull]
private IStringLocalizer<Block>? Localizer { get; set; }
/// <summary>
/// 获得/设置 友好链接锚点名称
/// </summary>
[Parameter]
public string? Name { get; set; }
/// <summary>
/// OnInitialized 方法
/// </summary>

View File

@@ -1,12 +1,23 @@
<div class="@ClassName">
@foreach (var m in Message.Reverse())
{
<div class="log-item">@m</div>
<div class="log-item">
@if (IsHtml)
{
@((MarkupString)m)
}
else
{
@m
}
</div>
}
</div>
@code {
protected System.Collections.Concurrent.ConcurrentQueue<string> Message { get; set; } = new System.Collections.Concurrent.ConcurrentQueue<string>();
protected System.Collections.Concurrent.ConcurrentQueue<string> Message { get; set; } = new();
private bool IsHtml { get; set; }
/// <summary>
/// 获得 按钮样式集合
@@ -25,8 +36,9 @@
[Parameter(CaptureUnmatchedValues = true)]
public IDictionary<string, object>? AdditionalAttributes { get; set; }
public void Log(string message)
public void Log(string message, bool isHtml = false)
{
IsHtml = isHtml;
Message.Enqueue($"{DateTimeOffset.Now}: {message}");
Class = "";
if (Message.Count > 3) Message.TryDequeue(out var s);

View File

@@ -0,0 +1,82 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Rendering;
using Microsoft.JSInterop;
using System;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class ChartToast : ComponentBase, IDisposable
{
/// <summary>
///
/// </summary>
[Inject]
private ToastService? ToastService { get; set; }
[Inject]
private IJSRuntime? JSRuntime { get; set; }
private JSInterop<ChartToast>? Interope { get; set; }
/// <summary>
/// BuildRenderTree 方法
/// </summary>
/// <param name="builder"></param>
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
builder.OpenComponent<Toast>(0);
builder.CloseComponent();
}
/// <summary>
/// OnAfterRenderAsync 方法
/// </summary>
/// <param name="firstRender"></param>
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender && JSRuntime != null)
{
if (Interope == null) Interope = new JSInterop<ChartToast>(JSRuntime);
await Interope.InvokeVoidAsync(this, "", "_initChart", nameof(ShowToast));
}
}
/// <summary>
///
/// </summary>
[JSInvokable]
public void ShowToast()
{
ToastService?.Show(new ToastOption() { Title = "友情提示", Content = "屏幕宽度过小,如果是手机请横屏观看" });
}
/// <summary>
///
/// </summary>
/// <param name="disposing"></param>
private void Dispose(bool disposing)
{
if (disposing) Interope?.Dispose();
}
/// <summary>
///
/// </summary>
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
}

View File

@@ -4,6 +4,7 @@
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using System;
using System.Collections.Generic;
namespace BootstrapBlazor.Shared.Pages.Components
@@ -15,8 +16,8 @@ namespace BootstrapBlazor.Shared.Pages.Components
{
private string ImageUrl => $"_content/BootstrapBlazor.Shared/images/{Image}";
private string? ClassString => CssBuilder.Default("form-group col-12 col-sm-6 col-md-4 col-lg-3")
.AddClass("d-none", !string.IsNullOrEmpty(SearchText) && !Text.Contains(SearchText, System.StringComparison.OrdinalIgnoreCase))
private string? ClassString => CssBuilder.Default("col-12 col-sm-6 col-md-4 col-lg-3")
.AddClass("d-none", IsHide)
.Build();
/// <summary>
@@ -56,5 +57,10 @@ namespace BootstrapBlazor.Shared.Pages.Components
ComponentNames?.Add(Text);
Parent?.Add(this);
}
/// <summary>
///
/// </summary>
internal bool IsHide => !string.IsNullOrEmpty(SearchText) && !Text.Contains(SearchText, StringComparison.OrdinalIgnoreCase);
}
}

View File

@@ -1,22 +1,21 @@
<div class="coms-cate">
<div class="@ClassString">
<h3>
<span>@Text</span>
<RenderTemplate>
<Badge IsPill="true" Color="Color.Success">@CardCount</Badge>
</RenderTemplate>
</h3>
<h4>@Desc</h4>
@if (!string.IsNullOrEmpty(Desc))
{
<h4>@Desc</h4>
}
<div class="form-inline coms-demo">
<div class="row flex-fill">
<div class="coms-demo">
<div class="row g-3">
<CascadingValue Value="this" IsFixed="true">
@ChildContent
</CascadingValue>
</div>
</div>
<RenderTemplate>
@if (Cards.Count > 0)
{
<Badge IsPill="true" Color="Color.Success">@Cards.Count</Badge>
}
</RenderTemplate>
</div>

View File

@@ -2,8 +2,10 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using System.Collections.Generic;
using System.Linq;
namespace BootstrapBlazor.Shared.Pages.Components
{
@@ -30,8 +32,30 @@ namespace BootstrapBlazor.Shared.Pages.Components
[Parameter]
public string? Desc { get; set; }
private List<ComponentCard> Cards { get; set; } = new List<ComponentCard>();
private List<ComponentCard> Cards { get; } = new List<ComponentCard>();
internal void Add(ComponentCard card) => Cards.Add(card);
private int CardCount => Cards.Where(c => !c.IsHide).Count();
private bool IsRendered { get; set; }
private string? ClassString => CssBuilder.Default("coms-cate")
.AddClass("d-none", IsRendered && CardCount == 0)
.Build();
/// <summary>
///
/// </summary>
/// <param name="firstRender"></param>
protected override void OnAfterRender(bool firstRender)
{
base.OnAfterRender(firstRender);
if (firstRender)
{
IsRendered = true;
}
}
}
}

View File

@@ -1,10 +1,7 @@
@inherits BootstrapComponentBase
@inject IOptions<BootstrapBlazorOptions> BootstrapOptions
@inject NavigationManager NavigationManager
@inject ICultureStorage CultureStorage
<div @attributes="@AdditionalAttributes" class="@ClassString">
<label>请选择语言:</label>
<label>@Label</label>
<Select Value="@SelectedCulture" OnSelectedItemChanged="@SetCulture">
<Options>
@foreach (var kv in BootstrapOptions.Value.GetSupportedCultures())
@@ -14,55 +11,3 @@
</Options>
</Select>
</div>
@code{
private string? ClassString => CssBuilder.Default("culture-selector")
.AddClassFromAttributes(AdditionalAttributes)
.Build();
private string SelectedCulture { get; set; } = CultureInfo.CurrentUICulture.Name;
private async Task SetCulture(SelectedItem item)
{
if (CultureStorage.Mode == CultureStorageMode.Webapi)
{
// 使用 api 方式 适用于 Server-Side 模式
if (SelectedCulture != item.Value)
{
var culture = item.Value;
var uri = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var query = $"?culture={Uri.EscapeDataString(culture)}&redirectUri={Uri.EscapeDataString(uri)}";
// use a path that matches your culture redirect controller from the previous steps
NavigationManager.NavigateTo("/Culture/SetCulture" + query, forceLoad: true);
}
}
else
{
var cultureName = item.Value;
if (cultureName != CultureInfo.CurrentCulture.Name)
{
await JSRuntime.InvokeVoidAsync(identifier: "$.blazorCulture.set", cultureName);
var culture = new CultureInfo(cultureName);
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true);
}
}
}
private string GetDisplayName(CultureInfo culture)
{
return CultureStorage.Mode switch
{
CultureStorageMode.Webapi => culture.NativeName,
_ => culture.Name switch
{
"zh-CN" => "中文(中国)",
"en-US" => "English (United States)",
_ => ""
}
};
}
}

View File

@@ -0,0 +1,102 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using Microsoft.JSInterop;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class CultureChooser
{
[Inject]
[NotNull]
private IOptions<BootstrapBlazorOptions>? BootstrapOptions { get; set; }
[Inject]
[NotNull]
private IStringLocalizer<CultureChooser>? Localizer { get; set; }
[Inject]
[NotNull]
private NavigationManager? NavigationManager { get; set; }
private string? ClassString => CssBuilder.Default("culture-selector")
.AddClassFromAttributes(AdditionalAttributes)
.Build();
private string SelectedCulture { get; set; } = CultureInfo.CurrentUICulture.Name;
[NotNull]
private string? Label { get; set; }
/// <summary>
/// OnInitialized 方法
/// </summary>
protected override void OnInitialized()
{
base.OnInitialized();
Label ??= Localizer[nameof(Label)];
}
private async Task SetCulture(SelectedItem item)
{
if (OperatingSystem.IsBrowser())
{
var cultureName = item.Value;
if (cultureName != CultureInfo.CurrentCulture.Name)
{
await JSRuntime.InvokeVoidAsync(identifier: "$.blazorCulture.set", cultureName);
var culture = new CultureInfo(cultureName);
CultureInfo.CurrentCulture = culture;
CultureInfo.CurrentUICulture = culture;
NavigationManager.NavigateTo(NavigationManager.Uri, forceLoad: true);
}
}
else
{
// 使用 api 方式 适用于 Server-Side 模式
if (SelectedCulture != item.Value)
{
var culture = item.Value;
var uri = new Uri(NavigationManager.Uri).GetComponents(UriComponents.PathAndQuery, UriFormat.Unescaped);
var query = $"?culture={Uri.EscapeDataString(culture)}&redirectUri={Uri.EscapeDataString(uri)}";
// use a path that matches your culture redirect controller from the previous steps
NavigationManager.NavigateTo("/Culture/SetCulture" + query, forceLoad: true);
}
}
}
private static string GetDisplayName(CultureInfo culture)
{
string? ret;
if (OperatingSystem.IsBrowser())
{
ret = culture.Name switch
{
"zh-CN" => "中文(中国)",
"en-US" => "English (United States)",
_ => ""
};
}
else
{
ret = culture.NativeName;
}
return ret;
}
}
}

View File

@@ -1,48 +1,8 @@
<div class="form-inline">
<div class="row">
<div class="form-group col-12 col-sm-6">
<Select TValue="string" Items="@Items3" OnSelectedItemChanged="@OnCascadeBindSelectClick" />
</div>
<div class="form-group col-12 col-sm-6">
<Select @ref="Select2" TValue="string" Items="@Items2" />
</div>
<div class="row g-3">
<div class="col-12 col-sm-6">
<Select TValue="string" Items="@Items3" OnSelectedItemChanged="@OnCascadeBindSelectClick" />
</div>
<div class="col-12 col-sm-6">
<Select TValue="string" Items="@Items2" />
</div>
</div>
@code {
private Select<string>? Select2;
private readonly List<SelectedItem> Items2 = new List<SelectedItem>();
private readonly IEnumerable<SelectedItem> Items3 = new SelectedItem[]
{
new SelectedItem ("", "请选择 ..."),
new SelectedItem ("Beijing", "北京"),
new SelectedItem ("Shanghai", "上海")
};
/// <summary>
/// 级联绑定菜单
/// </summary>
/// <param name="item"></param>
private Task OnCascadeBindSelectClick(SelectedItem item)
{
Items2.Clear();
if (item.Value == "Beijing")
{
Items2.AddRange(new SelectedItem[]
{
new SelectedItem("1","朝阳区"),
new SelectedItem("2","海淀区"),
});
}
else if (item.Value == "Shanghai")
{
Items2.AddRange(new SelectedItem[]
{
new SelectedItem("1","静安区"),
new SelectedItem("2","黄浦区"),
});
}
Select2?.SetItems(Items2);
return Task.CompletedTask;
}
}

View File

@@ -0,0 +1,56 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class CustomerSelectDialog
{
private IEnumerable<SelectedItem>? Items2;
private readonly IEnumerable<SelectedItem> Items3 = new SelectedItem[]
{
new SelectedItem ("", "请选择 ..."),
new SelectedItem ("Beijing", "北京"),
new SelectedItem ("Shanghai", "上海")
};
/// <summary>
/// 级联绑定菜单
/// </summary>
/// <param name="item"></param>
private async Task OnCascadeBindSelectClick(SelectedItem item)
{
// 模拟异步通讯获取数据
await Task.Delay(100);
if (item.Value == "Beijing")
{
Items2 = new SelectedItem[]
{
new SelectedItem("1","朝阳区"),
new SelectedItem("2","海淀区"),
};
}
else if (item.Value == "Shanghai")
{
Items2 = new SelectedItem[]
{
new SelectedItem("1","静安区"),
new SelectedItem("2","黄浦区"),
};
}
else
{
Items2 = Enumerable.Empty<SelectedItem>();
}
StateHasChanged();
}
}
}

View File

@@ -12,17 +12,10 @@
<EditorForm TModel="Foo">
<FieldItems>
<EditorItem @bind-Field="@context.Id" Editable="false" />
<EditorItem @bind-Field="@context.Complete">
<EditTemplate Context="value">
<div class="form-group col-12 col-sm-6">
<Switch @bind-Value="@(((Foo)value).Complete)" ShowInnerText="true" OnInnerText="是" OffInnerText="否" />
</div>
</EditTemplate>
</EditorItem>
<EditorItem @bind-Field="@context.Hobby" Data="@Hobbys" />
<EditorItem @bind-Field="@context.Hobby" Items="@Hobbys" />
</FieldItems>
</EditorForm>
<div class="modal-footer table-modal-footer">
<div class="modal-footer table-modal-footer mt-3">
<button type="button" class="btn btn-secondary" @onclick="@(e => OnClose?.Invoke())">
<i class="fa fa-times"></i>
<span>关闭</span>

View File

@@ -0,0 +1 @@
改变标题栏中下拉框此处会更改: @Value

View File

@@ -0,0 +1,35 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class DialogBodyFoo
{
private string? Value { get; set; }
private List<SelectedItem> Items { get; } = new(new[]
{
new SelectedItem("beijing", "北京"),
new SelectedItem("shanghai", "上海")
});
/// <summary>
///
/// </summary>
public Task UpdateAsync(string val)
{
Value = Items.First(i => i.Value == val).Text;
StateHasChanged();
return Task.CompletedTask;
}
}
}

View File

@@ -0,0 +1,16 @@
<h3>无限弹窗示例</h3>
<Tab>
<TabItem Text="用户管理">
<div>我是用户管理 @Value</div>
<Button Text="弹窗" OnClick="@OnClickButton" />
</TabItem>
<TabItem Text="菜单管理">
<div>我是菜单管理</div>
<Button Text="弹窗" OnClick="@OnClickButton" />
</TabItem>
<TabItem Text="角色管理">
<div>我是角色管理</div>
<Button Text="弹窗" OnClick="@OnClickButton" />
</TabItem>
</Tab>

View File

@@ -0,0 +1,44 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class DialogDemo
{
/// <summary>
///
/// </summary>
[NotNull]
public string? Value { get; set; }
[Inject]
[NotNull]
private DialogService? DialogService { get; set; }
/// <summary>
/// OnInitialized 方法
/// </summary>
protected override void OnInitialized()
{
base.OnInitialized();
Value = DateTime.Now.ToString();
}
private Task OnClickButton() => DialogService.Show(new DialogOption()
{
Title = $"弹窗 {Value}",
Component = BootstrapDynamicComponent.CreateComponent<DialogDemo>()
});
}
}

View File

@@ -0,0 +1,4 @@
<h5 class="modal-title">自定义 Header</h5>
<div class="d-flex flex-fill justify-content-end me-3">
<Select TValue="string" Items="Items" Value="Value" OnSelectedItemChanged="OnSelectedItemChanged" style="max-width: 120px;" />
</div>

View File

@@ -0,0 +1,57 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using System;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages.Components
{
/// <summary>
///
/// </summary>
public partial class DialogHeaderFoo
{
[NotNull]
private IEnumerable<SelectedItem>? Items { get; set; }
/// <summary>
///
/// </summary>
[Parameter]
public string? Value { get; set; }
/// <summary>
///
/// </summary>
[Parameter]
public Func<string, Task>? OnValueChanged { get; set; }
/// <summary>
///
/// </summary>
protected override void OnInitialized()
{
base.OnInitialized();
Items = new[]
{
new SelectedItem("beijing", "北京"),
new SelectedItem("shanghai", "上海")
};
}
private async Task OnSelectedItemChanged(SelectedItem item)
{
Value = item.Value;
if (OnValueChanged != null)
{
await OnValueChanged(Value);
}
}
}
}

View File

@@ -1,5 +1,7 @@
<div class="table-attr">
<h4>事件 Events</h4>
@inject IStringLocalizer<EventTable> Localizer
<div class="table-attr">
<h4>@Localizer["Title"]</h4>
<Table TItem="BootstrapBlazor.Shared.Common.EventItem" Items="Items">
<TableColumns>

View File

@@ -21,6 +21,7 @@ namespace BootstrapBlazor.Shared.Pages.Components
/// <summary>
///
/// </summary>
[Key]
[Display(Name = "主键")]
[AutoGenerateColumn(Ignore = true)]
public int Id { get; set; }
@@ -101,7 +102,7 @@ namespace BootstrapBlazor.Shared.Pages.Components
///
/// </summary>
/// <returns></returns>
public static List<Foo> GenerateFoo(IStringLocalizer<Foo> localizer) => Enumerable.Range(1, 80).Select(i => new Foo()
public static List<Foo> GenerateFoo(IStringLocalizer<Foo> localizer, int count = 80) => Enumerable.Range(1, count).Select(i => new Foo()
{
Id = i,
Name = localizer["Foo.Name", $"{i:d4}"],
@@ -116,22 +117,43 @@ namespace BootstrapBlazor.Shared.Pages.Components
///
/// </summary>
/// <returns></returns>
public static List<Foo> GenerateWrapFoo(IStringLocalizer<Foo> localizer) => Enumerable.Range(1, 4).Select(i => new Foo()
{
Id = i,
Name = localizer["Foo.Name", $"{i:d4}"],
DateTime = System.DateTime.Now.AddDays(i - 1),
Address = localizer["Foo.Address2", $"{random.Next(1000, 2000)}"],
Count = random.Next(1, 100),
Complete = random.Next(1, 100) > 50,
Education = random.Next(1, 100) > 50 ? EnumEducation.Primary : EnumEducation.Middel
}).ToList();
public static IEnumerable<SelectedItem> GenerateHobbys(IStringLocalizer<Foo> localizer) => localizer["Hobbys"].Value.Split(",").Select(i => new SelectedItem(i, i)).ToList();
/// <summary>
///
/// 通过 Id 获取头像链接
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string GetAvatarUrl(int id) => $"_content/BootstrapBlazor.Shared/images/avatars/150-{Math.Max(1, id % 25)}.jpg";
/// <summary>
/// 通过 Count 获得颜色
/// </summary>
/// <param name="count"></param>
/// <returns></returns>
public static Color GetProgressColor(int count) => count switch
{
>= 0 and < 10 => Color.Secondary,
>= 10 and < 20 => Color.Danger,
>= 20 and < 40 => Color.Warning,
>= 40 and < 50 => Color.Info,
>= 50 and < 70 => Color.Primary,
_ => Color.Success
};
/// <summary>
/// 通过 Id 获取 Title
/// </summary>
/// <returns></returns>
public static IEnumerable<SelectedItem> GenerateHobbys(IStringLocalizer<Foo> localizer) => localizer["Hobbys"].Value.Split(",").Select(i => new SelectedItem(i, i)).ToList();
public static string GetTitle() => random.Next(1, 80) switch
{
>= 1 and < 10 => "Clerk",
>= 10 and < 50 => "Engineer",
>= 50 and < 60 => "Manager",
>= 60 and < 70 => "Chief",
_ => "General Manager"
};
}
/// <summary>

View File

@@ -1,40 +1,44 @@
@using Microsoft.Extensions.DependencyInjection
@inject NugetVersionService VersionManager
@inject IStringLocalizer<InstallContent> Localizer
<h3>@Title</h3>
<h4>组件引用</h4>
<h4>@Localizer["H1"]</h4>
<p>组件引用有多种方法,可以参阅 <a href="install">类库安装</a></p>
<p>@((MarkupString)Localizer["P1"].Value)</p>
<div class="code-label">.NET CLI</div>
<Pre class="no-highlight">dotnet add package BootstrapBlazor --version @Version</Pre>
<h5>CSS 文件</h5>
<h5>@Localizer["H2"]</h5>
<p>将 Bootstrap 的 CSS 文件以 <code>&lt;link&gt;</code> 标签的形式添加到 <code>@HostFile</code> 文件 <code>&lt;head&gt;</code> 标签中,并放置在所有其它样式表之前。</p>
<Pre>&lt;link href="_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css" rel="stylesheet"&gt;</Pre>
<p>@((MarkupString)Localizer["P2", HostFile].Value)</p>
<Tips>
<p>如果是使用 <code>Blazozr App</code> 模板创建的工程请移除默认的 <code>Bootstrap</code> 样式链接 <code>&lt;link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /&gt;</code></p>
<p>@((MarkupString)Localizer["Tips"].Value)</p>
</Tips>
<Pre>&lt;link href="https://cdn.bootcdn.net/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"&gt;
&lt;link href="_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css" rel="stylesheet"&gt;</Pre>
<Tips>
<p>@((MarkupString)Localizer["Tips2"].Value)</p>
</Tips>
<h5>JS 文件</h5>
<h5>@Localizer["H3"]</h5>
<p>Bootstrap 所提供的许多组件都依赖 JavaScript 才能运行。具体来说,这些组件都依赖 jQuery、Popper.js 以及我们自己的 JavaScript 插件。将以下 <code>&lt;script&gt;</code> 标签放到 <code>@HostFile</code> 文件尾部且在 <code>&lt;/body&gt;</code> 标签之前即可起作用。</p>
<Pre>&lt;script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js"&gt;&lt;/script&gt;
</Pre>
<p>@((MarkupString)Localizer["P3", HostFile].Value)</p>
<Pre>&lt;script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js"&gt;&lt;/script&gt;</Pre>
<h4>添加命名空间到 <code>_Imports.razor</code> 文件</h4>
<h4>@((MarkupString)Localizer["H4"].Value)</h4>
<Pre>@@using BootstrapBlazor.Components</Pre>
<h4>注册服务</h4>
<h4>@Localizer["H5"]</h4>
@ChildContent
<h4>使用组件</h4>
<h4>@Localizer["H6"]</h4>
<p>在 <code>razor</code>组件中引用 <code>BootstrapBlazor</code> 组件</p>
<Pre>&lt;Button Color="Color.Primary"&gt;主要按钮&lt;/Button&gt;</Pre>
<p>@((MarkupString)Localizer["P4"].Value)</p>
<Pre>@((MarkupString)Localizer["Pre3"].Value)</Pre>

View File

@@ -8,7 +8,7 @@
<pre @attributes="@AdditionalAttributes" class="@ClassName"><code>@ChildContent</code></pre>
@if (CanCopy)
{
<button type="button" class="btn-clipboard" data-toggle="tooltip" title="点击复制代码">Copy</button>
<button type="button" class="btn-clipboard" data-bs-toggle="tooltip" data-bs-placement="left" title="点击复制代码">Copy</button>
}
}
</div>

View File

@@ -1,16 +1,17 @@
@inject IOptions<WebsiteOptions> WebsiteOption
@inject IStringLocalizer<QQGroup> Localzier
<div>
QQ群BootstrapAdmin & Blazor
@Localzier["Group"]BootstrapAdmin & Blazor
<a class="mx-1" target="_blank" href="@WebsiteOption.Value.QQGroup1Link">
<span class="text-danger fa fa-qq">
<span class="ml-1"><b>795206915(满)</b></span>
<span class="text-success fa fa-qq">
<span class="ms-1"><b>795206915</b></span>
</span>
</a>
<a class="mx-1" target="_blank" href="@WebsiteOption.Value.QQGroup2Link">
<span class="text-success fa fa-qq">
<span class="ml-1"><b>675147445</b></span>
<span class="ms-1"><b>675147445</b></span>
</span>
</a>
欢迎加群讨论
@Localzier["Welcome"]
</div>

View File

@@ -1,4 +1,4 @@
<Table TItem="Foo" Items="@Items.Take(10)" ClickToSelect="true" IsMultipleSelect="true" @bind-SelectedRows="@SelectedRows">
<Table TItem="Foo" ClickToSelect="true" IsMultipleSelect="true" @bind-SelectedRows="@SelectedRows" OnQueryAsync="@OnQueryAsync">
<TableColumns>
<TableColumn @bind-Field="@context.Id" />
<TableColumn @bind-Field="@context.Name" />

View File

@@ -18,10 +18,10 @@ namespace BootstrapBlazor.Shared.Pages.Components
/// </summary>
public partial class ResultDialogDemo2 : ComponentBase, IResultDialog
{
private IEnumerable<Foo> SelectedRows { get; set; } = Array.Empty<Foo>();
private List<Foo> SelectedRows { get; set; } = new List<Foo>();
[NotNull]
private IEnumerable<Foo>? Items { get; set; }
private List<Foo>? Items { get; set; }
/// <summary>
///
@@ -37,7 +37,7 @@ namespace BootstrapBlazor.Shared.Pages.Components
public EventCallback<IEnumerable<string>> EmailsChanged { get; set; }
[CascadingParameter(Name = "BodyContext")]
private object? Count { get; set; }
private object? BodyContext { get; set; }
[Inject]
[NotNull]
@@ -50,12 +50,19 @@ namespace BootstrapBlazor.Shared.Pages.Components
{
base.OnInitialized();
Items = GenerateItems((int)(Count ?? 10));
Emails ??= Array.Empty<string>();
var context = BodyContext as FooContext;
Items = GenerateItems(context?.Count ?? 10);
Emails = context?.Emails?.Split(";") ?? Array.Empty<string>();
SelectedRows = Items.Where(i => Emails.Any(mail => mail == i.Email));
SelectedRows = Items.Where(i => Emails.Any(mail => mail == i.Email)).ToList();
}
private Task<QueryData<Foo>> OnQueryAsync(QueryPageOptions option) => Task.FromResult(new QueryData<Foo>()
{
TotalCount = Items.Count(),
Items = Items
});
/// <summary>
///
/// </summary>
@@ -93,7 +100,7 @@ namespace BootstrapBlazor.Shared.Pages.Components
///
/// </summary>
/// <returns></returns>
protected static List<Foo> GenerateItems(int startId) => new List<Foo>(Enumerable.Range(startId, 10).Select(i => new Foo()
private static List<Foo> GenerateItems(int startId) => new(Enumerable.Range(startId, 10).Select(i => new Foo()
{
Id = i,
Name = $"张三 {i:d4}",
@@ -103,7 +110,23 @@ namespace BootstrapBlazor.Shared.Pages.Components
/// <summary>
///
/// </summary>
public class Foo
public class FooContext
{
/// <summary>
///
/// </summary>
public int Count { get; set; }
/// <summary>
///
/// </summary>
public string? Emails { get; set; }
}
/// <summary>
///
/// </summary>
private class Foo
{
/// <summary>
///

View File

@@ -1,18 +1,18 @@
@if (Count > 0)
@if (IsNew)
{
<Badge Color="@BootstrapBlazor.Components.Color.Info" IsPill="true">
@Count
<Badge Color="Color.Danger" IsPill="true">
NEW
</Badge>
}
@if (IsNew)
{
<span class="badge badge-danger">
<span>NEW</span>
</span>
}
@if (IsUpdate)
{
<span class="badge badge-success">
<span>Upd</span>
</span>
<Badge Color="Color.Success" IsPill="true">
Upd
</Badge>
}
@if (Count > 0)
{
<Badge Color="Color.Info" IsPill="true">
@Count
</Badge>
}

View File

@@ -1,7 +1,7 @@
@inherits BootstrapComponentBase
<div @ref="@ThemeElement" class="theme">
<div class="btn btn-theme" data-toggle="tooltip" title="@Title" data-placement="left">
<div class="btn btn-theme" data-bs-toggle="tooltip" title="@Title" data-bs-placement="left">
<div class="theme-bar">
<span class="theme-color bg-danger"></span>
<span class="theme-color bg-success"></span>
@@ -10,6 +10,9 @@
<span class="theme-color bg-info"></span>
<span class="theme-color bg-warning"></span>
</div>
<div class="pulse pulse-warning">
<span class="pulse-ring"></span>
</div>
</div>
<div class="theme-list">

View File

@@ -56,6 +56,7 @@ namespace BootstrapBlazor.Shared.Pages.Components
HeaderText ??= Localizer[nameof(HeaderText)];
Themes = BootstrapOptions.Value.Themes.Select(kv => new SelectedItem(kv.Value, kv.Key));
ThemeList = Themes.Select(t => t.Value);
SiteOptions.Value.CurrentTheme = Themes.FirstOrDefault(i => i.Text == "Motronic (开发中)")?.Value ?? "";
}
/// <summary>

View File

@@ -1,16 +1,12 @@
@inherits BootstrapComponentBase
@inject IStringLocalizer<Tips> Localizer
<Alert AdditionalAttributes="@AdditionalAttributes" ShowBar="true" Color="@Color">
<h4><i class="@Icon"></i>@Title</h4>
<h4><i class="@Icon"></i>@Localizer["Title"]</h4>
@ChildContent
</Alert>
@code {
/// <summary>
/// 获得/设置 显示文本
/// </summary>
[Parameter]
public string Title { get; set; } = "小技巧";
/// <summary>
/// 获得/设置 图标

View File

@@ -0,0 +1,60 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using System.Collections.Generic;
using System.Linq;
namespace BootstrapBlazor.Shared.Pages.Components
{
class TreeDataFoo
{
public string? Code { get; set; }
public string? ParentCode { get; set; }
public string? Text { get; set; }
public string Icon { get; set; } = "fa fa-fa";
/// <summary>
///
/// </summary>
/// <returns></returns>
public static List<TreeItem> GetTreeItems()
{
var items = new List<TreeDataFoo>();
items.Add(new TreeDataFoo() { Text = "导航一", Code = "1010" });
items.Add(new TreeDataFoo() { Text = "导航二", Code = "1020" });
items.Add(new TreeDataFoo() { Text = "导航三", Code = "1030" });
items.Add(new TreeDataFoo() { Text = "子菜单一", Code = "1040", ParentCode = "1020" });
items.Add(new TreeDataFoo() { Text = "子菜单二", Code = "1050", ParentCode = "1020" });
items.Add(new TreeDataFoo() { Text = "子菜单三", Code = "1060", ParentCode = "1020" });
items.Add(new TreeDataFoo() { Text = "孙菜单一", Code = "1070", ParentCode = "1050" });
items.Add(new TreeDataFoo() { Text = "孙菜单二", Code = "1080", ParentCode = "1050" });
items.Add(new TreeDataFoo() { Text = "孙菜单三", Code = "1090", ParentCode = "1050" });
items.Add(new TreeDataFoo() { Text = "曾孙菜单一", Code = "1100", ParentCode = "1080" });
items.Add(new TreeDataFoo() { Text = "曾孙菜单二", Code = "1110", ParentCode = "1080" });
items.Add(new TreeDataFoo() { Text = "曾孙菜单三", Code = "1120", ParentCode = "1080" });
items.Add(new TreeDataFoo() { Text = "曾曾孙菜单一", Code = "1130", ParentCode = "1100" });
items.Add(new TreeDataFoo() { Text = "曾曾孙菜单二", Code = "1140", ParentCode = "1100" });
items.Add(new TreeDataFoo() { Text = "曾曾孙菜单三", Code = "1150", ParentCode = "1100" });
// 算法获取属性结构数据
return GetSubItems(null, items).ToList();
}
private static List<TreeItem> GetSubItems(string? parentCode, IEnumerable<TreeDataFoo> foos)
{
var subData = foos.Where(i => i.ParentCode == parentCode);
return subData.Select(i => new TreeItem() { Text = i.Text, Items = GetSubItems(i.Code, foos) }).ToList();
}
}
}

View File

@@ -8,7 +8,7 @@
}
else
{
<a class="fa fa-video-camera mb-3" href="@VideoUrl" target="_blank"><span class="ml-2">[传送门]</span></a>
<a class="fa fa-video-camera mb-3" href="@VideoUrl" target="_blank"><span class="ms-2">[传送门]</span></a>
}
@code {

View File

@@ -1,4 +1,4 @@
<DropdownWidget class="text-right flex-fill px-3">
<DropdownWidget class="text-end flex-fill px-3">
<DropdownWidgetItem Icon="fa fa-envelope-o" BadgeNumber="4">
<HeaderTemplate>
<span>您有 4 个未读消息</span>
@@ -10,7 +10,7 @@
<div style="width: 40px; height: 40px;">
<Avatar Url="_content/BootstrapBlazor.Shared/images/Argo-C.png" IsCircle="true" Size="Size.Small" />
</div>
<div class="ml-2">
<div class="ms-2">
<div class="d-flex position-relative">
<h4>Argo Zhang</h4>
<small><i class="fa fa-clock-o"></i> @(4 + index) mins</small>
@@ -33,7 +33,7 @@
{
<a class="dropdown-item d-flex align-items-center" href="#" @onclick:preventDefault>
<i class="fa fa-users text-primary"></i>
<div class="ml-2">5 new members joined</div>
<div class="ms-2">5 new members joined</div>
</a>
}
</BodyTemplate>

View File

@@ -1,9 +1,11 @@
@page "/components"
@inject IStringLocalizer<Coms> Localizer
<div class="coms-search form-inline">
<div class="row flex-fill">
<div class="coms-search">
<div class="row">
<div class="col-12">
<Search IgnoreCase="true" IsLikeMatch="true" PlaceHolder="搜索想要的组件" Items="@ComponentItems" OnSearch="@OnSearch"></Search>
<Search PlaceHolder="@Localizer["Search"]" IsOnInputTrigger="true" IsAutoFocus="true"
Items="@ComponentItems" IsLikeMatch="true" IgnoreCase="true" OnSearch="@OnSearch"></Search>
</div>
</div>
<div class="coms-search-filter">
@@ -13,95 +15,97 @@
<CascadingValue Value="ComponentItems" IsFixed="true">
<CascadingValue Value="@SearchText">
<ComponentCategory Text="布局组件">
<ComponentCard Text="分割线 Divider" Image="Divider.svg" Url="dividers"></ComponentCard>
<ComponentCard Text="布局组件 Layout" Image="Layout.svg" Url="layouts"></ComponentCard>
<ComponentCard Text="页脚组件 Footer" Image="Footer.jpg" Url="footers"></ComponentCard>
<ComponentCard Text="滚动条 Scroll" Image="Scroll.png" Url="scrolls"></ComponentCard>
<ComponentCard Text="骨架屏 Skeleton" Image="Skeleton.png" Url="skeletons"></ComponentCard>
<ComponentCard Text="分割面板 Split" Image="Split.png" Url="splits"></ComponentCard>
<ComponentCategory Text="@Localizer["Text1"]">
<ComponentCard Text="@Localizer["DividerText"]" Image="Divider.svg" Url="dividers"></ComponentCard>
<ComponentCard Text="@Localizer["LayoutText"]" Image="Layout.svg" Url="layouts"></ComponentCard>
<ComponentCard Text="@Localizer["FooterText"]" Image="Footer.jpg" Url="footers"></ComponentCard>
<ComponentCard Text="@Localizer["ScorllText"]" Image="Scroll.png" Url="scrolls"></ComponentCard>
<ComponentCard Text="@Localizer["SkeletonText"]" Image="Skeleton.png" Url="skeletons"></ComponentCard>
<ComponentCard Text="@Localizer["SplitText"]" Image="Split.png" Url="splits"></ComponentCard>
</ComponentCategory>
<ComponentCategory Text="导航组件">
<ComponentCard Text="锚点 Anchor" Image="Anchor.png" Url="anchors"></ComponentCard>
<ComponentCard Text="面包屑 Breadcrumb" Image="Breadcrumb.png" Url="breadcrumbs"></ComponentCard>
<ComponentCard Text="菜单 Menu" Image="Menu.svg" Url="menus"></ComponentCard>
<ComponentCard Text="导航栏 Nav" Image="Space.svg" Url="navs"></ComponentCard>
<ComponentCard Text="下拉菜单 Dropdown" Image="Dropdown.svg" Url="dropdowns"></ComponentCard>
<ComponentCard Text="跳转组件 GoTop" Image="GoTop.png" Url="gotops"></ComponentCard>
<ComponentCard Text="分页 Pagination" Image="Pagination.svg" Url="paginations"></ComponentCard>
<ComponentCard Text="步骤条 Steps" Image="Steps.svg" Url="stepss"></ComponentCard>
<ComponentCard Text="标签页 Tab" Image="Tabs.svg" Url="tabs"></ComponentCard>
<ComponentCategory Text="@Localizer["Text2"]">
<ComponentCard Text="@Localizer["AnchorText"]" Image="Anchor.png" Url="anchors"></ComponentCard>
<ComponentCard Text="@Localizer["BreadcrumbText"]" Image="Breadcrumb.png" Url="breadcrumbs"></ComponentCard>
<ComponentCard Text="@Localizer["MenuText"]" Image="Menu.svg" Url="menus"></ComponentCard>
<ComponentCard Text="@Localizer["NavText"]" Image="Space.svg" Url="navs"></ComponentCard>
<ComponentCard Text="@Localizer["DropdownText"]" Image="Dropdown.svg" Url="dropdowns"></ComponentCard>
<ComponentCard Text="@Localizer["GoTopText"]" Image="GoTop.png" Url="gotops"></ComponentCard>
<ComponentCard Text="@Localizer["PaginationText"]" Image="Pagination.svg" Url="paginations"></ComponentCard>
<ComponentCard Text="@Localizer["StepsText"]" Image="Steps.svg" Url="stepss"></ComponentCard>
<ComponentCard Text="@Localizer["TabText"]" Image="Tabs.svg" Url="tabs"></ComponentCard>
</ComponentCategory>
<ComponentCategory Text="表单组件">
<ComponentCard Text="表单组件 EditorForm" Image="EditorForm.png" Url="editorforms"></ComponentCard>
<ComponentCard Text="表单组件 ValidateForm" Image="ValidateForm.png" Url="validateforms"></ComponentCard>
<ComponentCard Text="自动完成 AutoComplete" Image="AutoComplete.svg" Url="autocompletes"></ComponentCard>
<ComponentCard Text="按钮 Button" Image="Button.svg" Url="buttons"></ComponentCard>
<ComponentCard Text="级联选择 Button" Image="Cascader.svg" Url="cascaders"></ComponentCard>
<ComponentCard Text="多选框 Checkbox" Image="CheckBox.svg" Url="checkboxs"></ComponentCard>
<ComponentCard Text="多选框组 CheckboxList" Image="CheckboxList.png" Url="checkboxlists"></ComponentCard>
<ComponentCard Text="时间框 DateTimePicker" Image="DatePicker.svg" Url="datetimepickers"></ComponentCard>
<ComponentCard Text="时间范围框 DateTimeRange" Image="DateTimeRange.png" Url="datetimeranges"></ComponentCard>
<ComponentCard Text="富文本框 Editor" Image="Editor.png" Url="editors"></ComponentCard>
<ComponentCard Text="输入框 Input" Image="Input.svg" Url="inputs"></ComponentCard>
<ComponentCard Text="数字框 InputNumber" Image="InputNumber.png" Url="inputnumbers"></ComponentCard>
<ComponentCard Text="富文本框 Markdown" Image="Markdown.png" Url="markdowns"></ComponentCard>
<ComponentCard Text="单选框 Radio" Image="Radio.svg" Url="radios"></ComponentCard>
<ComponentCard Text="评分 Rate" Image="Rate.jpg" Url="rates"></ComponentCard>
<ComponentCard Text="选择器 Select" Image="Select.svg" Url="selects"></ComponentCard>
<ComponentCard Text="多项选择器 MultiSelect" Image="MultiSelect.png" Url="multiselects"></ComponentCard>
<ComponentCard Text="滑块 Slider" Image="Slider.svg" Url="sliders"></ComponentCard>
<ComponentCard Text="开关 Switch" Image="Switch.svg" Url="switchs"></ComponentCard>
<ComponentCard Text="多行文本框 Textarea" Image="Textarea.png" Url="textareas"></ComponentCard>
<ComponentCard Text="开关 Toggle" Image="Toggle.png" Url="toggles"></ComponentCard>
<ComponentCard Text="穿梭框 Transfer" Image="Transfer.svg" Url="transfers"></ComponentCard>
<ComponentCard Text="上传组件 Upload" Image="Upload.svg" Url="uploads"></ComponentCard>
<ComponentCategory Text="@Localizer["Text3"]">
<ComponentCard Text="@Localizer["EditorFormText"]" Image="EditorForm.png" Url="editorforms"></ComponentCard>
<ComponentCard Text="@Localizer["ValidateFormText"]" Image="ValidateForm.png" Url="validateforms"></ComponentCard>
<ComponentCard Text="@Localizer["AutoCompleteText"]" Image="AutoComplete.svg" Url="autocompletes"></ComponentCard>
<ComponentCard Text="@Localizer["ButtonText"]" Image="Button.svg" Url="buttons"></ComponentCard>
<ComponentCard Text="@Localizer["CascaderText"]" Image="Cascader.png" Url="cascaders"></ComponentCard>
<ComponentCard Text="@Localizer["CheckboxText"]" Image="CheckBox.svg" Url="checkboxs"></ComponentCard>
<ComponentCard Text="@Localizer["CheckboxListText"]" Image="CheckboxList.png" Url="checkboxlists"></ComponentCard>
<ComponentCard Text="@Localizer["ColorPickerText"]" Image="ColorPicker.jpg" Url="colorpickers"></ComponentCard>
<ComponentCard Text="@Localizer["DateTimePickerText"]" Image="DatePicker.svg" Url="datetimepickers"></ComponentCard>
<ComponentCard Text="@Localizer["DateTimeRangeText"]" Image="DateTimeRange.png" Url="datetimeranges"></ComponentCard>
<ComponentCard Text="@Localizer["EditorText"]" Image="Editor.png" Url="editors"></ComponentCard>
<ComponentCard Text="@Localizer["InputText"]" Image="Input.svg" Url="inputs"></ComponentCard>
<ComponentCard Text="@Localizer["InputNumberText"]" Image="InputNumber.png" Url="inputnumbers"></ComponentCard>
<ComponentCard Text="@Localizer["MarkdownText"]" Image="Markdown.png" Url="markdowns"></ComponentCard>
<ComponentCard Text="@Localizer["RadioText"]" Image="Radio.svg" Url="radios"></ComponentCard>
<ComponentCard Text="@Localizer["RateText"]" Image="Rate.jpg" Url="rates"></ComponentCard>
<ComponentCard Text="@Localizer["SelectText"]" Image="Select.svg" Url="selects"></ComponentCard>
<ComponentCard Text="@Localizer["MultiSelectText"]" Image="MultiSelect.png" Url="multiselects"></ComponentCard>
<ComponentCard Text="@Localizer["SliderText"]" Image="Slider.svg" Url="sliders"></ComponentCard>
<ComponentCard Text="@Localizer["SwitchText"]" Image="Switch.svg" Url="switchs"></ComponentCard>
<ComponentCard Text="@Localizer["TextareaText"]" Image="Textarea.png" Url="textareas"></ComponentCard>
<ComponentCard Text="@Localizer["ToggleText"]" Image="Toggle.png" Url="toggles"></ComponentCard>
<ComponentCard Text="@Localizer["TransferText"]" Image="Transfer.svg" Url="transfers"></ComponentCard>
<ComponentCard Text="@Localizer["UploadText"]" Image="Upload.svg" Url="uploads"></ComponentCard>
</ComponentCategory>
<ComponentCategory Text="数据组件">
<ComponentCard Text="头像框 Avatar" Image="Avatar.svg" Url="avatars"></ComponentCard>
<ComponentCard Text="徽章 Badge" Image="Badge.svg" Url="badges"></ComponentCard>
<ComponentCard Text="卡片 Card" Image="Card.svg" Url="cards"></ComponentCard>
<ComponentCard Text="日历框 Calendar" Image="Calendar.svg" Url="calendars"></ComponentCard>
<ComponentCard Text="验证码 Captcha" Image="Captcha.png" Url="captchas"></ComponentCard>
<ComponentCard Text="走马灯 Carousel" Image="Carousel.svg" Url="carousels"></ComponentCard>
<ComponentCard Text="图表 Chart" Image="Chart.png" Url="charts"></ComponentCard>
<ComponentCard Text="进度环 Circle" Image="Circle.png" Url="circles"></ComponentCard>
<ComponentCard Text="折叠 Collapse" Image="Collapse.svg" Url="collapses"></ComponentCard>
<ComponentCard Text="挂件 DropdownWidget" Image="DropdownWidget.png" Url="dropdownwidgets"></ComponentCard>
<ComponentCard Text="集合 GroupBox" Image="GroupBox.png" Url="groupboxs"></ComponentCard>
<ComponentCard Text="列表组件 ListView" Image="ListView.png" Url="listviews"></ComponentCard>
<ComponentCard Text="弹出框 Popover" Image="Popover.svg" Url="popovers"></ComponentCard>
<ComponentCard Text="二维码 QRCode" Image="QRCode.png" Url="qrcodes"></ComponentCard>
<ComponentCard Text="搜索框 Search" Image="Search.png" Url="searchs"></ComponentCard>
<ComponentCard Text="表格 Table" Image="Table.svg" Url="tables"></ComponentCard>
<ComponentCard Text="标签 Tag" Image="Tag.svg" Url="tags"></ComponentCard>
<ComponentCard Text="时间线 Timeline" Image="Timeline.svg" Url="timelines"></ComponentCard>
<ComponentCard Text="工具条 Tooltip" Image="Tooltip.svg" Url="tooltips"></ComponentCard>
<ComponentCard Text="树形控件 Tree" Image="Tree.svg" Url="trees"></ComponentCard>
<ComponentCard Text="条码扫描 BarcodeReader" Image="BarcodeReader.png" Url="barcodereaders"></ComponentCard>
<ComponentCard Text="摄像头组件 Camera" Image="Camera.png" Url="Cameras"></ComponentCard>
<ComponentCard Text="手写签名 HandwrittenPage" Image="Handwritten.jpg" Url="handwrittenPage"></ComponentCard>
<ComponentCategory Text="@Localizer["Text4"]">
<ComponentCard Text="@Localizer["AvatarText"]" Image="Avatar.svg" Url="avatars"></ComponentCard>
<ComponentCard Text="@Localizer["BadgeText"]" Image="Badge.svg" Url="badges"></ComponentCard>
<ComponentCard Text="@Localizer["CardText"]" Image="Card.svg" Url="cards"></ComponentCard>
<ComponentCard Text="@Localizer["CalendarText"]" Image="Calendar.svg" Url="calendars"></ComponentCard>
<ComponentCard Text="@Localizer["CaptchaText"]" Image="Captcha.png" Url="captchas"></ComponentCard>
<ComponentCard Text="@Localizer["CarouselText"]" Image="Carousel.svg" Url="carousels"></ComponentCard>
<ComponentCard Text="@Localizer["ChartText"]" Image="Chart.png" Url="charts"></ComponentCard>
<ComponentCard Text="@Localizer["CircleText"]" Image="Circle.png" Url="circles"></ComponentCard>
<ComponentCard Text="@Localizer["CollapseText"]" Image="Collapse.svg" Url="collapses"></ComponentCard>
<ComponentCard Text="@Localizer["DropdownWidgetText"]" Image="DropdownWidget.png" Url="dropdownwidgets"></ComponentCard>
<ComponentCard Text="@Localizer["GroupBoxText"]" Image="GroupBox.png" Url="groupboxs"></ComponentCard>
<ComponentCard Text="@Localizer["ListViewText"]" Image="ListView.png" Url="listviews"></ComponentCard>
<ComponentCard Text="@Localizer["PopoverText"]" Image="Popover.svg" Url="popovers"></ComponentCard>
<ComponentCard Text="@Localizer["QRCodeText"]" Image="QRCode.png" Url="qrcodes"></ComponentCard>
<ComponentCard Text="@Localizer["SearchText"]" Image="Search.png" Url="searchs"></ComponentCard>
<ComponentCard Text="@Localizer["TableText"]" Image="Table.svg" Url="tables"></ComponentCard>
<ComponentCard Text="@Localizer["TagText"]" Image="Tag.svg" Url="tags"></ComponentCard>
<ComponentCard Text="@Localizer["TimelineText"]" Image="Timeline.svg" Url="timelines"></ComponentCard>
<ComponentCard Text="@Localizer["TooltipText"]" Image="Tooltip.svg" Url="tooltips"></ComponentCard>
<ComponentCard Text="@Localizer["TreeText"]" Image="Tree.svg" Url="trees"></ComponentCard>
<ComponentCard Text="@Localizer["BarcodeReaderText"]" Image="BarcodeReader.png" Url="barcodereaders"></ComponentCard>
<ComponentCard Text="@Localizer["CameraText"]" Image="Camera.png" Url="Cameras"></ComponentCard>
<ComponentCard Text="@Localizer["HandwrittenPageText"]" Image="Handwritten.jpg" Url="handwrittenpage"></ComponentCard>
<ComponentCard Text="@Localizer["FullScreenText"]" Image="FullScreen.jpg" Url="fullscreens"></ComponentCard>
</ComponentCategory>
<ComponentCategory Text="消息组件">
<ComponentCard Text="警告框 Alert" Image="Alert.svg" Url="alerts"></ComponentCard>
<ComponentCard Text="控制台 Console" Image="Console.png" Url="consoles"></ComponentCard>
<ComponentCard Text="对话框 Dialog" Image="Notification.svg" Url="dialogs"></ComponentCard>
<ComponentCard Text="抽屉 Drawer" Image="Drawer.svg" Url="drawers"></ComponentCard>
<ComponentCard Text="编辑弹窗 EditDialog" Image="Notification.svg" Url="editdialogs"></ComponentCard>
<ComponentCard Text="消息框 Message" Image="Message.svg" Url="messages"></ComponentCard>
<ComponentCard Text="模态框 Modal" Image="Modal.svg" Url="modals"></ComponentCard>
<ComponentCard Text="指示灯 Light" Image="Light.png" Url="lights"></ComponentCard>
<ComponentCard Text="确认框 Popconfirm" Image="Popconfirm.svg" Url="popconfirms"></ComponentCard>
<ComponentCard Text="进度条 Progress" Image="Progress.svg" Url="progresss"></ComponentCard>
<ComponentCard Text="旋转图标 Spinner" Image="Spinner.gif" Url="spinners"></ComponentCard>
<ComponentCard Text="弹窗组件 SweetAlert" Image="SweetAlert.png" Url="swals"></ComponentCard>
<ComponentCard Text="搜索弹窗 SearchDialog" Image="SearchDialog.png" Url="searchdialogs"></ComponentCard>
<ComponentCard Text="轻量弹窗 Toast" Image="Toast.png" Url="toasts"></ComponentCard>
<ComponentCard Text="计时器 Timer" Image="Timer.png" Url="timers"></ComponentCard>
<ComponentCategory Text="@Localizer["Text5"]">
<ComponentCard Text="@Localizer["AlertText"]" Image="Alert.svg" Url="alerts"></ComponentCard>
<ComponentCard Text="@Localizer["ConsoleText"]" Image="Console.png" Url="consoles"></ComponentCard>
<ComponentCard Text="@Localizer["DialogText"]" Image="Notification.svg" Url="dialogs"></ComponentCard>
<ComponentCard Text="@Localizer["DrawerText"]" Image="Drawer.svg" Url="drawers"></ComponentCard>
<ComponentCard Text="@Localizer["EditDialogText"]" Image="Notification.svg" Url="editdialogs"></ComponentCard>
<ComponentCard Text="@Localizer["MessageText"]" Image="Message.svg" Url="messages"></ComponentCard>
<ComponentCard Text="@Localizer["ModalText"]" Image="Modal.svg" Url="modals"></ComponentCard>
<ComponentCard Text="@Localizer["LightText"]" Image="Light.png" Url="lights"></ComponentCard>
<ComponentCard Text="@Localizer["PopconfirmText"]" Image="Popconfirm.svg" Url="popconfirms"></ComponentCard>
<ComponentCard Text="@Localizer["ProgressText"]" Image="Progress.svg" Url="progresss"></ComponentCard>
<ComponentCard Text="@Localizer["SpinnerText"]" Image="Spinner.gif" Url="spinners"></ComponentCard>
<ComponentCard Text="@Localizer["SweetAlertText"]" Image="SweetAlert.png" Url="swals"></ComponentCard>
<ComponentCard Text="@Localizer["SearchDialogText"]" Image="SearchDialog.png" Url="searchdialogs"></ComponentCard>
<ComponentCard Text="@Localizer["ToastText"]" Image="Toast.png" Url="toasts"></ComponentCard>
<ComponentCard Text="@Localizer["TimerText"]" Image="Timer.png" Url="timers"></ComponentCard>
</ComponentCategory>
</CascadingValue>

View File

@@ -1,7 +1,8 @@
@page "/globalization"
@inject IStringLocalizer<Golbalization> Localizer
<h3>全球化</h3>
<h3>@Localizer["Title"]</h3>
<h4>ASP.NET Core Blazor 全球化</h4>
<h4>@Localizer["SubTitle"]</h4>
<p>阅读以下知识点前请先查看 <a href="https://docs.microsoft.com/zh-cn/aspnet/core/blazor/globalization-localization?view=aspnetcore-3.1" target="_blank">微软官方文档</a></p>
<p>@((MarkupString)Localizer["P1"].Value)</p>

View File

@@ -1,189 +1,183 @@
@using Microsoft.Extensions.Localization
@layout HomeLayout
@layout HomeLayout
@page "/"
@page "/index"
@page "/home"
<section class="home-section">
<div class="welcome container">
<div class="form-inline">
<div class="row">
<div class="col-12 col-lg-6">
<div class="welcome-header">
<h4>
Bootstrap 风格的 Blazor UI 组件库
</h4>
<div>基于 <code>Bootstrap</code> 样式库精心打造,并且额外增加了 76 多种常用的组件,为您快速开发项目带来非一般的感觉</div>
<div class="welcome-body">
致力于打造全网<span @ref="TypeElement" class="typed"></span><span class="typed-cursor">|</span>
<div>最好玩的组件库</div>
</div>
</div>
<div class="welcome-footer">
<div class="d-flex flex-wrap">
<span role="alert" class="tag alert fade show alert-primary" data-toggle="tooltip" title="Tree 组件">
树形组件
</span>
<span role="alert" class="tag alert fade show alert-success" data-toggle="tooltip" title="Menu 组件">
菜单组件
</span>
<span role="alert" class="tag alert fade show alert-warning" data-toggle="tooltip" title="Tab Tag Alert 组件">
标签组件
</span>
<span role="alert" class="tag alert fade show alert-secondary" data-toggle="tooltip" title="Table 组件">
表格组件
</span>
</div>
<div class="d-flex flex-wrap">
<span role="alert" class="tag alert fade show alert-danger" data-toggle="tooltip" title="Layout Split 组件">
布局组件
</span>
<span role="alert" class="tag alert fade show alert-info" data-toggle="tooltip" title="Dialog Message Toast 组件">
通知组件
</span>
<span role="alert" class="tag alert fade show alert-dark" data-toggle="tooltip" title="Upload 组件">
上传组件
</span>
<span role="alert" class="tag alert fade show alert-success" data-toggle="tooltip" title="Swith Toogle 组件">
开关组件
</span>
</div>
<div class="row g-3">
<div class="col-12 col-lg-6 position-relative">
<div class="welcome-header">
<h4>
@Localizer["HeaderTitle"]
</h4>
<div>@((MarkupString)Localizer["HeaderDesc", Options.Value.TotalCount].Value)</div>
<div class="@BodyClassString">
@Localizer["HeaderBody"]<span @ref="TypeElement" class="typed"></span><span class="typed-cursor">|</span>
<div>@Localizer["HeaderBody1"]</div>
</div>
</div>
<div class="col-12 col-lg-6">
<div id="carouselExampleCaptions" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carouselExampleCaptions" data-slide-to="0" class="active"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="1"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="2"></li>
<li data-target="#carouselExampleCaptions" data-slide-to="3"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/bar.gif" />
</div>
<div class="carousel-caption">
<h5>Chart 图表组件</h5>
<p>提供常用的多种图表组件</p>
</div>
<div class="welcome-footer">
<div class="d-flex flex-wrap">
<span role="alert" class="tag alert fade show alert-primary" data-bs-toggle="tooltip" title="Tree @Localizer["TagTitle"]">
@Localizer["Span1"]
</span>
<span role="alert" class="tag alert fade show alert-success" data-bs-toggle="tooltip" title="Menu @Localizer["TagTitle"]">
@Localizer["Span2"]
</span>
<span role="alert" class="tag alert fade show alert-warning" data-bs-toggle="tooltip" title="Tab Tag Alert @Localizer["TagTitle"]">
@Localizer["Span3"]
</span>
<span role="alert" class="tag alert fade show alert-secondary" data-bs-toggle="tooltip" title="Table @Localizer["TagTitle"]">
@Localizer["Span4"]
</span>
</div>
<div class="d-flex flex-wrap">
<span role="alert" class="tag alert fade show alert-danger" data-bs-toggle="tooltip" title="Layout Split @Localizer["TagTitle"]">
@Localizer["Span5"]
</span>
<span role="alert" class="tag alert fade show alert-info" data-bs-toggle="tooltip" title="Dialog Message Toast @Localizer["TagTitle"]">
@Localizer["Span6"]
</span>
<span role="alert" class="tag alert fade show alert-dark" data-bs-toggle="tooltip" title="Upload @Localizer["TagTitle"]">
@Localizer["Span7"]
</span>
<span role="alert" class="tag alert fade show alert-success" data-bs-toggle="tooltip" title="Swith Toogle @Localizer["TagTitle"]">
@Localizer["Span8"]
</span>
</div>
</div>
</div>
<div class="col-12 col-lg-6">
<div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="carousel">
<ol class="carousel-indicators">
<li data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active"></li>
<li data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1"></li>
<li data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2"></li>
<li data-bs-target="#carouselExampleCaptions" data-bs-slide-to="3"></li>
</ol>
<div class="carousel-inner">
<div class="carousel-item active">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/bar.gif" />
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/dought.gif" />
</div>
<div class="carousel-caption">
<h5>Chart 图标组件</h5>
<p>多维度数据对比</p>
</div>
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/table.png" />
</div>
<div class="carousel-caption">
<h5>全功能表格组件</h5>
<p>具备增删改查搜、分页、排序所有功能</p>
</div>
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/timeline.png" />
</div>
<div class="carousel-caption">
<h5>超强时间线功能</h5>
<p>自定义节点显示任意组件</p>
</div>
<div class="carousel-caption">
<h5>@Localizer["CarouselH1"]</h5>
<p>@Localizer["CarouselP1"]</p>
</div>
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/dought.gif" />
</div>
<div class="carousel-caption">
<h5>@Localizer["CarouselH2"]</h5>
<p>@Localizer["CarouselP2"]</p>
</div>
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/table.png" />
</div>
<div class="carousel-caption">
<h5>@Localizer["CarouselH3"]</h5>
<p>@Localizer["CarouselP3"]</p>
</div>
</div>
</div>
<div class="carousel-item">
<div class="bar">
<div class="carousel-img">
<img src="_content/BootstrapBlazor.Shared/images/timeline.png" />
</div>
<div class="carousel-caption">
<h5>@Localizer["CarouselH4"]</h5>
<p>@Localizer["CarouselP4"]</p>
</div>
</div>
</div>
<a class="carousel-control-prev" href="#carouselExampleCaptions" role="button"
data-slide="prev">
<i class="fa fa-angle-left"></i>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleCaptions" role="button"
data-slide="next">
<i class="fa fa-angle-right"></i>
<span class="sr-only">Next</span>
</a>
</div>
<a class="carousel-control-prev" href="#carouselExampleCaptions" role="button"
data-bs-slide="prev">
<i class="fa fa-angle-left"></i>
<span class="sr-only">Previous</span>
</a>
<a class="carousel-control-next" href="#carouselExampleCaptions" role="button"
data-bs-slide="next">
<i class="fa fa-angle-right"></i>
<span class="sr-only">Next</span>
</a>
</div>
</div>
</div>
</div>
<div class="intro container">
<div class="form-inline">
<div class="row">
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-success">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/components.svg" alt="components" />
</p>
<h3>50+ 组件</h3>
<div>本套组件库包含超过 50 多个组件,从简单的按钮到复杂的整页面级别的组件</div>
</div>
<div class="row g-3">
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-success">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/components.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH1"]</h3>
<div>@((MarkupString)Localizer["ContainerD1", Options.Value.TotalCount].Value)</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-primary">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/performance.svg" alt="components" />
</p>
<h3>性能</h3>
<div>
每个控件都经过微调,优化父子组件之间刷新逻辑,避免多次循环更新
</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-primary">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/performance.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH2"]</h3>
<div>@Localizer["ContainerD2"]</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-info">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/ease-of-use.svg" alt="components" />
</p>
<h3>简单易用</h3>
<div>轻松掌握组件使用方法,快速将 BootstrapBlazor 控件融入到项目中</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-info">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/ease-of-use.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH3"]</h3>
<div>@Localizer["ContainerD3"]</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-danger">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/hassel-free-licensing.svg" alt="components" />
</p>
<h3>免费开源</h3>
<div>简单、直接、免费使用、无依赖组件,依赖 jQuery Bootstrap 均已内置</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-danger">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/hassel-free-licensing.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH4"]</h3>
<div>@Localizer["ContainerD4"]</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-warning">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/demo-and-training.svg" alt="components" />
</p>
<h3>演示与示例</h3>
<div>详细文档与在线演示,功能设置简单,直接拷贝代码开箱即用</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-warning">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/demo-and-training.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH5"]</h3>
<div>@Localizer["ContainerD5"]</div>
</div>
<div class="form-group col-12 col-sm-6 col-md-4">
<div class="card border-secondary">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/frequent-updates.svg" alt="components" />
</p>
<h3>持续更新</h3>
<div>码云平台托管开源,永不闭源,持续更新,及时响应问题与反馈</div>
</div>
</div>
<div class="col-12 col-sm-6 col-md-4">
<div class="card border-secondary">
<p class="d-none d-sm-block">
<img src="_content/BootstrapBlazor.Shared/images/frequent-updates.svg" alt="components" />
</p>
<h3>@Localizer["ContainerH6"]</h3>
<div>@Localizer["ContainerD6"]</div>
</div>
</div>
</div>
</div>
<div class="donate">
<h3>捐助</h3>
<h5 class="d-none d-sm-block mb-3">扫码捐助请作者喝一杯咖啡</h5>
<h3>@Localizer["DonateH1"]</h3>
<h5 class="d-none d-sm-block mb-3">@Localizer["DonateH2"]</h5>
<img class="barcode" src="https://gitee.com/LongbowEnterprise/Pictures/raw/master/WeChat/BarCode@2x.png" />
<div class="wwads-cn wwads-horizontal" data-id="72" style="max-width:350px"></div>
</div>
</section>

View File

@@ -2,8 +2,12 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using Microsoft.JSInterop;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages
@@ -15,9 +19,20 @@ namespace BootstrapBlazor.Shared.Pages
{
private ElementReference TypeElement { get; set; }
private string? BodyClassString => CssBuilder.Default(Localizer["BodyClassString"])
.Build();
[Inject]
private IJSRuntime? JSRuntime { get; set; }
[Inject]
[NotNull]
private IStringLocalizer<Index>? Localizer { get; set; }
[Inject]
[NotNull]
private IOptions<WebsiteOptions>? Options { get; set; }
/// <summary>
///
/// </summary>
@@ -27,7 +42,10 @@ namespace BootstrapBlazor.Shared.Pages
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender && JSRuntime != null) await JSRuntime.InvokeVoidAsync("$.indexTyper", TypeElement);
if (firstRender && JSRuntime != null)
{
await JSRuntime.InvokeVoidAsync("$.indexTyper", TypeElement, Localizer["DynamicText"].Value.ToCharArray(), Localizer["DynamicText1"].Value.ToCharArray(), Localizer["DynamicText2"].Value.ToCharArray());
}
}
}
}

View File

@@ -1,11 +1,12 @@
@page "/install"
@inject NugetVersionService VersionManager
@inject IStringLocalizer<Install> Localizer
<h3>安装</h3>
<h3>@Localizer["InstallTitle"]</h3>
<h4>Git</h4>
<p>Git 工具有很多种大家比较熟悉的,这里我介绍两款 Git 客户端工具</p>
<p>@Localizer["GitP1"]</p>
<div class="row mb-sm-3">
<div class="git col-12 col-sm-6 mb-3 mb-sm-0">
@@ -19,11 +20,11 @@
</div>
</div>
<p>推荐使用 <a href="https://fork.dev">Fork</a> 工具进行安装,它能更好地和 <a href="https://visualstudio.microsoft.com/vs/getting-started/" target="_blank">Visutal Studio</a> 开发工具配合使用。</p>
<p>@((MarkupString)Localizer["GitP2"].Value)</p>
<h4>Nuget 包安装</h4>
<h4>@Localizer["NugetInstall"]</h4>
<p>使用 <a href="https://www.nuget.org/packages?q=BootstrapBlazor" target="_blank">nuget.org</a> 进行 BootstrapBlazor 组件的安装</p>
<p>@((MarkupString)Localizer["NugetP1"].Value)</p>
<div class="code-label">.NET CLI</div>
<Pre class="no-highlight">dotnet add package BootstrapBlazor --version @Version</Pre>
@@ -34,12 +35,12 @@
<div class="code-label">Package Manager</div>
<Pre class="no-highlight">Install-Package BootstrapBlazor -Version @Version</Pre>
<h4>项目环境搭建</h4>
<h4>@Localizer["EnvBuildTitle"]</h4>
<ol>
<li>安装 .net core sdk <a href="http://www.microsoft.com/net/download" target="_blank">官方网址</a></li>
<li>安装 Visual Studio 2019 以上 <a href="https://visualstudio.microsoft.com/vs/getting-started" target="_blank">官方网址</a></li>
<li>拉取项目代码 BootstrapBlazor <a href="https://gitee.com/LongbowEnterprise/BootstrapBlazor" target="_blank">仓库网址</a></li>
<li>@((MarkupString)Localizer["EnvLi1"].Value)</li>
<li>@((MarkupString)Localizer["EnvLi2"].Value)</li>
<li>@((MarkupString)Localizer["EnvLi3"].Value)</li>
</ol>
<Pre class="no-highlight">git clone https://gitee.com/LongbowEnterprise/BootstrapBlazor</Pre>

View File

@@ -1,12 +1,13 @@
@page "/install-server"
@inject IStringLocalizer<Install_Server> Localizer
<InstallContent>
<InstallContent Title="@Localizer["Title"]">
<Pre>public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddServerSideBlazor();
// 添加本行代码
// @Localizer["CodeComment"]
services.AddBootstrapBlazor();
}</Pre>
</InstallContent>

View File

@@ -1,6 +1,7 @@
@page "/install-wasm"
@inject IStringLocalizer<Install_wasm> Localizer
<InstallContent Title="客户端渲染模式" HostFile="wwwroot/index.html">
<InstallContent Title="@Localizer["Title"]" HostFile="wwwroot/index.html">
<Pre>public class Program
{
public static async Task Main(string[] args)
@@ -9,7 +10,7 @@
builder.RootComponents.Add&lt;App&gt;("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
// 添加本行代码
// @Localizer["CodeComment"]
builder.Services.AddBootstrapBlazor();
await builder.Build().RunAsync();

View File

@@ -1,46 +1,70 @@
@page "/docs"
@page "/introduction"
@inject IOptions<WebsiteOptions> WebsiteOption
<h3>简介</h3>
<p>BootstrapBlazor 是一套基于 Bootstrap 和 Blazor 的企业级组件库,可以认为是 Bootstrap 项目的 Blazor 版实现。</p>
<h3>@Localizer["Title"]</h3>
<p>由于 Bootstrap UI 框架目前版本对 jQuery 有依赖,所以我们的 BootstrapBlazor 对 jQuery 也是有依赖</p>
<p>@Localizer["P1"]</p>
<p>依赖关系为BootstrapBlazor > Bootstrap > jQuery</p>
<p>@Localizer["P2"]</p>
<p>最新 <a href="template" target="_blank">项目模板</a> 中将以上依赖进行了打包捆绑大大简化使用</p>
<p>@((MarkupString)Localizer["P3"].Value)</p>
<h3>学习资料</h3>
<h3>@Localizer["UpdateTitle"]</h3>
<p>@((MarkupString)Localizer["P4", WebsiteOption.Value.WikiUrl].Value)</p>
<h3>@Localizer["LearnTitle"]</h3>
<ul class="ul-demo mt-3">
<li><a href="https://docs.microsoft.com/zh-cn/aspnet/core/blazor/?WT.mc_id=DT-MVP-5004174" target="_blank">Blazor 官方文档</a></li>
<li><a href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/?WT.mc_id=DT-MVP-5004174" target="_blank">使用 Blazor WebAssembly 和 Visual Studio Code 生成 Web 应用</a></li>
<li><a href="https://docs.microsoft.com/zh-cn/aspnet/core/blazor/?WT.mc_id=DT-MVP-5004174" target="_blank">@Localizer["LearnLi1"]</a></li>
<li><a href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/?WT.mc_id=DT-MVP-5004174" target="_blank">@Localizer["LearnLi2"]</a></li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/2-understand-blazor-webassembly?WT.mc_id=DT-MVP-5004174">@Localizer["LearnLi3"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/3-exercise-configure-enviromnent?WT.mc_id=DT-MVP-5004174">@Localizer["LearnLi4"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/4-blazor-components?WT.mc_id=DT-MVP-5004174">@Localizer["LearnLi5"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/5-exercise-add-component?WT.mc_id=DT-MVP-5004174">@Localizer["Learn6"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/6-csharp-razor-binding?WT.mc_id=DT-MVP-5004174">@Localizer["LeanrnLi7"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/7-exercise-razor-binding?WT.mc_id=DT-MVP-5004174">@Localizer["LearnLi8"]</a>
</li>
<li class="learn-item">
<a target="_blank" href="https://docs.microsoft.com/zh-cn/learn/modules/build-blazor-webassembly-visual-studio-code/8-summary?WT.mc_id=DT-MVP-5004174">@Localizer["Summarize"]</a>
</li>
</ul>
<h3>作品展示</h3>
<h3>@Localizer["ProjectsShow"]</h3>
<p>国内最大代码托管协作开发平台 <b><a href="@WebsiteOption.Value.BootstrapBlazorLink" target="_blank">码云</a></b> C# 板块最高星 <a href='@WebsiteOption.Value.BootstrapAdminLink/stargazers'><img src='@WebsiteOption.Value.BootstrapAdminLink/badge/star.svg?theme=gvp' alt='star' style="margin-bottom: 1px;" /></a> 作品 <b><a href="@WebsiteOption.Value.BootstrapAdminLink" target="_blank">通用后台管理系统 BootstrapAdmin</a></b> 准备使用本组件实现全部功能</p>
<p>@((MarkupString)Localizer["P5", LocalizerUrls].Value)</p>
<p>演示网站<a href="@($"{WebsiteOption.Value.AdminUrl}/Pages")" target="_blank">@WebsiteOption.Value.AdminUrl</a></p>
<p>@Localizer["ShowWebSiteTitle"]<a href="@($"{WebsiteOption.Value.AdminUrl}/Pages")" target="_blank">@WebsiteOption.Value.AdminUrl</a></p>
<h4>快速上手</h4>
<h4>@Localizer["GetStarted"]</h4>
<p><a href="https://v4.bootcss.com/docs/getting-started/introduction/" target="_blank">Bootstrap 快速入门</a></p>
<p><a href="https://v5.bootcss.com/docs/getting-started/introduction/" target="_blank">Bootstrap @Localizer["QuikStart"]</a></p>
<h4>组件特色</h4>
<h4>@Localizer["Features"]</h4>
<p>Bootstrap Blazor UI 组件库提供了从基本的 <code>Button</code> 组件到高级的网页级 <code>SmartPage</code> 组件</p>
<p>@((MarkupString)Localizer["P6"].Value)</p>
<p class="code-label">优势</p>
<p class="code-label">@Localizer["Advantage"]</p>
<ul>
<li>使用组件无需编写 <code>Javascript</code></li>
<li>组件支持所有 <code>html</code> 特性</li>
<li>组件支持数据双向绑定</li>
<li>组件支持自动客户端验证</li>
<li>组件支持组合</li>
<li>@((MarkupString)Localizer["AdvantageLi1"].Value)</li>
<li>@((MarkupString)Localizer["AdvantageLi2"].Value)</li>
<li>@Localizer["AdvantageLi3"]</li>
<li>@Localizer["AdvantageLi4"]</li>
<li>@Localizer["AdvantageLi5"]</li>
</ul>
<p class="code-label">交流群</p>
<p class="code-label">@Localizer["Community"]</p>
<QQGroup />

View File

@@ -0,0 +1,88 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Options;
using Microsoft.JSInterop;
using System;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages
{
/// <summary>
///
/// </summary>
public partial class Introduction : IAsyncDisposable
{
/// <summary>
///
/// </summary>
[Inject]
[NotNull]
private IOptions<WebsiteOptions>? WebsiteOption { get; set; }
/// <summary>
///
/// </summary>
[Inject]
[NotNull]
private IStringLocalizer<Introduction>? Localizer { get; set; }
[Inject]
[NotNull]
private IJSRuntime? JSRuntime { get; set; }
[NotNull]
private string[]? LocalizerUrls { get; set; }
/// <summary>
///
/// </summary>
protected override void OnInitialized()
{
base.OnInitialized();
LocalizerUrls = new string[]
{
WebsiteOption.Value.BootstrapBlazorLink,
WebsiteOption.Value.BootstrapBlazorLink + "/stargazers",
WebsiteOption.Value.BootstrapBlazorLink + "/badge/star.svg?theme=gvp",
WebsiteOption.Value.BootstrapAdminLink
};
}
private bool IsRender { get; set; }
/// <summary>
///
/// </summary>
/// <param name="firstRender"></param>
/// <returns></returns>
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
IsRender = true;
await JSRuntime.InvokeVoidAsync("$.bb_open");
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public async ValueTask DisposeAsync()
{
if (IsRender)
{
await JSRuntime.InvokeVoidAsync("$.bb_open", "dispose");
}
GC.SuppressFinalize(this);
}
}
}

View File

@@ -18,7 +18,10 @@
<code>BootstrapBlazor</code> 组件额外支持使用 <code>Json</code> 类型的键值信息作为资源文件,将其解析为 <code>UI</code> 中呈现的字符串。<a href="https://www.nuget.org/packages/BootstrapBlazor/" target="_blank">BootstrapBalzor</a> 包自带中文zh、英语en两种资源文件。组件内置本地化语言回退机制如请求文化为 <code>zh-CN</code> 时,如未提供相对应的文化资源文件时,内置逻辑通过父级文化进行尝试本地化,以 <code>zh-CN</code> 为例回退机制如下:
</div>
<div>
<code>zh-CN</code> -> <code>zh-Hans</code> -> <code>zh</code>
<code>zh-CN</code> <code>zh</code>
</div>
<div>
如果设置的本地化语言未提供资源文件回落后仍无法找到资源文件后,使用 <code>FallbackCulture</code> 参数设置的文化信息进行本地化,默认为 <code>en</code>
</div>
</p>
@@ -32,7 +35,7 @@
<Pre>{
"BootstrapBlazorOptions": {
"FallbackCultureName": "en-US",
"FallbackCultureName": "en",
"SupportedCultures": [
"zh-CN",
"en-US"
@@ -203,7 +206,7 @@ public class CultureController : Controller
builder.Services.Configure&lt;BootstrapBlazorOptions&gt;(op =>
{
op.ToastDelay = 4000;
op.SupportedCultures.AddRange(new string[] { "zh-CN", "en-US" });
op.SupportedCultures = new List&lt;string&gt; { "zh-CN", "en-US" };
});
var host = builder.Build();

View File

@@ -15,16 +15,14 @@
</Block>
<Block Title="@CloseButtonUsageText" Introduction="@IntroText2">
<div>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Primary">@AlertPrimaryText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Secondary">@AlertSecondaryText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Success">@AlertSuccessText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Danger">@AlertDangerText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Warning">@AlertWarningText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Info">@AlertInfoText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Dark">@AlertDarkText</Alert>
</div>
<Logger @ref="Trace" class="mt-3" />
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Primary">@AlertPrimaryText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Secondary">@AlertSecondaryText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Success">@AlertSuccessText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Danger">@AlertDangerText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Warning">@AlertWarningText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Info">@AlertInfoText</Alert>
<Alert ShowDismiss="true" OnDismiss="@DismissClick" Color="Color.Dark">@AlertDarkText</Alert>
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="@WithIconUsageText" Introduction="@IntroText3">

View File

@@ -2,10 +2,12 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Components;
using BootstrapBlazor.Shared.Common;
using BootstrapBlazor.Shared.Pages.Components;
using Microsoft.AspNetCore.Components;
using Microsoft.Extensions.Localization;
using Microsoft.Extensions.Logging;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Threading.Tasks;
@@ -72,10 +74,8 @@ namespace BootstrapBlazor.Shared.Pages
[NotNull]
private IStringLocalizer<Alerts>? Localizer { get; set; }
/// <summary>
///
/// </summary>
private Logger? Trace { get; set; }
[NotNull]
private BlockLogger? Trace { get; set; }
/// <summary>
/// OnInitialized 方法
@@ -111,7 +111,7 @@ namespace BootstrapBlazor.Shared.Pages
/// </summary>
private Task DismissClick()
{
Trace?.Log($"Alert Dismissed");
Trace.Log("Alert Dismissed");
return Task.CompletedTask;
}
@@ -119,7 +119,7 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得事件方法
/// </summary>
/// <returns></returns>
private IEnumerable<EventItem> GetEvents() => new EventItem[]
private static IEnumerable<EventItem> GetEvents() => new EventItem[]
{
new EventItem()
{
@@ -133,7 +133,7 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得属性方法
/// </summary>
/// <returns></returns>
private IEnumerable<AttributeItem> GetAttributes() => new AttributeItem[]
private static IEnumerable<AttributeItem> GetAttributes() => new AttributeItem[]
{
// TODO: 移动到数据库中
new AttributeItem() {

View File

@@ -0,0 +1,15 @@
@page "/anchorlinks"
<h3>AnchorLink 锚点链接</h3>
<h4>应用于标题带 <b>Hash</b> 的锚点链接,点击拷贝方便分享</h4>
<Block Title="普通用法" Introduction="放置标签后点击拷贝锚点链接到粘贴板">
<AnchorLink Text="我是一个可以点击的锚点链接" Id="AnchorLink1" class="anchor-link-demo" />
</Block>
<Tips class="mt-3">
<div><code>AnchorLink</code> 锚点链接组件属性 <code>Id</code> 为必填项,不填写时不提供拷贝锚点链接功能</div>
</Tips>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -0,0 +1,45 @@
// Copyright (c) Argo Zhang (argo@163.com). All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
// Website: https://www.blazor.zone or https://argozhang.github.io/
using BootstrapBlazor.Shared.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages
{
/// <summary>
///
/// </summary>
public partial class AnchorLinks
{
private IEnumerable<AttributeItem> GetAttributes() => new[]
{
// TODO: 移动到数据库中
new AttributeItem() {
Name = "Id",
Description = "组件 Id 必填项",
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "Text",
Description = "组件 Text 显示文字",
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "TooltipText",
Description = "拷贝成功后 显示文字",
Type = "string",
ValueList = " — ",
DefaultValue = " — "
}
};
}
}

View File

@@ -48,8 +48,8 @@ namespace BootstrapBlazor.Shared.Pages
SubTitle ??= Localizer[nameof(SubTitle)];
BaseUsageText ??= Localizer[nameof(BaseUsageText)];
IntroText1 ??= Localizer[nameof(IntroText1)];
IntroText2 = new MarkupString(Localizer[nameof(IntroText2)] ?? "");
ContentText1 = new MarkupString(Localizer[nameof(ContentText1)] ?? "");
IntroText2 = new MarkupString(Localizer[nameof(IntroText2)]?.Value ?? "");
ContentText1 = new MarkupString(Localizer[nameof(ContentText1)]?.Value ?? "");
}
@@ -57,33 +57,33 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得属性方法
/// </summary>
/// <returns></returns>
private IEnumerable<AttributeItem> GetAttributes() => new AttributeItem[]
private IEnumerable<AttributeItem> GetAttributes() => new[]
{
// TODO: 移动到数据库中
new AttributeItem() {
Name = "Target",
Description = "锚点目标 Id",
Description = Localizer["Desc1"]!,
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "Container",
Description = "滚动条所在元素 Id",
Description = Localizer["Desc2"]!,
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "Offset",
Description = "偏移量用于调整间隙使用",
Description = Localizer["Desc3"]!,
Type = "int",
ValueList = " — ",
DefaultValue = "0"
},
new AttributeItem() {
Name = "ChildContent",
Description = "内容",
Description = Localizer["Desc4"]!,
Type = "RenderFragment",
ValueList = " — ",
DefaultValue = " — "

View File

@@ -1,63 +1,48 @@
@page "/autocompletes"
@inject IStringLocalizer<AutoCompletes> Localizer
<h3>AutoComplete 自动完成</h3>
<h3>@Localizer["Title"]</h3>
<h4>输入框自动完成功能</h4>
<h4>@Localizer["H1"]</h4>
<Block Title="基础用法" Introduction="通过设置 <code>Items</code> 数据集合当用户键入信息是自动显示提示信息">
<p>本例中请键入 123 字符串显示查看效果,自动完成组件初始化时给了自动提示数据集并且数据集无变化</p>
<Block Title="@Localizer["Block1Title"]" Introduction="@Localizer["Block1Intro"]">
<p>@Localizer["P1"]</p>
<div style="width: 200px;">
<AutoComplete Items="@StaticItems" />
</div>
</Block>
<Block Title="模糊查询并忽略大小写" Introduction="通过设置 <code>IsLikeMatch</code> 值设置是否开启集合的模糊匹配,通过设置 <code>IgnoreCase</code> 来控制是否忽略大小写">
<p>本例中请键入 abc 字符串显示查看效果,会将集合中所有包含 abc 且大小写相同的匹配出来供选择</p>
<Block Title="@Localizer["Block2Title"]" Introduction="@Localizer["Block2Intro"]">
<p>@Localizer["P2"]</p>
<div style="width: 200px;">
<AutoComplete Items="@StaticItems" IsLikeMatch="true" IgnoreCase="false" />
</div>
</Block>
<Block Title="自定义提示消息" Introduction="通过设置 <code>NoDataTip</code> 值设置自动完成数据未找到时显示的自定义提示消息">
<p>本例中请键入 567 字符串由于自动完成信息中心无数据显示自定义提示信息 - <code>没有找到你想要的数据</code></p>
<Block Title="@Localizer["Block3Title"]" Introduction="@Localizer["Block3Intro"]">
<p>@((MarkupString)Localizer["P3"].Value)</p>
<div style="width: 200px;">
<AutoComplete Items="@StaticItems" NoDataTip="没有找到你想要的数据" />
<AutoComplete Items="@StaticItems" NoDataTip="@Localizer["AutoTip"]" />
</div>
</Block>
<Block Title="自定义候选项" Introduction="通过设置 <code>ValueChanged</code> 回调方法根据用户输入的数据进行重组数据集合再进行提示信息">
<p>本例中请键入任意字符串显示查看效果,自动完成组件根据键入的字符串从新获取提示信息数据集动态变化</p>
<Block Title="@Localizer["Block4Title"]" Introduction="@Localizer["Block4Intro"]">
<p>@Localizer["P4"]</p>
<div style="width: 200px;">
<AutoComplete Items="@Items" ValueChanged="@OnValueChanged" />
</div>
</Block>
<Block Title="显示标签" Introduction="组件双向绑定时会根据条件自动判断是否显示标签文字">
<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>
<Block Title="@Localizer["Block5Title"]" Introduction="@Localizer["Block5Intro"]">
<p>@((MarkupString)Localizer["P5"].Value)</p>
<Divider Text="@Localizer["Divider1Text"]" Alignment="Alignment.Left" style="margin: 2rem 0;"></Divider>
<ValidateForm Model="@Model">
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" ShowLabel="true" />
</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>
<Divider Text="@Localizer["Divider2Text"]" Alignment="Alignment.Left" style="margin: 2rem 0;" />
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" ShowLabel="false" />
<Divider Text="@Localizer["Divider3Text"]" Alignment="Alignment.Left" style="margin: 2rem 0;"></Divider>
<AutoComplete Items="@StaticItems" @bind-Value="@Model.Name" DisplayText="@Localizer["AutoText"]" ShowLabel="true" />
</Block>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -41,42 +41,49 @@ namespace BootstrapBlazor.Shared.Pages
// TODO: 移动到数据库中
new AttributeItem() {
Name = "ShowLabel",
Description = "是否显示前置标签",
Description = Localizer["Att1"]!,
Type = "bool",
ValueList = "true|false",
DefaultValue = "true"
},
new AttributeItem() {
Name = "ChildContent",
Description = "内容",
Description = Localizer["Att2"]!,
Type = "RenderFragment",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "Items",
Description = "内容",
Description = Localizer["Att3"]!,
Type = "IEnumerable<string>",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "NoDataTip",
Description = "自动完成数据无匹配项时提示信息",
Description = Localizer["Att4"]!,
Type = "string",
ValueList = " — ",
DefaultValue = "无匹配数据"
DefaultValue = Localizer["Att4DefaultValue"]!
},
new AttributeItem() {
Name = "DisplayCount",
Description = Localizer["Att5"]!,
Type = "int?",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "ValueChanged",
Description = "文本框值变化时回调委托方法",
Description = Localizer["Att6"]!,
Type = "Action<string>",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "IsLikeMatch",
Description = "是否开启模糊匹配",
Description = Localizer["Att7"]!,
Type = "bool",
ValueList = "true|false",
DefaultValue = "false"
@@ -84,11 +91,19 @@ namespace BootstrapBlazor.Shared.Pages
new AttributeItem()
{
Name = "IgnoreCase",
Description = "匹配时是否忽略大小写",
Description = Localizer["Att8"]!,
Type = "bool",
ValueList = "true|false",
DefaultValue = "true"
},
new AttributeItem()
{
Name = "CustomFilter",
Description = Localizer["Att9"]!,
Type = "Func<Task<IEnumerable<string>>>",
ValueList = " — ",
DefaultValue = " — "
}
};
}
}

View File

@@ -30,7 +30,7 @@
<Block Title="展示类型" Introduction="支持三种类型:图标、图片和字符">
<div class="d-flex justify-content-between align-items-center">
<Avatar IsCircle="true" IsIcon="true" />
<Avatar IsCircle="true" IsIcon="true" Icon="fa fa-user" />
<Avatar IsCircle="true" Url="_content/BootstrapBlazor.Shared/images/Argo-C.png" />
<Avatar IsCircle="true" IsText="true" Text="User" />
</div>
@@ -47,4 +47,10 @@
<div>第二幅圆形头像加载图片路径错误,所以边框为 <b class="text-danger">红色</b>,图片显示为默认图标</div>
</Block>
<Block Title="异步加载" Introduction="适用于图片地址由 <code>webapi</code> 等接口异步获取的场景">
<div class="d-flex justify-content-between align-items-center">
<Avatar IsCircle="true" GetUrlAsync="@GetUrlAsync" />
</div>
</Block>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -4,6 +4,7 @@
using BootstrapBlazor.Shared.Common;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace BootstrapBlazor.Shared.Pages
{
@@ -12,11 +13,17 @@ namespace BootstrapBlazor.Shared.Pages
/// </summary>
public sealed partial class Avatars
{
private async Task<string> GetUrlAsync()
{
// 模拟异步获取图像地址
await Task.Delay(500);
return "_content/BootstrapBlazor.Shared/images/Argo-C.png";
}
/// <summary>
/// 获得属性方法
/// </summary>
/// <returns></returns>
private IEnumerable<AttributeItem> GetAttributes() => new AttributeItem[]
private static IEnumerable<AttributeItem> GetAttributes() => new[]
{
// TODO: 移动到数据库中
new AttributeItem() {
@@ -74,6 +81,13 @@ namespace BootstrapBlazor.Shared.Pages
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "GetUrlAsync",
Description = "获取 Image 头像路径地址异步回调委托",
Type = "Func<Task<string>>",
ValueList = " — ",
DefaultValue = " — "
}
};
}

View File

@@ -5,53 +5,47 @@
<h4>出现在按钮、图标旁的数字或状态标记</h4>
<Block Title="基础用法" Introduction="提供各种颜色的徽章小挂件组件">
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Primary">primary</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Secondary">secondary</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Success">success</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Danger">danger</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Warning">warning</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Info">info</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Dark">dark</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Light">light</Badge></div>
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Primary">primary</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Secondary">secondary</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Success">success</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Danger">danger</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Warning">warning</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Info">info</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Dark">dark</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge Color="Color.Light">light</Badge></div>
</div>
</div>
</Block>
<Block Title="胶囊徽章" Introduction='通过属性 <code>IsPill="true"</code> 设置圆角的徽章挂件'>
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Primary">primary</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Secondary">secondary</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Success">success</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Danger">danger</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Warning">warning</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Info">info</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Dark">dark</Badge></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Light">light</Badge></div>
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Primary">primary</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Secondary">secondary</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Success">success</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Danger">danger</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Warning">warning</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Info">info</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Dark">dark</Badge></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Badge IsPill="true" Color="Color.Light">light</Badge></div>
</div>
</div>
</Block>
<Block Title="按钮内徽章" Introduction="按钮内部徽章">
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button Color="Color.Primary">
<i class="fa fa-tv"></i>
<span>主要按钮</span>
<Badge Color="Color.Danger">1</Badge>
</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<div class="badge-widget">
<i class="fa fa-tv"></i>
<Badge Color="Color.Success"><span style="padding: 0 2px;">8</span></Badge>
</div>
</div>
</div>
</div>
</Block>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -20,7 +20,7 @@
<li>点击关闭按钮关闭摄像头</li>
</ul>
<BarcodeReader OnInit="@OnInit" OnResult="@OnResult" OnStart="@OnStart" OnClose="@OnClose" OnError="@OnError" />
<Logger @ref="Trace" class="mt-3" />
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="基本用法" Introduction="通过静态图片进行扫码识别">
@@ -31,7 +31,7 @@
<li>开始识别条码</li>
</ul>
<BarcodeReader ScanType="@ScanType.Image" OnResult="@OnImageResult" OnError="@OnImageError" />
<Logger @ref="Trace2" class="mt-3" />
<BlockLogger @ref="Trace2" class="mt-3" />
</Block>
<Block Title="自动开始" Introduction="通过设置 <code>AutoStart</code> 参数设置自动开启摄像头">
@@ -42,7 +42,7 @@
<li>开始识别条码</li>
</ul>
<BarcodeReader OnResult="@OnImageResult" OnError="@OnImageError" AutoStart="true" />
<Logger @ref="Trace2" class="mt-3" />
<BlockLogger @ref="Trace2" class="mt-3" />
</Block>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -16,9 +16,9 @@ namespace BootstrapBlazor.Shared.Pages
/// </summary>
public sealed partial class BarcodeReaders
{
private Logger? Trace { get; set; }
private BlockLogger? Trace { get; set; }
private Logger? Trace2 { get; set; }
private BlockLogger? Trace2 { get; set; }
private Task OnInit(IEnumerable<DeviceItem> devices)
{

View File

@@ -1,9 +1,10 @@
@page "/breadcrumbs"
@inject IStringLocalizer<Breadcrumbs> Localizer
<h3>Breadcrumb 面包屑</h3>
<h3>@Localizer["Title"]</h3>
<h4>显示当前页面的路径,快速返回之前的任意页面。</h4>
<h4>@Localizer["H1"]</h4>
<Block Title="基础用法" Introduction="适用广泛的基础用法。">
<Block Title="@Localizer["Blcok1Title"]" Introduction="@Localizer["Blcok1Intro"]">
<Breadcrumb Value="@DataSource" />
</Block>

View File

@@ -1,157 +1,141 @@
@page "/buttons"
@inject IStringLocalizer<Buttons> Localizer
<h3>Button 按钮</h3>
<h3>@Localizer["Title"]</h3>
<h4>常用的操作按钮。</h4>
<h4>@Localizer["H1"]</h4>
<Block Title="基础用法" Introduction="基础的按钮用法。">
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Primary">主要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Secondary">次要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Success">成功按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Danger">危险按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Warning">警告按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Info">信息按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Dark">黑暗按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Light">高亮按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button @onclick="@ButtonClick" Color="Color.Link">链接按钮</Button></div>
</div>
<Block Title="@Localizer["Block1Title"]" Introduction="@Localizer["Block1Intro"]">
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Primary">@Localizer["Button1Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Secondary">@Localizer["Button2Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Success">@Localizer["Button3Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Danger">@Localizer["Button4Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Warning">@Localizer["Button5Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Info">@Localizer["Button6Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Dark">@Localizer["Button7Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Light">@Localizer["Button8Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button OnClick="@ButtonClick" Color="Color.Link">@Localizer["Button9Text"]</Button></div>
</div>
<Logger @ref="Trace" class="mt-3" />
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="不同风格" Introduction="通过设置 <code>ButtonStyle</code> 来显示不同的按钮风格">
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Primary">主要按钮</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Secondary">次要按钮</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Success">成功按钮</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Danger">危险按钮</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Warning">警告按钮</Button>
</div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Circle" Icon="fa fa-fw fa-cubes">
</Button>
</div>
<Block Title="@Localizer["Block2Title"]" Introduction="@Localizer["Block2Intro"]">
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Primary">@Localizer["Button1Text"]</Button>
</div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Secondary">@Localizer["Button2Text"]</Button>
</div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Success">@Localizer["Button3Text"]</Button>
</div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Danger">@Localizer["Button4Text"]</Button>
</div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Round" Color="Color.Warning">@Localizer["Button5Text"]</Button>
</div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto">
<Button ButtonStyle="ButtonStyle.Circle" Icon="fa fa-fw fa-cubes">
</Button>
</div>
</div>
</Block>
<Block Title="Outline 按钮" Introduction='通过设置 <code>IsOutline="true"</code> 设置按钮边框颜色样式。'>
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Primary">主要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Secondary">次要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Success">成功按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Danger">危险按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Warning">警告按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Info">信息按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Dark">黑暗按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Light">高亮按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Link">链接按钮</Button></div>
</div>
<Block Title="@Localizer["Block3Title"]" Introduction='@Localizer["Block3Intro"]'>
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Primary">@Localizer["Button1Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Secondary">@Localizer["Button2Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Success">@Localizer["Button3Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Danger">@Localizer["Button4Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Warning">@Localizer["Button5Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Info">@Localizer["Button6Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Dark">@Localizer["Button7Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Light">@Localizer["Button8Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsOutline="true" Color="Color.Link">@Localizer["Button9Text"]</Button></div>
</div>
</Block>
<Block Title="不同尺寸" Introduction='Button 组件提供除了默认值以外的多种尺寸,通过设置 <code>Size</code> 属性可以在不同场景下选择合适的按钮尺寸。'>
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.ExtraSmall" Color="Color.Primary">超小按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Small" Color="Color.Secondary">小按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.None" Color="Color.Info">按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Medium" Color="Color.Success">中等按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Large" Color="Color.Danger">大按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.ExtraLarge" Color="Color.Warning">超大按钮</Button></div>
<div class="form-group col-12"><Button IsBlock="true" Color="Color.Primary">Block 按钮</Button></div>
</div>
<Block Title="@Localizer["Block4Title"]" Introduction='@Localizer["Block4Intro"]'>
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.ExtraSmall" Color="Color.Primary">@Localizer["Button10Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Small" Color="Color.Secondary">@Localizer["Button11Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.None" Color="Color.Info">@Localizer["Button12Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Medium" Color="Color.Success">@Localizer["Button13Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.Large" Color="Color.Danger">@Localizer["Button14Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button Size="Size.ExtraLarge" Color="Color.Warning">@Localizer["Button15Text"]</Button></div>
<div class="col-12"><Button IsBlock="true" Color="Color.Primary">@Localizer["Button16Text"]</Button></div>
</div>
</Block>
<Block Title="禁用状态" Introduction="按钮不可用状态。通过设置 <code>IsDisabled</code> 属性">
<div class="form-inline">
<div class="row">
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Primary">主要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Secondary">次要按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Success">成功按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Danger">危险按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Warning">警告按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Info">信息按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Dark">黑暗按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Light">高亮按钮</Button></div>
<div class="form-group col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Link">链接按钮</Button></div>
</div>
<Block Title="@Localizer["Block5Title"]" Introduction="@Localizer["Block5Intro"]">
<div class="row g-3">
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Primary">@Localizer["Button1Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Secondary">@Localizer["Button2Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Success">@Localizer["Button3Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Danger">@Localizer["Button4Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Warning">@Localizer["Button5Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Info">@Localizer["Button6Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Dark">@Localizer["Button7Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Light">@Localizer["Button8Text"]</Button></div>
<div class="col-6 col-sm-4 col-md-3 col-lg-auto"><Button IsDisabled="true" Color="Color.Link">@Localizer["Button9Text"]</Button></div>
</div>
<p class="mt-3">通过 <code>OnClick</code> 回调方法中设置自身 <code>IsDisabled</code> 属性,或者调用组件实例方法 <code>SetDisable</code> 均可实现按钮禁用效果</p>
<p>由于使用 <code>IsDisabled</code> 属性时,需要显式手动调用 <code>StateHasChanged</code> 方法,会导致按钮所在组件整体刷新,建议使用实例方法 <code>SetDisable</code> 仅对按钮进行刷新</p>
<p class="mt-3">@((MarkupString)Localizer["P1"].Value)</p>
<p>@((MarkupString)Localizer["P2"].Value)</p>
<p><b>性能比较:</b></p>
<p><b>@Localizer["b1"]</b></p>
<ul class="ul-demo">
<li>使用 <code>IsDisabled</code> 属性设置时本页面传输量为 <code>4.8K</code></li>
<li>使用 <code>SetDisable</code> 方法设置时本页面传输量为 <code>280B</code></li>
<li>@((MarkupString)Localizer["Li1"].Value)</li>
<li>@((MarkupString)Localizer["Li2"].Value)</li>
</ul>
<div class="form-inline">
<div class="form-row">
<div class="form-group col-12">
<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>
</div>
<div class="row g-3">
<div class="col-12">
<Button Text="@Localizer["Button17Text"]" OnClick="@ClickButton1" @ref="ButtonDisableDemo" IsDisabled="@IsDisable">
<Tooltip Title="@Localizer["TooltiTitle"]" Placement="Placement.Top" Trigger="hover" />
</Button>
<Button Color="Color.Info" Text="@Localizer["Button23Text"]" OnClickWithoutRender="@ClickButton2" class="ms-3"></Button>
</div>
</div>
</Block>
<Block Title="按钮组" Introduction="由多个按钮组成一个组合按钮">
<div class="form-inline">
<div class="row">
<div class="form-group col-auto">
<div class="btn-group" role="group">
<Button Color="Color.Primary">按钮一</Button>
<Button Color="Color.Success">按钮二</Button>
</div>
</div>
<Block Title="@Localizer["Block6Title"]" Introduction="@Localizer["Block6Intro"]">
<div class="btn-group" role="group">
<Button Color="Color.Primary">@Localizer["Button18Tetx"]</Button>
<Button Color="Color.Success">@Localizer["Button19Text"]</Button>
</div>
</Block>
<Block Title="@Localizer["Block7Title"]" Introduction="@Localizer["Block7Intro"]">
<div class="row g-3">
<div class="col-auto">
<Button Color="Color.Primary" Icon="fa fa-fa" Text="@Localizer["Button20Text"]"></Button>
</div>
<div class="col-auto">
<Button Color="Color.Info" Icon="fa fa-spinner fa-spin fa-fw" Text="@Localizer["Button21Text"]"></Button>
</div>
</div>
</Block>
<Block Title="带图标的按钮" Introduction="通过设置 <code>Icon</code> 属性对按钮图标进行设置,图标为字体字符串如使用 <code>font-awesome</code> 图标时 <code>fa fa-fa</code>">
<div class="form-inline">
<div class="row">
<div class="form-group col-auto">
<Button Color="Color.Primary" Icon="fa fa-fa" Text="状态按钮"></Button>
</div>
<div class="form-group col-auto">
<Button Color="Color.Info" Icon="fa fa-spinner fa-spin fa-fw" Text="进度按钮"></Button>
</div>
<Block Title="@Localizer["Block8Title"]" Introduction="@Localizer["Block8Intro"]">
<div class="row g-3">
<div class="col-auto">
<WinButton Text="@Localizer["Button18Tetx"]" OnClick="@ClickButtonShowText"></WinButton>
</div>
<div class="col-auto">
<WinButton Text="@Localizer["Button19Text"]" OnClick="@ClickButtonShowText"></WinButton>
</div>
<div class="col-auto">
@ButtonText
</div>
</div>
</Block>
<Block Title="二次封装按钮" Introduction="通过设置 <code>WinButton</code> 组件的 <code>Text</code> 属性对按钮显示文字进行设置,点击按钮是右侧显示被点击按钮的文字">
<div class="form-inline">
<div class="row">
<div class="form-group col-auto">
<WinButton Text="按钮一" OnClick="@ClickButtonShowText"></WinButton>
</div>
<div class="form-group col-auto">
<WinButton Text="按钮二" OnClick="@ClickButtonShowText"></WinButton>
</div>
<div class="form-group col-auto">
@ButtonText
</div>
</div>
</div>
<Block Title="@Localizer["Block9Title"]" Introduction="@Localizer["Block9Intro"]">
<p>@((MarkupString)Localizer["P3"].Value)</p>
<Button Text="@Localizer["Button22Text"]" IsAsync="true" Icon="fa fa-fw fa-fa" OnClick="@ClickAsyncButton" />
</Block>
<AttributeTable Items="@GetAttributes()" />

View File

@@ -20,7 +20,7 @@ namespace BootstrapBlazor.Shared.Pages
/// <summary>
///
/// </summary>
private Logger? Trace { get; set; }
private BlockLogger? Trace { get; set; }
[NotNull]
private Button? ButtonDisableDemo { get; set; }
@@ -58,6 +58,8 @@ namespace BootstrapBlazor.Shared.Pages
return Task.CompletedTask;
}
private static Task ClickAsyncButton() => Task.Delay(5000);
/// <summary>
/// 获得事件方法
/// </summary>
@@ -67,13 +69,13 @@ namespace BootstrapBlazor.Shared.Pages
new EventItem()
{
Name = "OnClick",
Description="点击按钮时触发此事件",
Description = Localizer["EventDesc1"]!,
Type ="EventCallback<MouseEventArgs>"
},
new EventItem()
{
Name = "OnClickWithoutRender",
Description="点击按钮时触发此事件并且不刷新当前组件,用于提高性能时使用",
Description = Localizer["EventDesc2"]!,
Type ="Func<Task>"
}
};
@@ -87,77 +89,91 @@ namespace BootstrapBlazor.Shared.Pages
// TODO: 移动到数据库中
new AttributeItem() {
Name = "Color",
Description = "颜色",
Description = Localizer["Att1"]!,
Type = "Color",
ValueList = "None / Active / Primary / Secondary / Success / Danger / Warning / Info / Light / Dark / Link",
DefaultValue = "Primary"
},
new AttributeItem() {
Name = "Icon",
Description = "图标",
Description = Localizer["Att2"]!,
Type = "string",
ValueList = "",
DefaultValue = ""
},
new AttributeItem() {
Name = "LoadingIcon",
Description = Localizer["Att3"]!,
Type = "string",
ValueList = "",
DefaultValue = "fa fa-fw fa-spin fa-spinner"
},
new AttributeItem() {
Name = "Text",
Description = "显示文字",
Description = Localizer["Att4"]!,
Type = "string",
ValueList = "",
DefaultValue = ""
},
new AttributeItem() {
Name = "Size",
Description = "尺寸",
Description = Localizer["Att5"]!,
Type = "Size",
ValueList = "None / ExtraSmall / Small / Medium / Large / ExtraLarge",
DefaultValue = "None"
},
new AttributeItem() {
Name = "Class",
Description = "样式",
Description = Localizer["Att6"]!,
Type = "string",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "IsBlock",
Description = "填充按钮",
Description = Localizer["Att7"]!,
Type = "boolean",
ValueList = " — ",
DefaultValue = "false"
},
new AttributeItem() {
Name = "IsDisabled",
Description = "是否禁用",
Description = Localizer["Att8"]!,
Type = "boolean",
ValueList = " — ",
DefaultValue = "false"
},
new AttributeItem() {
Name = "IsOutline",
Description = "是否边框",
Description = Localizer["Att9"]!,
Type = "boolean",
ValueList = " — ",
DefaultValue = "false"
},
new AttributeItem() {
Name = "IsAsync",
Description = Localizer["Att10"]!,
Type = "boolean",
ValueList = " — ",
DefaultValue = "false"
},
new AttributeItem() {
Name = "ChildContent",
Description = "内容",
Description = Localizer["Att11"]!,
Type = "RenderFragment",
ValueList = " — ",
DefaultValue = " — "
},
new AttributeItem() {
Name = "ButtonStyle",
Description = "按钮风格",
Description = Localizer["Att12"]!,
Type = "ButtonStyle",
ValueList = "None / Circle / Round",
DefaultValue = "None"
},
new AttributeItem() {
Name = "ButtonType",
Description = "按钮类型",
Description = Localizer["Att13"]!,
Type = "ButtonType",
ValueList = "Button / Submit / Reset",
DefaultValue = "Button"
@@ -173,7 +189,7 @@ namespace BootstrapBlazor.Shared.Pages
new MethodItem()
{
Name = "SetDisable",
Description = "设置按钮是否可用",
Description = Localizer["MethodDesc1"]!,
Parameters = "disable",
ReturnValue = " — "
}

View File

@@ -6,12 +6,12 @@
<Block Title="基础用法" Introduction="基础的日历显示。">
<Calendar ValueChanged="@OnValueChanged" />
<Logger @ref="Trace" class="mt-3" />
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="数据双向绑定" Introduction="日历框选择时间时数据自动更新文本框">
<Calendar @bind-Value="@BindValue" />
<BootstrapInput TItem="DateTime" @bind-Value="@BindValue" Formatter="@Formatter" style="margin-top: 1rem;" />
<BootstrapInput @bind-Value="@BindValue" Formatter="@Formatter" style="margin-top: 1rem;" />
</Block>
<Block Title="按周展示" Introduction="通过设置属性 <code></code>">

View File

@@ -17,7 +17,7 @@ namespace BootstrapBlazor.Shared.Pages
/// <summary>
///
/// </summary>
private Logger? Trace { get; set; }
private BlockLogger? Trace { get; set; }
private DateTime BindValue { get; set; } = DateTime.Today;

View File

@@ -12,7 +12,7 @@
<li>点击关闭按钮关闭摄像头</li>
</ul>
<Camera OnInit="@OnInit" OnStart="@OnStart" OnClose="@OnClose" OnError="@OnError" OnCapture="@OnCapture" />
<Logger @ref="Trace" class="mt-3" />
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="显示预览" Introduction="通过设置 <code>ShowPreview</code> 属性控制是否显示照片预览">

View File

@@ -6,6 +6,7 @@ using BootstrapBlazor.Components;
using BootstrapBlazor.Shared.Common;
using BootstrapBlazor.Shared.Pages.Components;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Threading.Tasks;
@@ -16,41 +17,37 @@ namespace BootstrapBlazor.Shared.Pages
/// </summary>
public sealed partial class Cameras
{
#nullable disable
/// <summary>
///
/// </summary>
private Logger Trace { get; set; }
#nullable restore
[NotNull]
private BlockLogger? Trace { get; set; }
private Task OnInit(IEnumerable<DeviceItem> devices)
{
var cams = string.Join("", devices.Select(i => i.Label));
Trace?.Log($"初始化摄像头完成 {cams}");
Trace.Log($"初始化摄像头完成 {cams}");
return Task.CompletedTask;
}
private Task OnError(string err)
{
Trace?.Log($"发生错误 {err}");
Trace.Log($"发生错误 {err}");
return Task.CompletedTask;
}
private Task OnStart()
{
Trace?.Log("打开摄像头");
Trace.Log("打开摄像头");
return Task.CompletedTask;
}
private Task OnClose()
{
Trace?.Log("关闭摄像头");
Trace.Log("关闭摄像头");
return Task.CompletedTask;
}
private Task OnCapture()
{
Trace?.Log("拍照完成");
Trace.Log("拍照完成");
return Task.CompletedTask;
}

View File

@@ -6,7 +6,7 @@
<Block Title="基础功能" Introduction="进行简单的人机识别">
<Captcha ImagesPath="@ImagesPath" @ref="Captcha" OnValid="@OnValid" />
<Logger @ref="Trace" class="mt-3" />
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<Block Title="指定图床路径与名称" Introduction="通过 <code>ImagesPath</code> 设置图床路径,通过 <code>ImagesName</code> 设置图片名称,后台通过计算拼接随机图片全路径名称">

View File

@@ -35,7 +35,7 @@ namespace BootstrapBlazor.Shared.Pages
/// <summary>
///
/// </summary>
private Logger? Trace { get; set; }
private BlockLogger? Trace { get; set; }
private void OnValid(bool ret)
{
@@ -70,7 +70,7 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得属性方法
/// </summary>
/// <returns></returns>
private IEnumerable<AttributeItem> GetAttributes() => new AttributeItem[]
private static IEnumerable<AttributeItem> GetAttributes() => new[]
{
// TODO: 移动到数据库中
new AttributeItem() {
@@ -149,7 +149,7 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得事件方法
/// </summary>
/// <returns></returns>
private IEnumerable<EventItem> GetEvents() => new EventItem[]
private static IEnumerable<EventItem> GetEvents() => new[]
{
new EventItem()
{
@@ -163,7 +163,7 @@ namespace BootstrapBlazor.Shared.Pages
/// 获得事件方法
/// </summary>
/// <returns></returns>
private IEnumerable<MethodItem> GetMethods() => new MethodItem[]
private static IEnumerable<MethodItem> GetMethods() => new[]
{
new MethodItem()
{

View File

@@ -1,11 +1,11 @@
@page "/cards"
@page "/cards"
<h3>Card 卡片</h3>
<h4>将信息聚合在卡片容器中展示</h4>
<Block Title="Card 卡片组件" Introduction="Card简单示例">
<Card style="width: 18rem;">
<Card>
<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>
@@ -47,70 +47,84 @@
</Block>
<Block Title="带有边框颜色的卡片" Introduction="通过设置,<code>Color</code> 使border和Body具有相应的颜色">
<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 class="row g-3">
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Primary" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Secondary" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Success" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Warning" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Danger" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Info" IsCenter="true">
<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>
</div>
<div class="col-12 col-sm-6 col-lg-4 col-xl-2">
<Card Color="Color.Dark" IsCenter="true">
<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>
</div>
</Block>

View File

@@ -5,34 +5,16 @@
<h4>在有限空间内,循环播放同一类型的图片、文字等内容</h4>
<Block Title="基础用法" Introduction="适用广泛的基础用法,通过设置 <code>Items</code> 属性值对组件进行图片的绑定,值为图片路径数组">
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<Carousel Images="@Images" Width="280"></Carousel>
</div>
</div>
</div>
<Carousel Images="@Images" Width="280"></Carousel>
</Block>
<Block Title="淡入淡出" Introduction="通过设置 <code>IsFade</code> 属性,图片切换时采用淡入淡出效果">
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<Carousel Images="@Images" Width="280" IsFade="true"></Carousel>
</div>
</div>
</div>
<Carousel Images="@Images" Width="280" IsFade="true"></Carousel>
</Block>
<Block Title="点击图片回调事件" Introduction="通过设置 <code>OnClick</code> 属性后,点击 <code>Image</code> 后触发 <code>OnClick</code> 回调委托">
<div class="form-inline">
<div class="row">
<div class="form-group col-12">
<Carousel Images="@Images" Width="280" IsFade="true" OnClick="@OnClick"></Carousel>
</div>
</div>
</div>
<Logger @ref="Trace" class="mt-3" />
<Carousel Images="@Images" Width="280" IsFade="true" OnClick="@OnClick"></Carousel>
<BlockLogger @ref="Trace" class="mt-3" />
</Block>
<AttributeTable Items="@GetAttributes()" />

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