import { defineMixin } from '../../libs/vue'
import defProps from '../../libs/config/props.js'

export const props = defineMixin({
	props: {
		// #ifdef VUE3
		// 绑定的值
		modelValue: {
			type: [String, Number],
			default: () => defProps.input.value
		},
		// #endif
		// #ifdef VUE2
		// 绑定的值
		value: {
			type: [String, Number],
			default: () => defProps.input.value
		},
		// #endif
		// number-数字输入键盘，app-vue下可以输入浮点数，app-nvue和小程序平台下只能输入整数
		// idcard-身份证输入键盘，微信、支付宝、百度、QQ小程序
		// digit-带小数点的数字键盘，App的nvue页面、微信、支付宝、百度、头条、QQ小程序
		// text-文本输入键盘
		type: {
			type: String,
			default: () => defProps.input.type
		},
		// 如果 textarea 是在一个 position:fixed 的区域，需要显示指定属性 fixed 为 true，
		// 兼容性：微信小程序、百度小程序、字节跳动小程序、QQ小程序
		fixed: {
			type: Boolean,
			default: () => defProps.input.fixed
		},
		// 是否禁用输入框
		disabled: {
			type: Boolean,
			default: () => defProps.input.disabled
		},
		// 禁用状态时的背景色
		disabledColor: {
			type: String,
			default: () => defProps.input.disabledColor
		},
		// 是否显示清除控件
		clearable: {
			type: Boolean,
			default: false
		},
		// 是否仅在聚焦时显示清除控件
		onlyClearableOnFocused: {
			type: Boolean,
			default: true
		},
		// 是否密码类型
		password: {
			type: Boolean,
			default: () => defProps.input.password
		},
		// 最大输入长度，设置为 -1 的时候不限制最大长度
		maxlength: {
			type: [String, Number],
			default: () => defProps.input.maxlength
		},
		// 	输入框为空时的占位符
		placeholder: {
			type: String,
			default: () => defProps.input.placeholder
		},
		// 指定placeholder的样式类，注意页面或组件的style中写了scoped时，需要在类名前写/deep/
		placeholderClass: {
			type: String,
			default: () => defProps.input.placeholderClass
		},
		// 指定placeholder的样式
		placeholderStyle: {
			type: [String, Object],
			default: () => defProps.input.placeholderStyle
		},
		// 是否显示输入字数统计，只在 type ="text"或type ="textarea"时有效
		showWordLimit: {
			type: Boolean,
			default: () => defProps.input.showWordLimit
		},
		// 设置右下角按钮的文字，有效值：send|search|next|go|done，兼容性详见uni-app文档
		// https://uniapp.dcloud.io/component/input
		// https://uniapp.dcloud.io/component/textarea
		confirmType: {
			type: String,
			default: () => defProps.input.confirmType
		},
		// 点击键盘右下角按钮时是否保持键盘不收起，H5无效
		confirmHold: {
			type: Boolean,
			default: () => defProps.input.confirmHold
		},
		// focus时，点击页面的时候不收起键盘，微信小程序有效
		holdKeyboard: {
			type: Boolean,
			default: () => defProps.input.holdKeyboard
		},
		// 自动获取焦点
		// 在 H5 平台能否聚焦以及软键盘是否跟随弹出，取决于当前浏览器本身的实现。nvue 页面不支持，需使用组件的 focus()、blur() 方法控制焦点
		focus: {
			type: Boolean,
			default: () => defProps.input.focus
		},
		// 键盘收起时，是否自动失去焦点，目前仅App3.0.0+有效
		autoBlur: {
			type: Boolean,
			default: () => defProps.input.autoBlur
		},
		// 是否去掉 iOS 下的默认内边距，仅微信小程序，且type=textarea时有效
		disableDefaultPadding: {
			type: Boolean,
			default: () => defProps.input.disableDefaultPadding
		},
		// 指定focus时光标的位置
		cursor: {
			type: [String, Number],
			default: () => defProps.input.cursor
		},
		// 输入框聚焦时底部与键盘的距离
		cursorSpacing: {
			type: [String, Number],
			default: () => defProps.input.cursorSpacing
		},
		// 光标起始位置，自动聚集时有效，需与selection-end搭配使用
		selectionStart: {
			type: [String, Number],
			default: () => defProps.input.selectionStart
		},
		// 光标结束位置，自动聚集时有效，需与selection-start搭配使用
		selectionEnd: {
			type: [String, Number],
			default: () => defProps.input.selectionEnd
		},
		// 键盘弹起时，是否自动上推页面
		adjustPosition: {
			type: Boolean,
			default: () => defProps.input.adjustPosition
		},
		// 输入框内容对齐方式，可选值为：left|center|right
		inputAlign: {
			type: String,
			default: () => defProps.input.inputAlign
		},
		// 输入框字体的大小
		fontSize: {
			type: [String, Number],
			default: () => defProps.input.fontSize
		},
		// 输入框字体颜色
		color: {
			type: String,
			default: () => defProps.input.color
		},
		// 输入框前置图标
		prefixIcon: {
			type: String,
			default: () => defProps.input.prefixIcon
		},
		// 前置图标样式，对象或字符串
		prefixIconStyle: {
			type: [String, Object],
			default: () => defProps.input.prefixIconStyle
		},
		// 输入框后置图标
		suffixIcon: {
			type: String,
			default: () => defProps.input.suffixIcon
		},
		// 后置图标样式，对象或字符串
		suffixIconStyle: {
			type: [String, Object],
			default: () => defProps.input.suffixIconStyle
		},
		// 边框类型，surround-四周边框，bottom-底部边框，none-无边框
		border: {
			type: String,
			default: () => defProps.input.border
		},
		// 是否只读，与disabled不同之处在于disabled会置灰组件，而readonly则不会
		readonly: {
			type: Boolean,
			default: () => defProps.input.readonly
		},
		// 输入框形状，circle-圆形，square-方形
		shape: {
			type: String,
			default: () => defProps.input.shape
		},
		// 用于处理或者过滤输入框内容的方法
		formatter: {
			type: [Function, null],
			default: () => defProps.input.formatter
		},
		// 是否忽略组件内对文本合成系统事件的处理
		ignoreCompositionEvent: {
			type: Boolean,
			default: true
		},
		// 光标颜色
		cursorColor: {
			type: String,
			default: () => defProps.input.cursorColor
		},
		// 密码类型可见性切换
		passwordVisibilityToggle: {
			type: Boolean,
			default: () => defProps.input.passwordVisibilityToggle
		}
	}
})
