fix: Fixed the issue where the date selection component was not effective

This commit is contained in:
谨欣
2024-08-13 17:11:26 +08:00
parent dfb13f4d3f
commit 6290666a37
14 changed files with 101 additions and 90 deletions

View File

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

View File

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

View File

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

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 './cascader';
export * from './data-picker';
export * from './date-picker';
export * from './input';
export * from './checkbox';
export * from './radio';

View File

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

View File

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

View File

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

View File

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

View File

@@ -21,7 +21,7 @@ export const RenderSlider = (params: TextAreaProps) => {
};
return (
<>
<div className="p-2 text-sm">
{data?.ui?.show_input ? (
<Row>
<Col span={12}>
@@ -34,6 +34,6 @@ export const RenderSlider = (params: TextAreaProps) => {
) : (
<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 || {});
return (
<TextArea
{...data.ui.attr}
defaultValue={defaultValue}
onChange={(e) => onChange(e.target.value)}
{...data.ui.attr.autosize}
rows={4}
/>
)
<div className="p-2 text-sm">
<TextArea {...data.ui.attr} defaultValue={defaultValue} onChange={(e) => onChange(e.target.value)} {...data.ui.attr.autosize} rows={4} />
</div>
);
};

View File

@@ -11,15 +11,15 @@ type TextAreaProps = {
};
export const RenderTimePicker = (params: TextAreaProps) => {
const { data, defaultValue, onChange } = params;
const [value, setValue] = useState(defaultValue);
const attr = convertKeysToCamelCase(data.ui?.attr || {});
// dayjs.extend(customParseFormat);
const onChangeTime: TimePickerProps['onChange'] = (time, 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 (
<div className="p-2 text-sm">
<TreeSelect
fieldNames={{ label: 'label', value: 'value', children: 'children' }}
{...data.ui.attr}
@@ -89,6 +90,7 @@ export const RenderTreeSelect = (params: TextAreaProps) => {
treeData={data.options}
onDropdownVisibleChange={handleDropdownVisibleChange}
/>
</div>
// TODO: Implement the TreeSelect component
// <TreeSelect