ArrayTabs
Incremental tabs. Consider this component when vertical space is limited.
Note
This component is intended for Schema-based scenarios only.
Markup Schema Example
<script lang="ts" setup>
import { createForm } from '@silver-formily/core'
import {
ArrayTabs,
FormButtonGroup,
FormItem,
Input,
Select,
Submit,
} from '@silver-formily/element-plus'
import { createSchemaField, FormProvider } from '@silver-formily/vue'
const { SchemaField, SchemaArrayField, SchemaObjectField, SchemaStringField }
= createSchemaField({
components: {
FormItem,
Input,
Select,
ArrayTabs,
},
})
const form = createForm()
async function log(values: Record<string, any>) {
console.log(values)
}
</script>
<template>
<FormProvider :form="form">
<SchemaField>
<SchemaArrayField
name="string_array"
x-decorator="FormItem"
title="String Array"
:max-items="3"
x-component="ArrayTabs"
>
<SchemaStringField
x-decorator="FormItem"
required
x-component="Input"
/>
</SchemaArrayField>
<SchemaArrayField
name="array"
x-decorator="FormItem"
title="Object Array"
:max-items="3"
x-component="ArrayTabs"
>
<SchemaObjectField>
<SchemaStringField
x-decorator="FormItem"
title="AAA"
name="aaa"
required
x-component="Input"
/>
<SchemaStringField
x-decorator="FormItem"
title="BBB"
name="bbb"
required
x-component="Input"
/>
</SchemaObjectField>
</SchemaArrayField>
</SchemaField>
<FormButtonGroup>
<Submit @submit="log">
Submit
</Submit>
</FormButtonGroup>
</FormProvider>
</template>
<style lang="scss" scoped></style>String Array:
String Array 1
Object Array:
AAA:
BBB:
Object Array 1
查看源码
JSON Schema Example
<script lang="ts" setup>
import { createForm } from '@silver-formily/core'
import {
ArrayTabs,
FormItem,
Input,
Submit,
} from '@silver-formily/element-plus'
import { createSchemaField, FormProvider } from '@silver-formily/vue'
const { SchemaField } = createSchemaField({
components: {
FormItem,
Input,
ArrayTabs,
},
})
const form = createForm()
const schema = {
type: 'object',
properties: {
string_array: {
'type': 'array',
'title': 'String Array',
'x-decorator': 'FormItem',
'maxItems': 3,
'x-component': 'ArrayTabs',
'items': {
'type': 'string',
'x-decorator': 'FormItem',
'required': true,
'x-component': 'Input',
},
},
array: {
'type': 'array',
'title': 'Object Array',
'x-decorator': 'FormItem',
'maxItems': 3,
'x-component': 'ArrayTabs',
'items': {
type: 'object',
properties: {
aaa: {
'type': 'string',
'x-decorator': 'FormItem',
'title': 'AAA',
'required': true,
'x-component': 'Input',
},
bbb: {
'type': 'string',
'x-decorator': 'FormItem',
'title': 'BBB',
'required': true,
'x-component': 'Input',
},
},
},
},
},
}
async function log(values: Record<string, any>) {
console.log(values)
}
</script>
<template>
<FormProvider :form="form">
<SchemaField :schema="schema" />
<Submit @submit="log">
Submit
</Submit>
</FormProvider>
</template>
<style lang="scss" scoped></style>String Array:
String Array 1
Object Array:
AAA:
BBB:
Object Array 1
查看源码
JSON Schema Array Items Example
<script lang="ts" setup>
import { createForm } from '@silver-formily/core'
import {
ArrayTabs,
DatePicker,
FormItem,
Input,
Submit,
} from '@silver-formily/element-plus'
import { createSchemaField, FormProvider } from '@silver-formily/vue'
const { SchemaField } = createSchemaField({
components: {
FormItem,
Input,
DatePicker,
ArrayTabs,
},
})
const form = createForm({
initialValues: {
string_array: ['', ''],
},
})
const schema = {
type: 'object',
properties: {
string_array: {
'type': 'array',
'title': 'String Array',
'x-decorator': 'FormItem',
'x-component': 'ArrayTabs',
'items': [
{
'type': 'string',
'x-decorator': 'FormItem',
'x-component': 'Input',
'x-component-props': {
placeholder: 'Enter text',
},
},
{
'type': 'string',
'x-decorator': 'FormItem',
'x-component': 'DatePicker',
'x-component-props': {
placeholder: 'Select a date',
},
},
],
},
},
}
async function log(values: Record<string, any>) {
console.log(values)
}
</script>
<template>
<FormProvider :form="form">
<SchemaField :schema="schema" />
<Submit @submit="log">
Submit
</Submit>
</FormProvider>
</template>
<style lang="scss" scoped></style>String Array:
String Array 1
String Array 2
查看源码