@opentiny/vue-renderless 3.1.0-alpha.0

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 (397) hide show
  1. package/action-sheet/index.js +28 -0
  2. package/action-sheet/vue.js +29 -0
  3. package/alert/index.js +23 -0
  4. package/alert/vue.js +37 -0
  5. package/autocomplete/index.js +175 -0
  6. package/autocomplete/vue.js +171 -0
  7. package/avatar/index.js +29 -0
  8. package/avatar/vue.js +24 -0
  9. package/badge/index.js +16 -0
  10. package/badge/vue.js +30 -0
  11. package/breadcrumb/vue.js +4 -0
  12. package/breadcrumb-item/vue.js +24 -0
  13. package/bulletin-board/index.js +21 -0
  14. package/bulletin-board/vue.js +36 -0
  15. package/button/index.js +19 -0
  16. package/button/vue.js +43 -0
  17. package/button-group/index.js +25 -0
  18. package/button-group/vue.js +51 -0
  19. package/calendar/index.js +279 -0
  20. package/calendar/vue.js +124 -0
  21. package/card-template/index.js +39 -0
  22. package/card-template/vue.js +34 -0
  23. package/carousel/index.js +206 -0
  24. package/carousel/vue.js +222 -0
  25. package/carousel-item/index.js +93 -0
  26. package/carousel-item/vue.js +57 -0
  27. package/cascader/index.js +511 -0
  28. package/cascader/vue.js +342 -0
  29. package/cascader-menu/index.js +41 -0
  30. package/cascader-menu/vue.js +36 -0
  31. package/cascader-node/index.js +63 -0
  32. package/cascader-node/vue.js +62 -0
  33. package/cascader-panel/index.js +359 -0
  34. package/cascader-panel/node.js +199 -0
  35. package/cascader-panel/store.js +80 -0
  36. package/cascader-panel/vue.js +217 -0
  37. package/checkbox/index.js +145 -0
  38. package/checkbox/vue.js +139 -0
  39. package/checkbox-button/index.js +102 -0
  40. package/checkbox-button/vue.js +150 -0
  41. package/checkbox-group/index.js +12 -0
  42. package/checkbox-group/vue.js +33 -0
  43. package/col/index.js +132 -0
  44. package/col/vue.js +34 -0
  45. package/collapse/index.js +45 -0
  46. package/collapse/vue.js +35 -0
  47. package/collapse-item/index.js +38 -0
  48. package/collapse-item/vue.js +48 -0
  49. package/common/array.js +120 -0
  50. package/common/bigInt.js +352 -0
  51. package/common/browser.js +69 -0
  52. package/common/dataset/index.js +135 -0
  53. package/common/date.js +352 -0
  54. package/common/decimal.js +203 -0
  55. package/common/deps/ResizeObserver.js +474 -0
  56. package/common/deps/after-leave.js +25 -0
  57. package/common/deps/clickoutside.js +61 -0
  58. package/common/deps/date-util.js +262 -0
  59. package/common/deps/date.js +308 -0
  60. package/common/deps/debounce.js +4 -0
  61. package/common/deps/dom.js +190 -0
  62. package/common/deps/fullscreen/apis.js +157 -0
  63. package/common/deps/fullscreen/screenfull.js +106 -0
  64. package/common/deps/letter-only.js +15 -0
  65. package/common/deps/memorize.js +149 -0
  66. package/common/deps/number-only.js +16 -0
  67. package/common/deps/popper.js +713 -0
  68. package/common/deps/popup-manager.js +179 -0
  69. package/common/deps/repeat-click.js +24 -0
  70. package/common/deps/requestAnimationFrame.js +25 -0
  71. package/common/deps/resize-event.js +29 -0
  72. package/common/deps/scroll-into-view.js +29 -0
  73. package/common/deps/scrollbar-width.js +25 -0
  74. package/common/deps/throttle.js +34 -0
  75. package/common/deps/touch.js +33 -0
  76. package/common/deps/tree-model/node.js +586 -0
  77. package/common/deps/tree-model/tree-store.js +377 -0
  78. package/common/deps/tree-model/util.js +14 -0
  79. package/common/deps/upload-ajax.js +71 -0
  80. package/common/deps/vue-emitter.js +30 -0
  81. package/common/deps/vue-popper.js +291 -0
  82. package/common/deps/vue-popup.js +211 -0
  83. package/common/event.js +17 -0
  84. package/common/index.js +288 -0
  85. package/common/object.js +228 -0
  86. package/common/runtime.js +52 -0
  87. package/common/string.js +446 -0
  88. package/common/type.js +65 -0
  89. package/common/validate/index.js +6 -0
  90. package/common/validate/messages.js +68 -0
  91. package/common/validate/rules/enum.js +8 -0
  92. package/common/validate/rules/index.js +14 -0
  93. package/common/validate/rules/pattern.js +16 -0
  94. package/common/validate/rules/range.js +62 -0
  95. package/common/validate/rules/required.js +13 -0
  96. package/common/validate/rules/type.js +110 -0
  97. package/common/validate/rules/whitespace.js +6 -0
  98. package/common/validate/schema.js +323 -0
  99. package/common/validate/util.js +198 -0
  100. package/common/validate/validations/array.js +25 -0
  101. package/common/validate/validations/date.js +35 -0
  102. package/common/validate/validations/enum.js +24 -0
  103. package/common/validate/validations/float.js +24 -0
  104. package/common/validate/validations/index.js +42 -0
  105. package/common/validate/validations/integer.js +24 -0
  106. package/common/validate/validations/method.js +23 -0
  107. package/common/validate/validations/number.js +27 -0
  108. package/common/validate/validations/pattern.js +23 -0
  109. package/common/validate/validations/required.js +15 -0
  110. package/common/validate/validations/string.js +29 -0
  111. package/common/validate/validations/type.js +25 -0
  112. package/common/xss.js +325 -0
  113. package/container/index.js +110 -0
  114. package/container/vue.js +63 -0
  115. package/credit-card/index.js +107 -0
  116. package/credit-card/vue.js +117 -0
  117. package/credit-card-form/index.js +143 -0
  118. package/credit-card-form/vue.js +150 -0
  119. package/crop/index.js +297 -0
  120. package/crop/vue.js +191 -0
  121. package/date-panel/index.js +584 -0
  122. package/date-panel/vue.js +319 -0
  123. package/date-picker/index.js +301 -0
  124. package/date-picker/vue.js +169 -0
  125. package/date-range/index.js +463 -0
  126. package/date-range/vue.js +297 -0
  127. package/date-table/index.js +457 -0
  128. package/date-table/vue.js +151 -0
  129. package/detail-page/index.js +135 -0
  130. package/detail-page/vue.js +145 -0
  131. package/dialog-box/index.js +268 -0
  132. package/dialog-box/vue.js +226 -0
  133. package/drop-times/index.js +23 -0
  134. package/drop-times/vue.js +28 -0
  135. package/dropdown/index.js +259 -0
  136. package/dropdown/vue.js +107 -0
  137. package/dropdown-item/index.js +155 -0
  138. package/dropdown-item/vue.js +124 -0
  139. package/dropdown-menu/index.js +148 -0
  140. package/dropdown-menu/vue.js +44 -0
  141. package/exception/index.js +13 -0
  142. package/exception/vue.js +25 -0
  143. package/fall-menu/index.js +121 -0
  144. package/fall-menu/vue.js +90 -0
  145. package/file-upload/index.js +1940 -0
  146. package/file-upload/vue.js +458 -0
  147. package/floatbar/index.js +10 -0
  148. package/floatbar/vue.js +17 -0
  149. package/form/index.js +186 -0
  150. package/form/vue.js +69 -0
  151. package/form-item/index.js +364 -0
  152. package/form-item/vue.js +210 -0
  153. package/fullscreen/index.js +138 -0
  154. package/fullscreen/vue.js +77 -0
  155. package/grid/core/index.js +3 -0
  156. package/grid/core/interceptor.js +38 -0
  157. package/grid/core/storeMap.js +19 -0
  158. package/grid/plugins/export.js +169 -0
  159. package/grid/plugins/exportExcel.js +749 -0
  160. package/grid/plugins/header.js +58 -0
  161. package/grid/plugins/resize.js +82 -0
  162. package/grid/static/array/arrayEach.js +12 -0
  163. package/grid/static/array/arrayIndexOf.js +11 -0
  164. package/grid/static/array/eachTree.js +32 -0
  165. package/grid/static/array/every.js +2 -0
  166. package/grid/static/array/filterTree.js +16 -0
  167. package/grid/static/array/find.js +3 -0
  168. package/grid/static/array/findTree.js +46 -0
  169. package/grid/static/array/helperCreateIterateHandle.js +59 -0
  170. package/grid/static/array/helperCreateTreeFunc.js +18 -0
  171. package/grid/static/array/includes.js +5 -0
  172. package/grid/static/array/lastArrayEach.js +6 -0
  173. package/grid/static/array/map.js +23 -0
  174. package/grid/static/array/mapTree.js +33 -0
  175. package/grid/static/array/slice.js +10 -0
  176. package/grid/static/array/sortBy.js +69 -0
  177. package/grid/static/array/sum.js +28 -0
  178. package/grid/static/array/toArray.js +7 -0
  179. package/grid/static/array/toTreeArray.js +24 -0
  180. package/grid/static/base/clear.js +44 -0
  181. package/grid/static/base/clone.js +18 -0
  182. package/grid/static/base/destructuring.js +18 -0
  183. package/grid/static/base/each.js +9 -0
  184. package/grid/static/base/eqNull.js +6 -0
  185. package/grid/static/base/findIndexOf.js +10 -0
  186. package/grid/static/base/get.js +42 -0
  187. package/grid/static/base/has.js +60 -0
  188. package/grid/static/base/hasOwnProp.js +4 -0
  189. package/grid/static/base/helperCreateGetObjects.js +26 -0
  190. package/grid/static/base/helperCreateInInObjectString.js +7 -0
  191. package/grid/static/base/helperCreateInTypeof.js +6 -0
  192. package/grid/static/base/helperCreateIndexOf.js +21 -0
  193. package/grid/static/base/helperCreateiterateIndexOf.js +21 -0
  194. package/grid/static/base/helperDefaultCompare.js +4 -0
  195. package/grid/static/base/helperDeleteProperty.js +8 -0
  196. package/grid/static/base/helperEqualCompare.js +60 -0
  197. package/grid/static/base/helperGetHGSKeys.js +4 -0
  198. package/grid/static/base/indexOf.js +3 -0
  199. package/grid/static/base/isArray.js +3 -0
  200. package/grid/static/base/isBoolean.js +4 -0
  201. package/grid/static/base/isDate.js +3 -0
  202. package/grid/static/base/isEmpty.js +8 -0
  203. package/grid/static/base/isEqual.js +11 -0
  204. package/grid/static/base/isFunction.js +4 -0
  205. package/grid/static/base/isNaN.js +5 -0
  206. package/grid/static/base/isNull.js +4 -0
  207. package/grid/static/base/isNumber.js +4 -0
  208. package/grid/static/base/isObject.js +5 -0
  209. package/grid/static/base/isPlainObject.js +2 -0
  210. package/grid/static/base/isRegExp.js +3 -0
  211. package/grid/static/base/isSet.js +5 -0
  212. package/grid/static/base/isString.js +4 -0
  213. package/grid/static/base/isUndefined.js +4 -0
  214. package/grid/static/base/keys.js +3 -0
  215. package/grid/static/base/lastEach.js +9 -0
  216. package/grid/static/base/remove.js +44 -0
  217. package/grid/static/base/set.js +43 -0
  218. package/grid/static/base/toJSONString.js +4 -0
  219. package/grid/static/base/toStringJSON.js +13 -0
  220. package/grid/static/base/uniqueId.js +5 -0
  221. package/grid/static/browse/browse.js +54 -0
  222. package/grid/static/function/property.js +7 -0
  223. package/grid/static/function/throttle.js +43 -0
  224. package/grid/static/index.js +55 -0
  225. package/grid/static/number/helperCreateToNumber.js +12 -0
  226. package/grid/static/number/toNumber.js +3 -0
  227. package/grid/static/object/assign.js +41 -0
  228. package/grid/static/object/extend.js +3 -0
  229. package/grid/static/object/lastObjectEach.js +8 -0
  230. package/grid/static/object/objectEach.js +11 -0
  231. package/grid/static/object/objectMap.js +20 -0
  232. package/grid/static/object/values.js +9 -0
  233. package/grid/static/static/staticDocument.js +4 -0
  234. package/grid/static/static/staticHGKeyRE.js +2 -0
  235. package/grid/static/static/staticParseInt.js +2 -0
  236. package/grid/static/static/staticStrUndefined.js +2 -0
  237. package/grid/static/static/staticWindow.js +4 -0
  238. package/grid/static/string/template.js +12 -0
  239. package/grid/static/string/toString.js +12 -0
  240. package/grid/utils/column.js +72 -0
  241. package/grid/utils/common.js +155 -0
  242. package/grid/utils/dom.js +213 -0
  243. package/grid/utils/event.js +40 -0
  244. package/grid/utils/index.js +5 -0
  245. package/image/index.js +187 -0
  246. package/image/vue.js +142 -0
  247. package/image-viewer/index.js +469 -0
  248. package/image-viewer/vue.js +243 -0
  249. package/input/index.js +319 -0
  250. package/input/vue.js +319 -0
  251. package/ip-address/index.js +370 -0
  252. package/ip-address/vue.js +185 -0
  253. package/layout/vue.js +4 -0
  254. package/link/index.js +10 -0
  255. package/link/vue.js +26 -0
  256. package/link-menu/index.js +146 -0
  257. package/link-menu/vue.js +138 -0
  258. package/list/index.js +13 -0
  259. package/list/vue.js +17 -0
  260. package/loading/index.js +29 -0
  261. package/loading/vue.js +28 -0
  262. package/milestone/index.js +92 -0
  263. package/milestone/vue.js +31 -0
  264. package/mini-picker/index.js +227 -0
  265. package/mini-picker/vue.js +142 -0
  266. package/modal/index.js +866 -0
  267. package/modal/vue.js +130 -0
  268. package/month-range/index.js +169 -0
  269. package/month-range/vue.js +104 -0
  270. package/month-table/index.js +232 -0
  271. package/month-table/vue.js +72 -0
  272. package/nav-menu/index.js +457 -0
  273. package/nav-menu/vue.js +187 -0
  274. package/notify/index.js +91 -0
  275. package/notify/vue.js +67 -0
  276. package/numeric/index.js +419 -0
  277. package/numeric/vue.js +218 -0
  278. package/option/index.js +79 -0
  279. package/option/vue.js +219 -0
  280. package/option-group/index.js +18 -0
  281. package/option-group/vue.js +37 -0
  282. package/package.json +179 -0
  283. package/pager-item/index.js +122 -0
  284. package/pager-item/vue.js +52 -0
  285. package/panel/index.js +30 -0
  286. package/panel/vue.js +26 -0
  287. package/picker/index.js +1039 -0
  288. package/picker/timezone.js +974 -0
  289. package/picker/vue.js +415 -0
  290. package/picker-column/index.js +261 -0
  291. package/picker-column/vue.js +163 -0
  292. package/pop-upload/index.js +324 -0
  293. package/pop-upload/vue.js +292 -0
  294. package/popeditor/index.js +884 -0
  295. package/popeditor/vue.js +368 -0
  296. package/popover/index.js +203 -0
  297. package/popover/vue.js +174 -0
  298. package/popup/index.js +139 -0
  299. package/popup/vue.js +129 -0
  300. package/progress/index.js +174 -0
  301. package/progress/vue.js +118 -0
  302. package/pull-refresh/index.js +104 -0
  303. package/pull-refresh/vue.js +64 -0
  304. package/radio/index.js +83 -0
  305. package/radio/vue.js +99 -0
  306. package/radio-button/index.js +58 -0
  307. package/radio-button/vue.js +70 -0
  308. package/radio-group/index.js +51 -0
  309. package/radio-group/vue.js +34 -0
  310. package/rate/index.js +254 -0
  311. package/rate/vue.js +158 -0
  312. package/row/index.js +19 -0
  313. package/row/vue.js +24 -0
  314. package/scroll-text/index.js +24 -0
  315. package/scroll-text/vue.js +31 -0
  316. package/scrollbar/index.js +127 -0
  317. package/scrollbar/vue-bar.js +49 -0
  318. package/scrollbar/vue.js +43 -0
  319. package/search/index.js +110 -0
  320. package/search/vue.js +110 -0
  321. package/select/index.js +1766 -0
  322. package/select/vue.js +693 -0
  323. package/select-dropdown/index.js +23 -0
  324. package/select-dropdown/vue.js +122 -0
  325. package/slide-bar/index.js +94 -0
  326. package/slide-bar/vue.js +58 -0
  327. package/slider/index.js +434 -0
  328. package/slider/vue.js +172 -0
  329. package/split/index.js +122 -0
  330. package/split/vue.js +131 -0
  331. package/steps/vue.js +4 -0
  332. package/switch/index.js +45 -0
  333. package/switch/vue.js +62 -0
  334. package/tab-bar/index.js +51 -0
  335. package/tab-bar/vue.js +16 -0
  336. package/tab-dropdown/index.js +11 -0
  337. package/tab-dropdown/vue.js +17 -0
  338. package/tab-item/index.js +37 -0
  339. package/tab-item/vue.js +49 -0
  340. package/tab-nav/index.js +247 -0
  341. package/tab-nav/vue.js +106 -0
  342. package/tabbar/index.js +32 -0
  343. package/tabbar/vue.js +54 -0
  344. package/tabbar-item/index.js +55 -0
  345. package/tabbar-item/vue.js +53 -0
  346. package/table/index.js +111 -0
  347. package/table/vue.js +66 -0
  348. package/tabs/index.js +174 -0
  349. package/tabs/vue.js +141 -0
  350. package/tag/index.js +14 -0
  351. package/tag/vue.js +13 -0
  352. package/tall-storage/index.js +161 -0
  353. package/tall-storage/vue-storage-box.js +25 -0
  354. package/tall-storage/vue.js +38 -0
  355. package/text-popup/index.js +75 -0
  356. package/text-popup/vue.js +64 -0
  357. package/time/index.js +121 -0
  358. package/time/vue.js +124 -0
  359. package/time-line/index.js +60 -0
  360. package/time-line/vue.js +49 -0
  361. package/time-panel/index.js +189 -0
  362. package/time-panel/scrollIntoView.js +23 -0
  363. package/time-panel/vue.js +110 -0
  364. package/time-range/index.js +199 -0
  365. package/time-range/vue.js +129 -0
  366. package/time-spinner/index.js +175 -0
  367. package/time-spinner/vue.js +122 -0
  368. package/toggle-menu/index.js +104 -0
  369. package/toggle-menu/vue.js +74 -0
  370. package/tooltip/index.js +171 -0
  371. package/tooltip/vue.js +133 -0
  372. package/top-box/index.js +81 -0
  373. package/top-box/vue.js +77 -0
  374. package/transfer/index.js +296 -0
  375. package/transfer/vue.js +138 -0
  376. package/transfer-panel/index.js +364 -0
  377. package/transfer-panel/vue.js +258 -0
  378. package/tree/index.js +642 -0
  379. package/tree/vue.js +268 -0
  380. package/tree-menu/index.js +124 -0
  381. package/tree-menu/vue.js +60 -0
  382. package/tree-node/index.js +271 -0
  383. package/tree-node/vue.js +211 -0
  384. package/upload/index.js +324 -0
  385. package/upload/vue.js +93 -0
  386. package/upload-dragger/index.js +50 -0
  387. package/upload-dragger/vue.js +27 -0
  388. package/upload-list/index.js +55 -0
  389. package/upload-list/vue.js +48 -0
  390. package/user-contact/index.js +13 -0
  391. package/user-contact/vue.js +20 -0
  392. package/user-head/index.js +71 -0
  393. package/user-head/vue.js +47 -0
  394. package/wizard/index.js +123 -0
  395. package/wizard/vue.js +45 -0
  396. package/year-table/index.js +40 -0
  397. package/year-table/vue.js +23 -0
@@ -0,0 +1,511 @@
1
+ import _toArray from "@babel/runtime/helpers/toArray";
2
+ import browser from '@opentiny/vue-renderless/common/browser';
3
+ import { isNull } from '@opentiny/vue-renderless/common/type';
4
+ import debounce from '@opentiny/vue-renderless/common/deps/debounce';
5
+ import { isEqual } from '@opentiny/vue-renderless/common/object';
6
+ import { addResizeListener } from '@opentiny/vue-renderless/common/deps/resize-event';
7
+ import { KEY_CODE, CASCADER } from '@opentiny/vue-renderless/common';
8
+ var initMigratingProps = function initMigratingProps() {
9
+ return {
10
+ expandTrigger: {
11
+ newProp: CASCADER.PropsExpandTri,
12
+ type: String
13
+ },
14
+ changeOnSelect: {
15
+ newProp: CASCADER.PropsCheckStric,
16
+ type: Boolean
17
+ },
18
+ hoverThreshold: {
19
+ newProp: CASCADER.PropsHover,
20
+ type: Number
21
+ }
22
+ };
23
+ };
24
+ var kebabCase = function kebabCase(str) {
25
+ var hyphenateRE = /([^-])([A-Z])/g;
26
+ return str.replace(hyphenateRE, '$1-$2').replace(hyphenateRE, '$1-$2').toLowerCase();
27
+ };
28
+ export var getConfig = function getConfig(_ref) {
29
+ var parent = _ref.parent,
30
+ props = _ref.props;
31
+ return function () {
32
+ var config = props.props || {};
33
+ var $attrs = parent.$attrs;
34
+ var migratingProps = initMigratingProps();
35
+ Object.keys(migratingProps).forEach(function (oldProp) {
36
+ var _migratingProps$oldPr = migratingProps[oldProp],
37
+ newProp = _migratingProps$oldPr.newProp,
38
+ type = _migratingProps$oldPr.type;
39
+ var oldValue = $attrs[oldProp] || $attrs[kebabCase(oldProp)];
40
+ if (isNull(config[newProp]) && !isNull(oldProp)) {
41
+ if (oldValue === '' && type === Boolean) {
42
+ oldValue = true;
43
+ }
44
+ config[newProp] = oldValue;
45
+ }
46
+ });
47
+ return config;
48
+ };
49
+ };
50
+ export var computClearVisible = function computClearVisible(_ref2) {
51
+ var props = _ref2.props,
52
+ state = _ref2.state;
53
+ return function () {
54
+ if (!props.clearable || state.isDisabled || state.filtering || !state.inputHover) {
55
+ return false;
56
+ }
57
+ return state.multiple ? !!state.checkedNodes.filter(function (node) {
58
+ return !node.isDisabled;
59
+ }).length : !!state.presentText;
60
+ };
61
+ };
62
+ export var computePresentContent = function computePresentContent(_ref3) {
63
+ var api = _ref3.api,
64
+ state = _ref3.state;
65
+ return function () {
66
+ if (state.config.multiple) {
67
+ api.computePresentTags();
68
+ state.presentText = state.presentTags.length ? ' ' : null;
69
+ } else {
70
+ api.computePresentText();
71
+ }
72
+ };
73
+ };
74
+ export var watchValue = function watchValue(_ref4) {
75
+ var api = _ref4.api,
76
+ state = _ref4.state;
77
+ return function (value) {
78
+ if (!isEqual(value, state.checkedValue)) {
79
+ state.checkedValue = value;
80
+ api.computePresentContent();
81
+ }
82
+ };
83
+ };
84
+ export var watchCheckedValue = function watchCheckedValue(_ref5) {
85
+ var api = _ref5.api,
86
+ emit = _ref5.emit,
87
+ state = _ref5.state;
88
+ return function (value) {
89
+ var _state$config = state.config,
90
+ checkStrictly = _state$config.checkStrictly,
91
+ multiple = _state$config.multiple;
92
+ api.computePresentContent();
93
+ if (!multiple && !checkStrictly && state.dropDownVisible) {
94
+ api.toggleDropDownVisible(false);
95
+ }
96
+ emit('update:modelValue', value);
97
+ emit('change', value);
98
+ setTimeout(api.updateStyle);
99
+ };
100
+ };
101
+ export var isEmpty = function isEmpty(val) {
102
+ if (isNull(val)) return true;
103
+ if (typeof val === 'boolean') {
104
+ return false;
105
+ }
106
+ if (typeof val === 'number') {
107
+ return !val;
108
+ }
109
+ if (val instanceof Error) {
110
+ return val.message === '';
111
+ }
112
+ var type = Object.prototype.toString.call(val);
113
+ if (~['[object String]', '[object Array]'].indexOf(type)) {
114
+ return !val.length;
115
+ }
116
+ if (~['[object File]', '[object Map]', '[object Set]'].indexOf(type)) {
117
+ return !val.size;
118
+ }
119
+ if (type === '[object Object]') {
120
+ return !Object.keys(val).length;
121
+ }
122
+ return false;
123
+ };
124
+ export var selfMounted = function selfMounted(_ref6) {
125
+ var api = _ref6.api,
126
+ parent = _ref6.parent,
127
+ props = _ref6.props,
128
+ refs = _ref6.refs,
129
+ state = _ref6.state;
130
+ return function () {
131
+ var input = refs.input;
132
+ var inputSizeMap = {
133
+ medium: 36,
134
+ small: 32,
135
+ mini: 28
136
+ };
137
+ input.$parent.popperElm = refs.popper;
138
+ if (input && input.$el) {
139
+ state.inputInitialHeight = input.$el.offsetHeight || inputSizeMap[state.realSize] || 30;
140
+ }
141
+ if (!isEmpty(props.modelValue)) {
142
+ api.computePresentContent();
143
+ }
144
+ api.filterHandler = debounce(props.debounce, function () {
145
+ if (!state.inputValue) {
146
+ state.filtering = false;
147
+ return;
148
+ }
149
+ var before = props.beforeFilter(state.inputValue);
150
+ if (before && before.then) {
151
+ before.then(api.getSuggestions);
152
+ } else if (before !== false) {
153
+ api.getSuggestions();
154
+ } else {
155
+ state.filtering = false;
156
+ }
157
+ });
158
+ addResizeListener(parent.$el, api.updateStyle);
159
+ };
160
+ };
161
+ export var toggleDropDownVisible = function toggleDropDownVisible(_ref7) {
162
+ var emit = _ref7.emit,
163
+ nextTick = _ref7.nextTick,
164
+ refs = _ref7.refs,
165
+ state = _ref7.state,
166
+ updatePopper = _ref7.updatePopper;
167
+ return function (visible) {
168
+ if (state.isDisabled) return;
169
+ var input = refs.input;
170
+ visible = !isNull(visible) ? visible : !state.dropDownVisible;
171
+ if (visible !== state.dropDownVisible) {
172
+ state.dropDownVisible = visible;
173
+ if (visible) {
174
+ nextTick(function () {
175
+ updatePopper();
176
+ state.panel.scrollIntoView();
177
+ });
178
+ }
179
+ input && input.getInput && input.getInput().setAttribute('aria-expanded', visible);
180
+ emit('visible-change', visible);
181
+ }
182
+ };
183
+ };
184
+ export var handleDropdownLeave = function handleDropdownLeave(state) {
185
+ return function () {
186
+ state.filtering = false;
187
+ state.inputValue = state.presentText;
188
+ };
189
+ };
190
+ export var handleKeyDown = function handleKeyDown(_ref8) {
191
+ var api = _ref8.api;
192
+ return function (event) {
193
+ switch (event.keyCode) {
194
+ case KEY_CODE.Enter:
195
+ api.toggleDropDownVisible();
196
+ break;
197
+ case KEY_CODE.ArrowDown:
198
+ api.toggleDropDownVisible(true);
199
+ api.focusFirstNode();
200
+ event.preventDefault();
201
+ break;
202
+ case KEY_CODE.Escape:
203
+ case KEY_CODE.Tab:
204
+ api.toggleDropDownVisible(false);
205
+ break;
206
+ default:
207
+ break;
208
+ }
209
+ };
210
+ };
211
+ export var handleFocus = function handleFocus(emit) {
212
+ return function (e) {
213
+ emit('focus', e);
214
+ };
215
+ };
216
+ export var handleBlur = function handleBlur(_ref9) {
217
+ var constants = _ref9.constants,
218
+ dispatch = _ref9.dispatch,
219
+ emit = _ref9.emit,
220
+ state = _ref9.state;
221
+ return function (e) {
222
+ dispatch(constants.COMPONENT_NAME.FormItem, constants.EVENT_NAME.FormBlur, [state.multiple ? state.presentText : state.inputValue]);
223
+ emit('blur', e);
224
+ };
225
+ };
226
+ export var handleInput = function handleInput(_ref10) {
227
+ var api = _ref10.api,
228
+ state = _ref10.state,
229
+ refs = _ref10.refs;
230
+ return function (val, event) {
231
+ event = event || window.event;
232
+ if (!event) return;
233
+ var reference = refs.reference;
234
+ var key = 'init-flag';
235
+ var value = 'true';
236
+ var isIE = browser.name === 'ie';
237
+ if (isIE && reference.getAttribute(key) !== value && !event.target.value) {
238
+ reference.setAttribute(key, value);
239
+ return;
240
+ }
241
+ !state.dropDownVisible && api.toggleDropDownVisible(true);
242
+ state.presentText = val;
243
+ if (event && event.isComposing) return;
244
+ if (val) {
245
+ api.filterHandler();
246
+ } else {
247
+ state.filtering = false;
248
+ }
249
+ };
250
+ };
251
+ export var handleClear = function handleClear(state) {
252
+ return function () {
253
+ state.presentText = '';
254
+ state.panel.clearCheckedNodes();
255
+ };
256
+ };
257
+ export var handleExpandChange = function handleExpandChange(_ref11) {
258
+ var constants = _ref11.constants,
259
+ dispatch = _ref11.dispatch,
260
+ emit = _ref11.emit,
261
+ nextTick = _ref11.nextTick,
262
+ state = _ref11.state,
263
+ updatePopper = _ref11.updatePopper;
264
+ return function (value) {
265
+ nextTick(function () {
266
+ dispatch(constants.COMPONENT_NAME.FormItem, constants.EVENT_NAME.FormBlur, [state.multiple ? state.presentText : state.inputValue]);
267
+ updatePopper(state.panel.$parent);
268
+ });
269
+ emit('expand-change', value);
270
+ emit('active-item-change', value);
271
+ };
272
+ };
273
+ export var focusFirstNode = function focusFirstNode(_ref12) {
274
+ var refs = _ref12.refs,
275
+ state = _ref12.state;
276
+ return function () {
277
+ var popper = refs.popper,
278
+ suggestionPanel = refs.suggestionPanel;
279
+ var firstNode = null;
280
+ if (state.filtering && suggestionPanel) {
281
+ firstNode = suggestionPanel.$el.querySelector(CASCADER.SugItem);
282
+ } else {
283
+ var firstMenu = popper.querySelector(CASCADER.CascaderMenu);
284
+ firstNode = firstMenu.querySelector(CASCADER.CascaderNodeTab);
285
+ }
286
+ if (firstNode) {
287
+ firstNode.focus();
288
+ !state.filtering && firstNode.click();
289
+ }
290
+ };
291
+ };
292
+ export var computePresentText = function computePresentText(_ref13) {
293
+ var props = _ref13.props,
294
+ state = _ref13.state;
295
+ return function () {
296
+ if (!isEmpty(state.checkedValue)) {
297
+ var node = state.panel.getNodeByValue(state.checkedValue);
298
+ if (node && (state.config.checkStrictly || node.isLeaf)) {
299
+ state.presentText = node.getText(props.showAllLevels, props.separator);
300
+ return;
301
+ }
302
+ }
303
+ state.inputValue = null;
304
+ state.presentText = null;
305
+ };
306
+ };
307
+ export var computePresentTags = function computePresentTags(_ref14) {
308
+ var api = _ref14.api,
309
+ props = _ref14.props,
310
+ state = _ref14.state;
311
+ return function () {
312
+ var checkedNodes = api.getCheckedNodes(state.leafOnly);
313
+ var tags = [];
314
+ var genTag = function genTag(node) {
315
+ var text = node.getText(props.showAllLevels, props.separator);
316
+ var closable = !state.isDisabled && !node.isDisabled;
317
+ return {
318
+ node: node,
319
+ key: node.uid,
320
+ text: text,
321
+ hitState: false,
322
+ closable: closable
323
+ };
324
+ };
325
+ if (checkedNodes.length) {
326
+ var _checkedNodes = _toArray(checkedNodes),
327
+ first = _checkedNodes[0],
328
+ rest = _checkedNodes.slice(1);
329
+ var restCount = rest.length;
330
+ tags.push(genTag(first));
331
+ if (restCount) {
332
+ if (props.collapseTags) {
333
+ tags.push({
334
+ key: -1,
335
+ text: "+ ".concat(restCount),
336
+ closable: false
337
+ });
338
+ } else {
339
+ rest.forEach(function (node) {
340
+ return tags.push(genTag(node));
341
+ });
342
+ }
343
+ }
344
+ }
345
+ state.checkedNodes = checkedNodes;
346
+ state.presentTags = tags;
347
+ };
348
+ };
349
+ export var getSuggestions = function getSuggestions(_ref15) {
350
+ var nextTick = _ref15.nextTick,
351
+ props = _ref15.props,
352
+ state = _ref15.state,
353
+ updatePopper = _ref15.updatePopper;
354
+ return function () {
355
+ var filterMethod = null;
356
+ if (!(props.filterMethod && typeof props.filterMethod === 'function')) {
357
+ filterMethod = function filterMethod(node, keyword) {
358
+ return ~node.text.indexOf(keyword);
359
+ };
360
+ } else {
361
+ filterMethod = props.filterMethod;
362
+ }
363
+ var suggestions = state.panel.getFlattedNodes(state.leafOnly).filter(function (node) {
364
+ if (node.isDisabled) return false;
365
+ node.text = node.getText(props.showAllLevels, props.separator) || '';
366
+ return filterMethod(node, state.inputValue);
367
+ });
368
+ if (state.multiple) {
369
+ state.presentTags.forEach(function (tag) {
370
+ tag.hitState = false;
371
+ });
372
+ } else {
373
+ suggestions.forEach(function (node) {
374
+ node.checked = isEqual(state.checkedValue, node.getValueByOption());
375
+ });
376
+ }
377
+ state.filtering = true;
378
+ state.suggestions = suggestions;
379
+ nextTick(function () {
380
+ return updatePopper();
381
+ });
382
+ };
383
+ };
384
+ export var handleSuggestionKeyDown = function handleSuggestionKeyDown(_ref16) {
385
+ var api = _ref16.api;
386
+ return function (event) {
387
+ event = event || window.event;
388
+ if (!event) return;
389
+ var _event = event,
390
+ keyCode = _event.keyCode,
391
+ target = _event.target;
392
+ if (keyCode === KEY_CODE.Enter) {
393
+ target.click();
394
+ } else if (keyCode === KEY_CODE.ArrowUp) {
395
+ var prev = target.previousElementSibling;
396
+ prev && prev.focus();
397
+ } else if (keyCode === KEY_CODE.ArrowDown) {
398
+ var next = target.nextElementSibling;
399
+ next && next.focus();
400
+ } else if (~[KEY_CODE.Escape, KEY_CODE.Tab].indexOf(keyCode)) {
401
+ api.toggleDropDownVisible(false);
402
+ }
403
+ };
404
+ };
405
+ export var handleDelete = function handleDelete(_ref17) {
406
+ var api = _ref17.api,
407
+ state = _ref17.state;
408
+ return function () {
409
+ var lastIndex = state.presentTags.length - 1;
410
+ var lastTag = state.presentTags[lastIndex];
411
+ state.pressDeleteCount = state.inputValue ? 0 : state.pressDeleteCount + 1;
412
+ if (!lastTag) return;
413
+ if (state.pressDeleteCount) {
414
+ if (lastTag.hitState) {
415
+ api.deleteTag(lastIndex);
416
+ } else {
417
+ lastTag.hitState = true;
418
+ }
419
+ }
420
+ };
421
+ };
422
+ export var handleSuggestionClick = function handleSuggestionClick(_ref18) {
423
+ var api = _ref18.api,
424
+ state = _ref18.state;
425
+ return function (index) {
426
+ var targetNode = state.suggestions[index];
427
+ if (state.multiple) {
428
+ var checked = targetNode.checked;
429
+ targetNode.doCheck(!checked);
430
+ state.panel.calculateMultiCheckedValue();
431
+ } else {
432
+ state.checkedValue = targetNode.getValueByOption();
433
+ api.toggleDropDownVisible(false);
434
+ }
435
+ };
436
+ };
437
+ export var deleteTag = function deleteTag(_ref19) {
438
+ var emit = _ref19.emit,
439
+ state = _ref19.state;
440
+ return function (index) {
441
+ var val = state.checkedValue[index];
442
+ state.checkedValue = state.checkedValue.filter(function (n, i) {
443
+ return i !== index;
444
+ });
445
+ emit('remove-tag', val);
446
+ };
447
+ };
448
+ export var updateStyle = function updateStyle(_ref20) {
449
+ var parent = _ref20.parent,
450
+ refs = _ref20.refs,
451
+ state = _ref20.state,
452
+ updatePopper = _ref20.updatePopper;
453
+ return function () {
454
+ var $el = parent.$el;
455
+ var suggestionPanel = refs.suggestionPanel;
456
+ var inputInner = $el.querySelector(CASCADER.InputClass);
457
+ if (!inputInner) {
458
+ return;
459
+ }
460
+ var tags = $el.querySelector(CASCADER.TagClass);
461
+ var suggestionPanelEl = null;
462
+ if (suggestionPanel && (suggestionPanelEl = suggestionPanel.$el)) {
463
+ var suggestionList = suggestionPanelEl.querySelector(CASCADER.ListClass);
464
+ suggestionList.style.minWidth = inputInner.offsetWidth + 'px';
465
+ }
466
+ if (tags) {
467
+ var offsetHeight = tags.offsetHeight;
468
+ var height = Math.max(offsetHeight + 6, state.inputInitialHeight) + 'px';
469
+ inputInner.style.height = height;
470
+ updatePopper();
471
+ }
472
+ };
473
+ };
474
+ export var getCheckedNodes = function getCheckedNodes(state) {
475
+ return function (leafOnly) {
476
+ return state.panel.getCheckedNodes(leafOnly, state.checkedValue);
477
+ };
478
+ };
479
+ export var setInputHeightToTag = function setInputHeightToTag(_ref21) {
480
+ var nextTick = _ref21.nextTick,
481
+ parent = _ref21.parent;
482
+ return function () {
483
+ nextTick(function () {
484
+ var parentEl = parent.$el;
485
+ var height = parentEl.querySelector(CASCADER.TagClass).offsetHeight + 6 + 'px';
486
+ parentEl.querySelector(CASCADER.InputClass).style.height = height;
487
+ });
488
+ };
489
+ };
490
+ export var presentTextHandler = function presentTextHandler(_ref22) {
491
+ var state = _ref22.state,
492
+ value = _ref22.value;
493
+ if (state.inputValue) {
494
+ if (state.inputValue !== value) {
495
+ state.inputValue = value;
496
+ }
497
+ } else {
498
+ if (value) {
499
+ state.inputValue = value;
500
+ }
501
+ }
502
+ };
503
+ export var handleBeforeUpdate = function handleBeforeUpdate(_ref23) {
504
+ var props = _ref23.props,
505
+ api = _ref23.api;
506
+ return function () {
507
+ if (!isEmpty(props.modelValue)) {
508
+ api.computePresentContent();
509
+ }
510
+ };
511
+ };