UNPKG

nutui-uniapp

Version:

京东风格的轻量级移动端 Uniapp、Vue3 组件库(支持小程序开发)

105 lines (100 loc) 3.52 kB
import type { InputOnBlurEvent, InputOnFocusEvent, InputOnInputEvent } from '@uni-helper/uni-app-types' import type { CSSProperties, ExtractPropTypes } from 'vue' import { BLUR_EVENT, CHANGE_EVENT, CLEAR_EVENT, FOCUS_EVENT, SEARCH_EVENT, UPDATE_MODEL_EVENT } from '../_constants' import { commonProps, isString, makeNumberProp, makeNumericProp, makeObjectProp, makeStringProp, nullableBooleanProp, numericProp, truthProp, } from '../_utils' import type { InputAlignType, InputConfirmType, InputType } from '../input' import type { SearchbarShape } from './type' export const searchbarProps = { ...commonProps, /** * @description 当前输入的值 */ modelValue: makeNumericProp(''), /** * @description 输入框类型 */ inputType: makeStringProp<InputType>('text'), /** * @description 搜索框形状,可选值为 `square` `round` */ shape: makeStringProp<SearchbarShape>('round'), /** * @description 最大输入长度 */ maxLength: numericProp, /** * @description 输入框默认占位符 */ placeholder: String, /** * @description 是否展示清除按钮 */ clearable: truthProp, /** * @description 自定义清除按钮图标 */ clearIcon: makeStringProp('circle-close'), /** * @description 输入框外部背景 */ background: String, /** * @description 输入框内部背景 */ inputBackground: String, /** * @description 聚焦时搜索框样式 */ focusStyle: makeObjectProp<CSSProperties>({}), /** * @description 是否自动聚焦 */ autofocus: Boolean, /** * @description 是否禁用输入框 */ disabled: nullableBooleanProp, /** * @description 输入框只读 */ readonly: Boolean, /** * @description 对齐方式,可选 `left` `center` `right` */ inputAlign: makeStringProp<InputAlignType>('left'), /** * @description 键盘右下角按钮的文字,仅在`type='text'`时生效,可选值 `send`:发送、`search`:搜索、`next`:下一个、`go`:前往、`done`:完成 */ confirmType: makeStringProp<InputConfirmType>('done'), /** * @description 是否开启 iphone 系列全面屏底部安全区适配 */ safeAreaInsetBottom: Boolean, /** * @description 指定的距离的最小值作为光标与键盘的距离 */ cursorSpacing: makeNumberProp(0), } export type SearchbarProps = ExtractPropTypes<typeof searchbarProps> export const searchbarEmits = { [UPDATE_MODEL_EVENT]: (val: string, event: InputOnInputEvent) => (isString(val) || val === undefined) && event instanceof Object, [CHANGE_EVENT]: (val: string, event: InputOnInputEvent) => (isString(val) || val === undefined) && event instanceof Object, [BLUR_EVENT]: (val: string, event: InputOnBlurEvent) => (isString(val) || val === undefined) && event instanceof Object, [FOCUS_EVENT]: (val: string, event: InputOnFocusEvent) => (isString(val) || val === undefined) && event instanceof Object, [CLEAR_EVENT]: (val: string) => (isString(val) || val === undefined), [SEARCH_EVENT]: (val: string) => (isString(val) || val === undefined), clickInput: (val: string, event: Event) => (isString(val) || val === undefined) && event instanceof Object, clickLeftIcon: (val: string, event: Event) => (isString(val) || val === undefined) && event instanceof Object, clickRightIcon: (val: string, event: Event) => (isString(val) || val === undefined) && event instanceof Object, } export type SearchbarEmits = typeof searchbarEmits