FarmBot/Farmbot-Web-App

View on GitHub
frontend/sequences/step_tiles/tile_computed_move/input.tsx

Summary

Maintainability
A
55 mins
Test Coverage
import React from "react";
import { MoveStepInputProps } from "./interfaces";
import { BlurableInput } from "../../../ui";

export const MoveStepInput = (props: MoveStepInputProps) => {
  const {
    field, axis, value, onCommit, setValue, min, max, onClear, disabled,
  } = props;
  const valueType = typeof value;
  const isLua = valueType == "string";
  return <BlurableInput key={valueType + value}
    wrapperClassName={isLua ? "lua" : ""}
    type={isLua ? "text" : "number"}
    name={field}
    value={value || props.defaultValue || (isLua ? "" : 0)}
    min={min}
    max={max}
    disabled={disabled}
    keyCallback={(key, buffer) => {
      isLua
        ? buffer == "" && setValue()
        : key == "=" && setValue(buffer);
      key == "" && onClear?.();
    }}
    clearBtn={!!onClear || isLua}
    onCommit={onCommit(field, axis)} />;
};