/* eslint-disable */
import React, { useState, useLayoutEffect, Component } from 'react';
import { Button, Modal, TreeSelect, Row, Col, Avatar, Select as BasicSelect,
Form,
useFormState,
useFormApi,
useFieldApi,
useFieldState,
withFormState,
withFormApi,
withField,
ArrayField,
AutoComplete,
Collapse,
Space,
TextArea,
Icon } from '../../../index';
import { IconPlusCircle, IconMinusCircle, } from '@douyinfe/semi-icons';
import { ComponentUsingFormState } from '../Hook/hookDemo';
const { Input, Select, DatePicker, Switch, Slider, CheckboxGroup, Checkbox, RadioGroup, Radio, TimePicker, InputNumber, InputGroup } = Form;
class ArrayFieldCollapseDemo extends React.Component {
constructor() {
super();
this.state = {
actions: [],
};
}
renderItems(arrayFields, values) {
console.log(values);
return (
{JSON.stringify(values)}
{arrayFields.map(({ field, key, remove }, i) => (
))}
{/* {arrayFields.length && values.actions[0].name ? '2' : '1'} */}
);
}
render() {
let { actions } = this.state;
return (
);
}
}
// 使用Form Props设置 ArrayField的initValues
class ArrayFieldWithFormInitValues extends React.Component {
constructor() {
super();
this.state = {
data: {
c: 'c',
effects: [
{ name: 'form-level-init-sugar', time: 'form-level-init-3min', otherKey: 1 },
{ name: 'form-level-init-bacon', time: 'form-level-init-6min', otherKey: 2, key: 343 },
],
},
flag: true
};
this.getFormApi = this.getFormApi.bind(this);
this.change = this.change.bind(this);
}
change = () => {
let number = this.formApi.getValue('number');
let newData = Array.from({ length: number }, (v, i) => ({
name: `${i}-name`,
time: `${i}-time`
}));
console.log(newData);
this.formApi.setValue('effects', newData);
}
getFormApi(formApi) {
this.formApi = formApi;
}
render() {
return (
);
}
}
// 使用 ArrayField props initValue来设置初始值
class ArrayFieldWithInitValue extends React.Component {
constructor() {
super();
this.state = {
data: {
effects: [
{ name: 'arrayField-props.initValue-0-name', time: 'arrayField-props.initValue-0-time', otherKey: 1 },
{ name: 'arrayField-props.initValue-1-name', time: 'arrayField-props.initValue-1-time', otherKey: 453 },
],
},
flag: true
};
this.getFormApi = this.getFormApi.bind(this);
this.change = this.change.bind(this);
}
componentDidMount() {
this.formApi.setValues({
effects: [
{ name: "脸部贴纸", type: "2D" },
{ name: "前景贴纸", type: "3D" },
],
test: 'fff'
})
}
change = () => {
let number = this.formApi.getValue('number');
let newData = Array.from({ length: 2 }, (v, i) => ({
name: `${i}-name`,
time: `${i}-time`
}));
console.log(newData);
this.formApi.setValue('effects', newData);
}
getFormApi(formApi) {
this.formApi = formApi;
}
render() {
const { effects } = this.state.data;
return (
);
}
}
/* basic usage */
class ArrayFieldDemo extends React.Component {
constructor() {
super();
this.state = {
data: {
c: 'c',
test: [
// {},
// {},
{ name: 'sugar', time: '3min' },
// { name: 'bacon', time: '6min', key: 'c2' },
{ name: 'bacon', time: '6min' },
],
},
flag: true
};
this.getFormApi = this.getFormApi.bind(this);
}
change = () => {
let number = this.formApi.getValue('number');
let newData = Array.from({ length: number }, (v, i) => ({
name: `${i}-name`,
time: `${i}-time`
}));
this.formApi.setValue('effects', newData);
}
clear = () => {
// this.formApi.setValues({ number: 3 });
// this.formApi.setValues({}, { isOverride: true });
this.formApi.setValues({ number: 3 }, { isOverride: true });
}
getFormApi(formApi) {
this.formApi = formApi;
}
render() {
return (
);
}
}
// Fix 1409
class ArrayFieldSetValues extends React.Component {
constructor() {
super();
this.state = {
data: {
},
};
this.getFormApi = this.getFormApi.bind(this);
}
componentDidMount() {
this.formApi.setValues({
effects: [
{ name: "Semi D2C", role: "Engineer" },
{ name: "Semi DSM", role: "Designer" },
],
test: 'fff'
})
}
getFormApi(formApi) {
this.formApi = formApi;
}
render() {
return (
);
}
}
// TODO 有相似作用的 e2e demo test了,这个可以删掉
class AsyncSetArrayField extends React.Component {
constructor() {
super();
this.state = {
data: [
{ name: 'Semi D2C', role: 'Engineer' },
{ name: 'Semi C2D', role: 'Designer' },
]
};
}
getFormApi = (formApi) => {
this.formApi = formApi;
}
change = () => {
let rules = this.formApi.getValue('rules');
if (!rules) {
efferulests = [];
}
rules.push({ name: `Semi ${new Date().valueOf()}`, role: 'Designer', key: rules.length + 1 });
setTimeout(() => {
this.formApi.setValue('rules', rules);
}, 300);
}
render() {
let { data } = this.state;
const ComponentUsingFormState = () => {
const formState = useFormState();
return (
);
};
return (
);
}
}
export { ArrayFieldCollapseDemo, ArrayFieldDemo, ArrayFieldWithFormInitValues, ArrayFieldWithInitValue, ArrayFieldSetValues, AsyncSetArrayField };