gui-search.vue 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. <template>
  2. <view class="gui-flex gui-rows gui-nowrap gui-align-items-center"
  3. :style="{
  4. height:height,
  5. backgroundColor:background,
  6. borderRadius:borderRadius
  7. }">
  8. <text class="gui-search-icon gui-icons gui-block-text gui-text-center" @tap.stop="tapme"
  9. :style="{
  10. color:iconColor,
  11. fontSize:iconFontSize,
  12. lineHeight:height, width:iconWidth
  13. }">&#xe604;</text>
  14. <input type="text" :placeholder-class="placeholderClass"
  15. class="gui-search-input gui-flex1" :placeholder="placeholder"
  16. v-model="inputVal" v-if="!disabled" :focus="focus"
  17. :style="{
  18. height:inputHeight,
  19. lineHeight:inputHeight,
  20. fontSize:inputFontSize,
  21. color:inputColor
  22. }"
  23. @input="inputting" @confirm="confirm" confirm-type="search" />
  24. <text class="gui-search-input gui-flex1 gui-block-text"
  25. v-if="disabled" @tap.stop="tapme"
  26. :style="{
  27. height:inputHeight,
  28. lineHeight:inputHeight,
  29. fontSize:inputFontSize,
  30. color:iconColor}">{{placeholder}}</text>
  31. <text class="gui-search-icon gui-icons gui-block-text gui-text-center"
  32. v-if="inputVal.length > 0" @tap.stop="clearKwd"
  33. :style="{
  34. color:iconColor,
  35. fontSize:iconFontSize,
  36. lineHeight:height,
  37. width:iconWidth}">&#xe78a;</text>
  38. </view>
  39. </template>
  40. <script>
  41. export default{
  42. name : "gui-search",
  43. props : {
  44. height:{type:String, default:'66rpx'},
  45. background:{type:String, default:'#FFFFFF'},
  46. fontSize:{type:String, default:'28rpx'},
  47. iconWidth:{type:String, default:'70rpx'},
  48. iconColor:{type:String, default:'#A5A7B2'},
  49. iconFontSize:{type:String, default:'30rpx'},
  50. inputHeight:{type:String, default:'30rpx'},
  51. inputFontSize:{type:String, default:'26rpx'},
  52. inputColor:{type:String, default:'#323232'},
  53. placeholder:{type:String, default:'关键字'},
  54. placeholderClass:{type:String, default:''},
  55. kwd:{type:String, default:''},
  56. borderRadius:{type:String, default:'66rpx'},
  57. disabled:{type:Boolean, default:false},
  58. focus:{type:Boolean, default:false}
  59. },
  60. data() {
  61. return {
  62. inputVal : ''
  63. }
  64. },
  65. created: function (){
  66. this.inputVal = this.kwd;
  67. },
  68. watch:{
  69. kwd : function(val, vo){
  70. this.inputVal = val;
  71. }
  72. },
  73. methods:{
  74. clearKwd : function () {
  75. this.inputVal = '';
  76. this.$emit('clear', '');
  77. },
  78. inputting : function(e){
  79. this.$emit('inputting', e.detail.value);
  80. },
  81. confirm : function (e) {
  82. this.$emit('confirm', e.detail.value);
  83. uni.hideKeyboard();
  84. },
  85. tapme : function () {
  86. this.$emit('tapme')
  87. }
  88. }
  89. }
  90. </script>
  91. <style scoped>
  92. .gui-search-input{width:100rpx; margin:0 10rpx; border-width:0rpx; padding:0; background-color:rgba(255,255,255,0);}
  93. </style>