element-plus-formkitelement-plus-formkit
  • 中文
  • English
  • 中文
  • English
  • Quick Start
  • Formkit API
  • Config API
  • Modules
  • Expose
  • Slot
  • Basic Demo
  • Extension Methods

Element-Plus-Formkit Core Components Include: input 、 select 、 datePicker 、 inputNumber 、 rate 、 radio

{}

Name
Sex
Please select your sex
Birthday
I.D. validity period
-
Input number
Rate
Show hidden items
Template
<div>
    <formkit v-model="dataset" :config="FormKitConfig" ref="FormKitRef" />
    <el-button color="#626aef" @click="submit" :loading="loading">Verify immediately</el-button>
</div>
TypeScript
<script setup lang="ts">
import formkit, { setConfigure, type Instance } from 'element-plus-formkit';
import { ref, computed } from 'vue';
import en from 'element-plus/es/locale/lang/en';

setConfigure('lang', en);

const dataset = ref({}),
    loading = ref(false),
    FormKitRef = ref<Instance>();

const FormKitConfig = computed(() => {
    return [
        {
            type: 'input',
            label: 'Name',
            key: 'password',
            props: { placeholder: 'Please enter your name' }
        },
        {
            type: 'select',
            label: 'Sex',
            key: 'sex',
            props: { placeholder: 'Please select your sex' },
            options: [
                { name: 'Man', id: 1 },
                { name: 'Woman', id: 2 }
            ]
        },
        {
            type: 'datePicker',
            label: 'Birthday',
            key: 'birthday',
            props: {
                placeholder: 'Please select your birthday',
                valueFormat: "YYYY-MM-DD",
                type: "date",
                style: { width: '100%' }
            }
        },
        {
            type: 'datePicker',
            label: 'I.D. validity period',
            key: 'idDate',
            props: {
                placeholder: 'Please select the validity period of your ID',
                valueFormat: "YYYY-MM-DD",
                type: "daterange",
                startPlaceholder: 'Start Time',
                endPlaceholder: 'End Time',
                style: { width: '100%' }
            }
        },
        {
            type: 'inputNumber',
            label: 'Input number',
            rules: [
                { required: true, message: 'Input number cannot be empty' }
            ],
            key: 'inputNumber',
            props: {
                style: { width: '100%' },
                placeholder: 'Please enter a number',
                min: 0
            }
        },
        {
            type: 'rate',
            label: 'Rate',
            key: 'sex'
        },
        {
            type: 'radio',
            label: 'Show hidden items',
            key: 'show',
            options: [
                { name: 'Yes', id: true },
                { name: 'No', id: false }
            ]
        },
        {
            type: 'input',
            label: 'Hidden item',
            key: 'password',
            visible: { key: 'show' },
            props: { placeholder: 'Please enter a hidden item' }
        }
    ]
})

async function submit() {
    try {
        loading.value = true;
        await new Promise(resolve => setTimeout(resolve, 3000));
        await FormKitRef.value.validate(true);
    } finally {
        loading.value = false;
    }
}
</script>

Tips

The visible property supports: Object, Array, Boolean

Last Updated:: 1/11/26, 4:47 AM
Contributors: NicolasHome
Prev
Slot
Next
Extension Methods