Merge branch 'dev' into next
This commit is contained in:
@@ -269,7 +269,7 @@ Following props are supported when the type is range
|
||||
| --- | --- | --- | --- |
|
||||
| max-range `v2.4.3` | Number of selectable days | _number \| string_ | Unlimitied |
|
||||
| range-prompt `v2.4.3` | Error message when exceeded max range | _string_ | `Choose no more than xx days` |
|
||||
| allow-same-day `v2.5.6` | Whether the start and end time of the range is allowed on the same day | _boolean_ | `fasle` |
|
||||
| allow-same-day `v2.5.6` | Whether the start and end time of the range is allowed on the same day | _boolean_ | `false` |
|
||||
|
||||
### Multiple Props
|
||||
|
||||
|
||||
@@ -271,7 +271,7 @@ export default {
|
||||
| --- | --- | --- | --- |
|
||||
| max-range `v2.4.3` | 日期区间最多可选天数 | _number \| string_ | 无限制 |
|
||||
| range-prompt `v2.4.3` | 范围选择超过最多可选天数时的提示文案 | _string_ | `选择天数不能超过 xx 天` |
|
||||
| allow-same-day `v2.5.6` | 是否允许日期范围的起止时间为同一天 | _boolean_ | `fasle` |
|
||||
| allow-same-day `v2.5.6` | 是否允许日期范围的起止时间为同一天 | _boolean_ | `false` |
|
||||
|
||||
### Multiple Props
|
||||
|
||||
|
||||
+16
-11
@@ -236,29 +236,34 @@ export default createComponent({
|
||||
|
||||
let height = 0;
|
||||
let currentMonth;
|
||||
let visibleIndex;
|
||||
const visibleRange = [-1, -1];
|
||||
|
||||
for (let i = 0; i < months.value.length; i++) {
|
||||
const month = monthRefs.value[i];
|
||||
const visible = height <= bottom && height + heights[i] >= top;
|
||||
|
||||
if (visible && !currentMonth) {
|
||||
visibleIndex = i;
|
||||
currentMonth = month;
|
||||
}
|
||||
if (visible) {
|
||||
visibleRange[1] = i;
|
||||
|
||||
if (!month.visible && visible) {
|
||||
emit('month-show', {
|
||||
date: month.getDate(),
|
||||
title: month.getTitle(),
|
||||
});
|
||||
if (!currentMonth) {
|
||||
currentMonth = month;
|
||||
visibleRange[0] = i;
|
||||
}
|
||||
|
||||
if (!month.visible) {
|
||||
emit('month-show', {
|
||||
date: month.date,
|
||||
title: month.title,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
height += heights[i];
|
||||
}
|
||||
|
||||
months.value.forEach((month, index) => {
|
||||
const visible = index >= visibleIndex - 1 && index <= visibleIndex + 1;
|
||||
const visible =
|
||||
index >= visibleRange[0] - 1 && index <= visibleRange[1] + 1;
|
||||
monthRefs.value[index].setVisible(visible);
|
||||
});
|
||||
|
||||
|
||||
@@ -139,7 +139,40 @@ exports[`renders demo correctly 1`] = `
|
||||
</div>
|
||||
<div class="van-calendar__month" style="padding-bottom: 0px;">
|
||||
<div class="van-calendar__month-title">2012年3月</div>
|
||||
<div></div>
|
||||
<div role="grid" class="van-calendar__days">
|
||||
<div class="van-calendar__month-mark">3</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day" style="margin-left: 57.142857142857146%;">1</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">2</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">3</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">4</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">5</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">6</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">7</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">8</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">9</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">10</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">11</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">12</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">13</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">14</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">15</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">16</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">17</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">18</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">19</div>
|
||||
<div role="gridcell" tabindex="-1" class="van-calendar__day">20</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">21</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">22</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">23</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">24</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">25</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">26</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">27</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">28</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">29</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">30</div>
|
||||
<div role="gridcell" class="van-calendar__day van-calendar__day--disabled">31</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="van-calendar__footer"></div>
|
||||
|
||||
+4
-4
@@ -85,15 +85,15 @@ app.use(CellGroup);
|
||||
### Use Slots
|
||||
|
||||
```html
|
||||
<van-cell value="内容" is-link>
|
||||
<van-cell value="Content" is-link>
|
||||
<!-- Use the title slot to customize the title -->
|
||||
<template #title>
|
||||
<span class="custom-title">单元格</span>
|
||||
<van-tag type="danger">标签</van-tag>
|
||||
<span class="custom-title">Title</span>
|
||||
<van-tag type="danger">Tag</van-tag>
|
||||
</template>
|
||||
</van-cell>
|
||||
|
||||
<van-cell title="单元格" icon="shop-o">
|
||||
<van-cell title="Title" icon="shop-o">
|
||||
<!-- Use the right-icon slot to customize the right icon -->
|
||||
<template #right-icon>
|
||||
<van-icon name="search" class="search-icon" />
|
||||
|
||||
@@ -123,28 +123,6 @@ test('lazy render collapse content', async () => {
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('warn when value type is incorrect', () => {
|
||||
const originConsoleError = console.error;
|
||||
const error = jest.fn();
|
||||
console.error = error;
|
||||
|
||||
mount({
|
||||
template: `
|
||||
<van-collapse v-model="active">
|
||||
<van-collapse-item title="a" name="first"></van-collapse-item>
|
||||
</van-collapse>
|
||||
`,
|
||||
data() {
|
||||
return {
|
||||
active: 0,
|
||||
};
|
||||
},
|
||||
});
|
||||
|
||||
expect(error).toHaveBeenCalledTimes(1);
|
||||
console.error = originConsoleError;
|
||||
});
|
||||
|
||||
test('toggle method', (done) => {
|
||||
mount({
|
||||
template: `
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
}
|
||||
|
||||
&--right {
|
||||
padding-right: @padding-md;
|
||||
text-align: right;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -242,7 +242,7 @@ export default {
|
||||
| lazy-render | 是否开启延迟渲染(首次切换到标签时才触发内容渲染) | _boolean_ | `true` |
|
||||
| scrollspy `v2.3.0` | 是否开启滚动导航 | _boolean_ | `false` |
|
||||
| offset-top `v2.8.7` | 粘性定位布局下与顶部的最小距离,支持 `px` `vw` `rem` 单位,默认 `px` | _number \| string_ | `0` |
|
||||
| swipe-threshold | 滚动阈值,标签数量超过阈值时开始横向滚动 | _number \| string_ | `5` |
|
||||
| swipe-threshold | 滚动阈值,标签数量超过阈值且总宽度超过标签栏宽度时开始横向滚动 | _number \| string_ | `5` |
|
||||
| title-active-color | 标题选中态颜色 | _string_ | - |
|
||||
| title-inactive-color | 标题默认态颜色 | _string_ | - |
|
||||
| before-change `v2.9.3` | 切换标签前的回调函数,返回 `false` 可阻止切换,支持返回 Promise | _(name) => boolean \| Promise_ | - |
|
||||
|
||||
+3
-2
@@ -60,11 +60,12 @@ export default createComponent({
|
||||
);
|
||||
|
||||
return () => {
|
||||
if (!slots.default) {
|
||||
const { animated, swipeable, scrollspy, lazyRender } = parent.props;
|
||||
|
||||
if (!slots.default && !animated) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { animated, swipeable, scrollspy, lazyRender } = parent.props;
|
||||
const active = isActive();
|
||||
const show = scrollspy || active;
|
||||
|
||||
|
||||
@@ -1,5 +1,21 @@
|
||||
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
||||
|
||||
exports[`badge prop 1`] = `
|
||||
<div class="van-tabs van-tabs--line">
|
||||
<div class="van-tabs__wrap">
|
||||
<div role="tablist" class="van-tabs__nav van-tabs__nav--line">
|
||||
<div role="tab" aria-selected="true" class="van-tab van-tab--active"><span class="van-tab__text-wrapper"><span class="van-tab__text van-tab__text--ellipsis"></span>
|
||||
<div class="van-info">10</div>
|
||||
</span></div>
|
||||
<div class="van-tabs__line"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="van-tabs__content">
|
||||
<div role="tabpanel" class="van-tab__pane">Text</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`border props 1`] = `
|
||||
<div class="van-tabs van-tabs--line">
|
||||
<div class="van-tabs__wrap">
|
||||
|
||||
@@ -25,7 +25,7 @@ exports[`height prop 1`] = `
|
||||
</div>
|
||||
`;
|
||||
|
||||
exports[`nav badge 1`] = `
|
||||
exports[`nav render badge 1`] = `
|
||||
<div class="van-tree-select" style="height: 300px;">
|
||||
<div class="van-sidebar van-tree-select__nav"><a class="van-sidebar-item van-sidebar-item--select van-tree-select__nav-item">
|
||||
<div class="van-sidebar-item__text">group1<div class="van-badge van-sidebar-item__badge">3</div>
|
||||
|
||||
@@ -27,7 +27,6 @@ const mockItems = [
|
||||
];
|
||||
|
||||
test('click-nav event', () => {
|
||||
const onNavClick = jest.fn();
|
||||
const onClickNav = jest.fn();
|
||||
|
||||
const wrapper = mount(TreeSelect, {
|
||||
@@ -36,7 +35,6 @@ test('click-nav event', () => {
|
||||
},
|
||||
context: {
|
||||
on: {
|
||||
navclick: onNavClick,
|
||||
'click-nav': onClickNav,
|
||||
},
|
||||
},
|
||||
@@ -45,12 +43,10 @@ test('click-nav event', () => {
|
||||
const navItems = wrapper.findAll('.van-tree-select__nav-item');
|
||||
navItems.at(1).trigger('click');
|
||||
|
||||
expect(onNavClick).toHaveBeenCalledWith(1);
|
||||
expect(onClickNav).toHaveBeenCalledWith(1);
|
||||
});
|
||||
|
||||
test('click-item event', () => {
|
||||
const onItemClick = jest.fn();
|
||||
const onClickItem = jest.fn();
|
||||
|
||||
const wrapper = mount(TreeSelect, {
|
||||
@@ -59,7 +55,6 @@ test('click-item event', () => {
|
||||
},
|
||||
context: {
|
||||
on: {
|
||||
itemclick: onItemClick,
|
||||
'click-item': onClickItem,
|
||||
},
|
||||
},
|
||||
@@ -67,7 +62,6 @@ test('click-item event', () => {
|
||||
|
||||
const items = wrapper.findAll('.van-tree-select__item');
|
||||
items.at(0).trigger('click');
|
||||
expect(onItemClick).toHaveBeenCalledWith(mockItem);
|
||||
expect(onClickItem).toHaveBeenCalledWith(mockItem);
|
||||
});
|
||||
|
||||
@@ -151,7 +145,7 @@ test('height prop', () => {
|
||||
expect(wrapper).toMatchSnapshot();
|
||||
});
|
||||
|
||||
test('nav badge', () => {
|
||||
test('nav render badge', () => {
|
||||
const wrapper = mount(TreeSelect, {
|
||||
propsData: {
|
||||
items: [
|
||||
|
||||
Reference in New Issue
Block a user