UNPKG

@spaceone/design-system

Version:
132 lines (128 loc) 3.82 kB
/* eslint-disable camelcase */ import PJsonSchemaForm from '@/inputs/forms/json-schema-form/PJsonSchemaForm.vue'; import PButton from '@/inputs/buttons/button/PButton.vue'; import { toRefs, reactive, } from '@vue/composition-api'; export default { title: 'Inputs/Forms/Json Schema Form', component: PJsonSchemaForm, parameters: { design: { type: 'figma', url: 'https://www.figma.com/file/wq4wSowBcADBuUrMEZLz6i/SpaceONE-Console-Design?node-id=6169%3A180989', }, }, }; const defaultSchema = { type: 'object', properties: { required_string: { title: 'string (required, minLength=4)', type: 'string', default: 'default string', minLength: 4, }, not_required_string: { title: 'string (not-required, placeholder)', type: 'string', examples: ['type string'], }, // required_number: { title: 'number (required, minimum=1, maximum=3)', type: 'number', minimum: 1, maximum: 3, default: 1, }, required_integer: { title: 'integer (required, minimum=0, maximum=5)', type: 'integer', minimum: 0, maximum: 5, default: 1, }, // required_array: { // title: 'array (required)', // type: 'array', // }, // // boolean_field: { // title: 'I am boolean type', // type: 'boolean', // }, // required_enum_string: { // title: 'string (required, enum)', // type: 'string', // enum: ['choice A', 'choice B', 'choice C'], // }, // required_enum_number: { // title: 'string (required, enum)', // type: 'number', // enum: [1, 2, 3, 4, 5], // }, // number_array: { // title: 'I am Array(Number) Type', // type: 'array', // examples: ['type number'], // items: { // type: 'number', // }, // }, }, required: ['required_string', 'required_number', 'required_integer'], }; export const jsonDefaultCase = () => ({ components: { PJsonSchemaForm, PButton }, template: ` <div style="width: 50rem"> <p-json-schema-form :model.sync="model" :schema="schema" :is-valid.sync="isValid" /> <pre>{{ model }}</pre> </div>`, setup(props, context) { const state = reactive({ schema: defaultSchema, model: {}, isValid: false, }); return { ...toRefs(state), }; }, }); export const customSchemaForm = () => ({ components: { PJsonSchemaForm, PButton }, template: ` <div> <p-json-schema-form :model.sync="model" :schema="schema" :is-valid.sync="isValid" :show-validation-errors="showValidationErrors" /> <p-button style-type="primary" @click="validate()"> Validate!</p-button> <pre>{{ model }}</pre> <div> <p>is valid {{ isValid }}</p> <p>show validation errors: {{ showValidationErrors }}</p> </div> </div>`, setup() { const state = reactive({ schema: defaultSchema, model: {}, isValid: false, showValidationErrors: false, }); const validate = () => { state.showValidationErrors = true; }; return { ...toRefs(state), validate, }; }, });