ListSetter|飞书低代码平台

ListSetter|飞书低代码平台

飞书低代码平台手册精选NaN-NaN-NaN
产品功能
  1. API
1.1 Props
属性
描述
类型
默认值
displayItemPath
List Item 展示文案取值路径
String
'label' 或者 'title'
customItemRender
自定义 List Item 渲染
FC<{
item: any
disabled: boolean
displayItemPath: string
setValue: () => void
}>
-
onDeleteItem
当 Item 项被删除时
*{
onDeleteItem: (res: { index: number; value: any; node: any values: any[] }) => void
}
onBeforeDelete
当 Item 项被删除之前,返回 false 则不删除子项
*{
onBeforeDelete: (res: { index: number; value: any; node: any }) => Promise<boolean> | boolean
}
onSortEnd
当拖拽排序结束时,触发钩子函数
*{
onSortEnd: (
value: any,
oldIndex: number,
newIndex: number,
prevValue: any,
) => void
}
customExplain
Item项底部拓展
FC<{item: unknown;disabled: boolean;value: unknown;index: number;setValue: () =>void;}>
1.2 返回值类型
type Value = Array<Record<string, unknown>>
  1. 示例
2.1 基础用法
props: [
{
type: 'Array',
title: 'ListSetter',
name: 'list-2',
decorator: 'Block',
decoratorProps: {
// 分割线
divider: true,
// 标题加粗
boldTitle: true,
actions: [
{
action: ListAction,
},
],
},
setter: 'ListSetter',
setterProps: {
displayItemPath: 'label-1',
},
item: {
type: 'Object',
title: '字段配置',
properties: [
{
type: 'Void',
title: '内容',
decorator: 'Block',
decoratorProps: {
divider: true,
boldTitle: true,
},
children: [
{
type: 'String',
name: 'label-1',
title: '内容',
setter: 'TextSetter',
},
],
},
{
type: 'Boolean',
name: 'listItemBool',
setter: 'SwitchSetter',
},
{
type: 'String',
name: 'list-2-1',
setter: 'SelectSetter',
title: 'Label',
visible: '{{ !$record?.listItemBool }}',
},
{
type: 'String',
name: 'list-2-2',
setter: 'TextSetter',
title: 'Label',
visible: '{{ !$record?.listItemBool }}',
},
],
},
},
]
function ListAction(props: {
readonly value?: unknown[];
readonly onChange: (val: unknown[]) => void;
}) {
const { value = [], onChange } = props;
return (
<div
onClick={() => {
onChange([
...value,
{
'label-1': `label-${value.length + 1}`,
},
]);
} }
>
<svg
width="12"
height="12"
viewBox="0 0 12 12"
fill="none"
>
<path
d="M6 1C5.72386 1 5.5 1.22386 5.5 1.5V5.5H1.5C1.22386 5.5 1 5.72386 1 6C1 6.27614 1.22386 6.5 1.5 6.5H5.5V10.5C5.5 10.7761 5.72386 11 6 11C6.27614 11 6.5 10.7761 6.5 10.5V6.5H10.5C10.7761 6.5 11 6.27614 11 6C11 5.72386 10.7761 5.5 10.5 5.5H6.5V1.5C6.5 1.22386 6.27614 1 6 1Z"
fill="#646A73"
/>
</svg>
</div>
);
}
250px|700px|reset
image.png
2.2 自定义 Item 渲染
props: [
{
type: 'Array',
title: 'ListSetter',
name: 'list-23333',
decorator: 'Block',
decoratorProps: {
// 分割线
divider: true,
// 标题加粗
boldTitle: true,
actions: [
{
action: "AddListItem",
actionProps: {
onBeforeAddItem: (res: any) => ({
'label-1': `${res.value.length + 1}`,
}),
}
},
],
},
setter: 'ListSetter',
setterProps: {
// displayItemPath: 'label-1',
// 自定义渲染
customItemRender: ({item}) => `哈哈哈哈哈哈-${item['label-1']}`,
},
item: {
type: 'Object',
title: '字段配置',
properties: [
{
type: 'Void',
title: '内容',
decorator: 'Block',
decoratorProps: {
divider: true,
boldTitle: true,
},
children: [
{
type: 'String',
name: 'label-1',
title: '内容',
setter: 'TextSetter',
},
],
},
{
type: 'Boolean',
name: 'listItemBool',
setter: 'SwitchSetter',
},
{
type: 'String',
name: 'list-2-1',
setter: 'SelectSetter',
title: 'Label',
visible: '{{ !$record?.listItemBool }}',
},
{
type: 'String',
name: 'list-2-2',
setter: 'TextSetter',
title: 'Label',
visible: '{{ !$record?.listItemBool }}',
},
],
},
},
]
function ListAction(props: {
readonly value?: unknown[];
readonly onChange: (val: unknown[]) => void;
}) {
const { value = [], onChange } = props;
return (
<div
onClick={() => {
onChange([
...value,
{
'label-1': `label-${value.length + 1}`,
},
]);
}}
>
<svg
width="12"
height="12"
viewBox="0 0 12 12"
fill="none"
>
<path
d="M6 1C5.72386 1 5.5 1.22386 5.5 1.5V5.5H1.5C1.22386 5.5 1 5.72386 1 6C1 6.27614 1.22386 6.5 1.5 6.5H5.5V10.5C5.5 10.7761 5.72386 11 6 11C6.27614 11 6.5 10.7761 6.5 10.5V6.5H10.5C10.7761 6.5 11 6.27614 11 6C11 5.72386 10.7761 5.5 10.5 5.5H6.5V1.5C6.5 1.22386 6.27614 1 6 1Z"
fill="#646A73"
/>
</svg>
</div>
);
}
250px|700px|reset
image.png
先进生产力和业务协同平台
联系我们立即试用

先进团队,先用飞书

欢迎联系我们,飞书效能顾问将为您提供全力支持
分享先进工作方式
输送行业最佳实践
全面协助组织提效
ListSetter|飞书低代码平台
先进生产力和业务协同平台
联系我们立即试用
联系我们立即试用