Fix(Calendar): Improve type declaration using generic types with default parameters (Fixes #7555) #7556
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Related Issue
Closes #7555
Fix #6583
Summary
This PR implements the proposed improvement by replacing type overloading with generic types for
CalendarProps
. It addresses the problem with dynamically managingselectionMode
as discussed in the issue.Screenshots
I've checked the solution by creating a small wrapper inside the project. Here is a screenshot where you can see that TypeScript correctly defines the
onChange
event type based on the passedselectionMode
.Default (single):
![Screenshot 2025-01-03 at 12 30 31](https://private-user-images.githubusercontent.com/23583235/399926459-03f3eec5-0db4-44c7-897b-413cb96023cf.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNzk2NjcsIm5iZiI6MTczOTE3OTM2NywicGF0aCI6Ii8yMzU4MzIzNS8zOTk5MjY0NTktMDNmM2VlYzUtMGRiNC00NGM3LTg5N2ItNDEzY2I5NjAyM2NmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDA5MjI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTcwZDMyMzkzOWQ3N2Q4OGFkZTI5OTA3NGIyMDUxODBkNjcxOWU2NjA4OTllYWEwYzhkMGI0OTJkYTcxM2Q5NjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.09wFcJuFEzFTlNzvlFewjB3unE7OsXOjntIcRkKkkl0)
Multiple:
![Screenshot 2025-01-03 at 12 30 36](https://private-user-images.githubusercontent.com/23583235/399926468-aae7247b-8af9-4ae3-aa3e-41b901075990.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkxNzk2NjcsIm5iZiI6MTczOTE3OTM2NywicGF0aCI6Ii8yMzU4MzIzNS8zOTk5MjY0NjgtYWFlNzI0N2ItOGFmOS00YWUzLWFhM2UtNDFiOTAxMDc1OTkwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTAlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEwVDA5MjI0N1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg5ZmEzMWFkMzI3OWUyMDRlNDkyY2Y3ZjVmOWIzZGJlOTQ1NWY2M2VkMjgyNzJhZmNiNDQxMzRiNTA4YWIyODQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2DKtfi1uwI1YZBa_J-qK_AeAlc0_m20gXJCbrnoeEpo)