@aochuang/common 1.0.1 → 1.0.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (283) hide show
  1. package/common/index.js +13 -0
  2. package/common/resizable/index.js +3 -0
  3. package/common/resizable/resizable.vue +260 -0
  4. package/common/scroll-load-more/index.js +3 -0
  5. package/common/scroll-load-more/scroll-load-more.vue +397 -0
  6. package/common/static-map/index.js +3 -0
  7. package/common/static-map/static-map.vue +87 -0
  8. package/common/tooltip/tooltip.vue +27 -7
  9. package/common/viewer/index.js +4 -0
  10. package/common/viewer/util.js +40 -0
  11. package/common/viewer/viewer.vue +607 -0
  12. package/common/viewer-pedestal/index.js +3 -0
  13. package/common/viewer-pedestal/viewer-pedestal.vue +70 -0
  14. package/common/voice/index.js +21 -0
  15. package/common/voice/util.js +18 -0
  16. package/common/voice/voice-player-aac.js +584 -0
  17. package/common/voice/voice-player-audio.js +159 -0
  18. package/common/voice/voice-player.js +309 -0
  19. package/common/voice/voice.vue +274 -0
  20. package/common/voice-player/index.js +3 -0
  21. package/common/voice-player/voice-player.vue +785 -0
  22. package/common/waterfall/index.js +3 -0
  23. package/common/waterfall/waterfall.vue +169 -0
  24. package/common/wechat-emoji/emoji/666.png +0 -0
  25. package/common/wechat-emoji/emoji/Emm.png +0 -0
  26. package/common/wechat-emoji/emoji/OK.png +0 -0
  27. package/common/wechat-emoji/emoji//344/272/262/344/272/262.png +0 -0
  28. package/common/wechat-emoji/emoji//344/276/277/344/276/277.png +0 -0
  29. package/common/wechat-emoji/emoji//345/201/267/347/254/221.png +0 -0
  30. package/common/wechat-emoji/emoji//345/202/262/346/205/242.png +0 -0
  31. package/common/wechat-emoji/emoji//345/206/215/350/247/201.png +0 -0
  32. package/common/wechat-emoji/emoji//345/207/213/350/260/242.png +0 -0
  33. package/common/wechat-emoji/emoji//345/210/240/351/231/244.png +0 -0
  34. package/common/wechat-emoji/emoji//345/212/240/346/262/271.png +0 -0
  35. package/common/wechat-emoji/emoji//345/213/276/345/274/225.png +0 -0
  36. package/common/wechat-emoji/emoji//345/217/221/345/221/206.png +0 -0
  37. package/common/wechat-emoji/emoji//345/217/221/346/200/222.png +0 -0
  38. package/common/wechat-emoji/emoji//345/217/221/346/212/226.png +0 -0
  39. package/common/wechat-emoji/emoji//345/217/257/346/200/234.png +0 -0
  40. package/common/wechat-emoji/emoji//345/217/263/345/223/274/345/223/274.png +0 -0
  41. package/common/wechat-emoji/emoji//345/217/271/346/260/224.png +0 -0
  42. package/common/wechat-emoji/emoji//345/220/203/347/223/234.png +0 -0
  43. package/common/wechat-emoji/emoji//345/220/210/345/215/201.png +0 -0
  44. package/common/wechat-emoji/emoji//345/220/220.png +0 -0
  45. package/common/wechat-emoji/emoji//345/220/220/350/210/214/345/244/264.png +0 -0
  46. package/common/wechat-emoji/emoji//345/221/262/347/211/231.png +0 -0
  47. package/common/wechat-emoji/emoji//345/222/222/351/252/202.png +0 -0
  48. package/common/wechat-emoji/emoji//345/222/226/345/225/241.png +0 -0
  49. package/common/wechat-emoji/emoji//345/223/207.png +0 -0
  50. package/common/wechat-emoji/emoji//345/223/210/346/254/240.png +0 -0
  51. package/common/wechat-emoji/emoji//345/225/244/351/205/222.png +0 -0
  52. package/common/wechat-emoji/emoji//345/230/230.png +0 -0
  53. package/common/wechat-emoji/emoji//345/230/264/345/224/207.png +0 -0
  54. package/common/wechat-emoji/emoji//345/230/277/345/223/210.png +0 -0
  55. package/common/wechat-emoji/emoji//345/233/247.png +0 -0
  56. package/common/wechat-emoji/emoji//345/233/260.png +0 -0
  57. package/common/wechat-emoji/emoji//345/235/217/347/254/221.png +0 -0
  58. package/common/wechat-emoji/emoji//345/244/247/345/223/255.png +0 -0
  59. package/common/wechat-emoji/emoji//345/244/251/345/225/212.png +0 -0
  60. package/common/wechat-emoji/emoji//345/244/252/351/230/263.png +0 -0
  61. package/common/wechat-emoji/emoji//345/244/261/346/234/233.png +0 -0
  62. package/common/wechat-emoji/emoji//345/245/213/346/226/227.png +0 -0
  63. package/common/wechat-emoji/emoji//345/245/270/347/254/221.png +0 -0
  64. package/common/wechat-emoji/emoji//345/245/275/347/232/204.png +0 -0
  65. package/common/wechat-emoji/emoji//345/247/224/345/261/210.png +0 -0
  66. package/common/wechat-emoji/emoji//345/256/263/347/276/236.png +0 -0
  67. package/common/wechat-emoji/emoji//345/260/264/345/260/254.png +0 -0
  68. package/common/wechat-emoji/emoji//345/267/246/345/223/274/345/223/274.png +0 -0
  69. package/common/wechat-emoji/emoji//345/272/206/347/245/235.png +0 -0
  70. package/common/wechat-emoji/emoji//345/274/261.png +0 -0
  71. package/common/wechat-emoji/emoji//345/274/272.png +0 -0
  72. package/common/wechat-emoji/emoji//345/276/227/346/204/217.png +0 -0
  73. package/common/wechat-emoji/emoji//345/276/256/347/254/221.png +0 -0
  74. package/common/wechat-emoji/emoji//345/277/203/347/242/216.png +0 -0
  75. package/common/wechat-emoji/emoji//345/277/253/345/223/255/344/272/206.png +0 -0
  76. package/common/wechat-emoji/emoji//346/200/204/347/201/253.png +0 -0
  77. package/common/wechat-emoji/emoji//346/201/220/346/203/247.png +0 -0
  78. package/common/wechat-emoji/emoji//346/202/240/351/227/262.png +0 -0
  79. package/common/wechat-emoji/emoji//346/203/212/346/201/220.png +0 -0
  80. package/common/wechat-emoji/emoji//346/203/212/350/256/266.png +0 -0
  81. package/common/wechat-emoji/emoji//346/204/211/345/277/253.png +0 -0
  82. package/common/wechat-emoji/emoji//346/206/250/347/254/221.png +0 -0
  83. package/common/wechat-emoji/emoji//346/211/223/350/204/270.png +0 -0
  84. package/common/wechat-emoji/emoji//346/212/223/347/213/202.png +0 -0
  85. package/common/wechat-emoji/emoji//346/212/240/351/274/273.png +0 -0
  86. package/common/wechat-emoji/emoji//346/212/261/346/213/263.png +0 -0
  87. package/common/wechat-emoji/emoji//346/213/245/346/212/261.png +0 -0
  88. package/common/wechat-emoji/emoji//346/213/263/345/244/264.png +0 -0
  89. package/common/wechat-emoji/emoji//346/215/202/350/204/270.png +0 -0
  90. package/common/wechat-emoji/emoji//346/217/241/346/211/213.png +0 -0
  91. package/common/wechat-emoji/emoji//346/222/207/345/230/264.png +0 -0
  92. package/common/wechat-emoji/emoji//346/223/246/346/261/227.png +0 -0
  93. package/common/wechat-emoji/emoji//346/225/262/346/211/223.png +0 -0
  94. package/common/wechat-emoji/emoji//346/227/240/350/257/255.png +0 -0
  95. package/common/wechat-emoji/emoji//346/227/272/346/237/264.png +0 -0
  96. package/common/wechat-emoji/emoji//346/231/225.png +0 -0
  97. package/common/wechat-emoji/emoji//346/234/210/344/272/256.png +0 -0
  98. package/common/wechat-emoji/emoji//346/234/272/346/231/272.png +0 -0
  99. package/common/wechat-emoji/emoji//346/261/227.png +0 -0
  100. package/common/wechat-emoji/emoji//346/265/201/346/261/227.png +0 -0
  101. package/common/wechat-emoji/emoji//346/265/201/346/263/252.png +0 -0
  102. package/common/wechat-emoji/emoji//347/202/270/345/274/271.png +0 -0
  103. package/common/wechat-emoji/emoji//347/203/237/350/212/261.png +0 -0
  104. package/common/wechat-emoji/emoji//347/210/206/347/253/271.png +0 -0
  105. package/common/wechat-emoji/emoji//347/210/261/345/277/203.png +0 -0
  106. package/common/wechat-emoji/emoji//347/214/252/345/244/264.png +0 -0
  107. package/common/wechat-emoji/emoji//347/216/253/347/221/260.png +0 -0
  108. package/common/wechat-emoji/emoji//347/224/237/347/227/205.png +0 -0
  109. package/common/wechat-emoji/emoji//347/226/221/351/227/256.png +0 -0
  110. package/common/wechat-emoji/emoji//347/231/274.png +0 -0
  111. package/common/wechat-emoji/emoji//347/231/275/347/234/274.png +0 -0
  112. package/common/wechat-emoji/emoji//347/232/261/347/234/211.png +0 -0
  113. package/common/wechat-emoji/emoji//347/235/241.png +0 -0
  114. package/common/wechat-emoji/emoji//347/240/264/346/266/225/344/270/272/347/254/221.png +0 -0
  115. package/common/wechat-emoji/emoji//347/244/274/347/211/251.png +0 -0
  116. package/common/wechat-emoji/emoji//347/244/276/344/274/232/347/244/276/344/274/232.png +0 -0
  117. package/common/wechat-emoji/emoji//347/246/217.png +0 -0
  118. package/common/wechat-emoji/emoji//347/254/221/350/204/270.png +0 -0
  119. package/common/wechat-emoji/emoji//347/272/242/345/214/205.png +0 -0
  120. package/common/wechat-emoji/emoji//347/277/273/347/231/275/347/234/274.png +0 -0
  121. package/common/wechat-emoji/emoji//350/200/266.png +0 -0
  122. package/common/wechat-emoji/emoji//350/203/234/345/210/251.png +0 -0
  123. package/common/wechat-emoji/emoji//350/204/270/347/272/242.png +0 -0
  124. package/common/wechat-emoji/emoji//350/211/262.png +0 -0
  125. package/common/wechat-emoji/emoji//350/213/246/346/266/251.png +0 -0
  126. package/common/wechat-emoji/emoji//350/217/234/345/210/200.png +0 -0
  127. package/common/wechat-emoji/emoji//350/233/213/347/263/225.png +0 -0
  128. package/common/wechat-emoji/emoji//350/241/260.png +0 -0
  129. package/common/wechat-emoji/emoji//350/243/202/345/274/200.png +0 -0
  130. package/common/wechat-emoji/emoji//350/245/277/347/223/234.png +0 -0
  131. package/common/wechat-emoji/emoji//350/256/251/346/210/221/347/234/213/347/234/213.png +0 -0
  132. package/common/wechat-emoji/emoji//350/260/203/347/232/256.png +0 -0
  133. package/common/wechat-emoji/emoji//350/267/263/350/267/263.png +0 -0
  134. package/common/wechat-emoji/emoji//350/275/254/345/234/210.png +0 -0
  135. package/common/wechat-emoji/emoji//351/204/231/350/247/206.png +0 -0
  136. package/common/wechat-emoji/emoji//351/227/255/345/230/264.png +0 -0
  137. package/common/wechat-emoji/emoji//351/230/264/351/231/251.png +0 -0
  138. package/common/wechat-emoji/emoji//351/232/276/350/277/207.png +0 -0
  139. package/common/wechat-emoji/emoji//351/252/267/351/253/205.png +0 -0
  140. package/common/wechat-emoji/emoji//351/254/274/350/204/270.png +0 -0
  141. package/common/wechat-emoji/emoji//351/270/241.png +0 -0
  142. package/common/wechat-emoji/emoji//351/274/223/346/216/214.png +0 -0
  143. package/common/wechat-emoji/index.js +14 -0
  144. package/common/wechat-emoji/order.json +111 -0
  145. package/common/wechat-emoji/utils.js +52 -0
  146. package/common/wechat-emoji/wechat-emoji.vue +74 -0
  147. package/common/wechat-emoji-select/index.js +3 -0
  148. package/common/wechat-emoji-select/wechat-emoji-select.vue +67 -0
  149. package/components/advanced-filter/advanced-filter-condition.vue +1 -1
  150. package/components/advanced-filter/advanced-filter.vue +6 -1
  151. package/components/advanced-filter/index.js +11 -12
  152. package/components/avatar/avatar.vue +9 -5
  153. package/components/button/button.vue +15 -2
  154. package/components/date-picker/date-picker.vue +9 -2
  155. package/components/dialog/dialog.vue +6 -1
  156. package/components/dropdown/dropdown-item.vue +10 -2
  157. package/components/dropdown/dropdown.vue +45 -5
  158. package/components/dropdown/index.js +8 -8
  159. package/components/empty/empty.vue +29 -2
  160. package/components/filter/filter.vue +1 -1
  161. package/components/filter/index.js +10 -10
  162. package/components/form/form.vue +33 -2
  163. package/components/form/index.js +11 -0
  164. package/components/grid/grid-column.vue +1 -0
  165. package/components/grid/grid-table.vue +6 -4
  166. package/components/grid/grid.vue +15 -3
  167. package/components/grid/index.js +31 -32
  168. package/components/icon/demo_index.html +2752 -1073
  169. package/components/icon/iconfont.css +299 -7
  170. package/components/icon/iconfont.js +1 -1
  171. package/components/icon/iconfont.json +518 -7
  172. package/components/icon/iconfont.ttf +0 -0
  173. package/components/icon/iconfont.woff +0 -0
  174. package/components/icon/iconfont.woff2 +0 -0
  175. package/components/image/image.vue +91 -13
  176. package/components/image/index.js +3 -1
  177. package/components/image/util.js +82 -1
  178. package/components/index.js +6 -2
  179. package/components/menu/index.js +13 -7
  180. package/components/menu/menu-group.vue +6 -1
  181. package/components/menu/menu-item.vue +57 -3
  182. package/components/menu/menu.vue +1 -1
  183. package/components/message/message.js +12 -9
  184. package/components/message-box/index.js +4 -0
  185. package/components/pagination/pagination.vue +11 -7
  186. package/components/popover/popover.vue +24 -1
  187. package/components/searchbox/searchbox.vue +15 -3
  188. package/components/select/index.js +2 -0
  189. package/components/select/select.vue +7 -1
  190. package/components/skeleton/index.js +2 -0
  191. package/components/sortable/index.js +7 -5
  192. package/components/sortable/sortable.vue +5 -0
  193. package/components/tabbar/index.js +9 -0
  194. package/components/tabbar/tabbar-item.vue +162 -0
  195. package/components/tabbar/tabbar.vue +49 -0
  196. package/components/tabs/index.js +2 -0
  197. package/components/tabs/tabs.vue +5 -0
  198. package/components/tag/index.js +4 -4
  199. package/components/tag/tag.less +12 -3
  200. package/components/textarea/textarea.vue +19 -3
  201. package/components/time-picker/time-picker.vue +7 -0
  202. package/components/toolbar/index.js +2 -0
  203. package/components/transfer/index.js +4 -4
  204. package/components/transfer/transfer-element.vue +109 -0
  205. package/components/transfer/transfer.vue +22 -7
  206. package/components/tree/tree.vue +175 -16
  207. package/components/video/video.vue +50 -2
  208. package/package.json +12 -1
  209. package/uni-common/more-button/more-button.vue +23 -0
  210. package/uni-common/popup-select/popup-select.vue +217 -0
  211. package/uni-common/portray/portray.vue +54 -0
  212. package/uni-common/refresh-view/refresh-view.vue +94 -0
  213. package/uni-common/scroll-load-more/scroll-load-more.vue +201 -0
  214. package/uni-common/tree-popup-select/index.js +3 -0
  215. package/uni-common/tree-popup-select/tree-popup-select-panel.vue +92 -0
  216. package/uni-common/tree-popup-select/tree-popup-select.vue +124 -0
  217. package/uni-common/tree-popup-select/util.js +19 -0
  218. package/uni-common/wechat-emoji/index.js +13 -0
  219. package/uni-common/wechat-emoji/order.json +438 -0
  220. package/uni-common/wechat-emoji/utils.js +52 -0
  221. package/uni-common/wechat-emoji/wechat-emoji.vue +74 -0
  222. package/uni-components/avatar/avatar.vue +81 -0
  223. package/uni-components/badge/badge.vue +57 -0
  224. package/uni-components/empty/empty.vue +27 -0
  225. package/uni-components/exception/exception.vue +47 -0
  226. package/uni-components/icon/demo.css +539 -0
  227. package/uni-components/icon/demo_index.html +1591 -0
  228. package/uni-components/icon/icon.vue +48 -0
  229. package/uni-components/icon/iconfont.css +259 -0
  230. package/uni-components/icon/iconfont.js +1 -0
  231. package/uni-components/icon/iconfont.json +436 -0
  232. package/uni-components/icon/iconfont.ttf +0 -0
  233. package/uni-components/icon/iconfont.woff +0 -0
  234. package/uni-components/icon/iconfont.woff2 +0 -0
  235. package/uni-components/icon/index.js +3 -0
  236. package/uni-components/image/image.vue +38 -0
  237. package/uni-components/image/index.js +3 -0
  238. package/uni-components/loading/index.js +3 -0
  239. package/uni-components/loading/loading.vue +30 -0
  240. package/uni-components/message/message-item.vue +29 -0
  241. package/uni-components/message/message.js +80 -0
  242. package/uni-components/message/message.vue +30 -0
  243. package/uni-components/message-box/message-box-item.vue +54 -0
  244. package/uni-components/message-box/message-box.js +91 -0
  245. package/uni-components/message-box/message-box.vue +52 -0
  246. package/uni-components/picker/picker.vue +270 -0
  247. package/uni-components/popup/index.js +3 -0
  248. package/uni-components/popup/popup.vue +143 -0
  249. package/uni-components/search/index.js +3 -0
  250. package/uni-components/search/search.vue +86 -0
  251. package/uni-components/skeleton/skeleton-chat.vue +85 -0
  252. package/uni-components/skeleton/skeleton-contact.vue +84 -0
  253. package/uni-components/skeleton/skeleton-detail.vue +84 -0
  254. package/uni-components/skeleton/skeleton.vue +32 -0
  255. package/uni-components/tabbar/tabbar-item.vue +33 -0
  256. package/uni-components/tabbar/tabbar.vue +87 -0
  257. package/uni-components/tree/index.js +3 -0
  258. package/uni-components/tree/tree-select-loading.vue +48 -0
  259. package/uni-components/tree/tree-select-node.vue +202 -0
  260. package/uni-components/tree/tree-select-store.js +520 -0
  261. package/uni-components/tree/tree-select.vue +210 -0
  262. package/uni-components/tree/utils.js +33 -0
  263. package/uni-components/video/index.js +3 -0
  264. package/uni-components/video/video.vue +29 -0
  265. package/uni-components/voice/index.js +3 -0
  266. package/uni-components/voice/voice.vue +24 -0
  267. package/uni-components/waterfall/index.js +3 -0
  268. package/uni-components/waterfall/util.js +72 -0
  269. package/uni-components/waterfall/waterfall.vue +147 -0
  270. package/utils/data.js +128 -0
  271. package/utils/date.js +484 -44
  272. package/utils/dom.js +37 -0
  273. package/utils/event.js +92 -0
  274. package/utils/file.js +76 -0
  275. package/utils/json.js +22 -1
  276. package/utils/network-detector.js +258 -0
  277. package/utils/oss.js +11 -0
  278. package/utils/share-message.js +81 -0
  279. package/utils/share-websocket.js +127 -0
  280. package/utils/string.js +59 -0
  281. package/utils/time-task.js +60 -0
  282. package/utils/url.js +46 -0
  283. package/utils/util.js +416 -1
@@ -0,0 +1,52 @@
1
+ import EmojiOrder from './order.json'
2
+ import { html2Escape } from '../../utils/string'
3
+
4
+ let emojiRegrex = null
5
+ function generateEmojiRegrex () {
6
+ if (emojiRegrex) {
7
+ return emojiRegrex
8
+ }
9
+ const content = EmojiOrder.map(v => '\\[' + v + '\\]').join('|')
10
+ emojiRegrex = new RegExp(`(${content})`, 'g')
11
+ return emojiRegrex
12
+ }
13
+
14
+ let emojiPath = null
15
+ function generateEmojiPaths () {
16
+ if (emojiPath) {
17
+ return emojiPath
18
+ }
19
+ emojiPath = EmojiOrder.reduce((rs, v) => {
20
+ rs[v] = require(`./emoji/${v}.png`)
21
+ return rs
22
+ }, {})
23
+ return emojiPath
24
+ }
25
+
26
+ export function loadWechatEmojiOptionsData () {
27
+ return new Promise((resolve, reject) => {
28
+ const data = generateEmojiPaths()
29
+ resolve(Object.keys(data).reduce((rs, k) => {
30
+ rs.push({
31
+ label: k,
32
+ src: data[k]
33
+ })
34
+ return rs
35
+ }, []))
36
+ })
37
+ }
38
+
39
+ export function parseWechatEmoji (content, isEscape) {
40
+ if (isEscape !== false) {
41
+ content = html2Escape(content)
42
+ }
43
+ const regrex = generateEmojiRegrex()
44
+ const paths = generateEmojiPaths()
45
+ return content.replace(regrex, (str1, str2) => {
46
+ const emoji = str2.substr(1, str2.length - 2)
47
+ if (paths[emoji]) {
48
+ return `<img width="24px" height="24px" src="${paths[emoji]}" alt="${emoji}"/>`
49
+ }
50
+ return str2
51
+ })
52
+ }
@@ -0,0 +1,74 @@
1
+ <template>
2
+ <div class="ac-wechat-emoji">
3
+ <ul class="ac-wechat-emoji__list">
4
+ <li
5
+ class="ac-wechat-emoji__item"
6
+ v-for="(item, index) in data"
7
+ :key="index"
8
+ :style="{'background-image': `url(${item.src})`}"
9
+ :title="item.label"
10
+ @click="handleItemClick(item)"
11
+ >{{item.label}}</li>
12
+ </ul>
13
+ </div>
14
+ </template>
15
+ <script>
16
+ import { loadWechatEmojiOptionsData } from './utils'
17
+
18
+ export default {
19
+ name: 'AcWechatEmoji',
20
+ data () {
21
+ return {
22
+ loading: false,
23
+ data: []
24
+ }
25
+ },
26
+ created () {
27
+ this.loadWechatEmojiOptionsData()
28
+ },
29
+ methods: {
30
+ handleItemClick (item) {
31
+ this.$emit('select', {
32
+ item
33
+ })
34
+ },
35
+ loadWechatEmojiOptionsData () {
36
+ this.loading = true
37
+ loadWechatEmojiOptionsData().then((rs) => {
38
+ this.loading = false
39
+ this.data = rs || []
40
+ }, () => {
41
+ this.loading = false
42
+ })
43
+ }
44
+ }
45
+ }
46
+ </script>
47
+ <style lang="less">
48
+ .ac-wechat-emoji__list{
49
+ margin: 0;
50
+ padding: 6px;
51
+ &:after{
52
+ content: '';
53
+ display: block;
54
+ clear: both;
55
+ }
56
+ }
57
+ .ac-wechat-emoji__item{
58
+ float: left;
59
+ width: 36px;
60
+ height: 36px;
61
+ text-align: center;
62
+ line-height: 999;
63
+ overflow: hidden;
64
+ background-repeat: no-repeat;
65
+ background-position: 50% 50%;
66
+ background-size: 24px;
67
+ transition: all .3s;
68
+ border-radius: 3px;
69
+ cursor: pointer;
70
+ &:hover{
71
+ background-color: #f3f3f3;
72
+ }
73
+ }
74
+ </style>
@@ -0,0 +1,3 @@
1
+ import WechatEmojiSelect from './wechat-emoji-select'
2
+
3
+ export default WechatEmojiSelect
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <ui-popover
3
+ v-model="visible"
4
+ trigger="click"
5
+ class="ac-wechat-emoji-select"
6
+ :visible-arrow="true"
7
+ :class="{'is-active': visible}"
8
+ >
9
+ <template slot="reference">
10
+ <slot name="reference">
11
+ <ui-icon
12
+ class="ac-wechat-emoji-select__handle"
13
+ name="emoji-fill"
14
+ :size="20"
15
+ ></ui-icon>
16
+ </slot>
17
+ </template>
18
+ <div class="ac-wechat-emoji-select__panel">
19
+ <bi-wechat-emoji
20
+ @select="handleEmojiSelect"
21
+ ></bi-wechat-emoji>
22
+ </div>
23
+ </ui-popover>
24
+ </template>
25
+ <script>
26
+ import { Popover as UiPopover, Icon as UiIcon } from '../../components'
27
+ import BiWechatEmoji from '../wechat-emoji'
28
+
29
+ export default {
30
+ name: 'AcWechatEmojiSelect',
31
+ components: {
32
+ BiWechatEmoji,
33
+ UiIcon,
34
+ UiPopover
35
+ },
36
+ data () {
37
+ return {
38
+ visible: false
39
+ }
40
+ },
41
+ methods: {
42
+ handleEmojiSelect (evt) {
43
+ this.$emit('select', evt)
44
+ this.visible = false
45
+ }
46
+ }
47
+ }
48
+ </script>
49
+ <style lang="less">
50
+ .ac-wechat-emoji-select{
51
+ &.is-active{
52
+ .ac-wechat-emoji-select__handle{
53
+ color: #fda73e;
54
+ }
55
+ }
56
+ }
57
+ .ac-wechat-emoji-select__handle{
58
+ color: #bababa;
59
+ cursor: pointer;
60
+ &:hover{
61
+ color: #999;
62
+ }
63
+ }
64
+ .ac-wechat-emoji-select__panel{
65
+ width: 480px;
66
+ }
67
+ </style>
@@ -40,7 +40,7 @@
40
40
  <div class="ui-advanced-filter-condition__toolbar">
41
41
  <slot name="toolbar-prepend"></slot>
42
42
  <ui-button plain type="primary" @click="handleAddConditionClick" icon="add-line">新增条件</ui-button>
43
- <slot name="toolbar-append"></slot>
43
+ <slot v-if="UiAdvancedFilter.showScene" name="toolbar-append"></slot>
44
44
  </div>
45
45
  </div>
46
46
  </template>
@@ -51,6 +51,11 @@ export default {
51
51
  },
52
52
  getValueComponent: {
53
53
  type: Function
54
+ },
55
+ // 是否显示场景
56
+ showScene: {
57
+ type: Boolean,
58
+ default: true
54
59
  }
55
60
  },
56
61
  provide () {
@@ -94,7 +99,7 @@ export default {
94
99
  .ui-advanced-filter__main{
95
100
  display: flex;
96
101
  flex-direction: row;
97
- align-items: center;
102
+ align-items: baseline;
98
103
  }
99
104
  .ui-advanced-filter__col{
100
105
  display: flex;
@@ -22,15 +22,14 @@ export {
22
22
  AdvancedFilterConditionToggle
23
23
  }
24
24
 
25
- export default {
26
- defaultOperate,
27
- getBuiltinControl,
28
- AdvancedFilter,
29
- AdvancedFilterPermanent,
30
- AdvancedFilterPermanentItem,
31
- AdvancedFilterScene,
32
- AdvancedFilterSceneItem,
33
- AdvancedFilterCondition,
34
- AdvancedFilterConditionItem,
35
- AdvancedFilterConditionToggle
36
- }
25
+ AdvancedFilter.defaultOperate = defaultOperate
26
+ AdvancedFilter.getBuiltinControl = getBuiltinControl
27
+ AdvancedFilter.AdvancedFilterPermanent = AdvancedFilterPermanent
28
+ AdvancedFilter.AdvancedFilterPermanentItem = AdvancedFilterPermanentItem
29
+ AdvancedFilter.AdvancedFilterScene = AdvancedFilterScene
30
+ AdvancedFilter.AdvancedFilterSceneItem = AdvancedFilterSceneItem
31
+ AdvancedFilter.AdvancedFilterCondition = AdvancedFilterCondition
32
+ AdvancedFilter.AdvancedFilterConditionItem = AdvancedFilterConditionItem
33
+ AdvancedFilter.AdvancedFilterConditionToggle = AdvancedFilterConditionToggle
34
+
35
+ export default AdvancedFilter
@@ -2,7 +2,7 @@
2
2
  <div class="ui-avatar" :class="[{'is-online': showOnline && online, 'is-link': isLink, 'has-info': $slots.info, 'is-round': round}, 'ui-avatar--' + size]" @click="handleClick">
3
3
  <div class="ui-avatar__inner">
4
4
  <div class="ui-avatar__main">
5
- <ui-tooltip :content="name" :disabled="!name || !showTooltip">
5
+ <bi-tooltip :content="name" :disabled="!name || !showTooltip">
6
6
  <span class="ui-avatar__image" :style="{'line-height': imageSize}">
7
7
  <ui-image
8
8
  class="ui-avatar__image-img"
@@ -12,10 +12,12 @@
12
12
  :radius="imageRadius"
13
13
  :width="imageSize"
14
14
  :height="imageSize"
15
+ fit="contain"
15
16
  ></ui-image>
16
17
  <span v-if="showOnline" class="ui-avatar__online" :title="online ? '在线' : '离线'"></span>
18
+ <slot name="addon"></slot>
17
19
  </span>
18
- </ui-tooltip>
20
+ </bi-tooltip>
19
21
  <div class="ui-avatar__info" v-if="(showName && (name || $slots.name)) || $slots.info">
20
22
  <span v-if="showName" class="ui-avatar__name" :title="name">
21
23
  <slot name="name">{{name}}</slot>
@@ -28,11 +30,13 @@
28
30
  </template>
29
31
  <script>
30
32
  import UiImage from '../image'
33
+ import BiTooltip from '../../common/tooltip'
31
34
 
32
35
  export default {
33
36
  name: 'UiAvatar',
34
37
  components: {
35
- UiImage
38
+ UiImage,
39
+ BiTooltip
36
40
  },
37
41
  props: {
38
42
  src: {
@@ -60,7 +64,7 @@ export default {
60
64
  type: String,
61
65
  default: 'small',
62
66
  validator (value) {
63
- // large 72 * 72
67
+ // large 60 * 60
64
68
  // medium 36 * 36
65
69
  // small 24 * 24
66
70
  return ['large', 'medium', 'small', 'mini', 'custom'].indexOf(value) >= 0
@@ -91,7 +95,7 @@ export default {
91
95
  },
92
96
  imageSize () {
93
97
  const map = {
94
- large: '72px',
98
+ large: '60px',
95
99
  medium: '36px',
96
100
  small: '24px',
97
101
  mini: '18px'
@@ -1,5 +1,6 @@
1
1
  <template>
2
2
  <el-button
3
+ ref="button"
3
4
  :type="type"
4
5
  :disabled="disabled || innerLoading"
5
6
  :size="size"
@@ -125,6 +126,14 @@ export default {
125
126
  }
126
127
  },
127
128
  methods: {
129
+ focus () {
130
+ if (!this.$refs.button) {
131
+ return
132
+ }
133
+ this._focusTimer = setTimeout(() => {
134
+ this.$refs.button.$el.focus()
135
+ })
136
+ },
128
137
  closeDialog () {
129
138
  if (this.$parent.$options.name === 'UiToolbarItem') {
130
139
  const popup = getClosestPopup(this)
@@ -171,6 +180,7 @@ export default {
171
180
  },
172
181
  beforeDestroy () {
173
182
  clearTimeout(this._loadingTimer)
183
+ clearTimeout(this._focusTimer)
174
184
  }
175
185
  }
176
186
  </script>
@@ -208,9 +218,11 @@ export default {
208
218
  }
209
219
  &.has-icon{
210
220
  padding-left: 7px;
221
+ padding-right: 7px;
211
222
  }
212
223
  &.is-link {
213
224
  height: auto;
225
+ border-color: transparent;
214
226
  .ui-button__inner{
215
227
  > span{
216
228
  &:not(.ui-button__icon) {
@@ -272,12 +284,10 @@ export default {
272
284
  padding-left: 4px;
273
285
  padding-right: 4px;
274
286
  }
275
-
276
287
  .ui-button__icon {
277
288
  height: 16px;
278
289
  vertical-align: top;
279
290
  margin-top: -2px;
280
- margin-right: -2px;
281
291
  }
282
292
  }
283
293
  body .el-button--small{
@@ -488,6 +498,9 @@ body .el-button--medium{
488
498
  padding-left: 1px;
489
499
  padding-right: 1px;
490
500
  background-color: transparent;
501
+ &.is-disabled {
502
+ color: #A5ADBA;
503
+ }
491
504
  }
492
505
  &:not(.is-plain) {
493
506
  &:not(.is-link) {
@@ -112,7 +112,7 @@ export default {
112
112
  if (this.valueFormat) {
113
113
  return this.valueFormat
114
114
  }
115
- if (this.type === 'datetime') {
115
+ if (this.type === 'datetime' || this.type === 'datetimerange') {
116
116
  return 'yyyy-MM-dd HH:mm:ss'
117
117
  }
118
118
  return 'yyyy-MM-dd'
@@ -121,7 +121,7 @@ export default {
121
121
  if (this.format) {
122
122
  return this.format
123
123
  }
124
- if (this.type === 'datetime') {
124
+ if (this.type === 'datetime' || this.type === 'datetimerange') {
125
125
  return 'yyyy-MM-dd HH:mm:ss'
126
126
  }
127
127
  return 'yyyy-MM-dd'
@@ -170,6 +170,13 @@ export default {
170
170
  } else {
171
171
  return this.value
172
172
  }
173
+ } else if (Array.isArray(this.value)) {
174
+ return this.value.map(v => {
175
+ if (!v) {
176
+ return v
177
+ }
178
+ return parseDate(v)
179
+ })
173
180
  }
174
181
  return this.value
175
182
  },
@@ -1,8 +1,9 @@
1
1
  <template>
2
2
  <el-dialog
3
+ ref="dialog"
3
4
  class="ui-dialog"
4
5
  :class="['ui-dialog--' + size, {'is-closeable': closeable, 'is-hide-header': hideHeader}]"
5
- top="2vh"
6
+ :top="dialogTop"
6
7
  :append-to-body="true"
7
8
  :visible.sync="dialogVisible"
8
9
  :title="title"
@@ -40,6 +41,10 @@ export default {
40
41
  event: 'input'
41
42
  },
42
43
  props: {
44
+ dialogTop: {
45
+ type: String,
46
+ default: '2vh'
47
+ },
43
48
  width: {
44
49
  type: String
45
50
  },
@@ -17,6 +17,10 @@ export default {
17
17
  divided: {
18
18
  type: Boolean
19
19
  },
20
+ show: {
21
+ type: Boolean,
22
+ default: true
23
+ },
20
24
  type: {
21
25
  type: String
22
26
  },
@@ -30,6 +34,7 @@ export default {
30
34
  label: this.label,
31
35
  type: this.type,
32
36
  icon: this.icon,
37
+ show: this.show,
33
38
  divided: this.divided,
34
39
  disabled: this.disabled
35
40
  }
@@ -48,8 +53,11 @@ export default {
48
53
  click: (evt) => {
49
54
  this.$emit('click', evt)
50
55
  },
51
- render: () => {
52
- return this.$slot.default ? this.$slot.default() : null
56
+ component: {
57
+ functional: true,
58
+ render: (h) => {
59
+ return this.$slots.default ? this.$slots.default : h('span', [this.props.label])
60
+ }
53
61
  }
54
62
  })
55
63
  },
@@ -1,21 +1,25 @@
1
1
  <template>
2
2
  <el-dropdown
3
+ ref="dropdown"
3
4
  class="ui-dropdown"
4
5
  :class="[{'is-disabled': disabled}]"
5
6
  :trigger="trigger"
6
7
  :placement="placement"
7
8
  @command="handleCommand"
9
+ @visible-change="handleVisibleChange"
8
10
  >
9
- <slot name="reference" :options="innerOptions">
11
+ <slot name="reference" :options="showOptions">
10
12
  <ui-button class="ui-dropdown__handle" :icon="icon" :size="size" :loading="loading" :type="type" :plain="plain">
11
13
  {{showLabel}}<i class="el-icon-arrow-down el-icon--right"></i>
12
14
  </ui-button>
13
15
  </slot>
14
- <slot></slot>
16
+ <template v-if="dropdownMenuReady">
17
+ <slot></slot>
18
+ </template>
15
19
  <el-dropdown-menu class="ui-dropdown__menu" :class="[{'is-custom-item': $scopedSlots.item}, popupClass]" slot="dropdown">
16
20
  <el-dropdown-item
17
21
  class="ui-dropdown__item"
18
- v-for="(item, index) in innerOptions"
22
+ v-for="(item, index) in showOptions"
19
23
  :key="index"
20
24
  :command="index"
21
25
  :divided="item.divided || (item.props && item.props.divided)"
@@ -24,7 +28,9 @@
24
28
  >
25
29
  <slot name="item" :item="item">
26
30
  <ui-icon v-if="item.icon || (item.props && item.props.icon)" class="ui-dropdown__item-icon" :name="item.icon || (item.props && item.props.icon)"></ui-icon>
27
- <span class="ui-dropdown__item-text">{{item.label || (item.props && item.props.label)}}</span>
31
+ <span class="ui-dropdown__item-text">
32
+ <component :is="item.component"></component>
33
+ </span>
28
34
  </slot>
29
35
  </el-dropdown-item>
30
36
  </el-dropdown-menu>
@@ -99,13 +105,19 @@ export default {
99
105
  type: Boolean,
100
106
  default: false
101
107
  },
108
+ lazy: {
109
+ type: Boolean,
110
+ default: false
111
+ },
102
112
  icon: {
103
113
  type: String
104
114
  }
105
115
  },
106
116
  data () {
107
117
  return {
118
+ visible: false,
108
119
  innerOptions: this.options,
120
+ dropdownMenuReady: this.lazy ? false : true
109
121
  }
110
122
  },
111
123
  computed: {
@@ -117,6 +129,9 @@ export default {
117
129
  return this.label
118
130
  }
119
131
  return this.currentItem ? this.currentItem.label : ''
132
+ },
133
+ showOptions () {
134
+ return this.innerOptions.filter(v => !v.props || v.props.show !== false)
120
135
  }
121
136
  },
122
137
  watch: {
@@ -125,6 +140,22 @@ export default {
125
140
  }
126
141
  },
127
142
  methods: {
143
+ refreshDropdownPosition () {
144
+ this.$nextTick(() => {
145
+ const dropdown = this.$refs.dropdown
146
+ if (!dropdown) {
147
+ return
148
+ }
149
+ if (typeof dropdown.broadcast === 'function') {
150
+ dropdown.broadcast('ElDropdownMenu', 'updatePopper')
151
+ return
152
+ }
153
+ const dropdownMenu = (dropdown.$children || []).find(child => child && (child.componentName === 'ElDropdownMenu' || (child.$options && child.$options.name === 'ElDropdownMenu')))
154
+ if (dropdownMenu) {
155
+ dropdownMenu.$emit('updatePopper')
156
+ }
157
+ })
158
+ },
128
159
  handleRenderItemClass (item) {
129
160
  const cls = []
130
161
  const map = {
@@ -136,7 +167,7 @@ export default {
136
167
  return cls
137
168
  },
138
169
  handleCommand (e) {
139
- const item = this.innerOptions[e]
170
+ const item = this.showOptions[e]
140
171
  // 兼容以前的老逻辑,如果配置了item-click就不允许执行item.click了,因为后面新的方式可以直接监听dropdown-item的时间,能带上下文数据
141
172
  if (!this.$listeners['item-click']) {
142
173
  if (item.click) {
@@ -150,6 +181,15 @@ export default {
150
181
  itemData: this.itemData
151
182
  })
152
183
  },
184
+ handleVisibleChange (visible) {
185
+ if (visible && !this.dropdownMenuReady) {
186
+ this.dropdownMenuReady = true
187
+ this.refreshDropdownPosition()
188
+ } else if (visible) {
189
+ this.refreshDropdownPosition()
190
+ }
191
+ this.visible = visible
192
+ },
153
193
  addOption (option) {
154
194
  if (!option.id) {
155
195
  throw new Error('缺少唯一id')
@@ -1,16 +1,16 @@
1
1
  import Dropdown from './dropdown.vue'
2
2
  import DropdownItem from './dropdown-item.vue'
3
3
 
4
+ Dropdown.install = (Vue) => {
5
+ Vue.component(Dropdown.name, Dropdown)
6
+ Vue.component(DropdownItem.name, DropdownItem)
7
+ }
8
+
9
+ Dropdown.DropdownItem = DropdownItem
10
+
4
11
  export {
5
12
  Dropdown,
6
13
  DropdownItem
7
14
  }
8
15
 
9
- export default {
10
- Dropdown,
11
- DropdownItem,
12
- install (Vue) {
13
- Vue.component(Dropdown.name, Dropdown)
14
- Vue.component(DropdownItem.name, DropdownItem)
15
- }
16
- }
16
+ export default Dropdown
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="ui-empty" :class="{'is-border': border}">
2
+ <div class="ui-empty" :class="[{'is-border': border}, 'ui-empty--' + size]">
3
3
  <div class="ui-empyt__icon" v-if="icon">
4
- <ui-icon :name="icon" :size="60" color="#ccc"></ui-icon>
4
+ <ui-icon :name="icon" :size="iconSize" color="#ccc"></ui-icon>
5
5
  </div>
6
6
  <div class="ui-epmty__text">
7
7
  <slot name="text">{{text}}</slot>
@@ -23,10 +23,27 @@ export default {
23
23
  border: {
24
24
  type: Boolean
25
25
  },
26
+ size: {
27
+ type: String,
28
+ default: 'large',
29
+ validator (value) {
30
+ return ['small', 'large', 'mini'].includes(value)
31
+ }
32
+ },
26
33
  text: {
27
34
  type: String,
28
35
  default: '暂无数据'
29
36
  }
37
+ },
38
+ computed: {
39
+ iconSize () {
40
+ const map = {
41
+ small: 32,
42
+ large: 60,
43
+ mini: 20
44
+ }
45
+ return map[this.size]
46
+ }
30
47
  }
31
48
  }
32
49
  </script>
@@ -59,4 +76,14 @@ export default {
59
76
  margin-top: 6px;
60
77
  margin-bottom: 6px;
61
78
  }
79
+ .ui-empty--mini {
80
+ .ui-epmty__text{
81
+ margin-top: -6px;
82
+ }
83
+ }
84
+ .ui-empty--small {
85
+ .ui-epmty__text{
86
+ margin-top: 0;
87
+ }
88
+ }
62
89
  </style>
@@ -186,7 +186,7 @@ export default {
186
186
  }
187
187
  },
188
188
  created () {
189
- this.initValue = clone(this.value)
189
+ this.initValue = this.value ? clone(this.value) : null
190
190
  this.$watch(() => {
191
191
  return this.value
192
192
  }, () => {