From 6c36fadf5933a18d79e1bc74384c0f95c1b11624 Mon Sep 17 00:00:00 2001 From: neverland <chenjiahan@youzan.com> Date: Mon, 15 Feb 2021 21:55:53 +0800 Subject: [PATCH] types(Search): use tsx (#8161) --- src/search/{index.js => index.tsx} | 24 ++++++++++++++++-------- src/vue-tsx-shim.d.ts | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) rename src/search/{index.js => index.tsx} (85%) diff --git a/src/search/index.js b/src/search/index.tsx similarity index 85% rename from src/search/index.js rename to src/search/index.tsx index 990c06eab..ee90bcc72 100644 --- a/src/search/index.js +++ b/src/search/index.tsx @@ -1,4 +1,4 @@ -import { ref } from 'vue'; +import { ref, PropType, CSSProperties } from 'vue'; // Utils import { pick, createNamespace, preventDefault } from '../utils'; @@ -9,8 +9,13 @@ import { useExpose } from '../composables/use-expose'; // Components import Field from '../field'; +// Types +import type { FieldClearTrigger } from '../field/types'; + const [createComponent, bem, t] = createNamespace('search'); +export type SearchShape = 'square' | 'round'; + export default createComponent({ inheritAttrs: false, @@ -21,9 +26,9 @@ export default createComponent({ actionText: String, background: String, showAction: Boolean, - clearTrigger: String, + clearTrigger: String as PropType<FieldClearTrigger>, shape: { - type: String, + type: String as PropType<SearchShape>, default: 'square', }, clearable: { @@ -48,7 +53,7 @@ export default createComponent({ } }; - const onKeypress = (event) => { + const onKeypress = (event: KeyboardEvent) => { const ENTER_CODE = 13; if (event.keyCode === ENTER_CODE) { preventDefault(event); @@ -73,7 +78,7 @@ export default createComponent({ <div class={bem('action')} role="button" - tabindex="0" + tabindex={0} onClick={onCancel} > {slots.action ? slots.action() : text} @@ -109,8 +114,8 @@ export default createComponent({ style: null, class: null, }; - - const onInput = (value) => { + + const onInput = (value: string) => { emit('update:modelValue', value); }; @@ -132,7 +137,10 @@ export default createComponent({ return () => ( <div class={[bem({ 'show-action': props.showAction }), attrs.class]} - style={{ background: props.background, ...attrs.style }} + style={{ + background: props.background, + ...(attrs.style as CSSProperties), + }} > {slots.left?.()} <div class={bem('content', props.shape)}> diff --git a/src/vue-tsx-shim.d.ts b/src/vue-tsx-shim.d.ts index 6cc043b45..e6f4db5fc 100644 --- a/src/vue-tsx-shim.d.ts +++ b/src/vue-tsx-shim.d.ts @@ -22,6 +22,7 @@ declare module 'vue' { onSelect?: EventHandler; onToggle?: EventHandler; onConfirm?: EventHandler; + onKeypress?: EventHandler; onClickStep?: EventHandler; onTouchstart?: EventHandler; }