mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
fix(Calendar): incorrect height when using rem (#7190)
* fix(Calendar): incorrect height when using rem * fix: realRowHeight default value
This commit is contained in:
parent
2e6e5a934b
commit
35f7e818e2
src/calendar
@ -4,7 +4,6 @@ import {
|
|||||||
t,
|
t,
|
||||||
bem,
|
bem,
|
||||||
compareDay,
|
compareDay,
|
||||||
ROW_HEIGHT,
|
|
||||||
getPrevDay,
|
getPrevDay,
|
||||||
getNextDay,
|
getNextDay,
|
||||||
formatMonthTitle,
|
formatMonthTitle,
|
||||||
@ -27,6 +26,7 @@ export default createComponent({
|
|||||||
currentDate: [Date, Array],
|
currentDate: [Date, Array],
|
||||||
allowSameDay: Boolean,
|
allowSameDay: Boolean,
|
||||||
showSubtitle: Boolean,
|
showSubtitle: Boolean,
|
||||||
|
realRowHeight: Number,
|
||||||
showMonthTitle: Boolean,
|
showMonthTitle: Boolean,
|
||||||
firstDayOfWeek: Number,
|
firstDayOfWeek: Number,
|
||||||
},
|
},
|
||||||
@ -43,9 +43,7 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
|
|
||||||
rowHeightWithUnit() {
|
rowHeightWithUnit() {
|
||||||
if (this.rowHeight !== ROW_HEIGHT) {
|
return addUnit(this.rowHeight);
|
||||||
return addUnit(this.rowHeight);
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
offset() {
|
offset() {
|
||||||
@ -71,7 +69,7 @@ export default createComponent({
|
|||||||
monthStyle() {
|
monthStyle() {
|
||||||
if (!this.shouldRender) {
|
if (!this.shouldRender) {
|
||||||
const padding =
|
const padding =
|
||||||
Math.ceil((this.totalDay + this.offset) / 7) * this.rowHeight;
|
Math.ceil((this.totalDay + this.offset) / 7) * this.realRowHeight;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
paddingBottom: `${padding}px`,
|
paddingBottom: `${padding}px`,
|
||||||
@ -106,6 +104,23 @@ export default createComponent({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
shouldRender(value) {
|
||||||
|
if (value) {
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.day[0] && !this.realRowHeight) {
|
||||||
|
const { height } = this.$refs.day[0].getBoundingClientRect();
|
||||||
|
this.$emit('update-height', height);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
realRowHeight() {
|
||||||
|
this.height = null;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
methods: {
|
methods: {
|
||||||
getHeight() {
|
getHeight() {
|
||||||
if (!this.height) {
|
if (!this.height) {
|
||||||
@ -289,6 +304,8 @@ export default createComponent({
|
|||||||
if (type === 'selected') {
|
if (type === 'selected') {
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
ref="day"
|
||||||
|
refInFor
|
||||||
role="gridcell"
|
role="gridcell"
|
||||||
style={style}
|
style={style}
|
||||||
class={[bem('day'), item.className]}
|
class={[bem('day'), item.className]}
|
||||||
@ -313,6 +330,8 @@ export default createComponent({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
|
ref="day"
|
||||||
|
refInFor
|
||||||
role="gridcell"
|
role="gridcell"
|
||||||
style={style}
|
style={style}
|
||||||
class={[bem('day', type), item.className]}
|
class={[bem('day', type), item.className]}
|
||||||
|
@ -8,7 +8,6 @@ import {
|
|||||||
copyDates,
|
copyDates,
|
||||||
getNextDay,
|
getNextDay,
|
||||||
compareDay,
|
compareDay,
|
||||||
ROW_HEIGHT,
|
|
||||||
calcDateNum,
|
calcDateNum,
|
||||||
compareMonth,
|
compareMonth,
|
||||||
createComponent,
|
createComponent,
|
||||||
@ -29,6 +28,7 @@ export default createComponent({
|
|||||||
value: Boolean,
|
value: Boolean,
|
||||||
readonly: Boolean,
|
readonly: Boolean,
|
||||||
formatter: Function,
|
formatter: Function,
|
||||||
|
rowHeight: [Number, String],
|
||||||
confirmText: String,
|
confirmText: String,
|
||||||
rangePrompt: String,
|
rangePrompt: String,
|
||||||
defaultDate: [Date, Array],
|
defaultDate: [Date, Array],
|
||||||
@ -51,10 +51,6 @@ export default createComponent({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
rowHeight: {
|
|
||||||
type: [Number, String],
|
|
||||||
default: ROW_HEIGHT,
|
|
||||||
},
|
|
||||||
maxRange: {
|
maxRange: {
|
||||||
type: [Number, String],
|
type: [Number, String],
|
||||||
default: null,
|
default: null,
|
||||||
@ -115,6 +111,7 @@ export default createComponent({
|
|||||||
return {
|
return {
|
||||||
subtitle: '',
|
subtitle: '',
|
||||||
currentDate: this.getInitialDate(),
|
currentDate: this.getInitialDate(),
|
||||||
|
realRowHeight: 0,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -403,6 +400,10 @@ export default createComponent({
|
|||||||
this.$emit('confirm', copyDates(this.currentDate));
|
this.$emit('confirm', copyDates(this.currentDate));
|
||||||
},
|
},
|
||||||
|
|
||||||
|
onUpdateHeight(height) {
|
||||||
|
this.realRowHeight = height;
|
||||||
|
},
|
||||||
|
|
||||||
genMonth(date, index) {
|
genMonth(date, index) {
|
||||||
const showMonthTitle = index !== 0 || !this.showSubtitle;
|
const showMonthTitle = index !== 0 || !this.showSubtitle;
|
||||||
return (
|
return (
|
||||||
@ -421,9 +422,11 @@ export default createComponent({
|
|||||||
currentDate={this.currentDate}
|
currentDate={this.currentDate}
|
||||||
showSubtitle={this.showSubtitle}
|
showSubtitle={this.showSubtitle}
|
||||||
allowSameDay={this.allowSameDay}
|
allowSameDay={this.allowSameDay}
|
||||||
|
realRowHeight={this.realRowHeight}
|
||||||
showMonthTitle={showMonthTitle}
|
showMonthTitle={showMonthTitle}
|
||||||
firstDayOfWeek={this.dayOffset}
|
firstDayOfWeek={this.dayOffset}
|
||||||
onClick={this.onClickDay}
|
onClick={this.onClickDay}
|
||||||
|
onUpdate-height={this.onUpdateHeight}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -64,7 +64,7 @@ exports[`renders demo correctly 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 320px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 0%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 0%;">1</div>
|
||||||
@ -102,7 +102,7 @@ exports[`renders demo correctly 1`] = `
|
|||||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">31</div>
|
<div role="gridcell" tabindex="-1" class="van-calendar__day">31</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__month" style="padding-bottom: 320px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div class="van-calendar__month-title">2012年2月</div>
|
<div class="van-calendar__month-title">2012年2月</div>
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">2</div>
|
<div class="van-calendar__month-mark">2</div>
|
||||||
@ -137,7 +137,7 @@ exports[`renders demo correctly 1`] = `
|
|||||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">29</div>
|
<div role="gridcell" tabindex="-1" class="van-calendar__day">29</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__month" style="padding-bottom: 320px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div class="van-calendar__month-title">2012年3月</div>
|
<div class="van-calendar__month-title">2012年3月</div>
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">3</div>
|
<div class="van-calendar__month-mark">3</div>
|
||||||
|
@ -8,7 +8,7 @@ exports[`color prop when type is range 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 384px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
||||||
@ -61,7 +61,7 @@ exports[`color prop when type is single 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 384px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
||||||
@ -114,7 +114,7 @@ exports[`formatter prop 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 384px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
||||||
@ -173,7 +173,7 @@ exports[`popup wrapper 2`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 384px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
||||||
@ -228,7 +228,7 @@ exports[`row-height prop 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 300px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px; margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="height: 50px; margin-left: 71.42857142857143%;">1</div>
|
||||||
@ -281,7 +281,7 @@ exports[`title & footer slot 1`] = `
|
|||||||
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
<div class="van-calendar__weekdays"><span class="van-calendar__weekday">日</span><span class="van-calendar__weekday">一</span><span class="van-calendar__weekday">二</span><span class="van-calendar__weekday">三</span><span class="van-calendar__weekday">四</span><span class="van-calendar__weekday">五</span><span class="van-calendar__weekday">六</span></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="van-calendar__body">
|
<div class="van-calendar__body">
|
||||||
<div class="van-calendar__month" style="padding-bottom: 384px;">
|
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||||
<div role="grid" class="van-calendar__days">
|
<div role="grid" class="van-calendar__days">
|
||||||
<div class="van-calendar__month-mark">1</div>
|
<div class="van-calendar__month-mark">1</div>
|
||||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled" style="margin-left: 71.42857142857143%;">1</div>
|
||||||
|
@ -4,8 +4,6 @@ const [createComponent, bem, t] = createNamespace('calendar');
|
|||||||
|
|
||||||
export { createComponent, bem, t };
|
export { createComponent, bem, t };
|
||||||
|
|
||||||
export const ROW_HEIGHT = 64;
|
|
||||||
|
|
||||||
export function formatMonthTitle(date: Date) {
|
export function formatMonthTitle(date: Date) {
|
||||||
return t('monthTitle', date.getFullYear(), date.getMonth() + 1);
|
return t('monthTitle', date.getFullYear(), date.getMonth() + 1);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user