动态表单

Baklib

发布于:2024-07-07

模板的强大之处就是,你可以动态扩展模板页面的变量,以达到前自定义丰富的展示效果。本次一共发布了 20 个表单组件,覆盖了大部分建站的场景需求:

Checkbox

Paragraph

Color

Radio

Background

Range

Date

Richtext

Font Picker

Select

Header

Tag Picker

Html

Text

Image Picker

Textarea

Link

Unknown

Number

Video Picker

表单 type: checkbox

Param

Description

Input

Id

foo

Label

Default

0 1 false true

Info

前端变量值

类型:TrueClass

true

前端变量显示

{{page.settings.foo}}

true

示例:

{
    "id": "is_allow_published_at",
    "type": "checkbox",
    "label": "文章内是否展示发布日期",
    "default": true
}

表单 type: color

Param

Description

Input

Id

color

Label

Default

#00AA00

Colors

#FF0000|#00FF00|#0000FF

Info

前端变量值

类型:String

前端变量显示

{{page.settings.text_color}}

#00AA00

表单 type: color_background

Param

Description

Input

Id

bg_color

Label

Info

Default

{"from":"#0F69E8","to":"#1C0597"}

Colors

rgba(244, 67, 54, 1)|rgba(233, 30, 99, 1)

前端变量值

类型:DynamicForm::ColorBackgroundComponent::Value

前端变量显示

{{page.settings.bg_color}}

linear-gradient(90deg, #0F69E8, #1C0597)

{{page.settings.bg_color.to}}

#1C0597

{{page.settings.bg_color.degree}}

90

{{page.settings.bg_color.from}}

#0F69E8

表单 type: date

Param

Description

Input

Id

foo

Label

foo

Default

2024-01-28

Info

这是一个日期选择器

前端变量值

类型:Date

"2024-01-28"

前端变量显示

{{page.settings.foo}}

2024-01-28

表单 type: font_picker

Param

Description

Input

Id

font_name

Label

Default

arial

Fonts

["system-ui", "arial"]

Info

选择一个字体

前端变量值

类型:String

"arial"

前端变量显示

{{page.settings.font_name}}

arial

表单 type: header

动态表单分类标题,用于分组表单字段。

Param

Description

Input

Content

表单 type: html

Param

Description

Input

Id

google_ads

Label

谷歌广告代码

Default

Info

粘贴谷歌广告 HTML 代码

前端变量值

类型:ActiveSupport::SafeBuffer

"<strong style=\"color: blue;\">这是蓝色粗体字</strong>"

前端变量显示

{{page.settings.google_ads}}

这是蓝色粗体字

表单 type: image_picker

Param

Description

Input

Id

Label

Default

Width

640

Height

400

Ratio

比例, 例如 16:9

16:9

Info

从资源库中选择

前端变量值

类型:String

图片路径

前端变量显示

{{page.settings.banner}}

表单 type: link

Param

Description

Input

Id

foo

Label

友情链接

Default

http://www.google.com

Choices

[{"label":"百度","value":"http://www.baidu.com"},{"label":"谷歌","value":"http://www.google.com"},{"label":"必应","value":"http://www.bing.com"}]

Info

前端变量值

类型:DynamicForm::RadioComponent::Value

"#<DynamicForm::RadioComponent::Value:0x0000000118f413c0 label: \"谷歌\", value: \"http://www.google.com\">"

前端变量显示

{{page.settings.foo}}

谷歌

{{page.settings.foo.value}}

http://www.google.com

{{page.settings.foo.label}}

谷歌

表单 type: number

Param

Description

Input

Id

price

Label

Default

10

Min

0

Max

10

Step

0.5

Info

给产品标定一个价格

前端变量值

类型:Float

10.0

前端变量显示

{{page.settings.price}}

10.0

表单 type: paragraph

这是一段文字介绍,用于动态表单的说明文字, 支持安全的 HTML 标签,自动过滤 script 标签。

*没有前端变量

Param

Description

Input

Content

表单 type: radio

Param

Description

Input

Id

gender

Label

性别

Default

0

Choices

[{"label":"保密","value":"0"},{"label":"男","value":"1"},{"label":"女","value":"2"}]

Info

前端变量值

类型:DynamicForm::RadioComponent::Value

"#<DynamicForm::RadioComponent::Value:0x000000011bf68738 label: \"保密\", value: \"0\">"

前端变量显示

{{page.settings.gender}}

保密

{{page.settings.gender.value}}

0

{{page.settings.gender.label}}

保密

表单 type: range

Param

Description

Input

Id

distance

Label

可送范围

Default

6.5

Min

0

Max

10

Step

0.5

Unit

Km

Info

选择快递可送范围

前端变量值

类型:Float

6.5

前端变量显示

{{page.settings.distance}}

6.5

表单 type: richtext

Param

Description

Input

Id

foo

Label

Default

Info

这是一个HTML输入框

前端变量值

类型:ActiveSupport::SafeBuffer

"<strong style=\"color: blue;\">HTML源代码会被转义</strong>"

前端变量显示

{{page.settings.foo}}

HTML源代码会被转义

表单 type: select

select 选项有三种情况:默认下拉框、分组下拉框、多选下拉框。

default(默认)

Param

Description

Input

Id

company_size

Label

公司规模

Default

1

Choices

[{"label":"10 人以下","value":"0"},{"label":"10~50人","value":"1"},{"label":"50~200人","value":"2"},{"label":"200~1000人","value":"3"},{"label":"1000以上","value":"4"}]

Info

模前端变量显示

{{page.settings.company_size}}

10~50人

{{page.settings.company_size.value}}

1

{{page.settings.company_size.label}}

10~50人

Grouped(分组)

Param

Description

Input

Id

city

Label

城市

Default

km

Choices

[{"group":"四川省","label":"成都市","value":"cd"},{"group":"四川省","label":"德阳市","value":"dy"},{"group":"云南省","label":"昆明市","value":"km"},{"group":"云南省","label":"大理市","value":"dl"}]

Info

选择您所在的城市

前端变量显示

{{page.settings.city}}

昆明市

{{page.settings.city.value}}

km

{{page.settings.city.label}}

昆明市

multiple(多选)

Param

Description

Input

Id

city

Label

城市

Default

["km", "dl"]

Choices

[{"group":"四川省","label":"成都市","value":"cd"},{"group":"四川省","label":"德阳市","value":"dy"},{"group":"云南省","label":"昆明市","value":"km"},{"group":"云南省","label":"大理市","value":"dl"}]

Info

选择您所在的城市

表单 type: tag_picker

Param

Description

Input

Id

tag

Label

产品标签

Default

Multiple

true

Info

前端变量值

类型:Array

[
]

前端变量显示

{{page.settings.tag}}

[]

表单 type: text

Param

Description

Input

Id

Label

Default

Info

前端变量值

类型:ActiveSupport::SafeBuffer

"&lt;strong style=&quot;color: blue;&quot;&gt;HTML源代码会被转义&lt;/strong&gt;"

前端变量显示

{{page.settings.foo}}

<strong style="color: blue;">HTML源代码会被转义</strong>

表单 type: textarea

Param

Description

Input

Id

foo

Label

foo

Default

Rows

4

Info

这是一个HTML输入框

前端变量值

类型:ActiveSupport::SafeBuffer

"&lt;strong style=&quot;color: blue;&quot;&gt;HTML源代码会被转义&lt;/strong&gt;"

前端变量显示

{{page.settings.foo}}

<strong style="color: blue;">HTML源代码会被转义</strong>

表单 type: video_picker

Param

Description

Input

Id

my_video

Label

宣传视频

Default

Height

Width

480

Ratio

16:9

Info

从资源库中选择视频

前端变量值

类型:String

视频地址

前端变量显示

{{page.settings.my_video}}

提交反馈