Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.en-US.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- Fix seemly dependency version range allows incompatible versions.
- Fix `n-progress` style is incorrect after using the dashboard mode exceeding 100%, closes [#6627](https://github.com/tusen-ai/naive-ui/issues/6627)
- Fix `n-modal`'s outside content can't be interacted with `show-mask` is set to `false`.
- Fix `n-date-picker` month panel handles quarter quick jump and disabled state incorrectly.

### Feats

Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- 修复 seemly 依赖的版本未更新到最新
- 修复 `n-progress` 使用仪表盘模式超过 100% 之后样式不正确,关闭 [#6627](https://github.com/tusen-ai/naive-ui/issues/6627)
- 修复 `n-modal` 在 `show-mask` 为 `false` 的情况下,外部内容不能被操作
- 修复 `n-date-picker` 月份面板在季度快速跳转和禁用状态下的处理不正确

### Feats

Expand Down
180 changes: 124 additions & 56 deletions src/date-picker/src/panel/month.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -147,65 +147,133 @@ export default defineComponent({
onKeydown={this.handlePanelKeyDown}
>
<div class={`${mergedClsPrefix}-date-panel-month-calendar`}>
<NScrollbar
ref="yearScrollbarRef"
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
container={this.virtualListContainer}
content={this.virtualListContent}
horizontalRailStyle={{ zIndex: 1 }}
verticalRailStyle={{ zIndex: 1 }}
>
{{
default: () => (
<VirtualList
ref="yearVlRef"
items={this.yearArray}
itemSize={MONTH_ITEM_HEIGHT}
showScrollbar={false}
keyField="ts"
onScroll={this.handleVirtualListScroll}
paddingBottom={4}
{this.calendarMonthBeforeYear
? [
type === 'month' || type === 'quarter' ? (
<div
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
>
<NScrollbar
ref="monthScrollbarRef"
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
>
{{
default: () => [
(type === 'month'
? this.monthArray
: this.quarterArray
).map((item, i) =>
renderItem(item, i, mergedClsPrefix)
),
<div
class={`${mergedClsPrefix}-date-panel-${type}-calendar__padding`}
/>
]
}}
</NScrollbar>
</div>
) : null,
<NScrollbar
ref="yearScrollbarRef"
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
container={this.virtualListContainer}
content={this.virtualListContent}
horizontalRailStyle={{ zIndex: 1 }}
verticalRailStyle={{ zIndex: 1 }}
>
{{
default: ({
item,
index
}: {
item: YearItem
index: number
}) => {
return renderItem(item, index, mergedClsPrefix)
}
default: () => (
<VirtualList
ref="yearVlRef"
items={this.yearArray}
itemSize={MONTH_ITEM_HEIGHT}
showScrollbar={false}
keyField="ts"
onScroll={this.handleVirtualListScroll}
paddingBottom={4}
>
{{
default: ({
item,
index
}: {
item: YearItem
index: number
}) => {
return renderItem(item, index, mergedClsPrefix)
}
}}
</VirtualList>
)
}}
</VirtualList>
)
}}
</NScrollbar>
{type === 'month' || type === 'quarter' ? (
<div
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
>
<NScrollbar
ref="monthScrollbarRef"
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
>
{{
default: () => [
(type === 'month'
? this.monthArray
: this.quarterArray
).map((item, i) => renderItem(item, i, mergedClsPrefix)),
<div
class={`${mergedClsPrefix}-date-panel-${type}-calendar__padding`}
/>
]
}}
</NScrollbar>
</div>
) : null}
</NScrollbar>
]
: [
<NScrollbar
ref="yearScrollbarRef"
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
container={this.virtualListContainer}
content={this.virtualListContent}
horizontalRailStyle={{ zIndex: 1 }}
verticalRailStyle={{ zIndex: 1 }}
>
{{
default: () => (
<VirtualList
ref="yearVlRef"
items={this.yearArray}
itemSize={MONTH_ITEM_HEIGHT}
showScrollbar={false}
keyField="ts"
onScroll={this.handleVirtualListScroll}
paddingBottom={4}
>
{{
default: ({
item,
index
}: {
item: YearItem
index: number
}) => {
return renderItem(item, index, mergedClsPrefix)
}
}}
</VirtualList>
)
}}
</NScrollbar>,
type === 'month' || type === 'quarter' ? (
<div
class={`${mergedClsPrefix}-date-panel-month-calendar__picker-col`}
>
<NScrollbar
ref="monthScrollbarRef"
theme={mergedTheme.peers.Scrollbar}
themeOverrides={mergedTheme.peerOverrides.Scrollbar}
>
{{
default: () => [
(type === 'month'
? this.monthArray
: this.quarterArray
).map((item, i) =>
renderItem(item, i, mergedClsPrefix)
),
<div
class={`${mergedClsPrefix}-date-panel-${type}-calendar__padding`}
/>
]
}}
</NScrollbar>
</div>
) : null
]}
</div>
{resolveWrappedSlot(this.datePickerSlots.footer, (children) => {
return children ? (
Expand Down