namnguyen пре 10 месеци
родитељ
комит
4f06e399b1

+ 21 - 21
frontend/taipy-gui/src/components/Taipy/Input.tsx

@@ -57,8 +57,6 @@ const Input = (props: TaipyInputProps) => {
         onChange,
         multiline = false,
         linesShown = 5,
-        min,
-        max,
     } = props;
     const [value, setValue] = useState(defaultValue);
     const dispatch = useDispatch();
@@ -72,6 +70,8 @@ const Input = (props: TaipyInputProps) => {
     const hover = useDynamicProperty(props.hoverText, props.defaultHoverText, undefined);
     const step = useDynamicProperty(props.step, props.defaultStep, 1);
     const stepMultiplier = useDynamicProperty(props.stepMultiplier, props.defaultStepMultiplier, 10);
+    const min = useDynamicProperty(props.min, props.defaultMin, undefined);
+    const max = useDynamicProperty(props.max, props.defaultMax, undefined);
 
     const handleInput = useCallback(
         (e: React.ChangeEvent<HTMLInputElement>) => {
@@ -96,25 +96,25 @@ const Input = (props: TaipyInputProps) => {
 
     const handleAction = useCallback(
         (evt: KeyboardEvent<HTMLDivElement>) => {
-            if (evt.shiftKey && evt.key === "ArrowUp") {
-                setValue(
-                    (
-                        Number(evt.currentTarget.querySelector("input")?.value || 0) +
-                        (step || 1) * (stepMultiplier || 10) -
-                        (step || 1)
-                    ).toString(),
-                );
-            }
-            if (evt.shiftKey && evt.key === "ArrowDown") {
-                setValue(
-                    (
-                        Number(evt.currentTarget.querySelector("input")?.value || 0) -
-                        (step || 1) * (stepMultiplier || 10) +
-                        (step || 1)
-                    ).toString(),
-                );
-            }
-            if (!evt.shiftKey && !evt.ctrlKey && !evt.altKey && actionKeys.includes(evt.key)) {
+            if (evt.shiftKey) {
+                if (evt.key === "ArrowUp") {
+                    setValue(
+                        (
+                            Number(evt.currentTarget.querySelector("input")?.value || 0) +
+                            (step || 1) * (stepMultiplier || 10) -
+                            (step || 1)
+                        ).toString(),
+                    );
+                } else if (evt.key === "ArrowDown") {
+                    setValue(
+                        (
+                            Number(evt.currentTarget.querySelector("input")?.value || 0) -
+                            (step || 1) * (stepMultiplier || 10) +
+                            (step || 1)
+                        ).toString(),
+                    );
+                }
+            } else if (!evt.shiftKey && !evt.ctrlKey && !evt.altKey && actionKeys.includes(evt.key)) {
                 const val = evt.currentTarget.querySelector("input")?.value;
                 if (changeDelay > 0 && delayCall.current > 0) {
                     clearTimeout(delayCall.current);

+ 2 - 0
frontend/taipy-gui/src/components/Taipy/utils.ts

@@ -53,7 +53,9 @@ export interface TaipyInputProps extends TaipyActiveProps, TaipyChangeProps, Tai
     stepMultiplier?: number;
     defaultStepMultiplier?: number;
     min?: number;
+    defaultMin?: number;
     max?: number;
+    defaultMax?: number;
     changeDelay?: number;
     onAction?: string;
     actionKeys?: string;

+ 2 - 2
taipy/gui/_renderers/factory.py

@@ -388,8 +388,8 @@ class _Factory:
                 ("active", PropertyType.dynamic_boolean, True),
                 ("step", PropertyType.dynamic_number, 1),
                 ("step_multiplier", PropertyType.dynamic_number, 10),
-                ("min", PropertyType.number),
-                ("max", PropertyType.number),
+                ("min", PropertyType.dynamic_number),
+                ("max", PropertyType.dynamic_number),
                 ("hover_text", PropertyType.dynamic_string),
                 ("on_change", PropertyType.function),
                 ("on_action", PropertyType.function),