searchbar.js 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. module.exports =
  2. /** *** */ (function (modules) { // webpackBootstrap
  3. /** *** */ // The module cache
  4. /** *** */ const installedModules = {}
  5. /** *** */
  6. /** *** */ // The require function
  7. /** *** */ function __webpack_require__(moduleId) {
  8. /** *** */
  9. /** *** */ // Check if module is in cache
  10. /** *** */ if (installedModules[moduleId]) {
  11. /** *** */ return installedModules[moduleId].exports
  12. /** *** */ }
  13. /** *** */ // Create a new module (and put it into the cache)
  14. /** *** */ const module = installedModules[moduleId] = {
  15. /** *** */ i: moduleId,
  16. /** *** */ l: false,
  17. /** *** */ exports: {}
  18. /** *** */}
  19. /** *** */
  20. /** *** */ // Execute the module function
  21. /** *** */ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__)
  22. /** *** */
  23. /** *** */ // Flag the module as loaded
  24. /** *** */ module.l = true
  25. /** *** */
  26. /** *** */ // Return the exports of the module
  27. /** *** */ return module.exports
  28. /** *** */ }
  29. /** *** */
  30. /** *** */
  31. /** *** */ // expose the modules object (__webpack_modules__)
  32. /** *** */ __webpack_require__.m = modules
  33. /** *** */
  34. /** *** */ // expose the module cache
  35. /** *** */ __webpack_require__.c = installedModules
  36. /** *** */
  37. /** *** */ // define getter function for harmony exports
  38. /** *** */ __webpack_require__.d = function (exports, name, getter) {
  39. /** *** */ if (!__webpack_require__.o(exports, name)) {
  40. /** *** */ Object.defineProperty(exports, name, {enumerable: true, get: getter})
  41. /** *** */ }
  42. /** *** */ }
  43. /** *** */
  44. /** *** */ // define __esModule on exports
  45. /** *** */ __webpack_require__.r = function (exports) {
  46. /** *** */ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {
  47. /** *** */ Object.defineProperty(exports, Symbol.toStringTag, {value: 'Module'})
  48. /** *** */ }
  49. /** *** */ Object.defineProperty(exports, '__esModule', {value: true})
  50. /** *** */ }
  51. /** *** */
  52. /** *** */ // create a fake namespace object
  53. /** *** */ // mode & 1: value is a module id, require it
  54. /** *** */ // mode & 2: merge all properties of value into the ns
  55. /** *** */ // mode & 4: return value when already ns object
  56. /** *** */ // mode & 8|1: behave like require
  57. /** *** */ __webpack_require__.t = function (value, mode) {
  58. /** *** */ if (mode & 1) value = __webpack_require__(value)
  59. /** *** */ if (mode & 8) return value
  60. /** *** */ if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value
  61. /** *** */ const ns = Object.create(null)
  62. /** *** */ __webpack_require__.r(ns)
  63. /** *** */ Object.defineProperty(ns, 'default', {enumerable: true, value})
  64. /** *** */ if (mode & 2 && typeof value !== 'string') for (const key in value) __webpack_require__.d(ns, key, function (key) { return value[key] }.bind(null, key))
  65. /** *** */ return ns
  66. /** *** */ }
  67. /** *** */
  68. /** *** */ // getDefaultExport function for compatibility with non-harmony modules
  69. /** *** */ __webpack_require__.n = function (module) {
  70. /** *** */ const getter = module && module.__esModule
  71. /** *** */ ? function getDefault() { return module.default }
  72. /** *** */ : function getModuleExports() { return module }
  73. /** *** */ __webpack_require__.d(getter, 'a', getter)
  74. /** *** */ return getter
  75. /** *** */ }
  76. /** *** */
  77. /** *** */ // Object.prototype.hasOwnProperty.call
  78. /** *** */ __webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property) }
  79. /** *** */
  80. /** *** */ // __webpack_public_path__
  81. /** *** */ __webpack_require__.p = ''
  82. /** *** */
  83. /** *** */
  84. /** *** */ // Load entry module and return exports
  85. /** *** */ return __webpack_require__(__webpack_require__.s = 25)
  86. /** *** */ }({
  87. /***/ 25:
  88. /***/ (function (module, exports, __webpack_require__) {
  89. Component({
  90. options: {
  91. addGlobalClass: true
  92. },
  93. properties: {
  94. extClass: {
  95. type: String,
  96. value: ''
  97. },
  98. focus: {
  99. type: Boolean,
  100. value: false
  101. },
  102. placeholder: {
  103. type: String,
  104. value: '搜索'
  105. },
  106. value: {
  107. type: String,
  108. value: ''
  109. },
  110. search: {
  111. type: Function,
  112. value: null
  113. },
  114. throttle: {
  115. type: Number,
  116. value: 500
  117. },
  118. cancelText: {
  119. type: String,
  120. value: '取消'
  121. },
  122. cancel: {
  123. type: Boolean,
  124. value: true
  125. }
  126. },
  127. data: {
  128. result: []
  129. },
  130. lastSearch: Date.now(),
  131. lifetimes: {
  132. attached: function attached() {
  133. if (this.data.focus) {
  134. this.setData({
  135. searchState: true
  136. })
  137. }
  138. }
  139. },
  140. methods: {
  141. clearInput() {
  142. // @ts-ignore
  143. this.setData({
  144. value: '',
  145. focus: true,
  146. result: []
  147. }) // @ts-ignore
  148. this.triggerEvent('clear')
  149. },
  150. inputFocus(e) {
  151. // this.setData({
  152. // searchState: true
  153. // })
  154. // @ts-ignore
  155. this.triggerEvent('focus', e.detail)
  156. },
  157. inputBlur(e) {
  158. this.setData({
  159. focus: false
  160. })
  161. this.triggerEvent('blur', e.detail)
  162. },
  163. showInput() {
  164. this.setData({
  165. focus: true,
  166. searchState: true
  167. })
  168. },
  169. hideInput() {
  170. this.setData({
  171. searchState: false
  172. })
  173. },
  174. // @ts-ignore
  175. inputChange(e) {
  176. this.setData({
  177. value: e.detail.value
  178. })
  179. this.triggerEvent('input', e.detail)
  180. if (Date.now() - this.lastSearch < this.data.throttle) {
  181. return
  182. }
  183. if (typeof this.data.search !== 'function') {
  184. return
  185. }
  186. this.lastSearch = Date.now()
  187. this.timerId = setTimeout(() => {
  188. this.data.search(e.detail.value).then(json => {
  189. this.setData({
  190. result: json
  191. })
  192. }).catch(err => {
  193. console.error('search error', err)
  194. })
  195. }, this.data.throttle)
  196. },
  197. selectResult(e) {
  198. const {
  199. index
  200. } = e.currentTarget.dataset
  201. const item = this.data.result[index]
  202. this.triggerEvent('selectresult', {
  203. index,
  204. item
  205. })
  206. }
  207. }
  208. })
  209. /***/ })
  210. /** *** */}))