[improvement] SwitchCell: tsx (#2785)

This commit is contained in:
neverland 2019-02-18 20:55:25 +08:00 committed by GitHub
parent e860759f16
commit c372638036
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 34 deletions

View File

@ -15,6 +15,10 @@ export type IconProps = {
classPrefix?: string; classPrefix?: string;
}; };
export type IconEvents = {
onClick?(event: Event): void;
};
const [sfc] = use('icon'); const [sfc] = use('icon');
function Icon( function Icon(
@ -55,4 +59,4 @@ Icon.props = {
} }
}; };
export default sfc<IconProps>(Icon); export default sfc<IconProps, IconEvents>(Icon);

View File

@ -1,33 +0,0 @@
import { use } from '../utils';
import { inherit } from '../utils/functional';
import Cell from '../cell';
import Switch from '../switch';
import { switchProps } from '../switch/shared';
const [sfc, bem] = use('switch-cell');
function SwitchCell(h, props, slots, ctx) {
return (
<Cell
center
title={props.title}
border={props.border}
class={bem()}
{...inherit(ctx)}
>
<Switch {...{ props, on: ctx.listeners }} />
</Cell>
);
}
SwitchCell.props = {
...switchProps,
title: String,
border: Boolean,
size: {
type: String,
default: '24px'
}
};
export default sfc(SwitchCell);

View File

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

View File

@ -55,6 +55,8 @@ export type FunctionalComponent<
export type TsxBaseProps = { export type TsxBaseProps = {
class?: any; class?: any;
style?: any; style?: any;
// hack for jsx prop spread
props?: any;
}; };
export type TsxComponent<Props, Events> = ( export type TsxComponent<Props, Events> = (
props: Props & Events & TsxBaseProps props: Props & Events & TsxBaseProps