-
Notifications
You must be signed in to change notification settings - Fork 359
fix(calendar): fix calendar range issues #3938
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
Co-Authored-By: 刘宇轩 (刘lyxAndy) <[email protected]>
|
因为是通病,不确定是否需要在当前仓库再开一个issue,如有需要我再开 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR improves month selector validation logic in the Calendar component to handle same-year date ranges correctly. Previously, when the date range started and ended in the same year, the month selector didn't properly restrict available months.
- Added special case handling for same-year date ranges
- Optimized variable scope by moving
beginMonandendMoncalculations outside conditional blocks - Changed year selector items to never be disabled (always
false)
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
commit: |

🤔 这个 PR 的性质是?
🔗 相关 Issue
当前pr修复的问题在
tdesign-vue和tdesign-vue-next两个仓库中均存在,我已经向这两个仓库提交了pr。考虑到web端组件逻辑复用于是过来这边检查,发现tdesign-react仓库同样存在上述仓库中的问题,故同步更正💡 需求背景和解决方案
代码缺陷
其一,组件源码中的月份禁用选项生成依据仅为先起始年份后终止年份的单侧判断
只有在切换年份时才会触发月份的禁用选项更新。当起止年份相同时(假定为2025年),若年份选中
2025年,以上逻辑仅会判断当前选中项与起始年份相同然后禁用起始月份之前的月份选项,而忽略对终止月份之后的月份选项的禁用其二,生成年份选项时多余且错误地调用了
checkMonthAndYearSelectorDisabled函数来判断年份选项的禁用状态。年份选项生成一定在范围内,无需额外编写禁用状态逻辑;且checkMonthAndYearSelectorDisabled函数是用于月份选项禁用范围的判定,用于年份选项会导致实际可选择范围异常解决方案
其一,
将可复用的月份处理逻辑提前,然后在单侧判断之前增加一个分支逻辑判断起止年份是否相同,相同的话将禁用的月份选项设定为在起止月份之外的即可
其二,删去多余的禁用状态逻辑,固定启用所有年份选项
📝 更新日志
fix(Calendar): 修复当
range为同一年内时,终止月份之后的月份选项没有正常禁用的问题fix(Calendar): 修复年份选项错误地使用了月份选项禁用范围判定逻辑的问题
本条 PR 不需要纳入 Changelog
☑️ 请求合并前的自查清单