diff --git a/doc.config.js b/doc.config.js index 7dffbf1e..647b0f1e 100644 --- a/doc.config.js +++ b/doc.config.js @@ -55,9 +55,10 @@ module.exports = { label: '表单', include: { field: require('./packages/field/README.md'), - switch: require('./packages/switch/README.md'), + search: require('./packages/search/README.md'), select: require('./packages/select/README.md'), - stepper: require('./packages/stepper/README.md') + stepper: require('./packages/stepper/README.md'), + switch: require('./packages/switch/README.md') } }, { diff --git a/example/app.json b/example/app.json index d9193aac..c6a3d078 100644 --- a/example/app.json +++ b/example/app.json @@ -19,6 +19,7 @@ "pages/stepper/index", "pages/steps/index", "pages/switch/index", + "pages/search/index", "pages/tab/index", "pages/tag/index", "pages/toptips/index", diff --git a/example/pages/dashboard/config.js b/example/pages/dashboard/config.js index e196b895..d0124375 100644 --- a/example/pages/dashboard/config.js +++ b/example/pages/dashboard/config.js @@ -50,6 +50,9 @@ export default { }, { name: 'Switch 开关', path: '/pages/switch/index' + }, { + name: 'Search 搜索', + path: '/pages/search/index' }, { name: 'Tab 标签', path: '/pages/tab/index' diff --git a/example/pages/search/index.js b/example/pages/search/index.js new file mode 100644 index 00000000..238d25b0 --- /dev/null +++ b/example/pages/search/index.js @@ -0,0 +1,20 @@ +Page({ + data: { + inputValue: '', + focus: true + }, + + searchChange(e) { + this.setData({ + inputValue: e.detail.value + }); + }, + + searchDone(e) { + console.error('search', e.detail.value) + }, + + handleCancel() { + console.error('cancel') + } +}); diff --git a/example/pages/search/index.json b/example/pages/search/index.json new file mode 100644 index 00000000..a36fc259 --- /dev/null +++ b/example/pages/search/index.json @@ -0,0 +1,9 @@ +{ + "navigationBarTitleText": "Search 搜索", + "usingComponents": { + "zan-icon": "../icon/index", + "zan-search": "../../dist/search/index", + "zan-panel": "../../dist/panel/index", + "doc-page": "../../components/doc-page/index" + } +} diff --git a/example/pages/search/index.wxml b/example/pages/search/index.wxml new file mode 100644 index 00000000..995a2160 --- /dev/null +++ b/example/pages/search/index.wxml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + diff --git a/example/pages/search/index.wxss b/example/pages/search/index.wxss new file mode 100644 index 00000000..e69de29b diff --git a/packages/search/README.md b/packages/search/README.md new file mode 100644 index 00000000..232266ff --- /dev/null +++ b/packages/search/README.md @@ -0,0 +1,65 @@ +## Search 搜索 + +### 使用指南 +在 index.json 中引入组件 +```json +{ + "usingComponents": { + "zan-search": "/packages/search/index" + } +} +``` + +### 代码演示 + +```wxml + +``` + +```js +data: { + inputValue: '', + focus: true +}, +searchChange(e) { + this.setData({ + inputValue: e.detail.value + }); +}, + +searchDone(e) { + console.log('search', e.detail.value) +} +``` + +### API + +#### 参数 +| 名称 | 类型 | 是否必须 | 默认 | 描述 | +| ---------------- | ----------- | -------- | ----- | --------------------------------------------------- | +| keyword | String | 否 | 无 | 默认搜索关键字 | +| disabled | Boolean | 否 | false | 是否禁用 | +| focus | Boolean | 否 | false | 是否获取焦点 | +| useCancel | Boolean | 否 | false | 是否显示取消按钮 | +| cancelText | String | 否 | 取消 | 取消按钮文字 | | +| placeholder | String | 否 | 无 | 输入框占位字符串 | +| cancelStyle | String | 否 | 无 | “取消”的样式 | +| inputStyle | String | 否 | 无 | “输入框”的样式 +| searchStyle | String | 否 | 无 | “整个搜索”的样式 + +#### 事件 + +| 名称 | 类型 | 是否必须 | 默认 | 描述 +| ---------------- | ----------- | -------- | ----- | ------| +| bindcancel | EventHandle | 否 | 无 | 取消按钮点击时触发 +| bindsearch | EventHandle | 否 | 无 | 键盘点击确认时触发 +| bindchange | EventHandle | 否 | 无 | 内容改变时触发 +| bindblur | EventHandle | 否 | 无 | 焦点丢失时触发 +| bindfocus | EventHandle | 否 | 无 | 焦点聚焦时触发 diff --git a/packages/search/index.js b/packages/search/index.js new file mode 100644 index 00000000..42e1a1b7 --- /dev/null +++ b/packages/search/index.js @@ -0,0 +1,67 @@ +Component({ + externalClasses: ['search-class', 'input-class', 'cancel-class'], + properties: { + cancelText: { + type: String, + value: '取消' + }, + disabled: { + type: Boolean, + value: false + }, + focus: { + type: Boolean, + value: false + }, + keyword: { + type: String, + value: '' + }, + show: { + type: Array, + value: ['icon', 'cancel'] + }, + placeholder: { + type: String, + value: '请输入查询关键字', + observer(newVal) { + this.setData({ + inputWidth: `${(newVal.length * 14) + 45}px` + }); + } + }, + useCancel: { + type: Boolean + }, + searchStyle: String, + cancelStyle: String, + inputStyle: String, + }, + data: { + inputWidth: 'auto' + }, + methods: { + blur() { + this.triggerEvent('blur'); + }, + clearInput() { + this.setData({ + focus: true + }); + this.triggerEvent('change', { value: '' }); + }, + cancelSearch() { + this.triggerEvent('cancel'); + }, + focus() { + this.triggerEvent('focus'); + }, + inputChange(e) { + this._inputvalue = e.detail.value; + this.triggerEvent('change', { value: e.detail.value }); + }, + search(e) { + this.triggerEvent('search', { value: e.detail.value }); + } + } +}); diff --git a/packages/search/index.json b/packages/search/index.json new file mode 100644 index 00000000..32640e0d --- /dev/null +++ b/packages/search/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/packages/search/index.pcss b/packages/search/index.pcss new file mode 100644 index 00000000..be84d2b7 --- /dev/null +++ b/packages/search/index.pcss @@ -0,0 +1,89 @@ +.zan-search { + box-sizing: border-box; + display: flex; + justify-content: space-between; + align-items: center; + background: transparent; + padding:5px 10px; +} + +.zan-search.center-placeholder { + background: #ffffff; +} + +.zan-search.center-placeholder .zan-search__form { + margin-left: 50%; + transform: translateX(-50%); + border: none; +} + +.zan-search.zan-cell::after { + display: none; +} + +.zan-search__form { + display: flex; + flex: 1; + background:#ffffff; + border-radius: 4rpx; + height: 64rpx; + line-height: 56rpx; + justify-content: space-between; + align-items: center; +} + +.zan-search picker { + display: flex; + align-items: center; + height: 100%; + padding-right: 20rpx; +} + +.zan-search__form .picker { + position: relative; + width: 110rpx; + height: 100%; + color: #666; + font-size: 28rpx; + margin-left: 20rpx; +} +.zan-search__form .picker::after { + content: ''; + width: 0; + height: 0; + position: absolute; + right: 0; + top: 50%; + margin-top: -6rpx; + border-top: 12rpx solid #333; + border-right: 8rpx solid transparent; + border-left: 8rpx solid transparent; +} +.zan-search__form input { + height: 100%; + flex: 1; + padding: 0 20rpx; + font-size: 28rpx; + color: #333; +} +.zan-search__form icon { + margin-left: 20rpx; + line-height: 1; +} + +.zan-search__clear { + padding: 12rpx 20rpx; +} + +.zan-search__placeholder { + font-size: 28rpx; + color: #cacaca; +} +.zan-search__cancel { + align-self: stretch; + display: inline-flex; + align-items: center; + padding-left: 30rpx; + font-size: 28rpx; + color: #3388FF; +} diff --git a/packages/search/index.wxml b/packages/search/index.wxml new file mode 100644 index 00000000..1eeafd04 --- /dev/null +++ b/packages/search/index.wxml @@ -0,0 +1,40 @@ + + + + + + + + {{cancelText || '取消'}} + +