fix: fixed the issue where the datePicker component was not effective (#1821)

This commit is contained in:
Dreammy23
2024-08-13 17:22:16 +08:00
committed by GitHub
15 changed files with 102 additions and 91 deletions

View File

@@ -48,7 +48,7 @@ yarn install
### Usage ### Usage
```sh ```sh
cp .env.example .env cp .env.template .env
``` ```
edit the `API_BASE_URL` to the real address edit the `API_BASE_URL` to the real address

View File

@@ -9,7 +9,7 @@ import {
RenderCheckbox, RenderCheckbox,
RenderRadio, RenderRadio,
RenderCascader, RenderCascader,
RenderDataPicker, RenderDatePicker,
RenderInput, RenderInput,
RenderSlider, RenderSlider,
RenderTreeSelect, RenderTreeSelect,
@@ -28,7 +28,6 @@ interface NodeParamHandlerProps {
// render node parameters item // render node parameters item
const NodeParamHandler: React.FC<NodeParamHandlerProps> = ({ node, data, label, index }) => { const NodeParamHandler: React.FC<NodeParamHandlerProps> = ({ node, data, label, index }) => {
function onChange(value: any) { function onChange(value: any) {
console.log(value);
data.value = value; data.value = value;
} }
@@ -134,8 +133,8 @@ const NodeParamHandler: React.FC<NodeParamHandlerProps> = ({ node, data, label,
return <RenderTextArea {...props} />; return <RenderTextArea {...props} />;
case 'slider': case 'slider':
return <RenderSlider {...props} />; return <RenderSlider {...props} />;
case 'data_picker': case 'date_picker':
return <RenderDataPicker {...props} />; return <RenderDatePicker {...props} />;
case 'time_picker': case 'time_picker':
return <RenderTimePicker {...props} />; return <RenderTimePicker {...props} />;
case 'tree_select': case 'tree_select':

View File

@@ -13,13 +13,15 @@ export const RenderCascader = (params: Props) => {
const attr = convertKeysToCamelCase(data.ui?.attr || {}); const attr = convertKeysToCamelCase(data.ui?.attr || {});
return ( return (
<div className="p-2 text-sm">
<Cascader <Cascader
{...attr} {...attr}
options={data.options} options={data.options}
defaultValue={defaultValue} defaultValue={defaultValue}
placeholder="Please select" placeholder="please select"
className="w-full nodrag" className="w-full nodrag"
onChange={onChange} onChange={onChange}
/> />
</div>
); );
}; };

View File

@@ -14,13 +14,9 @@ export const RenderCheckbox = (params: Props) => {
return ( return (
data.options?.length > 0 && ( data.options?.length > 0 && (
<Checkbox.Group <div className="p-2 text-sm">
{...attr} <Checkbox.Group {...attr} options={data.options} defaultValue={defaultValue} onChange={onChange} />
options={data.options} </div>
disabled
defaultValue={defaultValue}
onChange={onChange}
/>
) )
); );
}; };

View File

@@ -1,17 +0,0 @@
import { IFlowNodeParameter } from '@/types/flow';
import { convertKeysToCamelCase } from '@/utils/flow';
import { DatePicker } from 'antd';
import dayjs from 'dayjs';
type Props = {
data: IFlowNodeParameter;
defaultValue: any;
onChange: (value: any) => void;
};
export const RenderDataPicker = (params: Props) => {
const { data, defaultValue, onChange } = params;
const attr = convertKeysToCamelCase(data.ui?.attr || {});
return <DatePicker {...attr} defaultValue={dayjs(defaultValue)} onChange={onChange} />;
};

View File

@@ -0,0 +1,25 @@
import { IFlowNodeParameter } from '@/types/flow';
import { convertKeysToCamelCase } from '@/utils/flow';
import { DatePicker, DatePickerProps } from 'antd';
import dayjs from 'dayjs';
type Props = {
data: IFlowNodeParameter;
defaultValue: any;
onChange: (value: any) => void;
};
export const RenderDatePicker = (params: Props) => {
const { data, defaultValue, onChange } = params;
const attr = convertKeysToCamelCase(data.ui?.attr || {});
const onChangeDate: DatePickerProps['onChange'] = (date, dateString) => {
onChange(dateString);
};
return (
<div className="p-2 text-sm">
<DatePicker {...attr} className="w-full" defaultValue={dayjs(defaultValue)} onChange={onChangeDate} />
</div>
);
};

View File

@@ -1,6 +1,6 @@
export * from './select'; export * from './select';
export * from './cascader'; export * from './cascader';
export * from './data-picker'; export * from './date-picker';
export * from './input'; export * from './input';
export * from './checkbox'; export * from './checkbox';
export * from './radio'; export * from './radio';

View File

@@ -13,13 +13,16 @@ export const RenderInput = (params: Props) => {
const attr = convertKeysToCamelCase(data.ui?.attr || {}); const attr = convertKeysToCamelCase(data.ui?.attr || {});
return ( return (
<div className="p-2 text-sm">
<Input <Input
{...attr} {...attr}
className="w-full" className="w-full"
placeholder="please input"
defaultValue={defaultValue} defaultValue={defaultValue}
onChange={(e) => { onChange={(e) => {
onChange(e.target.value); onChange(e.target.value);
}} }}
/> />
</div>
); );
}; };

View File

@@ -13,13 +13,15 @@ export const RenderRadio = (params: Props) => {
const attr = convertKeysToCamelCase(data.ui?.attr || {}); const attr = convertKeysToCamelCase(data.ui?.attr || {});
return ( return (
<div className="p-2 text-sm">
<Radio.Group <Radio.Group
{...attr} {...attr}
options={data.options} options={data.options}
onChange={(e) => { onChange={(e) => {
onChange(e.target.checked); onChange(e.target.value);
}} }}
defaultValue={defaultValue} defaultValue={defaultValue}
/> />
</div>
); );
}; };

View File

@@ -13,13 +13,15 @@ export const RenderSelect = (params: Props) => {
const attr = convertKeysToCamelCase(data.ui?.attr || {}); const attr = convertKeysToCamelCase(data.ui?.attr || {});
return ( return (
<div className="p-2 text-sm">
<Select <Select
{...attr} {...attr}
className="w-full nodrag" className="w-full nodrag"
placeholder="Please select" placeholder="please select"
defaultValue={defaultValue} defaultValue={defaultValue}
options={data.options} options={data.options}
onChange={onChange} onChange={onChange}
/> />
</div>
); );
}; };

View File

@@ -21,12 +21,13 @@ export const RenderSlider = (params: TextAreaProps) => {
}; };
return ( return (
<> <div className="p-2 text-sm">
{data?.ui?.show_input ? ( {data?.ui?.show_input ? (
<Row> <Row>
<Col span={12}> <Col span={12}>
<Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} /> <Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} />
</Col> </Col>
<Col span={4}> <Col span={4}>
<InputNumber {...attr} style={{ margin: '0 16px' }} value={inputValue} onChange={onChangeSlider} /> <InputNumber {...attr} style={{ margin: '0 16px' }} value={inputValue} onChange={onChangeSlider} />
</Col> </Col>
@@ -34,6 +35,6 @@ export const RenderSlider = (params: TextAreaProps) => {
) : ( ) : (
<Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} /> <Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} />
)} )}
</> </div>
); );
}; };

View File

@@ -21,7 +21,7 @@ export const RenderSlider = (params: TextAreaProps) => {
}; };
return ( return (
<> <div className="p-2 text-sm">
{data?.ui?.show_input ? ( {data?.ui?.show_input ? (
<Row> <Row>
<Col span={12}> <Col span={12}>
@@ -34,6 +34,6 @@ export const RenderSlider = (params: TextAreaProps) => {
) : ( ) : (
<Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} /> <Slider {...attr} onChange={onChangeSlider} value={typeof inputValue === 'number' ? inputValue : 0} />
)} )}
</> </div>
); );
}; };

View File

@@ -15,12 +15,8 @@ export const RenderTextArea = (params: TextAreaProps) => {
convertKeysToCamelCase(data?.ui?.attr?.autosize || {}); convertKeysToCamelCase(data?.ui?.attr?.autosize || {});
return ( return (
<TextArea <div className="p-2 text-sm">
{...data.ui.attr} <TextArea {...data.ui.attr} defaultValue={defaultValue} onChange={(e) => onChange(e.target.value)} {...data.ui.attr.autosize} rows={4} />
defaultValue={defaultValue} </div>
onChange={(e) => onChange(e.target.value)} );
{...data.ui.attr.autosize}
rows={4}
/>
)
}; };

View File

@@ -11,15 +11,15 @@ type TextAreaProps = {
}; };
export const RenderTimePicker = (params: TextAreaProps) => { export const RenderTimePicker = (params: TextAreaProps) => {
const { data, defaultValue, onChange } = params; const { data, defaultValue, onChange } = params;
const [value, setValue] = useState(defaultValue);
const attr = convertKeysToCamelCase(data.ui?.attr || {}); const attr = convertKeysToCamelCase(data.ui?.attr || {});
// dayjs.extend(customParseFormat);
const onChangeTime: TimePickerProps['onChange'] = (time, timeString) => { const onChangeTime: TimePickerProps['onChange'] = (time, timeString) => {
onChange(timeString); onChange(timeString);
setValue(time);
}; };
return <TimePicker {...attr} style={{ width: '100%' }} value={value} onChange={onChangeTime} />; return (
<div className="p-2 text-sm">
<TimePicker {...attr} className="w-full" defaultValue={defaultValue} onChange={onChangeTime} />
</div>
);
}; };

View File

@@ -79,6 +79,7 @@ export const RenderTreeSelect = (params: TextAreaProps) => {
}; };
return ( return (
<div className="p-2 text-sm">
<TreeSelect <TreeSelect
fieldNames={{ label: 'label', value: 'value', children: 'children' }} fieldNames={{ label: 'label', value: 'value', children: 'children' }}
{...data.ui.attr} {...data.ui.attr}
@@ -89,6 +90,7 @@ export const RenderTreeSelect = (params: TextAreaProps) => {
treeData={data.options} treeData={data.options}
onDropdownVisibleChange={handleDropdownVisibleChange} onDropdownVisibleChange={handleDropdownVisibleChange}
/> />
</div>
// TODO: Implement the TreeSelect component // TODO: Implement the TreeSelect component
// <TreeSelect // <TreeSelect