mirror of https://github.com/grafana/grafana.git
Form validation problem in table panel option (column width & minimum column width) (#56452)
Co-authored-by: gitstart <gitstart@users.noreply.github.com> Co-authored-by: gitstart <gitstart@gitstart.com> Co-authored-by: Rubens Rafael <70234898+RubensRafael@users.noreply.github.com> Co-authored-by: Rafael Toledo <87545086+Toledodev@users.noreply.github.com> Co-authored-by: Matheus Muniz <87545749+matheusmuniz03@users.noreply.github.com> Co-authored-by: Thiago Nascimbeni <tnascimbeni@gmail.com> Co-authored-by: Matheus Muniz <matheusmuniz100@hotmail.com> Co-authored-by: Nitesh Singh <nitesh.singh@gitstart.dev> Co-authored-by: Matheus Benini Ferreira <88898100+MatheusBeniniF@users.noreply.github.com> Co-authored-by: Murilo Amaral <87545137+MuriloAmarals@users.noreply.github.com>
This commit is contained in:
parent
22756913ba
commit
0eb3afbd14
|
|
@ -45,44 +45,46 @@ export class NumberInput extends PureComponent<Props, State> {
|
||||||
}
|
}
|
||||||
|
|
||||||
updateValue = () => {
|
updateValue = () => {
|
||||||
let value: number | undefined = undefined;
|
|
||||||
const txt = this.inputRef.current?.value;
|
const txt = this.inputRef.current?.value;
|
||||||
if (txt?.length) {
|
let corrected = false;
|
||||||
value = +txt;
|
let newValue = '';
|
||||||
if (isNaN(value)) {
|
const min = this.props.min;
|
||||||
return;
|
const max = this.props.max;
|
||||||
|
const currentValue = txt && +txt;
|
||||||
|
|
||||||
|
if (currentValue) {
|
||||||
|
if (!Number.isNaN(currentValue)) {
|
||||||
|
if (min != null && currentValue < min) {
|
||||||
|
newValue = min.toString();
|
||||||
|
corrected = true;
|
||||||
|
} else if (max != null && currentValue > max) {
|
||||||
|
newValue = max.toString();
|
||||||
|
corrected = true;
|
||||||
|
} else {
|
||||||
|
newValue = txt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({
|
||||||
|
text: newValue || '',
|
||||||
|
inputCorrected: corrected,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (corrected) {
|
||||||
|
this.updateValueDebounced();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!isNaN(currentValue) && currentValue !== this.props.value) {
|
||||||
|
this.props.onChange(currentValue);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (value !== this.props.value) {
|
|
||||||
this.props.onChange(value);
|
|
||||||
}
|
|
||||||
if (this.state.inputCorrected) {
|
|
||||||
this.setState({ inputCorrected: false });
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
updateValueDebounced = debounce(this.updateValue, 500); // 1/2 second delay
|
updateValueDebounced = debounce(this.updateValue, 500); // 1/2 second delay
|
||||||
|
|
||||||
onChange = (e: React.FocusEvent<HTMLInputElement>) => {
|
onChange = (e: React.FocusEvent<HTMLInputElement>) => {
|
||||||
let newValue: string | undefined = undefined;
|
|
||||||
let corrected = false;
|
|
||||||
const min = this.props.min;
|
|
||||||
const max = this.props.max;
|
|
||||||
const currValue = e.currentTarget.valueAsNumber;
|
|
||||||
if (!Number.isNaN(currValue)) {
|
|
||||||
if (min != null && currValue < min) {
|
|
||||||
newValue = min.toString();
|
|
||||||
corrected = true;
|
|
||||||
} else if (max != null && currValue > max) {
|
|
||||||
newValue = max.toString();
|
|
||||||
corrected = true;
|
|
||||||
} else {
|
|
||||||
newValue = e.currentTarget.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.setState({
|
this.setState({
|
||||||
text: newValue ? newValue : '',
|
text: e.currentTarget.value,
|
||||||
inputCorrected: corrected,
|
|
||||||
});
|
});
|
||||||
this.updateValueDebounced();
|
this.updateValueDebounced();
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue