@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
package/button/vue.js ADDED
@@ -0,0 +1,43 @@
1
+ import { handleClick, clearTimer } from './index';
2
+ export var api = ['state', 'handleClick'];
3
+ export var renderless = function renderless(props, _ref, _ref2) {
4
+ var computed = _ref.computed,
5
+ onBeforeUnmount = _ref.onBeforeUnmount,
6
+ reactive = _ref.reactive,
7
+ watch = _ref.watch,
8
+ inject = _ref.inject;
9
+ var emit = _ref2.emit,
10
+ parent = _ref2.parent;
11
+ parent.tinyForm = parent.tinyForm || inject('form', null);
12
+ var state = reactive({
13
+ timer: null,
14
+ disabled: props.disabled,
15
+ plain: computed(function () {
16
+ return props.plain || (parent.buttonGroup || {}).plain;
17
+ }),
18
+ formDisabled: computed(function () {
19
+ return (parent.tinyForm || {}).disabled;
20
+ }),
21
+ buttonDisabled: computed(function () {
22
+ return props.disabled || state.disabled || (parent.buttonGroup || {}).disabled || state.formDisabled;
23
+ })
24
+ });
25
+ watch(function () {
26
+ return props.disabled;
27
+ }, function (value) {
28
+ state.disabled = value;
29
+ }, {
30
+ immediate: true
31
+ });
32
+ var api = {
33
+ state: state,
34
+ clearTimer: clearTimer(state),
35
+ handleClick: handleClick({
36
+ emit: emit,
37
+ props: props,
38
+ state: state
39
+ })
40
+ };
41
+ onBeforeUnmount(api.clearTimer);
42
+ return api;
43
+ };
@@ -0,0 +1,25 @@
1
+ export var handleClick = function handleClick(_ref) {
2
+ var emit = _ref.emit,
3
+ props = _ref.props,
4
+ state = _ref.state;
5
+ return function (node) {
6
+ if (!state.disabled) {
7
+ state.value = node[props.valueField];
8
+ emit('update:modelValue', state.value);
9
+ }
10
+ };
11
+ };
12
+ export var moreNodeClick = function moreNodeClick(_ref2) {
13
+ var emit = _ref2.emit,
14
+ props = _ref2.props,
15
+ state = _ref2.state;
16
+ return function (node) {
17
+ if (!state.disabled) {
18
+ var index = state.moreData.indexOf(node);
19
+ state.moreData.splice(index, 1, state.buttonData[state.buttonData.length - 1]);
20
+ state.buttonData.splice(state.buttonData.length - 1, 1, node);
21
+ state.value = node[props.valueField];
22
+ emit('update:modelValue', state.value);
23
+ }
24
+ };
25
+ };
@@ -0,0 +1,51 @@
1
+ import { handleClick, moreNodeClick } from './index';
2
+ export var api = ['state', 'handleClick', 'moreNodeClick'];
3
+ export var renderless = function renderless(props, _ref, _ref2) {
4
+ var _props$data, _props$data2;
5
+ var computed = _ref.computed,
6
+ reactive = _ref.reactive,
7
+ watch = _ref.watch,
8
+ inject = _ref.inject;
9
+ var emit = _ref2.emit,
10
+ parent = _ref2.parent;
11
+ parent.tinyForm = parent.tinyForm || inject('form', null);
12
+ var state = reactive({
13
+ value: props.modelValue,
14
+ buttonData: ((_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.slice(0, props.showMore)) || [],
15
+ moreData: ((_props$data2 = props.data) === null || _props$data2 === void 0 ? void 0 : _props$data2.slice(props.showMore, props.data.length)) || [],
16
+ formDisabled: computed(function () {
17
+ return (parent.tinyForm || {}).disabled;
18
+ }),
19
+ disabled: computed(function () {
20
+ return props.disabled || state.formDisabled;
21
+ }),
22
+ attributeValue: computed(function () {
23
+ if (state.disabled) {
24
+ return {
25
+ disabled: state.disabled
26
+ };
27
+ }
28
+ return props.plain ? {
29
+ plain: props.plain
30
+ } : '';
31
+ })
32
+ });
33
+ watch(function () {
34
+ return props.modelValue;
35
+ }, function (value) {
36
+ if (!state.disabled && state.value !== value) {
37
+ state.value = value;
38
+ }
39
+ }, {
40
+ immediate: true
41
+ });
42
+ var api = {
43
+ state: state,
44
+ handleClick: handleClick({
45
+ emit: emit,
46
+ props: props,
47
+ state: state
48
+ })
49
+ };
50
+ return api;
51
+ };
@@ -0,0 +1,279 @@
1
+ import { isLeapYear } from '@opentiny/vue-renderless/common/date';
2
+ import { copyArray } from '@opentiny/vue-renderless/common/object';
3
+ export var getDays = function getDays(year, month) {
4
+ return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month - 1];
5
+ };
6
+ export var getWeek = function getWeek(year, month, day) {
7
+ return new Date("".concat(year, "/").concat(month, "/").concat(day)).getDay();
8
+ };
9
+ export var lastMonth = function lastMonth(year, month) {
10
+ year = +year;
11
+ month = +month;
12
+ if (month === 1) {
13
+ year--;
14
+ month = 12;
15
+ } else {
16
+ month--;
17
+ }
18
+ return {
19
+ year: year,
20
+ month: month
21
+ };
22
+ };
23
+ export var nextMonth = function nextMonth(year, month) {
24
+ year = +year;
25
+ month = +month;
26
+ if (month === 12) {
27
+ year++;
28
+ month = 1;
29
+ } else {
30
+ month++;
31
+ }
32
+ return {
33
+ year: year,
34
+ month: month
35
+ };
36
+ };
37
+ export var getCalendar = function getCalendar(year, month) {
38
+ if (year && month && month <= 12) {
39
+ var days = getDays(year, month);
40
+ var firstWeek = getWeek(year, month, 1);
41
+ var lastWeek = getWeek(year, month, days);
42
+ var last = lastMonth(year, month);
43
+ var lastDays = getDays(last.year, last.month);
44
+ var remainDays = 0;
45
+ var totalDays = days + firstWeek + 7 - lastWeek - 1;
46
+ if (totalDays / 7 < 6 && totalDays / 7 >= 5) {
47
+ remainDays = 6 * 7 - totalDays;
48
+ }
49
+ return {
50
+ last: {
51
+ start: lastDays - (firstWeek - 1),
52
+ end: lastDays
53
+ },
54
+ current: {
55
+ start: 1,
56
+ end: days
57
+ },
58
+ next: {
59
+ start: 1,
60
+ end: 7 - lastWeek - 1 + remainDays
61
+ }
62
+ };
63
+ }
64
+ };
65
+ export var transformArray = function transformArray(array) {
66
+ var result = [];
67
+ var index = 0;
68
+ if (array && array.length) {
69
+ var length = array.length / 7;
70
+ for (var i = 0; i < length; i++) {
71
+ result[i] = [];
72
+ for (var j = 0; j < 7; j++) {
73
+ result[i][j] = array[index++];
74
+ }
75
+ }
76
+ }
77
+ return result;
78
+ };
79
+ export var parseDate = function parseDate(time) {
80
+ var date = new Date(time && typeof time === 'number' ? time : 0);
81
+ return {
82
+ year: date.getFullYear(),
83
+ month: date.getMonth() + 1,
84
+ day: date.getDate(),
85
+ hours: date.getHours(),
86
+ minutes: date.getMinutes(),
87
+ seconds: date.getSeconds()
88
+ };
89
+ };
90
+ export var computedCalendar = function computedCalendar(_ref) {
91
+ var state = _ref.state;
92
+ return function () {
93
+ var calendar = getCalendar(state.activeYear, state.activeMonth);
94
+ var result = [];
95
+ if (calendar) {
96
+ var last = calendar.last,
97
+ current = calendar.current,
98
+ next = calendar.next;
99
+ if (last && calendar.last.end >= calendar.last.start) {
100
+ for (var i = last.start; i <= last.end; i++) {
101
+ result.push({
102
+ value: i,
103
+ isLast: true
104
+ });
105
+ }
106
+ }
107
+ if (current) {
108
+ for (var _i = current.start; _i <= current.end; _i++) {
109
+ result.push({
110
+ value: _i
111
+ });
112
+ }
113
+ }
114
+ if (next.end >= next.start) {
115
+ for (var _i2 = next.start; _i2 <= next.end; _i2++) {
116
+ result.push({
117
+ value: _i2,
118
+ isNext: true
119
+ });
120
+ }
121
+ }
122
+ }
123
+ return transformArray(result);
124
+ };
125
+ };
126
+ export var computedEventList = function computedEventList(_ref2) {
127
+ var props = _ref2.props,
128
+ state = _ref2.state;
129
+ return function () {
130
+ var result = [];
131
+ if (props.events && props.events.length) {
132
+ result = props.events.filter(function (item) {
133
+ var _parseDate = parseDate(item.time),
134
+ year = _parseDate.year,
135
+ month = _parseDate.month;
136
+ return +state.activeYear === year && +state.activeMonth === month;
137
+ });
138
+ }
139
+ return result;
140
+ };
141
+ };
142
+ export var toggeModel = function toggeModel(state) {
143
+ return function (mode) {
144
+ var isYearOrMonth = /^(year|month)$/.test(mode);
145
+ state.displayMode = isYearOrMonth ? mode : state.displayMode === 'year' ? 'month' : 'year';
146
+ };
147
+ };
148
+ export var selectMonth = function selectMonth(state) {
149
+ return function (month) {
150
+ if (month && typeof month === 'number' && month <= 12) {
151
+ state.activeMonth = month;
152
+ }
153
+ };
154
+ };
155
+ export var selectDay = function selectDay(state) {
156
+ return function (day) {
157
+ if (day && day.value) {
158
+ if (day.isLast) {
159
+ var _lastMonth = lastMonth(state.activeYear, state.activeMonth),
160
+ year = _lastMonth.year,
161
+ month = _lastMonth.month;
162
+ state.activeMonth = month;
163
+ state.activeYear = year;
164
+ }
165
+ if (day.isNext) {
166
+ var _nextMonth = nextMonth(state.activeYear, state.activeMonth),
167
+ _year = _nextMonth.year,
168
+ _month = _nextMonth.month;
169
+ state.activeMonth = _month;
170
+ state.activeYear = _year;
171
+ }
172
+ state.selectedTip = "You selected date: ".concat(state.activeYear, "-").concat(state.activeMonth, "-").concat(day.value);
173
+ state.selectedDate = +new Date("".concat(state.activeYear, "/").concat(state.activeMonth, "/").concat(day.value));
174
+ }
175
+ };
176
+ };
177
+ export var getEventByDay = function getEventByDay(state) {
178
+ return function (day) {
179
+ var events = [];
180
+ if (state.eventList && state.eventList.length) {
181
+ events = copyArray(state.eventList).filter(function (_ref3) {
182
+ var time = _ref3.time;
183
+ var date = new Date(time);
184
+ return date.getDate() === day && date.getFullYear() === +state.activeYear && date.getMonth() + 1 === +state.activeMonth;
185
+ }).map(function (event) {
186
+ event.parseTime = parseDate(event.time);
187
+ return event;
188
+ });
189
+ }
190
+ return events;
191
+ };
192
+ };
193
+ export var getEventByMonth = function getEventByMonth(_ref4) {
194
+ var props = _ref4.props,
195
+ state = _ref4.state;
196
+ return function (month) {
197
+ var events = [];
198
+ if (props.events) {
199
+ events = copyArray(props.events).filter(function (_ref5) {
200
+ var time = _ref5.time;
201
+ var date = new Date(time);
202
+ return date.getFullYear() === +state.activeYear && date.getMonth() + 1 === month;
203
+ }).map(function (event) {
204
+ event.parseTime = parseDate(event.time);
205
+ return event;
206
+ });
207
+ }
208
+ return events;
209
+ };
210
+ };
211
+ export var getTime = function getTime(state) {
212
+ return function (day) {
213
+ return +new Date("".concat(state.activeYear, "/").concat(state.activeMonth, "/").concat(day));
214
+ };
215
+ };
216
+ export var getYearList = function getYearList() {
217
+ return function () {
218
+ var date = new Date();
219
+ var year = date.getFullYear();
220
+ var yesrs = [];
221
+ for (var i = year - 10; i < year + 10; i++) {
222
+ yesrs.push(i);
223
+ }
224
+ return yesrs;
225
+ };
226
+ };
227
+ export var isToday = function isToday(state) {
228
+ return function (day) {
229
+ var date = new Date();
230
+ var year = +state.activeYear;
231
+ var month = +state.activeMonth;
232
+ if (day.isLast) {
233
+ var lastDate = lastMonth(state.activeYear, state.activeMonth);
234
+ year = lastDate.year;
235
+ month = lastDate.month;
236
+ }
237
+ if (day.isNext) {
238
+ var nextDate = nextMonth(state.activeYear, state.activeMonth);
239
+ year = nextDate.year;
240
+ month = nextDate.month;
241
+ }
242
+ return date.getDate() === day.value && date.getFullYear() === year && date.getMonth() + 1 === month;
243
+ };
244
+ };
245
+ export var isThisMonth = function isThisMonth(state) {
246
+ return function (month) {
247
+ var date = new Date();
248
+ var year = +state.activeYear;
249
+ return date.getMonth() + 1 === month && date.getFullYear() === year;
250
+ };
251
+ };
252
+ export var genMonths = function genMonths() {
253
+ var result = [];
254
+ var index = 1;
255
+ for (var i = 0; i < 3; i++) {
256
+ result[i] = [];
257
+ for (var j = 0; j < 4; j++) {
258
+ result[i][j] = index++;
259
+ }
260
+ }
261
+ return result;
262
+ };
263
+ export var toToday = function toToday(state) {
264
+ return function () {
265
+ var year = new Date().getFullYear();
266
+ var month = new Date().getMonth() + 1;
267
+ var day = new Date().getDate();
268
+ state.activeMonth = month;
269
+ state.activeYear = year;
270
+ state.selectedTip = "You selected date: ".concat(year, "-").concat(month, "-").concat(day);
271
+ state.selectedDate = +new Date("".concat(year, "/").concat(month, "/").concat(day));
272
+ };
273
+ };
274
+ export var getCurrentDate = function getCurrentDate() {
275
+ var day = new Date().getDate();
276
+ var month = new Date().getMonth() + 1;
277
+ var year = new Date().getFullYear();
278
+ return +new Date("".concat(year, "/").concat(month, "/").concat(day));
279
+ };
@@ -0,0 +1,124 @@
1
+ import { computedCalendar, computedEventList, toggeModel, selectMonth, selectDay, getEventByDay, getEventByMonth, getTime, getYearList, isToday, isThisMonth, genMonths, toToday, getCurrentDate } from './index';
2
+ export var api = ['state', 'renderProxy', 'isToday', 'isThisMonth', 'getEventByMonth', 'getEventByDay', 'selectDay', 'selectMonth', 'toggeModel', 'getTime', 'genMonths', 'toToday'];
3
+ var initState = function initState(_ref) {
4
+ var reactive = _ref.reactive,
5
+ props = _ref.props,
6
+ computed = _ref.computed,
7
+ api = _ref.api;
8
+ var state = reactive({
9
+ index: 0,
10
+ selectedTip: '',
11
+ selectedDate: getCurrentDate(),
12
+ showYear: false,
13
+ showMonth: false,
14
+ activeYear: props.year,
15
+ displayMode: props.mode,
16
+ activeMonth: props.month,
17
+ dropdownYear: computed(function () {
18
+ return api.getYearList();
19
+ }),
20
+ calendar: computed(function () {
21
+ return api.computedCalendar();
22
+ }),
23
+ eventList: computed(function () {
24
+ return api.computedEventList();
25
+ })
26
+ });
27
+ return state;
28
+ };
29
+ var initWatch = function initWatch(_ref2) {
30
+ var watch = _ref2.watch,
31
+ props = _ref2.props,
32
+ state = _ref2.state,
33
+ emit = _ref2.emit;
34
+ watch(function () {
35
+ return props.year;
36
+ }, function (value, oldValue) {
37
+ if (value !== oldValue) {
38
+ state.activeYear = value;
39
+ }
40
+ }, {
41
+ immediate: true
42
+ });
43
+ watch(function () {
44
+ return props.month;
45
+ }, function (value, oldValue) {
46
+ if (value !== oldValue) {
47
+ state.activeMonth = value;
48
+ }
49
+ }, {
50
+ immediate: true
51
+ });
52
+ watch(function () {
53
+ return state.activeYear;
54
+ }, function (value, oldValue) {
55
+ if (value !== oldValue) {
56
+ emit('year-change', value, oldValue);
57
+ emit('update:modelValue', value, oldValue);
58
+ }
59
+ });
60
+ watch(function () {
61
+ return state.activeMonth;
62
+ }, function (value, oldValue) {
63
+ if (value !== oldValue) {
64
+ emit('month-change', value, oldValue);
65
+ }
66
+ });
67
+ };
68
+ var initApi = function initApi(_ref3) {
69
+ var api = _ref3.api,
70
+ state = _ref3.state,
71
+ t = _ref3.t,
72
+ props = _ref3.props;
73
+ Object.assign(api, {
74
+ state: state,
75
+ genMonths: genMonths,
76
+ computedCalendar: computedCalendar({
77
+ state: state
78
+ }),
79
+ computedEventList: computedEventList({
80
+ props: props,
81
+ state: state
82
+ }),
83
+ getTime: getTime(state),
84
+ isToday: isToday(state),
85
+ selectDay: selectDay(state),
86
+ getYearList: getYearList(t),
87
+ toggeModel: toggeModel(state),
88
+ selectMonth: selectMonth(state),
89
+ isThisMonth: isThisMonth(state),
90
+ getEventByDay: getEventByDay(state),
91
+ getEventByMonth: getEventByMonth({
92
+ props: props,
93
+ state: state
94
+ }),
95
+ toToday: toToday(state)
96
+ });
97
+ };
98
+ export var renderless = function renderless(props, _ref4, _ref5) {
99
+ var computed = _ref4.computed,
100
+ reactive = _ref4.reactive,
101
+ watch = _ref4.watch;
102
+ var t = _ref5.t,
103
+ emit = _ref5.emit;
104
+ var api = {};
105
+ var state = initState({
106
+ reactive: reactive,
107
+ props: props,
108
+ computed: computed,
109
+ api: api
110
+ });
111
+ initWatch({
112
+ watch: watch,
113
+ props: props,
114
+ state: state,
115
+ emit: emit
116
+ });
117
+ initApi({
118
+ api: api,
119
+ state: state,
120
+ t: t,
121
+ props: props
122
+ });
123
+ return api;
124
+ };
@@ -0,0 +1,39 @@
1
+ import PopupManager from '@opentiny/vue-renderless/common/deps/popup-manager';
2
+ export var toolClick = function toolClick(showMoreTools) {
3
+ return function (cb) {
4
+ typeof cb === 'function' && cb();
5
+ showMoreTools.value = false;
6
+ };
7
+ };
8
+ export var computedMoreTools = function computedMoreTools(_ref) {
9
+ var props = _ref.props;
10
+ return function () {
11
+ return Array.isArray(props.tools) && props.tools.length > 3 ? props.tools.slice(2) : [];
12
+ };
13
+ };
14
+ export var computedTools = function computedTools(_ref2) {
15
+ var props = _ref2.props,
16
+ state = _ref2.state,
17
+ constants = _ref2.constants,
18
+ refs = _ref2.refs,
19
+ t = _ref2.t;
20
+ return function () {
21
+ var result = [];
22
+ var tools = props.tools;
23
+ if (Array.isArray(tools) && tools.length) {
24
+ if (tools.length <= 3) {
25
+ result = tools;
26
+ } else {
27
+ result = [].concat(tools[0], tools[1], {
28
+ icon: constants.MOREICON,
29
+ title: t('ui.base.more'),
30
+ click: function click() {
31
+ state.showMoreTools = !state.showMoreTools;
32
+ refs['selector'].style.zIndex = PopupManager.nextZIndex();
33
+ }
34
+ });
35
+ }
36
+ }
37
+ return result;
38
+ };
39
+ };
@@ -0,0 +1,34 @@
1
+ import { toolClick, computedTools, computedMoreTools } from './index';
2
+ export var api = ['state', 'toolClick'];
3
+ export var renderless = function renderless(props, _ref, _ref2) {
4
+ var computed = _ref.computed,
5
+ reactive = _ref.reactive;
6
+ var t = _ref2.t,
7
+ refs = _ref2.refs,
8
+ constants = _ref2.constants;
9
+ var api = {
10
+ computedMoreTools: computedMoreTools({
11
+ props: props
12
+ })
13
+ };
14
+ var state = reactive({
15
+ isEnter: false,
16
+ showMoreTools: false,
17
+ moreTools: computed(function () {
18
+ return api.computedMoreTools(props);
19
+ }),
20
+ currentTools: computed(function () {
21
+ return api.computedTools();
22
+ })
23
+ });
24
+ api.state = state;
25
+ api.computedTools = computedTools({
26
+ constants: constants,
27
+ props: props,
28
+ refs: refs,
29
+ state: state,
30
+ t: t
31
+ });
32
+ api.toolClick = toolClick(state);
33
+ return api;
34
+ };