breaking change: remove SwitchCell component

This commit is contained in:
chenjiahan 2020-08-18 17:54:52 +08:00
parent 1349301f01
commit 966fb5f46a
9 changed files with 0 additions and 377 deletions

View File

@ -1,78 +0,0 @@
# SwitchCell
### Deprecate Tip
The SwitchCell component will be deprecated in version 3.0. Please use the Cell and Switch components instead.
### Install
```js
import Vue from 'vue';
import { SwitchCell } from 'vant';
Vue.use(SwitchCell);
```
## Usage
### Basic Usage
```html
<van-cell-group>
<van-switch-cell v-model="checked" title="Title" />
</van-cell-group>
```
```js
export default {
data() {
return {
checked: true,
};
},
};
```
### Disabled
use `disabled` property to disable the component
```html
<van-cell-group>
<van-switch-cell v-model="checked" disabled title="Title" />
</van-cell-group>
```
### Loading
use `loading` property to keep component in loading state
```html
<van-cell-group>
<van-switch-cell v-model="checked" loading title="Title" />
</van-cell-group>
```
## API
### Props
| Attribute | Description | Type | Default |
| --- | --- | --- | --- |
| v-model | on-off state of the switch | _any_ | `false` |
| title | the left side title | _string_ | `''` |
| border | whether to show cell border | _boolean_ | `true` |
| cell-size | Cell sizecan be set to `large` | _string_ | - |
| loading | whether switch is loading | _boolean_ | `false` |
| disabled | whether to disable switch | _boolean_ | `false` |
| size | Size of switch | _number \| string_ | `24px` |
| active-color | Background of switch color when active | _string_ | `#1989fa` |
| inactive-color | Background of switch color when inactive | _string_ | `white` |
| active-value | Value when active | _any_ | `true` |
| inactive-value | Value when inactive | _any_ | `false` |
### Events
| Event | Description | Arguments |
| --- | --- | --- |
| change | triggered when the on-off state is changed | checked: switch is on or not |

View File

@ -1,86 +0,0 @@
# SwitchCell 开关单元格
### 废弃提示
<b>SwitchCell 组件将在 3.0 版本中废弃</b>,请直接使用 Cell 和 Switch 组件代替,替换写法如下:
```html
<van-cell center title="标题">
<template #right-icon>
<van-switch v-model="checked" size="24" />
</template>
</van-cell>
```
### 引入
```js
import Vue from 'vue';
import { SwitchCell } from 'vant';
Vue.use(SwitchCell);
```
## 代码演示
### 基础用法
```html
<van-cell-group>
<van-switch-cell v-model="checked" title="标题" />
</van-cell-group>
```
```js
export default {
data() {
return {
checked: true,
};
},
};
```
### 禁用状态
通过`disabled`属性可以将组件设置为禁用状态
```html
<van-cell-group>
<van-switch-cell v-model="checked" disabled title="标题" />
</van-cell-group>
```
### 加载状态
通过`loading`属性可以将组件设置为加载状态
```html
<van-cell-group>
<van-switch-cell v-model="checked" loading title="标题" />
</van-cell-group>
```
## API
### Props
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| v-model | 开关状态 | _any_ | `false` |
| title | 左侧标题 | _string_ | `''` |
| border | 是否展示单元格内边框 | _boolean_ | `true` |
| cell-size | 单元格大小,可选值为 `large` | _string_ | - |
| loading | 是否为加载状态 | _boolean_ | `false` |
| disabled | 是否为禁用状态 | _boolean_ | `false` |
| size | 开关尺寸 | _number \| string_ | `24px` |
| active-color | 开关时的背景色 | _string_ | `#1989fa` |
| inactive-color | 开关时的背景色 | _string_ | `white` |
| active-value | 打开时的值 | _any_ | `true` |
| inactive-value | 关闭时的值 | _any_ | `false` |
### Events
| 事件名 | 说明 | 回调参数 |
| ------ | ---------------- | --------------------- |
| change | 开关状态切换回调 | checked: 是否选中开关 |

View File

@ -1,31 +0,0 @@
<template>
<demo-section>
<demo-block :title="t('basicUsage')">
<van-cell-group>
<van-switch-cell v-model="checked" :title="t('title')" />
</van-cell-group>
</demo-block>
<demo-block :title="t('disabled')">
<van-cell-group>
<van-switch-cell v-model="checked" disabled :title="t('title')" />
</van-cell-group>
</demo-block>
<demo-block :title="t('loadingStatus')">
<van-cell-group>
<van-switch-cell v-model="checked" loading :title="t('title')" />
</van-cell-group>
</demo-block>
</demo-section>
</template>
<script>
export default {
data() {
return {
checked: true,
};
},
};
</script>

View File

@ -1,15 +0,0 @@
@import '../style/var';
.van-switch-cell {
padding-top: @switch-cell-padding-top;
padding-bottom: @switch-cell-padding-bottom;
&--large {
padding-top: @switch-cell-large-padding-top;
padding-bottom: @switch-cell-large-padding-bottom;
}
.van-switch {
float: right;
}
}

View File

@ -1,61 +0,0 @@
// Utils
import { createNamespace } from '../utils';
import { inherit } from '../utils/functional';
// Components
import Cell from '../cell';
import Switch from '../switch';
import { switchProps, SharedSwitchProps } from '../switch/shared';
// Types
import { CreateElement, RenderContext } from 'vue/types';
import { DefaultSlots } from '../utils/types';
export type SwitchCellProps = SharedSwitchProps & {
size: string;
title?: string;
border?: boolean;
cellSize?: string;
};
export type SwitchCellEvents = {
onChange?(checked: boolean): void;
};
const [createComponent, bem] = createNamespace('switch-cell');
function SwitchCell(
h: CreateElement,
props: SwitchCellProps,
slots: DefaultSlots,
ctx: RenderContext<SwitchCellProps>
) {
return (
<Cell
center
size={props.cellSize}
title={props.title}
border={props.border}
class={bem([props.cellSize])}
{...inherit(ctx)}
>
<Switch {...{ props, on: ctx.listeners }} />
</Cell>
);
}
SwitchCell.props = {
...switchProps,
title: String,
cellSize: String,
border: {
type: Boolean,
default: true,
},
size: {
type: String,
default: '24px',
},
};
export default createComponent<SwitchCellProps, SwitchCellEvents>(SwitchCell);

View File

@ -1,44 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`renders demo correctly 1`] = `
<div>
<div>
<div class="van-cell-group van-hairline--top-bottom">
<div class="van-cell van-cell--center van-switch-cell">
<div class="van-cell__title"><span>标题</span></div>
<div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on" style="font-size: 24px;">
<div class="van-switch__node"></div>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="van-cell-group van-hairline--top-bottom">
<div class="van-cell van-cell--center van-switch-cell">
<div class="van-cell__title"><span>标题</span></div>
<div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on van-switch--disabled" style="font-size: 24px;">
<div class="van-switch__node"></div>
</div>
</div>
</div>
</div>
</div>
<div>
<div class="van-cell-group van-hairline--top-bottom">
<div class="van-cell van-cell--center van-switch-cell">
<div class="van-cell__title"><span>标题</span></div>
<div class="van-cell__value">
<div role="switch" aria-checked="true" class="van-switch van-switch--on van-switch--loading" style="font-size: 24px;">
<div class="van-switch__node">
<div class="van-loading van-loading--circular van-switch__loading"><span class="van-loading__spinner van-loading__spinner--circular"><svg viewBox="25 25 50 50" class="van-loading__circular"><circle cx="50" cy="50" r="20" fill="none"></circle></svg></span></div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
`;

View File

@ -1,21 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`border prop 1`] = `
<div class="van-cell van-cell--center van-cell--borderless van-switch-cell">
<div class="van-cell__value van-cell__value--alone">
<div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;">
<div class="van-switch__node"></div>
</div>
</div>
</div>
`;
exports[`cell-size prop 1`] = `
<div class="van-cell van-cell--center van-cell--large van-switch-cell van-switch-cell--large">
<div class="van-cell__value van-cell__value--alone">
<div role="switch" aria-checked="false" class="van-switch" style="font-size: 24px;">
<div class="van-switch__node"></div>
</div>
</div>
</div>
`;

View File

@ -1,4 +0,0 @@
import Demo from '../demo';
import { snapshotDemo } from '../../../test/demo';
snapshotDemo(Demo);

View File

@ -1,37 +0,0 @@
import SwitchCell from '..';
import { mount } from '../../../test';
test('change event', () => {
const onChange = jest.fn();
const wrapper = mount(SwitchCell, {
context: {
on: {
change: onChange,
},
},
});
wrapper.find('.van-switch').trigger('click');
expect(onChange).toHaveBeenCalledWith(true);
});
test('border prop', () => {
const wrapper = mount(SwitchCell, {
propsData: {
border: false,
},
});
expect(wrapper).toMatchSnapshot();
});
test('cell-size prop', () => {
const wrapper = mount(SwitchCell, {
propsData: {
cellSize: 'large',
},
});
expect(wrapper).toMatchSnapshot();
});