Skip to content

Commit 8cf5aac

Browse files
authored
docs: Add documentation for new array component in FormKit (#528)
#### What type of PR is this? 为新增的 `array` formkit 组件编写文档。 see halo-dev/halo#7996 #### Does this PR introduce a user-facing change? ```release-note None ```
1 parent 33beb46 commit 8cf5aac

File tree

3 files changed

+99
-3
lines changed

3 files changed

+99
-3
lines changed

docs/developer-guide/form-schema.md

Lines changed: 91 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,13 @@ fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
211211

212212
列表类型的输入组件,支持动态添加、删除数据项。
213213

214+
:::tip
215+
`list` 组件与 [array](#array) 组件功能类似,但它们的用途不同。`list` 组件适合展示基本类型的数据,而 `array` 组件更适合于展示复杂类型的数据。
216+
:::
217+
214218
#### 参数
215219

216-
- `item-type`:数据项的数据类型,用于初始化数据。可选参数 `string`, `number`, `boolean`, `object`,默认为 `string`
220+
- `item-type`:数据项的数据类型,用于初始化数据。可选参数 `string`, `number`, `boolean`,默认为 `string`
217221
- `min`:数组最小要求数量,默认为 `0`
218222
- `max`:数组最大容量,默认为 `Infinity`,即无限制
219223
- `addButton`:是否显示添加按钮
@@ -240,7 +244,7 @@ fieldSelector: `${requestOption.fieldSelectorKey}=(value1,value2,value3)`
240244
```
241245
242246
:::tip
243-
`list` 组件有且只有一个子节点,并且必须为子节点传递 `index` 属性。若想提供多个字段,则建议使用 `group` 组件包裹,并将 itemType 改为 object
247+
`list` 组件有且只有一个子节点,并且必须为子节点传递 `index` 属性。若想提供多个字段组成对象,则建议改为使用 [array](#array) 组件
244248
:::
245249

246250
最终保存表单之后得到的值为以下形式:
@@ -331,7 +335,11 @@ UI 效果:
331335

332336
<img src="/img/formkit/formkit-verify-form.png" width="50%" />
333337

334-
### repeater
338+
### ~~repeater~~(已过时)
339+
340+
:::warning
341+
`repeater` 组件已不再推荐使用,请使用 [array](#array) 组件代替。
342+
:::
335343

336344
#### 描述
337345

@@ -627,3 +635,83 @@ UI 效果:
627635
<p>
628636
<img src="/img/formkit/formkit-iconify.png" width="50%" class="medium-zoom-image" />
629637
</p>
638+
639+
### array
640+
641+
一组重复的输入组件,展示为列表形式,可以用于定义一组数据。最终得到的数据为一个对象的数组,方便使用者对此数组进行增加、删除、排序等操作。
642+
643+
参数
644+
645+
- `min`:数组最小要求数量,默认为 `0`
646+
- `max`:数组最大容量,默认为 `Infinity`,即无限制
647+
- `removeControl`:是否允许移除元素
648+
- `addButton`:是否显示添加按钮
649+
- `addLabel`:添加按钮上显示的文本
650+
- `addAttrs`:添加按钮的额外属性
651+
- `emptyText`: 当数组为空时显示的文本
652+
- `itemLabels`: 列表元素上显示的内容,数据类型为 `{ type: "image" | "text"; label: string }[]`
653+
654+
:::tip
655+
强烈建议为 `array` 设置 `itemLabels` 属性,以便于更直观的展示元素内容,设置的元素内容将按照设置顺序展示在列表元素上。
656+
657+
在 `itemLabels` 中定义 `label` 时,可以使用 `$value` 来指向当前项的值。
658+
:::
659+
660+
#### 示例
661+
662+
```yaml
663+
- $formkit: array
664+
name: socials
665+
label: 社交账号
666+
value: []
667+
max: 5
668+
min: 1
669+
itemLabels:
670+
- type: image
671+
label: $value.logo
672+
- type: text
673+
label: $value.name
674+
children:
675+
- $formkit: attachment
676+
name: logo
677+
label: 图标
678+
value: ""
679+
- $formkit: text
680+
name: name
681+
label: 名称
682+
value: ""
683+
- $formkit: text
684+
name: url
685+
label: 地址
686+
value: ""
687+
```
688+
689+
:::warning
690+
由于目前无法通过单个 `itemLabels` 定义涵盖所有子项变动的情况,因此在 `itemLabels` 中使用 `$value` ,无法获取到具有 `if` 属性的组件值。
691+
692+
例如:
693+
694+
```yaml
695+
- $formkit: array
696+
name: socials
697+
label: 社交账号
698+
value: []
699+
itemLabels:
700+
- type: text
701+
# 这里无法获取到具有 if 属性的组件值,因此也就无法展示在列表元素上。
702+
label: $value.name
703+
children:
704+
- $formkit: select
705+
name: enabled
706+
label: 是否启用
707+
options:
708+
- label: 是
709+
value: true
710+
- label: 否
711+
value: false
712+
- $formkit: text
713+
if: "$value.enabled === true",
714+
label: $value.name
715+
```
716+
717+
:::

docs/developer-guide/plugin/api-changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,7 @@ pnpm install @halo-dev/ui-shared
4949
### 表单定义 > 新增 Iconify 图标选择器
5050

5151
在 2.22.0 中,我们为 FormKit 表单提供了通用的图标选择器,基于 [Iconify](https://icon-sets.iconify.design/),详细文档可查阅:[表单定义#Iconify](../../developer-guide/form-schema.md#iconify)
52+
53+
### 表单定义 > 新增 `array` 组件
54+
55+
在 2.22.0 中,我们为 FormKit 表单新增了 `array` 组件,用于定义一组数据,并计划使用 `array` 组件替换原有的 `repeater` 组件。详细文档可查阅:[表单定义#array](../../developer-guide/form-schema.md#array)

docs/developer-guide/theme/api-changelog.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@ description: 记录每一个版本的主题 API 变更记录,方便开发者
88
### 表单定义 > 新增 Iconify 图标选择器
99

1010
在 2.22.0 中,我们为 FormKit 表单提供了通用的图标选择器,基于 [Iconify](https://icon-sets.iconify.design/),详细文档可查阅:[表单定义#Iconify](../../developer-guide/form-schema.md#iconify)
11+
12+
### 表单定义 > 新增 `array` 组件
13+
14+
在 2.22.0 中,我们为 FormKit 表单新增了 `array` 组件,用于定义一组数据,并计划使用 `array` 组件替换原有的 `repeater` 组件。详细文档可查阅:[表单定义#array](../../developer-guide/form-schema.md#array)

0 commit comments

Comments
 (0)