@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,110 @@
1
+ import { handleKeydown, isValidValue, scrollDown, handleMenuEnter, scrollToOption, handleClear, handleClick, parseTime, formatTime, nextTime, compareTime, watchValue, computItems, emitPick, emitDestroy } from './index';
2
+ import { DATEPICKER } from '@opentiny/vue-renderless/common';
3
+ export var api = ['state', 'handleMenuEnter', 'handleClick', 'handleClear', 'emitDestroy'];
4
+ var initState = function initState(_ref) {
5
+ var reactive = _ref.reactive,
6
+ computed = _ref.computed,
7
+ api = _ref.api;
8
+ var Start = DATEPICKER.Start,
9
+ End = DATEPICKER.End,
10
+ Step = DATEPICKER.Step;
11
+ var state = reactive({
12
+ popperClass: '',
13
+ start: Start,
14
+ end: End,
15
+ step: Step,
16
+ realValue: '',
17
+ defaultValue: '',
18
+ defaultTime: '',
19
+ visible: false,
20
+ minTime: '',
21
+ maxTime: '',
22
+ width: 0,
23
+ lastEmitValue: '',
24
+ items: computed(function () {
25
+ return api.computItems();
26
+ }),
27
+ "default": computed(function () {
28
+ return state.defaultValue || state.defaultTime || '';
29
+ }),
30
+ value: computed({
31
+ get: function get() {
32
+ return state.realValue || state["default"];
33
+ },
34
+ set: function set(value) {
35
+ var valid = state.items.some(function (item) {
36
+ return item.value === value;
37
+ });
38
+ state.realValue = valid ? value : '';
39
+ }
40
+ })
41
+ });
42
+ return state;
43
+ };
44
+ export var renderless = function renderless(props, _ref2, _ref3) {
45
+ var computed = _ref2.computed,
46
+ reactive = _ref2.reactive,
47
+ watch = _ref2.watch,
48
+ nextTick = _ref2.nextTick;
49
+ var refs = _ref3.refs,
50
+ $emit = _ref3.emit;
51
+ var api = {};
52
+ var emit = props.emitter ? props.emitter.emit : $emit;
53
+ var state = initState({
54
+ reactive: reactive,
55
+ computed: computed,
56
+ api: api
57
+ });
58
+ Object.assign(api, {
59
+ state: state,
60
+ parseTime: parseTime(),
61
+ formatTime: formatTime(),
62
+ isValidValue: isValidValue(state),
63
+ scrollToOption: scrollToOption({
64
+ refs: refs
65
+ }),
66
+ emitPick: emitPick({
67
+ emit: emit,
68
+ state: state
69
+ }),
70
+ emitDestroy: emitDestroy(emit),
71
+ nextTime: nextTime(api),
72
+ compareTime: compareTime(api),
73
+ handleClick: handleClick(api),
74
+ scrollDown: scrollDown({
75
+ api: api,
76
+ state: state
77
+ }),
78
+ handleClear: handleClear({
79
+ api: api,
80
+ state: state
81
+ }),
82
+ watchValue: watchValue({
83
+ api: api,
84
+ nextTick: nextTick
85
+ }),
86
+ handleKeydown: handleKeydown({
87
+ api: api
88
+ }),
89
+ computItems: computItems({
90
+ api: api,
91
+ state: state
92
+ }),
93
+ handleMenuEnter: handleMenuEnter({
94
+ api: api,
95
+ nextTick: nextTick,
96
+ state: state
97
+ })
98
+ });
99
+ watch(function () {
100
+ return state.value;
101
+ }, api.watchValue);
102
+ watch(function () {
103
+ return state.visible;
104
+ }, function () {
105
+ return setTimeout(function () {
106
+ return state.fnUpdatePopper && state.fnUpdatePopper();
107
+ });
108
+ });
109
+ return api;
110
+ };
@@ -0,0 +1,199 @@
1
+ import { clearMilliseconds, timeWithinRange, limitTimeRange, modifyDate } from '@opentiny/vue-renderless/common/deps/date-util';
2
+ export var minTimeOfDay = function minTimeOfDay(_ref) {
3
+ var MIN_TIME = _ref.MIN_TIME;
4
+ return function (date) {
5
+ return modifyDate(MIN_TIME, date.getFullYear(), date.getMonth(), date.getDate());
6
+ };
7
+ };
8
+ export var maxTimeOfDay = function maxTimeOfDay(_ref2) {
9
+ var MAX_TIME = _ref2.MAX_TIME;
10
+ return function (date) {
11
+ return modifyDate(MAX_TIME, date.getFullYear(), date.getMonth(), date.getDate());
12
+ };
13
+ };
14
+ export var advanceTime = function advanceTime(api) {
15
+ return function (date, amount) {
16
+ return new Date(Math.min(date.getTime() + amount, api.maxTimeOfDay(date).getTime()));
17
+ };
18
+ };
19
+ export var compuAmPmMode = function compuAmPmMode(state) {
20
+ return function () {
21
+ if ((state.format || '').indexOf('A') !== -1) return 'A';
22
+ if ((state.format || '').indexOf('a') !== -1) return 'a';
23
+ return '';
24
+ };
25
+ };
26
+ export var watchValue = function watchValue(_ref3) {
27
+ var api = _ref3.api,
28
+ state = _ref3.state;
29
+ return function (value) {
30
+ if (Array.isArray(value)) {
31
+ if (value[0]) {
32
+ state.minDate = new Date(value[0]);
33
+ } else {
34
+ state.minDate = value[1] ? new Date(api.minTimeOfDay(new Date(value[1])).getTime()) : new Date();
35
+ }
36
+ if (value[1]) {
37
+ state.maxDate = new Date(value[1]);
38
+ } else {
39
+ state.maxDate = value[0] ? api.advanceTime(new Date(value[0]), 60 * 60 * 1000) : api.advanceTime(new Date(), 60 * 60 * 1000);
40
+ }
41
+ } else {
42
+ if (Array.isArray(state.defaultValue)) {
43
+ state.minDate = new Date(state.defaultValue[0]);
44
+ state.maxDate = new Date(state.defaultValue[1]);
45
+ } else if (state.defaultValue) {
46
+ state.minDate = new Date(state.defaultValue);
47
+ state.maxDate = api.advanceTime(new Date(state.defaultValue), 60 * 60 * 1000);
48
+ } else {
49
+ state.minDate = new Date();
50
+ state.maxDate = api.advanceTime(new Date(), 60 * 60 * 1000);
51
+ }
52
+ }
53
+ };
54
+ };
55
+ var adjustSpinners = function adjustSpinners(refs) {
56
+ refs.minSpinner.adjustSpinners();
57
+ refs.maxSpinner.adjustSpinners();
58
+ };
59
+ var setMaxMinData = function setMaxMinData(state) {
60
+ if (Array.isArray(state.oldValue)) {
61
+ state.oldValue[0] && (state.minDate = clearMilliseconds(state.oldValue[0]));
62
+ state.oldValue[1] && (state.maxDate = clearMilliseconds(state.oldValue[1]));
63
+ }
64
+ };
65
+ export var watchVisible = function watchVisible(_ref4) {
66
+ var nextTick = _ref4.nextTick,
67
+ refs = _ref4.refs,
68
+ state = _ref4.state;
69
+ return function (value) {
70
+ if (value) {
71
+ state.oldValue = state.value;
72
+ nextTick(function () {
73
+ setMaxMinData(state);
74
+ adjustSpinners(refs);
75
+ });
76
+ }
77
+ };
78
+ };
79
+ export var handleClear = function handleClear(emit) {
80
+ return function () {
81
+ return emit('pick', null);
82
+ };
83
+ };
84
+ export var handleCancel = function handleCancel(_ref5) {
85
+ var emit = _ref5.emit,
86
+ refs = _ref5.refs,
87
+ state = _ref5.state;
88
+ return function () {
89
+ state.visible = false;
90
+ emit('pick', state.oldValue);
91
+ setMaxMinData(state);
92
+ adjustSpinners(refs);
93
+ };
94
+ };
95
+ export var handleMinChange = function handleMinChange(_ref6) {
96
+ var api = _ref6.api,
97
+ state = _ref6.state;
98
+ return function (date) {
99
+ state.minDate = clearMilliseconds(date);
100
+ api.handleChange();
101
+ };
102
+ };
103
+ export var handleMaxChange = function handleMaxChange(_ref7) {
104
+ var api = _ref7.api,
105
+ state = _ref7.state;
106
+ return function (date) {
107
+ state.maxDate = clearMilliseconds(date);
108
+ api.handleChange();
109
+ };
110
+ };
111
+ export var handleChange = function handleChange(_ref8) {
112
+ var api = _ref8.api,
113
+ emit = _ref8.emit,
114
+ refs = _ref8.refs,
115
+ state = _ref8.state;
116
+ return function () {
117
+ if (api.isValidValue([state.minDate, state.maxDate])) {
118
+ refs.minSpinner.state.selectableRange = [[api.minTimeOfDay(state.minDate), state.maxDate]];
119
+ refs.maxSpinner.state.selectableRange = [[state.minDate, api.maxTimeOfDay(state.maxDate)]];
120
+ emit('pick', [state.minDate, state.maxDate], state.visible);
121
+ }
122
+ };
123
+ };
124
+ export var setMinSelectionRange = function setMinSelectionRange(_ref9) {
125
+ var emit = _ref9.emit,
126
+ state = _ref9.state;
127
+ return function (start, end) {
128
+ emit('select-range', start, end, 'min');
129
+ state.selectionRange = [start, end];
130
+ };
131
+ };
132
+ export var setMaxSelectionRange = function setMaxSelectionRange(_ref10) {
133
+ var emit = _ref10.emit,
134
+ state = _ref10.state;
135
+ return function (start, end) {
136
+ emit('select-range', start, end, 'max');
137
+ state.selectionRange = [start + state.offset, end + state.offset];
138
+ };
139
+ };
140
+ export var handleConfirm = function handleConfirm(_ref11) {
141
+ var emit = _ref11.emit,
142
+ refs = _ref11.refs,
143
+ state = _ref11.state;
144
+ return function () {
145
+ var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
146
+ var minSelectableRange = refs.minSpinner.state.selectableRange;
147
+ var maxSelectableRange = refs.maxSpinner.state.selectableRange;
148
+ state.minDate = limitTimeRange(state.minDate, minSelectableRange, state.format);
149
+ state.maxDate = limitTimeRange(state.maxDate, maxSelectableRange, state.format);
150
+ emit('pick', [state.minDate, state.maxDate], visible);
151
+ };
152
+ };
153
+ export var changeSelectionRange = function changeSelectionRange(_ref12) {
154
+ var refs = _ref12.refs,
155
+ state = _ref12.state;
156
+ return function (step) {
157
+ var list = state.showSeconds ? [0, 3, 6, 11, 14, 17] : [0, 3, 8, 11];
158
+ var mapping = ['hours', 'minutes'].concat(state.showSeconds ? ['seconds'] : []);
159
+ var index = list.indexOf(state.selectionRange[0]);
160
+ var next = (index + step + list.length) % list.length;
161
+ var half = list.length / 2;
162
+ if (next < half) {
163
+ refs.minSpinner.emitSelectRange(mapping[next]);
164
+ } else {
165
+ refs.maxSpinner.emitSelectRange(mapping[next - half]);
166
+ }
167
+ };
168
+ };
169
+ export var isValidValue = function isValidValue(_ref13) {
170
+ var refs = _ref13.refs,
171
+ state = _ref13.state;
172
+ return function (date) {
173
+ return Array.isArray(date) && timeWithinRange(state.minDate, refs.minSpinner.state.selectableRange) && timeWithinRange(state.maxDate, refs.maxSpinner.state.selectableRange);
174
+ };
175
+ };
176
+ export var handleKeydown = function handleKeydown(_ref14) {
177
+ var api = _ref14.api,
178
+ state = _ref14.state;
179
+ return function (event) {
180
+ var keyCode = event.keyCode;
181
+ var mapping = {
182
+ 38: -1,
183
+ 40: 1,
184
+ 37: -1,
185
+ 39: 1
186
+ };
187
+ if (keyCode === 37 || keyCode === 39) {
188
+ var step = mapping[keyCode];
189
+ api.changeSelectionRange(step);
190
+ event.preventDefault();
191
+ return;
192
+ }
193
+ if (keyCode === 38 || keyCode === 40) {
194
+ var _step = mapping[keyCode];
195
+ state.spinner.scrollDown(_step);
196
+ event.preventDefault();
197
+ }
198
+ };
199
+ };
@@ -0,0 +1,129 @@
1
+ import { handleKeydown, isValidValue, changeSelectionRange, handleConfirm, setMaxSelectionRange, setMinSelectionRange, handleChange, handleMaxChange, handleMinChange, handleCancel, handleClear, watchVisible, watchValue, minTimeOfDay, maxTimeOfDay, advanceTime, compuAmPmMode } from './index';
2
+ import { parseDate } from '@opentiny/vue-renderless/common/deps/date-util';
3
+ export var api = ['state', 'handleMinChange', 'handleConfirm', 'setMinSelectionRange', 'handleCancel', 'setMaxSelectionRange', 'handleMaxChange'];
4
+ var initState = function initState(_ref) {
5
+ var reactive = _ref.reactive,
6
+ computed = _ref.computed,
7
+ refs = _ref.refs,
8
+ api = _ref.api;
9
+ var state = reactive({
10
+ popperClass: '',
11
+ defaultValue: null,
12
+ format: 'HH:mm:ss',
13
+ visible: false,
14
+ value: [],
15
+ oldValue: [new Date(), new Date()],
16
+ selectionRange: [0, 2],
17
+ arrowControl: false,
18
+ maxDate: new Date(),
19
+ minDate: new Date(),
20
+ showSeconds: computed(function () {
21
+ return (state.format || '').indexOf('ss') !== -1;
22
+ }),
23
+ offset: computed(function () {
24
+ return state.showSeconds ? 11 : 8;
25
+ }),
26
+ spinner: computed(function () {
27
+ return state.selectionRange[0] < state.offset ? refs.minSpinner : refs.maxSpinner;
28
+ }),
29
+ btnDisabled: computed(function () {
30
+ return state.minDate.getTime() > state.maxDate.getTime();
31
+ }),
32
+ amPmMode: computed(function () {
33
+ return api.compuAmPmMode();
34
+ })
35
+ });
36
+ return state;
37
+ };
38
+ export var renderless = function renderless(props, _ref2, _ref3) {
39
+ var computed = _ref2.computed,
40
+ reactive = _ref2.reactive,
41
+ watch = _ref2.watch,
42
+ nextTick = _ref2.nextTick;
43
+ var t = _ref3.t,
44
+ refs = _ref3.refs,
45
+ $emit = _ref3.emit;
46
+ var api = {};
47
+ var emit = props.emitter ? props.emitter.emit : $emit;
48
+ var MIN_TIME = parseDate('00:00:00', 'HH:mm:ss', t);
49
+ var MAX_TIME = parseDate('23:59:59', 'HH:mm:ss', t);
50
+ var state = initState({
51
+ reactive: reactive,
52
+ computed: computed,
53
+ refs: refs,
54
+ api: api
55
+ });
56
+ Object.assign(api, {
57
+ t: t,
58
+ state: state,
59
+ handleClear: handleClear(emit),
60
+ compuAmPmMode: compuAmPmMode(state),
61
+ maxTimeOfDay: maxTimeOfDay({
62
+ MAX_TIME: MAX_TIME
63
+ }),
64
+ minTimeOfDay: minTimeOfDay({
65
+ MIN_TIME: MIN_TIME
66
+ }),
67
+ changeSelectionRange: changeSelectionRange({
68
+ refs: refs,
69
+ state: state
70
+ }),
71
+ setMaxSelectionRange: setMaxSelectionRange({
72
+ emit: emit,
73
+ state: state
74
+ }),
75
+ setMinSelectionRange: setMinSelectionRange({
76
+ emit: emit,
77
+ state: state
78
+ }),
79
+ isValidValue: isValidValue({
80
+ refs: refs,
81
+ state: state
82
+ }),
83
+ handleConfirm: handleConfirm({
84
+ emit: emit,
85
+ refs: refs,
86
+ state: state
87
+ }),
88
+ handleCancel: handleCancel({
89
+ emit: emit,
90
+ refs: refs,
91
+ state: state
92
+ }),
93
+ watchVisible: watchVisible({
94
+ nextTick: nextTick,
95
+ refs: refs,
96
+ state: state
97
+ }),
98
+ advanceTime: advanceTime(api),
99
+ watchValue: watchValue({
100
+ api: api,
101
+ state: state
102
+ }),
103
+ handleKeydown: handleKeydown({
104
+ api: api,
105
+ state: state
106
+ }),
107
+ handleChange: handleChange({
108
+ api: api,
109
+ emit: emit,
110
+ refs: refs,
111
+ state: state
112
+ }),
113
+ handleMinChange: handleMinChange({
114
+ api: api,
115
+ state: state
116
+ }),
117
+ handleMaxChange: handleMaxChange({
118
+ api: api,
119
+ state: state
120
+ })
121
+ });
122
+ watch(function () {
123
+ return state.value;
124
+ }, api.watchValue);
125
+ watch(function () {
126
+ return state.visible;
127
+ }, api.watchVisible);
128
+ return api;
129
+ };
@@ -0,0 +1,175 @@
1
+ import { modifyTime } from '@opentiny/vue-renderless/common/deps/date-util';
2
+ import { DATEPICKER } from '@opentiny/vue-renderless/common';
3
+ export var getArrowHourList = function getArrowHourList(state) {
4
+ return function () {
5
+ var hours = state.hours;
6
+ return [hours > 0 ? hours - 1 : undefined, hours, hours < 23 ? hours + 1 : undefined];
7
+ };
8
+ };
9
+ export var getArrowMinuteList = function getArrowMinuteList(state) {
10
+ return function () {
11
+ var minutes = state.minutes;
12
+ return [minutes > 0 ? minutes - 1 : undefined, minutes, minutes < 59 ? minutes + 1 : undefined];
13
+ };
14
+ };
15
+ export var getArrowSecondList = function getArrowSecondList(state) {
16
+ return function () {
17
+ var seconds = state.seconds;
18
+ return [seconds > 0 ? seconds - 1 : undefined, seconds, seconds < 59 ? seconds + 1 : undefined];
19
+ };
20
+ };
21
+ export var increase = function increase(api) {
22
+ return function () {
23
+ return api.scrollDown(1);
24
+ };
25
+ };
26
+ export var decrease = function decrease(api) {
27
+ return function () {
28
+ return api.scrollDown(-1);
29
+ };
30
+ };
31
+ export var modifyDateField = function modifyDateField(_ref) {
32
+ var emit = _ref.emit,
33
+ props = _ref.props,
34
+ state = _ref.state;
35
+ return function (type, value) {
36
+ if (state[type] === value) return;
37
+ switch (type) {
38
+ case 'hours':
39
+ emit('change', modifyTime(props.date, value, state.minutes, state.seconds));
40
+ break;
41
+ case 'minutes':
42
+ emit('change', modifyTime(props.date, state.hours, value, state.seconds));
43
+ break;
44
+ case 'seconds':
45
+ emit('change', modifyTime(props.date, state.hours, state.minutes, value));
46
+ break;
47
+ default:
48
+ break;
49
+ }
50
+ };
51
+ };
52
+ export var handleClick = function handleClick(api) {
53
+ return function (type, _ref2) {
54
+ var value = _ref2.value,
55
+ disabled = _ref2.disabled;
56
+ if (!disabled) {
57
+ api.modifyDateField(type, value);
58
+ api.emitSelectRange(type);
59
+ api.adjustSpinner(type, value);
60
+ }
61
+ };
62
+ };
63
+ export var emitSelectRange = function emitSelectRange(_ref3) {
64
+ var emit = _ref3.emit,
65
+ state = _ref3.state;
66
+ return function (type) {
67
+ if (type === 'hours') {
68
+ emit('select-range', 0, 2);
69
+ } else if (type === 'minutes') {
70
+ emit('select-range', 3, 5);
71
+ } else if (type === 'seconds') {
72
+ emit('select-range', 6, 8);
73
+ }
74
+ state.currentScrollbar = type;
75
+ };
76
+ };
77
+ export var bindScrollEvent = function bindScrollEvent(_ref4) {
78
+ var api = _ref4.api,
79
+ refs = _ref4.refs;
80
+ return function () {
81
+ var bindFuntion = function bindFuntion(type) {
82
+ refs[type].$refs.wrap.onscroll = function (e) {
83
+ api.handleScroll(type, e);
84
+ };
85
+ };
86
+ bindFuntion('hours');
87
+ bindFuntion('minutes');
88
+ bindFuntion('seconds');
89
+ };
90
+ };
91
+ export var handleScroll = function handleScroll(_ref5) {
92
+ var api = _ref5.api,
93
+ refs = _ref5.refs;
94
+ return function (type) {
95
+ var value = Math.min(Math.round((refs[type].$refs.wrap.scrollTop - (api.scrollBarHeight(type) * 0.5 - 10) / api.typeItemHeight(type) + 3) / api.typeItemHeight(type)), type === 'hours' ? 23 : 59);
96
+ api.modifyDateField(type, value);
97
+ };
98
+ };
99
+ export var adjustSpinners = function adjustSpinners(_ref6) {
100
+ var api = _ref6.api,
101
+ state = _ref6.state;
102
+ return function () {
103
+ api.adjustSpinner('hours', state.hours);
104
+ api.adjustSpinner('minutes', state.minutes);
105
+ api.adjustSpinner('seconds', state.seconds);
106
+ };
107
+ };
108
+ export var adjustCurrentSpinner = function adjustCurrentSpinner(_ref7) {
109
+ var api = _ref7.api,
110
+ state = _ref7.state;
111
+ return function (type) {
112
+ api.adjustSpinner(type, state[type]);
113
+ };
114
+ };
115
+ export var adjustSpinner = function adjustSpinner(_ref8) {
116
+ var api = _ref8.api,
117
+ props = _ref8.props,
118
+ refs = _ref8.refs;
119
+ return function (type, value) {
120
+ if (props.arrowControl) return;
121
+ var el = refs[type].$refs.wrap;
122
+ if (el) {
123
+ el.scrollTop = Math.max(0, value * api.typeItemHeight(type));
124
+ }
125
+ };
126
+ };
127
+ export var scrollDown = function scrollDown(_ref9) {
128
+ var api = _ref9.api,
129
+ state = _ref9.state;
130
+ return function (step) {
131
+ if (!state.currentScrollbar) {
132
+ api.emitSelectRange('hours');
133
+ }
134
+ var label = state.currentScrollbar;
135
+ var hoursArr = state.hoursList;
136
+ var now = state[label];
137
+ if (state.currentScrollbar === 'hours') {
138
+ var total = Math.abs(step);
139
+ step = step > 0 ? 1 : -1;
140
+ var length = hoursArr.length;
141
+ while (length-- && total) {
142
+ now = (now + step + hoursArr.length) % hoursArr.length;
143
+ if (!hoursArr[now]) {
144
+ total--;
145
+ }
146
+ }
147
+ if (hoursArr[now]) return;
148
+ } else {
149
+ now = (now + step + 60) % 60;
150
+ }
151
+ api.modifyDateField(label, now);
152
+ api.adjustSpinner(label, now);
153
+ };
154
+ };
155
+ export var amPm = function amPm(props) {
156
+ return function (hour) {
157
+ var shouldShowAmPm = props.amPmMode.toLowerCase() === 'a';
158
+ if (!shouldShowAmPm) return '';
159
+ var isCapital = props.amPmMode === 'A';
160
+ var content = hour < 12 ? ' am' : ' pm';
161
+ if (isCapital) content = content.toUpperCase();
162
+ return content;
163
+ };
164
+ };
165
+ export var typeItemHeight = function typeItemHeight(_ref10) {
166
+ var refs = _ref10.refs;
167
+ return function (type) {
168
+ return refs[type].$el.querySelector(DATEPICKER.Qurtyli).offsetHeight;
169
+ };
170
+ };
171
+ export var scrollBarHeight = function scrollBarHeight(refs) {
172
+ return function (type) {
173
+ return refs[type].$el.offsetHeight;
174
+ };
175
+ };