primefaces / primereact

The Most Complete React UI Component Library
https://primereact.org
MIT License
6.87k stars 1.04k forks source link

InputText: Typescript useRef types with new const instead of class components #6336

Open dvpritzbuer opened 7 months ago

dvpritzbuer commented 7 months ago

Describe the bug

const ref = useRef<Stepper>(null); --> "'Stepper' refers to a value, but is being used as a type here. Did you mean 'typeof Stepper'?"

const ref = useRef<Panel>(null); --> works fine

Reproducer

https://stackblitz.com/edit/vitejs-vite-osrp8p?file=src%2FApp.tsx,package.json

PrimeReact version

10.6.2

React version

18.x

Language

TypeScript

Build / Runtime

Vite

Browser(s)

No response

Steps to reproduce the behavior

No response

Expected behavior

No response

melloware commented 7 months ago

@dvpritzbuer can you wait until the next release I am pretty sure all of your issues you are reporting are already fixed.

dvpritzbuer commented 7 months ago

I mean my first issue today was not already fixed and why shouldn't you take my free feedback even if you just tag it with fixed in 10.6.3?

And this issue here is valid for all new components that use const instead of class (also tested it for IconField) and not only the Stepper!

But ok.. at least in short notice my other bugs as comment:

melloware commented 7 months ago

IconField already fixed: https://github.com/primefaces/primereact/pull/6271

What I was saying was in main many things have already been fixed related to Stepper, InputIcon, IconField.

dvpritzbuer commented 7 months ago

Yeah that's fine, but it's a lot easier for me to just post an issue report instead of searching the code for possible fixes. Maybe a rough estimate when 10.6.3 will release?

melloware commented 7 months ago

i think this week sometime. I don't work for PrimeTek...

gucal commented 7 months ago

Hi there, We plan to release 10.6.3 today. Thank you for the feedback.

gucal commented 7 months ago

Hi,

With release 10.6.3 the issue should be fixed. If you notice that the issue persists, please ping me.

dvpritzbuer commented 7 months ago

@gucal This error is not fixed - updated the linked stackblitz.

Also I recognized the original ticket description is not correct since Stepper doesn't have a ref and I just tested it initially with this component since this is a new const type definition. The stackblitz is now based on InputText.

I have no perfect solution here for you since it would either require the user to write more code or to import another type.

But it would work with this line: const inputRef2 = useRef<React.ElementRef<typeof InputText>>(null);

So either the user always writes this line himself if using refs within typescript or you export another type like export const type InputTextRef = React.ElementRef<typeof InputText>; and the user has to use this new type then.

Maybe you find a better solution here?

melloware commented 7 months ago

Reopened and changed the title.

dvpritzbuer commented 7 months ago

Ah sorry, I got confused by changing the types within PR #6356 and Stepper not having any ref definition yet, but of course the Stepper also has a ref and the initial title was valid 😅

melloware commented 6 months ago

@dvpritzbuer i am confused where are we at with this ticket as of 10.6.5?