issues
search
masastack
/
MASA.Blazor
Blazor UI component library based on Material Design. Support Blazor Server, Blazor WebAssembly and MAUI Blazor.
https://docs.masastack.com/blazor/getting-started/installation
MIT License
1.11k
stars
149
forks
source link
[RFC] Simplify the usage of icon buttons
#1855
Closed
capdiem
closed
3 weeks ago
capdiem
commented
1 month ago
Discussed in
https://github.com/masastack/MASA.Blazor/discussions/1854
Originally posted by **capdiem** April 16, 2024
## 概述 简化图标按钮的使用 ## 基本示例 ```razor
Right Text
Left Text
``` ## 动机 目前编写一个图标按钮需要写组合 **MButton** 组件和 **MIcon** 两个组件,使用成本比较高: ```razor
mdi-star
``` Vuetify3 也为此做了优化: ```javascript
``` ## 设计细节 Vuetify3 v-btn 中的 icon 的类型是 `bool | string`。对于 MasaBlazor,内置的 `StringBoolean` 类型也可以同时表示 `bool | string`。然而当 _Icon_ 参数类型为 `StringBoolean` 时,razor 无法分析 `
`这样的代码,razor 只能读懂 `
`,这意味此改动会是一个破坏性更改。但是这样的代码自项目开始就已经存在,无法估计影响的范围,因此不能改动目前的 _Icon_ 属性的类型。 那么只能通过新增属性来实现。思来想去,似乎只有 _IconName_ 这个命名比较合适。当 _IconName_ 设置时,默认设置 _Icon_ 属性为 `true`。 其他包含图标组件的用法: ```razor
mdi-star
Right Text
simplify:
Right Text
``` ```razor
Left Text
mdi-star
simplify:
Left Text
``` 为此,也应该新增 _LeftIconName_ 和 _RightIconName_ 属性来简化以上代码的用法。 ## 缺点 新的 _IconName_ 属性可能会和旧的 _Icon_ 属性语义上有点模糊不清。 ## 替代方案 无 ## 未解决的问题 新属性的命名可能不够好。
Discussed in https://github.com/masastack/MASA.Blazor/discussions/1854