feat:新增物料

This commit is contained in:
2026-10-13 04:16:00 -07:00
parent b117f21e3a
commit a80727b7a0
15 changed files with 174 additions and 54 deletions
+7 -2
View File
@@ -28,7 +28,7 @@ def resolve_field_groups(
def field_default(component: ComponentDefinition, field: MaterialField) -> JsonValue:
"""物料默认配置中有该路径时取默认配置的值,否则取字段声明的 default"""
"""物料默认配置中有该路径时取默认配置的值,否则取字段声明的 default;跟随主题的颜色为 None"""
value = lookup(component.template(), field.segments)
return field.default if value is MISSING else value
@@ -54,6 +54,8 @@ def panel_setters(groups: list[FieldGroup]) -> list[dict]:
}
if field.span is not None:
setter["span"] = field.span
if field.themed:
setter["themed"] = True
setters.append(setter)
return setters
@@ -126,11 +128,14 @@ def describe_field(
"""给模型看的字段说明:省略空值和属性面板专用的信息"""
data = field.model_dump(
mode="json",
exclude={"default", "panel", "span", "editable"},
exclude={"default", "panel", "span", "editable", "themed"},
exclude_none=True,
exclude_defaults=True,
)
data["default"] = field_default(component, field)
if field.themed:
# 默认为 null:没单独设置时画面上按画布主题取色
data["follows_theme"] = True
if not field.editable:
data["editable"] = False
data["group"] = group.key