Fix: Optimized Input and MultiSelect component functionality and dataSet-chunk page styling #9779 (#9815)

### What problem does this PR solve?

Fix: Optimized Input and MultiSelect component functionality and
dataSet-chunk page styling

- Updated @js-preview/excel to version 1.7.14 #9779
- Optimized the EditTag component
- Updated the Input component to optimize numeric input processing
- Adjusted the MultiSelect component to use lodash's isEmpty method
- Optimized the CheckboxSets component to display action buttons based
on the selected state

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
chanx
2025-08-29 10:57:29 +08:00
committed by GitHub
parent c7f7adf029
commit fe9adbf0a5
8 changed files with 188 additions and 149 deletions

View File

@ -9,7 +9,24 @@ export interface InputProps
}
const Input = React.forwardRef<HTMLInputElement, InputProps>(
({ className, type, value, ...props }, ref) => {
({ className, type, value, onChange, ...props }, ref) => {
const isControlled = value !== undefined;
const { defaultValue, ...restProps } = props;
const inputValue = isControlled ? value : defaultValue;
const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {
if (type === 'number') {
const numValue = e.target.value === '' ? '' : Number(e.target.value);
onChange?.({
...e,
target: {
...e.target,
value: numValue,
},
} as React.ChangeEvent<HTMLInputElement>);
} else {
onChange?.(e);
}
};
return (
<input
type={type}
@ -18,8 +35,9 @@ const Input = React.forwardRef<HTMLInputElement, InputProps>(
className,
)}
ref={ref}
value={value ?? ''}
{...props}
value={inputValue ?? ''}
onChange={handleChange}
{...restProps}
/>
);
},

View File

@ -29,6 +29,7 @@ import {
} from '@/components/ui/popover';
import { Separator } from '@/components/ui/separator';
import { cn } from '@/lib/utils';
import { isEmpty } from 'lodash';
export type MultiSelectOptionType = {
label: React.ReactNode;
@ -209,13 +210,17 @@ export const MultiSelect = React.forwardRef<
const [isAnimating, setIsAnimating] = React.useState(false);
React.useEffect(() => {
if (!selectedValues?.length && props.value) {
if (isEmpty(selectedValues) && !isEmpty(props.value)) {
setSelectedValues(props.value as string[]);
}
}, [props.value, selectedValues]);
React.useEffect(() => {
if (!selectedValues?.length && !props.value && defaultValue) {
if (
isEmpty(selectedValues) &&
isEmpty(props.value) &&
!isEmpty(defaultValue)
) {
setSelectedValues(defaultValue);
}
}, [defaultValue, props.value, selectedValues]);