react-date-range icon indicating copy to clipboard operation
react-date-range copied to clipboard

InputRange first focus typed number is ignore

Open raDiesle opened this issue 3 years ago • 2 comments

Subject of the issue

When user clicks on empty InputRange and starts typing, the first typed number is not being taken.

[BUG] Bug Reproduce Steps

When the InputRange text-input of e.g. "days up today" is empty by default (e.g. infinite symbol or "-"symbol) , when user clicks on the input and starts typing a number such as 8, it will jump to number 1 ( as well "days up today").

If user selects the contents of the input and then types, its instant showing the typed number in the input.

[BUG] Expected behaviour

When user clicks on empty InputRange and starts typing, the first typed number should be instant shown. Also it should not add number 1 to "days up today"

Environment

Package Version: 1.4.0 React version: 17.2 Node version: 16.13.0 Browser: Chrome

raDiesle avatar May 10 '22 14:05 raDiesle

Workaround

useEffect(()=>{
        if(showDateRange) {
          var inputRange0 = document.getElementsByClassName("rdrInputRangeInput")[0];
          var inputRange1 = document.getElementsByClassName("rdrInputRangeInput")[1];
          inputRange0.addEventListener("click",()=>{
            inputRange0.select();
          });
          inputRange1.addEventListener("click",()=>{
            inputRange1.select();
          });

          inputRange0.addEventListener("keydown",(e)=>{
            if(e.keyCode == 8) {
              inputRange0.value = "";
            }
          });
          inputRange1.addEventListener("keydown",(e)=>{
            if(e.keyCode == 8) {
              inputRange1.value = "";
            }
          });
        }
      },[showDateRange]);

eorhan avatar Aug 26 '22 12:08 eorhan

Workaround

useEffect(()=>{
        if(showDateRange) {
          var inputRange0 = document.getElementsByClassName("rdrInputRangeInput")[0];
          var inputRange1 = document.getElementsByClassName("rdrInputRangeInput")[1];
          inputRange0.addEventListener("click",()=>{
            inputRange0.select();
          });
          inputRange1.addEventListener("click",()=>{
            inputRange1.select();
          });

          inputRange0.addEventListener("keydown",(e)=>{
            if(e.keyCode == 8) {
              inputRange0.value = "";
            }
          });
          inputRange1.addEventListener("keydown",(e)=>{
            if(e.keyCode == 8) {
              inputRange1.value = "";
            }
          });
        }
      },[showDateRange]);

Awesome. Working fine

SwapnilSoni1999 avatar Mar 06 '23 19:03 SwapnilSoni1999