@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,122 @@
1
+ import { mounted } from './index';
2
+ import userPopper from '@opentiny/vue-renderless/common/deps/vue-popper';
3
+ export var api = ['state', 'doDestroy'];
4
+ var initState = function initState(_ref) {
5
+ var reactive = _ref.reactive,
6
+ computed = _ref.computed,
7
+ popper = _ref.popper,
8
+ selectVm = _ref.selectVm;
9
+ var showPopper = popper.showPopper,
10
+ currentPlacement = popper.currentPlacement,
11
+ popperElm = popper.popperElm,
12
+ referenceElm = popper.referenceElm;
13
+ var state = reactive({
14
+ showPopper: showPopper,
15
+ currentPlacement: currentPlacement,
16
+ popperElm: popperElm,
17
+ referenceElm: referenceElm,
18
+ minWidth: '',
19
+ multiple: computed(function () {
20
+ return selectVm.multiple;
21
+ }),
22
+ popperClass: computed(function () {
23
+ return selectVm.popperClass;
24
+ })
25
+ });
26
+ return state;
27
+ };
28
+ var initApi = function initApi(_ref2) {
29
+ var api = _ref2.api,
30
+ popper = _ref2.popper,
31
+ state = _ref2.state,
32
+ selectEmitter = _ref2.selectEmitter,
33
+ constants = _ref2.constants,
34
+ selectVm = _ref2.selectVm,
35
+ parent = _ref2.parent;
36
+ var destroyPopper = popper.destroyPopper,
37
+ doDestroy = popper.doDestroy,
38
+ updatePopper = popper.updatePopper;
39
+ Object.assign(api, {
40
+ state: state,
41
+ doDestroy: doDestroy,
42
+ mounted: mounted({
43
+ selectEmitter: selectEmitter,
44
+ constants: constants,
45
+ state: state,
46
+ selectVm: selectVm,
47
+ updatePopper: updatePopper,
48
+ destroyPopper: destroyPopper,
49
+ parent: parent
50
+ })
51
+ });
52
+ };
53
+ var initWatch = function initWatch(_ref3) {
54
+ var watch = _ref3.watch,
55
+ selectVm = _ref3.selectVm,
56
+ state = _ref3.state;
57
+ watch(function () {
58
+ return selectVm.state.inputWidth;
59
+ }, function () {
60
+ state.minWidth = (selectVm && selectVm.$el && selectVm.$el.getBoundingClientRect().width) + 'px';
61
+ }, {
62
+ immediate: true
63
+ });
64
+ };
65
+ export var renderless = function renderless(props, _ref4, _ref5) {
66
+ var computed = _ref4.computed,
67
+ onBeforeUnmount = _ref4.onBeforeUnmount,
68
+ onDeactivated = _ref4.onDeactivated,
69
+ onMounted = _ref4.onMounted,
70
+ reactive = _ref4.reactive,
71
+ toRefs = _ref4.toRefs,
72
+ watch = _ref4.watch,
73
+ inject = _ref4.inject;
74
+ var refs = _ref5.refs,
75
+ slots = _ref5.slots,
76
+ parent = _ref5.parent,
77
+ emit = _ref5.emit,
78
+ nextTick = _ref5.nextTick;
79
+ var api = {};
80
+ var constants = parent.select._constants;
81
+ var selectEmitter = inject('selectEmitter');
82
+ var selectVm = inject('selectVm');
83
+ var popper = userPopper({
84
+ emit: emit,
85
+ nextTick: nextTick,
86
+ onBeforeUnmount: onBeforeUnmount,
87
+ onDeactivated: onDeactivated,
88
+ props: props,
89
+ reactive: reactive,
90
+ refs: refs,
91
+ slots: slots,
92
+ toRefs: toRefs,
93
+ watch: watch
94
+ });
95
+ var state = initState({
96
+ reactive: reactive,
97
+ computed: computed,
98
+ popper: popper,
99
+ selectVm: selectVm
100
+ });
101
+ initApi({
102
+ api: api,
103
+ popper: popper,
104
+ state: state,
105
+ selectEmitter: selectEmitter,
106
+ constants: constants,
107
+ selectVm: selectVm,
108
+ parent: parent
109
+ });
110
+ initWatch({
111
+ watch: watch,
112
+ selectVm: selectVm,
113
+ state: state
114
+ });
115
+ onBeforeUnmount(function () {
116
+ popper.destroyPopper('remove');
117
+ state.popperElm = null;
118
+ state.referenceElm = null;
119
+ });
120
+ onMounted(api.mounted);
121
+ return api;
122
+ };
@@ -0,0 +1,94 @@
1
+ import { emitEvent } from '@opentiny/vue-renderless/common/event';
2
+ export var leftClick = function leftClick(_ref) {
3
+ var api = _ref.api,
4
+ props = _ref.props,
5
+ refs = _ref.refs,
6
+ state = _ref.state;
7
+ return function () {
8
+ if (state.leftLength >= 0) {
9
+ return;
10
+ }
11
+ state.leftLength = state.leftLength + (state.blockWidth + state.blockMargin) * props.wheelBlocks;
12
+ refs.insider.style.left = state.leftLength + 'px';
13
+ api.changeState();
14
+ };
15
+ };
16
+ export var rightClick = function rightClick(_ref2) {
17
+ var api = _ref2.api,
18
+ props = _ref2.props,
19
+ refs = _ref2.refs,
20
+ state = _ref2.state;
21
+ return function () {
22
+ if (state.blockWrapper < Math.abs(state.leftLength) + state.wrapperWidth) {
23
+ return;
24
+ }
25
+ state.leftLength = state.leftLength - (state.blockWidth + state.blockMargin) * props.wheelBlocks;
26
+ refs.insider.style.left = state.leftLength + 'px';
27
+ api.changeState();
28
+ };
29
+ };
30
+ export var blockClick = function blockClick(_ref3) {
31
+ var emit = _ref3.emit,
32
+ state = _ref3.state;
33
+ return function (_ref4) {
34
+ var item = _ref4.item,
35
+ index = _ref4.index;
36
+ if (!emitEvent(emit, 'before-click')) {
37
+ return;
38
+ }
39
+ state.currentIndex = index;
40
+ emit('click', item, index);
41
+ };
42
+ };
43
+ export var changeState = function changeState(_ref5) {
44
+ var state = _ref5.state;
45
+ return function () {
46
+ var contentWidth = state.blockWrapper;
47
+ state.showLeft = !(parseInt(state.leftLength, 10) >= 0);
48
+ state.showRight = contentWidth <= Math.abs(state.leftLength) + state.wrapperWidth;
49
+ };
50
+ };
51
+ export var mouseEvent = function mouseEvent(_ref6) {
52
+ var api = _ref6.api,
53
+ state = _ref6.state;
54
+ return function (e) {
55
+ if (e.wheelDelta >= 0) {
56
+ if (state.leftLength < 0) {
57
+ api.leftClick();
58
+ }
59
+ } else {
60
+ if (state.blockWrapper > Math.abs(state.leftLength) + state.wrapperWidth) {
61
+ api.rightClick();
62
+ }
63
+ }
64
+ };
65
+ };
66
+ export var changeSize = function changeSize(_ref7) {
67
+ var props = _ref7.props,
68
+ state = _ref7.state,
69
+ refs = _ref7.refs;
70
+ return function () {
71
+ state.wrapperWidth = refs.wrapper.offsetWidth;
72
+ state.blockWidth = parseInt((1 - (props.initBlocks - 1) * 0.02) / props.initBlocks * state.wrapperWidth, 10);
73
+ state.blockMargin = parseInt(state.wrapperWidth * 0.02, 10);
74
+ state.blockWrapper = props.modelValue.length * state.blockWidth + (props.modelValue.length - 1) * state.blockMargin;
75
+ };
76
+ };
77
+ export var swipeleft = function swipeleft(_ref8) {
78
+ var api = _ref8.api,
79
+ state = _ref8.state;
80
+ return function () {
81
+ if (state.blockWrapper > Math.abs(state.leftLength) + state.wrapperWidth) {
82
+ api.rightClick();
83
+ }
84
+ };
85
+ };
86
+ export var swiperight = function swiperight(_ref9) {
87
+ var api = _ref9.api,
88
+ state = _ref9.state;
89
+ return function () {
90
+ if (state.leftLength < 0) {
91
+ api.leftClick();
92
+ }
93
+ };
94
+ };
@@ -0,0 +1,58 @@
1
+ import { leftClick, rightClick, blockClick, changeState, changeSize, mouseEvent } from './index';
2
+ export var api = ['state', 'mouseEvent', 'rightClick', 'leftClick', 'blockClick'];
3
+ export var renderless = function renderless(props, _ref, _ref2) {
4
+ var onMounted = _ref.onMounted,
5
+ reactive = _ref.reactive;
6
+ var refs = _ref2.refs,
7
+ parent = _ref2.parent,
8
+ emit = _ref2.emit;
9
+ var api = {};
10
+ var state = reactive({
11
+ leftLength: 0,
12
+ blockWidth: 0,
13
+ blockMargin: 0,
14
+ showLeft: false,
15
+ showRight: false,
16
+ blockWrapper: 0,
17
+ wrapperWidth: 0,
18
+ currentIndex: -1,
19
+ offsetWidth: 0
20
+ });
21
+ Object.assign(api, {
22
+ state: state,
23
+ blockClick: blockClick({
24
+ emit: emit,
25
+ state: state
26
+ }),
27
+ changeState: changeState({
28
+ props: props,
29
+ state: state
30
+ }),
31
+ changeSize: changeSize({
32
+ props: props,
33
+ refs: refs,
34
+ state: state
35
+ }),
36
+ leftClick: leftClick({
37
+ api: api,
38
+ props: props,
39
+ refs: refs,
40
+ state: state
41
+ }),
42
+ mouseEvent: mouseEvent({
43
+ api: api,
44
+ props: props,
45
+ refs: refs,
46
+ state: state
47
+ }),
48
+ rightClick: rightClick({
49
+ api: api,
50
+ parent: parent,
51
+ props: props,
52
+ refs: refs,
53
+ state: state
54
+ })
55
+ });
56
+ onMounted(api.changeSize);
57
+ return api;
58
+ };
@@ -0,0 +1,434 @@
1
+ import { KEY_CODE } from '@opentiny/vue-renderless/common';
2
+ import { emitEvent } from '@opentiny/vue-renderless/common/event';
3
+ import { on, off, hasClass } from '@opentiny/vue-renderless/common/deps/dom';
4
+ import { toNumber } from '@opentiny/vue-renderless/common/string';
5
+ export var bindEvent = function bindEvent(api) {
6
+ return function () {
7
+ on(window, 'resize', api.bindResize);
8
+ api.bindResize();
9
+ };
10
+ };
11
+ export var unBindEvent = function unBindEvent(api) {
12
+ return function () {
13
+ return off(window, 'resize', api.bindResize);
14
+ };
15
+ };
16
+ export var bindResize = function bindResize(_ref) {
17
+ var parent = _ref.parent,
18
+ props = _ref.props,
19
+ state = _ref.state;
20
+ return function () {
21
+ var handleEl = parent.$el.firstElementChild;
22
+ state.sliderSize = handleEl['client' + (props.vertical ? 'Height' : 'Width')];
23
+ state.sliderOffset = handleEl.getBoundingClientRect();
24
+ };
25
+ };
26
+ export var bindKeyDown = function bindKeyDown(_ref2) {
27
+ var api = _ref2.api,
28
+ props = _ref2.props,
29
+ state = _ref2.state;
30
+ return function (event) {
31
+ if (state.disabled || state.activeIndex < 0) {
32
+ return;
33
+ }
34
+ var currentValue = 0;
35
+ switch (event.keyCode) {
36
+ case KEY_CODE.Home:
37
+ currentValue = props.min;
38
+ break;
39
+ case KEY_CODE.End:
40
+ currentValue = props.max;
41
+ break;
42
+ case KEY_CODE.PageUp:
43
+ currentValue = state.activeValue + Math.ceil(state.rangeDiff / props.numPages);
44
+ break;
45
+ case KEY_CODE.PageDown:
46
+ currentValue = state.activeValue - Math.ceil(state.rangeDiff / props.numPages);
47
+ break;
48
+ case KEY_CODE.ArrowUp:
49
+ case KEY_CODE.ArrowRight:
50
+ currentValue = state.activeValue + props.step;
51
+ break;
52
+ case KEY_CODE.ArrowDown:
53
+ case KEY_CODE.ArrowLeft:
54
+ currentValue = state.activeValue - props.step;
55
+ break;
56
+ default:
57
+ currentValue = state.activeValue;
58
+ break;
59
+ }
60
+ api.setActiveButtonValue(currentValue);
61
+ api.setButtonStyle();
62
+ api.setBarStyle();
63
+ };
64
+ };
65
+ export var bindMouseDown = function bindMouseDown(_ref3) {
66
+ var api = _ref3.api,
67
+ constants = _ref3.constants,
68
+ mode = _ref3.mode,
69
+ emit = _ref3.emit,
70
+ state = _ref3.state;
71
+ return function (event) {
72
+ if (event.button !== 0 && event.detail !== 0) {
73
+ state.activeIndex = -1;
74
+ return;
75
+ }
76
+ if (!emitEvent(emit, 'start', api.getActiveButtonValue())) {
77
+ state.activeIndex = -1;
78
+ return;
79
+ }
80
+ var handleEl = event.target;
81
+ var isClickBar = hasClass(handleEl, constants.sliderCls(mode)) || hasClass(handleEl, constants.rangeCls(mode));
82
+ var isClickBtn = hasClass(handleEl, constants.buttonCls(mode));
83
+ if (state.disabled || !isClickBtn && !isClickBar) {
84
+ state.activeIndex = -1;
85
+ return;
86
+ }
87
+ on(window, 'mouseup', api.bindMouseUp);
88
+ on(window, 'mousemove', api.bindMouseMove);
89
+ on(window, 'touchend', api.bindMouseUp);
90
+ on(window, 'touchmove', api.bindMouseMove);
91
+ state.isDrag = isClickBtn;
92
+ isClickBtn && (state.activeIndex = api.getActiveButtonIndex(event));
93
+ if (isClickBar) {
94
+ var currentValue = api.calculateValue(event);
95
+ if (state.isDouble) {
96
+ if (Math.abs(currentValue - state.leftBtnValue) > Math.abs(state.rightBtnValue - currentValue)) {
97
+ api.changeActiveValue(state.rightBtnValue < state.leftBtnValue);
98
+ } else {
99
+ api.changeActiveValue(state.rightBtnValue > state.leftBtnValue);
100
+ }
101
+ }
102
+ api.setActiveButtonValue(currentValue);
103
+ api.setButtonStyle();
104
+ api.setBarStyle();
105
+ emit('stop', api.getActiveButtonValue());
106
+ }
107
+ };
108
+ };
109
+ export var bindMouseMove = function bindMouseMove(_ref4) {
110
+ var api = _ref4.api,
111
+ nextTick = _ref4.nextTick,
112
+ state = _ref4.state;
113
+ return function (event) {
114
+ if (state.disabled || !state.isDrag) {
115
+ return;
116
+ }
117
+ api.setActiveButtonValue(api.calculateValue(event));
118
+ api.setButtonStyle();
119
+ api.setBarStyle();
120
+ nextTick(function () {
121
+ api.setTipStyle();
122
+ });
123
+ };
124
+ };
125
+ export var bindMouseUp = function bindMouseUp(_ref5) {
126
+ var api = _ref5.api,
127
+ emit = _ref5.emit,
128
+ state = _ref5.state;
129
+ return function () {
130
+ if (state.disabled || !state.isDrag) {
131
+ return;
132
+ }
133
+ state.showTip = false;
134
+ state.isDrag = false;
135
+ off(window, 'mouseup', api.bindMouseUp);
136
+ off(window, 'mousemove', api.bindMouseMove);
137
+ off(window, 'touchend', api.bindMouseUp);
138
+ off(window, 'touchmove', api.bindMouseMove);
139
+ emit('stop', api.getActiveButtonValue());
140
+ };
141
+ };
142
+ export var displayTip = function displayTip(_ref6) {
143
+ var api = _ref6.api,
144
+ nextTick = _ref6.nextTick,
145
+ state = _ref6.state;
146
+ return function (event) {
147
+ if (!state.showTip) {
148
+ state.showTip = true;
149
+ api.changeActiveValue(api.getActiveButtonIndex(event) === 0);
150
+ nextTick(function () {
151
+ api.setTipStyle();
152
+ });
153
+ }
154
+ };
155
+ };
156
+ export var hideTip = function hideTip(state) {
157
+ return function () {
158
+ return !state.isDrag && (state.showTip = false);
159
+ };
160
+ };
161
+ export var setTipStyle = function setTipStyle(_ref7) {
162
+ var constants = _ref7.constants,
163
+ mode = _ref7.mode,
164
+ parent = _ref7.parent,
165
+ props = _ref7.props,
166
+ state = _ref7.state;
167
+ return function () {
168
+ if (!props.showTip) {
169
+ return;
170
+ }
171
+ var tipStyle = {
172
+ top: 0,
173
+ left: 0
174
+ };
175
+ var tipEl = parent.$el.querySelector('.' + constants.tipCls(mode));
176
+ var moveSize = (state.activeValue - props.min) / state.rangeDiff * state.sliderSize;
177
+ if (props.vertical) {
178
+ tipStyle.top = state.sliderSize - moveSize - constants.BUTTON_SIZE - constants.TIP_HEIGHT / 2 + constants.HALF_BAR_HEIGHT;
179
+ tipStyle.left = -tipEl.clientWidth / 2 + constants.HALF_BAR_HEIGHT;
180
+ } else {
181
+ tipStyle.top = -constants.TIP_HEIGHT - constants.BUTTON_SIZE / 2 + constants.HALF_BAR_HEIGHT;
182
+ tipStyle.left = moveSize - constants.HALF_BAR_HEIGHT - tipEl.clientWidth / 2;
183
+ }
184
+ state.tipStyle = {
185
+ top: tipStyle.top + 'px',
186
+ left: tipStyle.left + 'px'
187
+ };
188
+ };
189
+ };
190
+ var getActiveButtonIndexFlag = function getActiveButtonIndexFlag(_ref8) {
191
+ var state = _ref8.state,
192
+ event = _ref8.event,
193
+ constants = _ref8.constants,
194
+ mode = _ref8.mode;
195
+ var cls = constants.buttonCls(mode);
196
+ var previousElementSibling = event.target.previousElementSibling;
197
+ return state.isDouble && hasClass(previousElementSibling, cls);
198
+ };
199
+ export var getActiveButtonIndex = function getActiveButtonIndex(_ref9) {
200
+ var constants = _ref9.constants,
201
+ mode = _ref9.mode,
202
+ state = _ref9.state;
203
+ return function (event) {
204
+ var flag = getActiveButtonIndexFlag({
205
+ state: state,
206
+ event: event,
207
+ constants: constants,
208
+ mode: mode
209
+ });
210
+ return flag ? 1 : 0;
211
+ };
212
+ };
213
+ var calcCurrentValue = function calcCurrentValue(_ref10) {
214
+ var currentValue = _ref10.currentValue,
215
+ props = _ref10.props,
216
+ state = _ref10.state;
217
+ if (currentValue <= props.min) {
218
+ currentValue = props.min;
219
+ } else if (currentValue >= props.max) {
220
+ currentValue = props.max;
221
+ } else {
222
+ var step = props.step > 0 ? props.step : 1;
223
+ var stepValue = (currentValue - props.min) % step;
224
+ if (stepValue) {
225
+ currentValue -= stepValue;
226
+ currentValue += stepValue * 2 > step ? +step : 0;
227
+ }
228
+ if (state.isDouble) {
229
+ if (state.activeIndex === 0 && currentValue >= state.rightBtnValue) {
230
+ currentValue = state.rightBtnValue;
231
+ } else if (state.activeIndex === 1 && currentValue <= state.leftBtnValue) {
232
+ currentValue = state.leftBtnValue;
233
+ }
234
+ }
235
+ }
236
+ return currentValue;
237
+ };
238
+ export var setActiveButtonValue = function setActiveButtonValue(_ref11) {
239
+ var api = _ref11.api,
240
+ emit = _ref11.emit,
241
+ props = _ref11.props,
242
+ state = _ref11.state;
243
+ return function (value) {
244
+ var currentValue = value;
245
+ currentValue = calcCurrentValue({
246
+ currentValue: currentValue,
247
+ props: props,
248
+ state: state
249
+ });
250
+ if (!state.isDouble) {
251
+ state.leftBtnValue = currentValue;
252
+ } else {
253
+ if (state.activeIndex === 0) {
254
+ state.leftBtnValue = currentValue;
255
+ } else {
256
+ state.rightBtnValue = currentValue;
257
+ }
258
+ }
259
+ state.activeValue = currentValue;
260
+ state.innerTrigger = true;
261
+ emit('update:modelValue', api.getActiveButtonValue());
262
+ };
263
+ };
264
+ export var setButtonStyle = function setButtonStyle(_ref12) {
265
+ var props = _ref12.props,
266
+ state = _ref12.state;
267
+ return function () {
268
+ var percent = (state.activeValue - props.min) / state.rangeDiff * 100;
269
+ var style = (props.vertical ? 'bottom' : 'left') + ':' + percent + '%';
270
+ if (!state.isDouble || state.activeIndex === 0) {
271
+ state.leftBtnPercent = percent;
272
+ state.leftBtnStyle = style;
273
+ } else {
274
+ state.rightBtnPercent = percent;
275
+ state.rightBtnStyle = style;
276
+ }
277
+ };
278
+ };
279
+ export var setBarStyle = function setBarStyle(_ref13) {
280
+ var props = _ref13.props,
281
+ state = _ref13.state;
282
+ return function () {
283
+ var minSize = Math.abs(state.leftBtnPercent - state.rightBtnPercent);
284
+ var maxSize = Math.max(state.leftBtnPercent, state.rightBtnPercent);
285
+ if (props.vertical) {
286
+ state.barStyle = {
287
+ bottom: maxSize - minSize + '%',
288
+ height: minSize + '%'
289
+ };
290
+ } else {
291
+ state.barStyle = {
292
+ left: maxSize - minSize + '%',
293
+ width: minSize + '%'
294
+ };
295
+ }
296
+ };
297
+ };
298
+ export var initSlider = function initSlider(_ref14) {
299
+ var api = _ref14.api,
300
+ props = _ref14.props,
301
+ state = _ref14.state;
302
+ return function (value) {
303
+ state.isDouble = Array.isArray(value);
304
+ var sliders = state.isDouble ? value : [value];
305
+ sliders.length > 2 && (sliders.length = 2);
306
+ sliders.forEach(function (item, index) {
307
+ if (index === 0) {
308
+ state.leftBtnValue = Math.max(+item, props.min);
309
+ } else {
310
+ state.rightBtnValue = Math.min(+item, props.max);
311
+ state.rightBtnShow = true;
312
+ }
313
+ api.changeActiveValue(index === 0);
314
+ api.setButtonStyle();
315
+ });
316
+ api.setBarStyle();
317
+ };
318
+ };
319
+ export var calculateValue = function calculateValue(_ref15) {
320
+ var props = _ref15.props,
321
+ state = _ref15.state;
322
+ return function (event) {
323
+ var currentValue = 0;
324
+ var offset = state.sliderOffset;
325
+ if (event.type === 'touchmove' || event.type === 'touchstart' || event.type === 'touchend') {
326
+ if (props.vertical) {
327
+ currentValue = props.max - (event.touches[0].pageY - offset.top) / state.sliderSize * state.rangeDiff;
328
+ } else {
329
+ currentValue = props.min + (event.touches[0].pageX - offset.left) / state.sliderSize * state.rangeDiff;
330
+ }
331
+ } else {
332
+ if (props.vertical) {
333
+ currentValue = props.max - (event.pageY - offset.top) / state.sliderSize * state.rangeDiff;
334
+ } else {
335
+ currentValue = props.min + (event.pageX - offset.left) / state.sliderSize * state.rangeDiff;
336
+ }
337
+ }
338
+ return currentValue;
339
+ };
340
+ };
341
+ export var changeActiveValue = function changeActiveValue(state) {
342
+ return function (isLeft) {
343
+ state.activeIndex = isLeft ? 0 : 1;
344
+ state.activeValue = isLeft ? state.leftBtnValue : state.rightBtnValue;
345
+ };
346
+ };
347
+ export var formatTipValue = function formatTipValue(props) {
348
+ return function (value) {
349
+ return props.formatTooltip instanceof Function ? props.formatTooltip(value) : value;
350
+ };
351
+ };
352
+ export var getActiveButtonValue = function getActiveButtonValue(state) {
353
+ return function () {
354
+ return state.isDouble ? [state.leftBtnValue, state.rightBtnValue] : state.leftBtnValue;
355
+ };
356
+ };
357
+ export var autoSlider = function autoSlider(api) {
358
+ return function (value) {
359
+ api.setActiveButtonValue(value);
360
+ api.setButtonStyle();
361
+ api.setBarStyle();
362
+ };
363
+ };
364
+ export var customBeforeAppearHook = function customBeforeAppearHook(props) {
365
+ return function (el) {
366
+ if (props.vertical) {
367
+ el.style.bottom = 0 + '%';
368
+ el.style.height = 0 + '%';
369
+ } else {
370
+ el.style.left = 0 + '%';
371
+ el.style.width = 0 + '%';
372
+ }
373
+ };
374
+ };
375
+ export var customAppearHook = function customAppearHook() {
376
+ return function (el) {
377
+ el.style.transition = 'all 0.5s';
378
+ };
379
+ };
380
+ export var customAfterAppearHook = function customAfterAppearHook(_ref16) {
381
+ var state = _ref16.state,
382
+ props = _ref16.props;
383
+ return function (el) {
384
+ var minSize = Math.abs(state.leftBtnPercent - state.rightBtnPercent);
385
+ var maxSize = Math.max(state.leftBtnPercent, state.rightBtnPercent);
386
+ if (props.vertical) {
387
+ el.style.bottom = maxSize - minSize + '%';
388
+ el.style.height = minSize + '%';
389
+ } else {
390
+ if (state.isDouble) {
391
+ el.style.left = maxSize - minSize + '%';
392
+ el.style.width = minSize + '%';
393
+ } else {
394
+ el.style.width = minSize + '%';
395
+ }
396
+ }
397
+ };
398
+ };
399
+ export var watchActiveValue = function watchActiveValue(_ref17) {
400
+ var api = _ref17.api,
401
+ emit = _ref17.emit,
402
+ props = _ref17.props,
403
+ state = _ref17.state;
404
+ return function (newValue, oldValue) {
405
+ var nNewValue = toNumber(newValue) || 0;
406
+ var nOldValue = toNumber(oldValue) || 0;
407
+ if (nNewValue !== nOldValue) {
408
+ api.autoSlider(nNewValue);
409
+ if (nNewValue <= props.max && nNewValue >= props.min) {
410
+ var value = api.getActiveButtonValue();
411
+ if (state.lastValue && state.lastValue.toString() !== value.toString()) {
412
+ emit('change', value);
413
+ }
414
+ state.lastValue = value;
415
+ }
416
+ } else {
417
+ state.activeValue = nNewValue || 0;
418
+ }
419
+ };
420
+ };
421
+ export var watchModelValue = function watchModelValue(_ref18) {
422
+ var api = _ref18.api,
423
+ state = _ref18.state;
424
+ return function (value) {
425
+ if (!state.innerTrigger) {
426
+ api.initSlider(value);
427
+ } else {
428
+ state.innerTrigger = false;
429
+ if (!state.isDouble) {
430
+ api.initSlider(value);
431
+ }
432
+ }
433
+ };
434
+ };