@ray-js/smart-ui
Version:
轻量、可靠的智能小程序 UI 组件库
290 lines (236 loc) • 9.02 kB
Markdown
---
category: 数据录入
---
用于搜索场景的输入框组件。
```jsx
import { Search } from '@ray-js/smart-ui';
```
`Search` 中,value 用于控制搜索框中的文字。
```jsx
import { Search } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value] = React.useState('');
return <Search value={value} placeholder="请输入搜索关键词" />;
}
```
`Search` 中,value 用于控制搜索框中的文字。可以通过 css 变量调整背景。
```less
.easy-demo {
--search-background-color: transparent;
--search-body-background-color:
}
```
```jsx
import { Search } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const onSearch = (event) => {
showToast({
icon: 'none',
title: `搜索:${event.detail}`
})
}
const [value] = React.useState('');
return <Search
value={value}
customClass="easy-demo"
searchText="搜索"
placeholder="请输入搜索关键词"
onSearch={onSearch}
/>;
}
```
`Search` 提供了 search 和 cancel 事件。search 事件在用户点击键盘上的搜索按钮触发。cancel 事件在用户点击搜索框右侧取消按钮时触发。
```jsx
import { showToast } from '@ray-js/ray';
import { Search } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value] = React.useState('');
const onSearch = (event) => {
showToast({
icon: 'none',
title: `搜索:${event.detail}`
})
}
const onCancel = () => {}
return <Search
value={value}
showAction
placeholder="请输入搜索关键词"
searchText="搜索"
onSearch={onSearch}
onCancel={onCancel}
actionText="取消"
/>
}
```
通过 `inputAlign` 属性可以设置搜索框内容的对齐方式。
```jsx
import { Search } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value] = React.useState('');
return <Search
value={value}
inputAlign="center"
placeholder="请输入搜索关键词"
/>
}
```
通过 `disabled` 属性可以将组件设置为禁用状态。
```jsx
import { Search } from '@ray-js/smart-ui';
import React from 'react';
export default function Demo() {
const [value] = React.useState('');
return <Search
value={value}
disabled
placeholder="请输入搜索关键词"
/>
}
```
`Search` 支持自定义右侧取消按钮,使用名字为 action 的 slot,并设置 useActionSlot 为 true 即可。
```jsx
import { showToast, View } from '@ray-js/ray';
import { Search, Icon } from '@ray-js/smart-ui';
import React, { useState } from 'react';
import TriangleDown from '@tuya-miniapp/icons/dist/svg/TriangleDown';
export default function Demo() {
const [value, setValue] = useState('');
const onSearch = (event) => {
showToast({
icon: 'none',
title: `搜索:${event.detail}`
})
}
const onClick = () => { }
const onChange = event => {
setValue(event.detail);
};
return <>
<Search
value={value}
label="地址"
shape="round"
useActionSlot
placeholder="请输入搜索关键词"
onSearch={onSearch}
onChange={onChange}
slot={{
action: (<View onClick={onClick} style={styles.searchAction}>搜索</View>),
}}
>
</Search>
<Search
value={value}
shape="round"
placeholder="请输入搜索关键词"
onSearch={onSearch}
onChange={onChange}
slot={{
searchButton: (<View onClick={onClick}>搜索</View>),
label: (<View slot="label">地址<Icon style={styles.icon} name={TriangleDown} size="12px" /></View>)
}}
>
</Search>
</>
}
const styles = {
searchAction: {
marginLeft: '10px',
marginRight: '10px'
},
icon: {
margin: '0 8px 0 4px'
}
}
```
| 参数 | 说明 | 类型 | 默认值 |
| --- | --- | --- | --- |
| actionText | 取消按钮文字 | _string_ | `Cancel` |
| background | 搜索框背景色 | _string_ | `
| clearIcon | 清除[图标svg字符串](/material/smartui?comId=icon)或图片链接 | _string_ | `close` |
| clearTrigger | 显示清除图标的时机,`always` 表示输入框不为空时展示,<br>`focus` 表示输入框聚焦且不为空时展示 | _string_ | `focus` |
| clearable | 是否启用清除控件 | _boolean_ | `true` |
| cursorSpacing | 输入框聚焦时底部与键盘的距离 | _number_ | `0` |
| disabled | 是否禁用输入框 | _boolean_ | `false` |
| error | 是否将输入内容标红 | _boolean_ | `false` |
| focus | 获取焦点 | _boolean_ | `false` |
| inputAlign | 输入框内容对齐方式,可选值为 `center` `right` | _string_ | `left` |
| label | 搜索框左侧文本 | _string_ | - |
| leftIcon | 输入框左侧图标名称或图片链接,可选值见 Icon 组件(如果设置了 use-left-icon-slot,则该属性无效) | _string_ | `search` |
| maxlength | 最大输入长度,设置为 -1 的时候不限制最大长度 | _number_ | `-1` |
| name | 在表单内提交时的标识符 | _string_ | - |
| placeholder | 输入框为空时占位符 | _string_ | - |
| placeholderStyle | 指定占位符的样式 | _React.CSSProperties_ | - |
| readonly | 是否只读 | _boolean_ | `false` |
| rightIcon | 输入框右侧图标名称或图片链接,可选值见 Icon 组件(如果设置了 use-right-icon-slot,则该属性无效) | _string_ | - |
| shape | 形状,可选值为 `round` | _string_ | `square` |
| showAction | 是否在搜索框右侧显示取消按钮 | _boolean_ | `false` |
| useActionSlot | 是否使用 action slot | _boolean_ | `false` |
| useLeftIconSlot | 是否使用输入框左侧图标 slot | _boolean_ | `false` |
| useRightIconSlot | 是否使用输入框右侧图标 slot | _boolean_ | `false` |
| value | 当前输入的值 | _string \| number_ | - |
| searchText `v2.0.0` | 搜索按钮文字 | _string_ | - |
| 事件名 | 说明 | 参数 |
| ---------------- | ------------------ | ------------------------ |
| onBlur | 输入框失焦时触发 | - |
| onCancel | 取消搜索搜索时触发 | - |
| onChange | 输入内容变化时触发 | event.detail: 当前输入值 |
| onClear | 点击清空控件时触发 | - |
| onClickInput | 点击搜索区域时触发 | - |
| onFocus | 输入框聚焦时触发 | - |
| onSearch | 确定搜索时触发 | event.detail: 当前输入值 |
| 名称 | 说明 |
| --- | --- |
| action | 自定义搜索框右侧按钮,需要在`use-action-slot`为 true 时才会显示 |
| label | 自定义搜索框左侧文本 |
| leftIcon | 自定义输入框左侧图标,需要在`use-left-icon-slot`为 true 时才会显示 |
| rightIcon | 自定义输入框右侧图标,需要在`use-right-icon-slot`为 true 时才会显示 |
| searchButton `v2.0.0` | 自定义搜索按钮 |
| 类名 | 说明 |
| ------------ | -------------- |
| cancelClass | 取消按钮样式类 |
| customClass | 根节点样式类 |
| fieldClass | 搜索框样式类 |
| inputClass | 输入框样式类 |
组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](/material/smartui?comId=config-provider)。
| 名称 | 默认值 | 描述 |
| --- | --- | --- |
| --search-background-color | _var(--app-B3,
| --search-body-background-color | _var(--app-B4-N9,rgba(0,0,0,0.05))_ | 搜索内容背景颜色 |
| --search-padding | _12px var(--padding-md, 16px)_ | 搜索框内边距 |
| --search-input-height | _24px_ | 输入框高度 |
| --search-label-padding | _0 5px_ | 标签内边距 |
| --search-label-color | _var(--app-B4_N1, #000)_ | 标签文本颜色 |
| --search-label-font-size | _var(--font-size-md)_ | 标签字体大小 |
| --search-value-font-size | _var(--font-size-md)_ | 输入文字字体大小 |
| --search-left-icon-color | _var(--app-B4_N4, rgba(0,0,0,0.4))_ | 左侧图标颜色 |
| --search-action-padding | _0 var(--padding-md) 0 var(--padding-sm)_ | 操作按钮内边距 |
| --search-action-text-color | _var(--app-B4_N3, rgba(0,0,0,0.5))_ | 操作按钮文本颜色 |
| --search-action-font-size | _var(--font-size-md)_ | 操作按钮字体大小 |
| --search-submit-font-size | _var(--font-size-md)_ | 提交按钮字体大小 |
| --search-submit-color | _var(--app-M1, #3678e3)_ | 提交按钮颜色 |
| --search-btn-hover-color | _var(--app-B4_N9, rgba(0,0,0,0.05))_ | 按钮悬停颜色 |
| --search-submit-line-width | _1px_ | 提交按钮线宽度 |
| --search-submit-line-height | _12px_ | 提交按钮线高度 |
| --search-btn-hover-opacity | _0.4_ | 按钮悬停透明度 |