mazey-element-ui 2.0.1 → 2.15.16

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 (796) hide show
  1. package/LICENSE +2 -2
  2. package/README.md +71 -68
  3. package/lib/alert.js +271 -262
  4. package/lib/aside.js +134 -200
  5. package/lib/autocomplete.js +500 -443
  6. package/lib/avatar.js +284 -0
  7. package/lib/backtop.js +336 -0
  8. package/lib/badge.js +188 -221
  9. package/lib/breadcrumb-item.js +176 -226
  10. package/lib/breadcrumb.js +150 -213
  11. package/lib/button-group.js +121 -190
  12. package/lib/button.js +213 -268
  13. package/lib/calendar.js +801 -0
  14. package/lib/card.js +156 -203
  15. package/lib/carousel-item.js +242 -264
  16. package/lib/carousel.js +386 -284
  17. package/lib/cascader-panel.js +1323 -0
  18. package/lib/cascader.js +1000 -1116
  19. package/lib/checkbox-button.js +388 -327
  20. package/lib/checkbox-group.js +168 -233
  21. package/lib/checkbox.js +422 -350
  22. package/lib/col.js +58 -112
  23. package/lib/collapse-item.js +335 -327
  24. package/lib/collapse.js +177 -246
  25. package/lib/color-picker.js +1128 -1231
  26. package/lib/container.js +144 -211
  27. package/lib/date-picker.js +4316 -2745
  28. package/lib/descriptions-item.js +88 -0
  29. package/lib/descriptions.js +342 -0
  30. package/lib/dialog.js +359 -337
  31. package/lib/directives/mousewheel.js +6 -12
  32. package/lib/directives/repeat-click.js +10 -10
  33. package/lib/divider.js +251 -0
  34. package/lib/drawer.js +523 -0
  35. package/lib/dropdown-item.js +175 -228
  36. package/lib/dropdown-menu.js +203 -253
  37. package/lib/dropdown.js +286 -384
  38. package/lib/element-ui.common.js +34136 -25458
  39. package/lib/empty.js +657 -0
  40. package/lib/footer.js +134 -200
  41. package/lib/form-item.js +401 -304
  42. package/lib/form.js +278 -297
  43. package/lib/header.js +134 -200
  44. package/lib/icon.js +123 -193
  45. package/lib/image.js +1005 -0
  46. package/lib/index.js +1 -1
  47. package/lib/infinite-scroll.js +219 -0
  48. package/lib/input-number.js +442 -386
  49. package/lib/input.js +682 -512
  50. package/lib/link.js +267 -0
  51. package/lib/loading.js +278 -377
  52. package/lib/locale/format.js +14 -25
  53. package/lib/locale/index.js +19 -33
  54. package/lib/locale/lang/af-ZA.js +29 -8
  55. package/lib/locale/lang/ar.js +29 -14
  56. package/lib/locale/lang/az.js +127 -0
  57. package/lib/locale/lang/bg.js +35 -11
  58. package/lib/locale/lang/bn.js +126 -0
  59. package/lib/locale/lang/ca.js +24 -9
  60. package/lib/locale/lang/cs-CZ.js +19 -3
  61. package/lib/locale/lang/da.js +19 -3
  62. package/lib/locale/lang/de.js +19 -3
  63. package/lib/locale/lang/ee.js +24 -8
  64. package/lib/locale/lang/el.js +20 -4
  65. package/lib/locale/lang/en.js +25 -7
  66. package/lib/locale/lang/eo.js +128 -0
  67. package/lib/locale/lang/es.js +22 -7
  68. package/lib/locale/lang/eu.js +131 -0
  69. package/lib/locale/lang/fa.js +24 -8
  70. package/lib/locale/lang/fi.js +40 -24
  71. package/lib/locale/lang/fr.js +21 -4
  72. package/lib/locale/lang/he.js +29 -8
  73. package/lib/locale/lang/hr.js +131 -0
  74. package/lib/locale/lang/hu.js +20 -4
  75. package/lib/locale/lang/hy-AM.js +128 -0
  76. package/lib/locale/lang/id.js +23 -8
  77. package/lib/locale/lang/is.js +127 -0
  78. package/lib/locale/lang/it.js +21 -6
  79. package/lib/locale/lang/ja.js +19 -3
  80. package/lib/locale/lang/kg.js +128 -0
  81. package/lib/locale/lang/km.js +21 -6
  82. package/lib/locale/lang/ko.js +19 -3
  83. package/lib/locale/lang/ku.js +19 -3
  84. package/lib/locale/lang/kz.js +19 -3
  85. package/lib/locale/lang/lt.js +19 -3
  86. package/lib/locale/lang/lv.js +26 -10
  87. package/lib/locale/lang/mn.js +19 -3
  88. package/lib/locale/lang/ms.js +126 -0
  89. package/lib/locale/lang/nb-NO.js +28 -13
  90. package/lib/locale/lang/nl.js +19 -3
  91. package/lib/locale/lang/pl.js +19 -3
  92. package/lib/locale/lang/pt-br.js +18 -3
  93. package/lib/locale/lang/pt.js +35 -11
  94. package/lib/locale/lang/ro.js +19 -3
  95. package/lib/locale/lang/ru-RU.js +20 -5
  96. package/lib/locale/lang/si.js +130 -0
  97. package/lib/locale/lang/sk.js +23 -8
  98. package/lib/locale/lang/sl.js +26 -10
  99. package/lib/locale/lang/sr-Latn.js +127 -0
  100. package/lib/locale/lang/sr.js +131 -0
  101. package/lib/locale/lang/sv-SE.js +34 -15
  102. package/lib/locale/lang/sw.js +130 -0
  103. package/lib/locale/lang/ta.js +31 -9
  104. package/lib/locale/lang/th.js +30 -12
  105. package/lib/locale/lang/tk.js +27 -7
  106. package/lib/locale/lang/tr-TR.js +20 -4
  107. package/lib/locale/lang/ua.js +20 -5
  108. package/lib/locale/lang/ug-CN.js +22 -7
  109. package/lib/locale/lang/uz-UZ.js +127 -0
  110. package/lib/locale/lang/vi.js +23 -8
  111. package/lib/locale/lang/zh-CN.js +18 -3
  112. package/lib/locale/lang/zh-TW.js +25 -6
  113. package/lib/main.js +123 -192
  114. package/lib/menu-item-group.js +164 -225
  115. package/lib/menu-item.js +300 -333
  116. package/lib/menu.js +401 -576
  117. package/lib/message-box.js +730 -614
  118. package/lib/message.js +289 -327
  119. package/lib/mixins/emitter.js +2 -4
  120. package/lib/mixins/focus.js +3 -4
  121. package/lib/mixins/locale.js +5 -7
  122. package/lib/mixins/migrating.js +19 -21
  123. package/lib/notification.js +366 -394
  124. package/lib/option-group.js +198 -250
  125. package/lib/option.js +247 -291
  126. package/lib/page-header.js +248 -0
  127. package/lib/pagination.js +485 -635
  128. package/lib/popconfirm.js +381 -0
  129. package/lib/popover.js +361 -396
  130. package/lib/progress.js +387 -261
  131. package/lib/radio-button.js +319 -309
  132. package/lib/radio-group.js +224 -282
  133. package/lib/radio.js +347 -328
  134. package/lib/rate.js +286 -305
  135. package/lib/result.js +513 -0
  136. package/lib/row.js +59 -110
  137. package/lib/scrollbar.js +234 -344
  138. package/lib/select.js +1041 -806
  139. package/lib/skeleton-item.js +278 -0
  140. package/lib/skeleton.js +308 -0
  141. package/lib/slider.js +608 -467
  142. package/lib/spinner.js +160 -207
  143. package/lib/statistic.js +462 -0
  144. package/lib/step.js +270 -262
  145. package/lib/steps.js +198 -261
  146. package/lib/submenu.js +318 -420
  147. package/lib/switch.js +311 -281
  148. package/lib/tab-pane.js +185 -245
  149. package/lib/table-column.js +667 -414
  150. package/lib/table.js +3388 -2770
  151. package/lib/tabs.js +577 -648
  152. package/lib/tag.js +160 -227
  153. package/lib/theme-chalk/alert.css +1 -1
  154. package/lib/theme-chalk/aside.css +1 -1
  155. package/lib/theme-chalk/autocomplete.css +1 -1
  156. package/lib/theme-chalk/avatar.css +1 -0
  157. package/lib/theme-chalk/backtop.css +1 -0
  158. package/lib/theme-chalk/badge.css +1 -1
  159. package/lib/theme-chalk/base.css +1 -1
  160. package/lib/theme-chalk/breadcrumb.css +1 -1
  161. package/lib/theme-chalk/button.css +1 -1
  162. package/lib/theme-chalk/calendar.css +1 -0
  163. package/lib/theme-chalk/card.css +1 -1
  164. package/lib/theme-chalk/carousel-item.css +1 -1
  165. package/lib/theme-chalk/carousel.css +1 -1
  166. package/lib/theme-chalk/cascader-panel.css +1 -0
  167. package/lib/theme-chalk/cascader.css +1 -1
  168. package/lib/theme-chalk/checkbox.css +1 -1
  169. package/lib/theme-chalk/col.css +1 -1
  170. package/lib/theme-chalk/collapse.css +1 -1
  171. package/lib/theme-chalk/color-picker.css +1 -1
  172. package/lib/theme-chalk/container.css +1 -1
  173. package/lib/theme-chalk/date-picker.css +1 -1
  174. package/lib/theme-chalk/descriptions-item.css +1 -0
  175. package/lib/theme-chalk/descriptions.css +1 -0
  176. package/lib/theme-chalk/dialog.css +1 -1
  177. package/lib/theme-chalk/display.css +1 -1
  178. package/lib/theme-chalk/divider.css +1 -0
  179. package/lib/theme-chalk/drawer.css +1 -0
  180. package/lib/theme-chalk/dropdown.css +1 -1
  181. package/lib/theme-chalk/empty.css +1 -0
  182. package/lib/theme-chalk/fonts/element-icons.ttf +0 -0
  183. package/lib/theme-chalk/fonts/element-icons.woff +0 -0
  184. package/lib/theme-chalk/footer.css +1 -1
  185. package/lib/theme-chalk/form.css +1 -1
  186. package/lib/theme-chalk/header.css +1 -1
  187. package/lib/theme-chalk/icon.css +1 -1
  188. package/lib/theme-chalk/image.css +1 -0
  189. package/lib/theme-chalk/index.css +1 -1
  190. package/lib/theme-chalk/input-number.css +1 -1
  191. package/lib/theme-chalk/input.css +1 -1
  192. package/lib/theme-chalk/link.css +1 -0
  193. package/lib/theme-chalk/loading.css +1 -1
  194. package/lib/theme-chalk/main.css +1 -1
  195. package/lib/theme-chalk/menu.css +1 -1
  196. package/lib/theme-chalk/message-box.css +1 -1
  197. package/lib/theme-chalk/message.css +1 -1
  198. package/lib/theme-chalk/notification.css +1 -1
  199. package/lib/theme-chalk/option-group.css +1 -1
  200. package/lib/theme-chalk/option.css +1 -1
  201. package/lib/theme-chalk/page-header.css +1 -0
  202. package/lib/theme-chalk/pagination.css +1 -1
  203. package/lib/theme-chalk/popconfirm.css +1 -0
  204. package/lib/theme-chalk/popover.css +1 -1
  205. package/lib/theme-chalk/popper.css +1 -1
  206. package/lib/theme-chalk/progress.css +1 -1
  207. package/lib/theme-chalk/radio-button.css +1 -1
  208. package/lib/theme-chalk/radio.css +1 -1
  209. package/lib/theme-chalk/rate.css +1 -1
  210. package/lib/theme-chalk/reset.css +1 -1
  211. package/lib/theme-chalk/result.css +1 -0
  212. package/lib/theme-chalk/row.css +1 -1
  213. package/lib/theme-chalk/scrollbar.css +1 -1
  214. package/lib/theme-chalk/select-dropdown.css +1 -1
  215. package/lib/theme-chalk/select.css +1 -1
  216. package/lib/theme-chalk/skeleton-item.css +1 -0
  217. package/lib/theme-chalk/skeleton.css +1 -0
  218. package/lib/theme-chalk/slider.css +1 -1
  219. package/lib/theme-chalk/spinner.css +1 -1
  220. package/lib/theme-chalk/statistic.css +1 -0
  221. package/lib/theme-chalk/step.css +1 -1
  222. package/lib/theme-chalk/steps.css +1 -1
  223. package/lib/theme-chalk/switch.css +1 -1
  224. package/lib/theme-chalk/table-column.css +1 -1
  225. package/lib/theme-chalk/table.css +1 -1
  226. package/lib/theme-chalk/tabs.css +1 -1
  227. package/lib/theme-chalk/tag.css +1 -1
  228. package/lib/theme-chalk/time-picker.css +1 -1
  229. package/lib/theme-chalk/time-select.css +1 -1
  230. package/lib/theme-chalk/timeline-item.css +1 -0
  231. package/lib/theme-chalk/timeline.css +1 -0
  232. package/lib/theme-chalk/tooltip.css +1 -1
  233. package/lib/theme-chalk/transfer.css +1 -1
  234. package/lib/theme-chalk/tree.css +1 -1
  235. package/lib/theme-chalk/upload.css +1 -1
  236. package/lib/time-picker.js +1548 -1348
  237. package/lib/time-select.js +633 -853
  238. package/lib/timeline-item.js +301 -0
  239. package/lib/timeline.js +207 -0
  240. package/lib/tooltip.js +166 -240
  241. package/lib/transfer.js +731 -639
  242. package/lib/transitions/collapse-transition.js +13 -31
  243. package/lib/tree.js +1769 -1883
  244. package/lib/umd/locale/af-ZA.js +35 -14
  245. package/lib/umd/locale/ar.js +35 -20
  246. package/lib/umd/locale/az.js +143 -0
  247. package/lib/umd/locale/bg.js +41 -17
  248. package/lib/umd/locale/bn.js +142 -0
  249. package/lib/umd/locale/ca.js +30 -15
  250. package/lib/umd/locale/cs-CZ.js +25 -9
  251. package/lib/umd/locale/da.js +25 -9
  252. package/lib/umd/locale/de.js +25 -9
  253. package/lib/umd/locale/ee.js +30 -14
  254. package/lib/umd/locale/el.js +26 -10
  255. package/lib/umd/locale/en.js +31 -13
  256. package/lib/umd/locale/eo.js +144 -0
  257. package/lib/umd/locale/es.js +28 -13
  258. package/lib/umd/locale/eu.js +147 -0
  259. package/lib/umd/locale/fa.js +30 -14
  260. package/lib/umd/locale/fi.js +46 -30
  261. package/lib/umd/locale/fr.js +27 -10
  262. package/lib/umd/locale/he.js +35 -14
  263. package/lib/umd/locale/hr.js +147 -0
  264. package/lib/umd/locale/hu.js +26 -10
  265. package/lib/umd/locale/hy-AM.js +144 -0
  266. package/lib/umd/locale/id.js +29 -14
  267. package/lib/umd/locale/is.js +143 -0
  268. package/lib/umd/locale/it.js +27 -12
  269. package/lib/umd/locale/ja.js +25 -9
  270. package/lib/umd/locale/kg.js +144 -0
  271. package/lib/umd/locale/km.js +27 -12
  272. package/lib/umd/locale/ko.js +25 -9
  273. package/lib/umd/locale/ku.js +25 -9
  274. package/lib/umd/locale/kz.js +25 -9
  275. package/lib/umd/locale/lt.js +25 -9
  276. package/lib/umd/locale/lv.js +32 -16
  277. package/lib/umd/locale/mn.js +25 -9
  278. package/lib/umd/locale/ms.js +142 -0
  279. package/lib/umd/locale/nb-NO.js +34 -19
  280. package/lib/umd/locale/nl.js +25 -9
  281. package/lib/umd/locale/pl.js +25 -9
  282. package/lib/umd/locale/pt-br.js +24 -9
  283. package/lib/umd/locale/pt.js +41 -17
  284. package/lib/umd/locale/ro.js +25 -9
  285. package/lib/umd/locale/ru-RU.js +26 -11
  286. package/lib/umd/locale/si.js +146 -0
  287. package/lib/umd/locale/sk.js +29 -14
  288. package/lib/umd/locale/sl.js +32 -16
  289. package/lib/umd/locale/sr-Latn.js +143 -0
  290. package/lib/umd/locale/sr.js +147 -0
  291. package/lib/umd/locale/sv-SE.js +40 -21
  292. package/lib/umd/locale/sw.js +146 -0
  293. package/lib/umd/locale/ta.js +37 -15
  294. package/lib/umd/locale/th.js +36 -18
  295. package/lib/umd/locale/tk.js +33 -13
  296. package/lib/umd/locale/tr-TR.js +26 -10
  297. package/lib/umd/locale/ua.js +26 -11
  298. package/lib/umd/locale/ug-CN.js +28 -13
  299. package/lib/umd/locale/uz-UZ.js +143 -0
  300. package/lib/umd/locale/vi.js +29 -14
  301. package/lib/umd/locale/zh-CN.js +24 -9
  302. package/lib/umd/locale/zh-TW.js +31 -12
  303. package/lib/upload.js +1093 -1338
  304. package/lib/utils/after-leave.js +19 -16
  305. package/lib/utils/aria-dialog.js +11 -29
  306. package/lib/utils/aria-utils.js +7 -15
  307. package/lib/utils/clickoutside.js +16 -24
  308. package/lib/utils/date-util.js +267 -0
  309. package/lib/utils/date.js +56 -52
  310. package/lib/utils/dom.js +57 -27
  311. package/lib/utils/lodash.js +9421 -0
  312. package/lib/utils/menu/aria-menubar.js +6 -11
  313. package/lib/utils/menu/aria-menuitem.js +11 -22
  314. package/lib/utils/menu/aria-submenu.js +7 -16
  315. package/lib/utils/merge.js +9 -16
  316. package/lib/utils/popper.js +1141 -1170
  317. package/lib/utils/popup/index.js +24 -76
  318. package/lib/utils/popup/popup-manager.js +17 -49
  319. package/lib/utils/resize-event.js +11 -24
  320. package/lib/utils/scroll-into-view.js +4 -12
  321. package/lib/utils/scrollbar-width.js +8 -19
  322. package/lib/utils/types.js +38 -0
  323. package/lib/utils/util.js +165 -18
  324. package/lib/utils/vdom.js +5 -16
  325. package/lib/utils/vue-popper.js +10 -31
  326. package/package.json +131 -139
  327. package/packages/alert/src/main.vue +15 -8
  328. package/packages/autocomplete/src/autocomplete-suggestions.vue +4 -4
  329. package/packages/autocomplete/src/autocomplete.vue +45 -14
  330. package/packages/avatar/index.js +8 -0
  331. package/packages/avatar/src/main.vue +107 -0
  332. package/packages/backtop/index.js +8 -0
  333. package/packages/backtop/src/main.vue +110 -0
  334. package/packages/badge/src/main.vue +15 -3
  335. package/packages/button/src/button.vue +2 -1
  336. package/packages/calendar/index.js +8 -0
  337. package/packages/calendar/src/date-table.vue +200 -0
  338. package/packages/calendar/src/main.vue +280 -0
  339. package/packages/carousel/src/item.vue +36 -12
  340. package/packages/carousel/src/main.vue +83 -22
  341. package/packages/cascader/index.js +1 -1
  342. package/packages/cascader/src/cascader.vue +663 -0
  343. package/packages/cascader-panel/index.js +8 -0
  344. package/packages/cascader-panel/src/cascader-menu.vue +138 -0
  345. package/packages/cascader-panel/src/cascader-node.vue +246 -0
  346. package/packages/cascader-panel/src/cascader-panel.vue +391 -0
  347. package/packages/cascader-panel/src/node.js +166 -0
  348. package/packages/cascader-panel/src/store.js +58 -0
  349. package/packages/checkbox/src/checkbox-button.vue +11 -3
  350. package/packages/checkbox/src/checkbox-group.vue +1 -1
  351. package/packages/checkbox/src/checkbox.vue +15 -8
  352. package/packages/collapse/src/collapse-item.vue +12 -11
  353. package/packages/color-picker/src/color.js +1 -0
  354. package/packages/color-picker/src/components/picker-dropdown.vue +10 -6
  355. package/packages/color-picker/src/components/sv-panel.vue +1 -3
  356. package/packages/color-picker/src/main.vue +13 -4
  357. package/packages/date-picker/src/basic/date-table.vue +104 -168
  358. package/packages/date-picker/src/basic/month-table.vue +223 -58
  359. package/packages/date-picker/src/basic/time-spinner.vue +31 -15
  360. package/packages/date-picker/src/basic/year-table.vue +16 -5
  361. package/packages/date-picker/src/panel/date-range.vue +105 -48
  362. package/packages/date-picker/src/panel/date.vue +82 -39
  363. package/packages/date-picker/src/panel/month-range.vue +289 -0
  364. package/packages/date-picker/src/panel/time-range.vue +2 -2
  365. package/packages/date-picker/src/panel/time-select.vue +3 -2
  366. package/packages/date-picker/src/panel/time.vue +2 -2
  367. package/packages/date-picker/src/picker/date-picker.js +3 -0
  368. package/packages/date-picker/src/picker.vue +87 -43
  369. package/packages/descriptions/index.js +8 -0
  370. package/packages/descriptions/src/descriptions-item.js +30 -0
  371. package/packages/descriptions/src/descriptions-row.js +116 -0
  372. package/packages/descriptions/src/index.js +180 -0
  373. package/packages/descriptions-item/index.js +8 -0
  374. package/packages/dialog/src/component.vue +35 -12
  375. package/packages/divider/index.js +8 -0
  376. package/packages/divider/src/main.vue +37 -0
  377. package/packages/drawer/index.js +8 -0
  378. package/packages/drawer/src/main.vue +205 -0
  379. package/packages/dropdown/src/dropdown-item.vue +4 -2
  380. package/packages/dropdown/src/dropdown-menu.vue +6 -3
  381. package/packages/dropdown/src/dropdown.vue +55 -35
  382. package/packages/empty/index.js +7 -0
  383. package/packages/empty/src/img-empty.vue +132 -0
  384. package/packages/empty/src/index.vue +50 -0
  385. package/packages/form/src/form-item.vue +76 -44
  386. package/packages/form/src/form.vue +59 -11
  387. package/packages/form/src/label-wrap.vue +78 -0
  388. package/packages/image/index.js +8 -0
  389. package/packages/image/src/image-viewer.vue +330 -0
  390. package/packages/image/src/main.vue +249 -0
  391. package/packages/infinite-scroll/index.js +8 -0
  392. package/packages/infinite-scroll/src/main.js +150 -0
  393. package/packages/input/src/input.vue +186 -75
  394. package/packages/input-number/src/input-number.vue +52 -25
  395. package/packages/link/index.js +8 -0
  396. package/packages/link/src/main.vue +53 -0
  397. package/packages/loading/src/directive.js +9 -4
  398. package/packages/loading/src/index.js +5 -5
  399. package/packages/menu/src/menu-item.vue +4 -4
  400. package/packages/menu/src/menu.vue +24 -10
  401. package/packages/menu/src/submenu.vue +26 -12
  402. package/packages/message/src/main.js +35 -16
  403. package/packages/message/src/main.vue +12 -15
  404. package/packages/message-box/src/main.js +6 -4
  405. package/packages/message-box/src/main.vue +32 -24
  406. package/packages/notification/src/main.js +9 -8
  407. package/packages/page-header/index.js +8 -0
  408. package/packages/page-header/src/main.vue +30 -0
  409. package/packages/pagination/src/pagination.js +36 -77
  410. package/packages/popconfirm/index.js +8 -0
  411. package/packages/popconfirm/src/main.vue +104 -0
  412. package/packages/popover/src/directive.js +5 -1
  413. package/packages/popover/src/main.vue +49 -31
  414. package/packages/progress/src/progress.vue +118 -21
  415. package/packages/radio/index.js +1 -1
  416. package/packages/radio/src/radio-button.vue +7 -3
  417. package/packages/radio/src/radio-group.vue +9 -3
  418. package/packages/radio/src/radio.vue +6 -3
  419. package/packages/rate/src/main.vue +36 -37
  420. package/packages/result/index.js +8 -0
  421. package/packages/result/src/icon-error.vue +13 -0
  422. package/packages/result/src/icon-info.vue +13 -0
  423. package/packages/result/src/icon-success.vue +13 -0
  424. package/packages/result/src/icon-warning.vue +13 -0
  425. package/packages/result/src/index.vue +65 -0
  426. package/packages/row/src/row.js +2 -5
  427. package/packages/scrollbar/src/bar.js +5 -1
  428. package/packages/scrollbar/src/main.js +3 -3
  429. package/packages/select/src/option-group.vue +1 -1
  430. package/packages/select/src/option.vue +22 -9
  431. package/packages/select/src/select-dropdown.vue +1 -1
  432. package/packages/select/src/select.vue +126 -105
  433. package/packages/skeleton/index.js +8 -0
  434. package/packages/skeleton/src/img-placeholder.vue +16 -0
  435. package/packages/skeleton/src/index.vue +76 -0
  436. package/packages/skeleton/src/item.vue +22 -0
  437. package/packages/skeleton-item/index.js +8 -0
  438. package/packages/slider/src/button.vue +6 -9
  439. package/packages/slider/src/main.vue +60 -32
  440. package/packages/slider/src/marker.js +18 -0
  441. package/packages/spinner/src/spinner.vue +1 -1
  442. package/packages/statistic/index.js +8 -0
  443. package/packages/statistic/src/main.vue +204 -0
  444. package/packages/steps/src/step.vue +5 -1
  445. package/packages/steps/src/steps.vue +1 -1
  446. package/packages/switch/src/component.vue +18 -7
  447. package/packages/table/src/config.js +124 -0
  448. package/packages/table/src/filter-panel.vue +9 -18
  449. package/packages/table/src/layout-observer.js +2 -2
  450. package/packages/table/src/store/current.js +76 -0
  451. package/packages/table/src/store/expand.js +65 -0
  452. package/packages/table/src/store/helper.js +41 -0
  453. package/packages/table/src/store/index.js +147 -0
  454. package/packages/table/src/store/tree.js +209 -0
  455. package/packages/table/src/store/watcher.js +381 -0
  456. package/packages/table/src/table-body.js +221 -166
  457. package/packages/table/src/table-column.js +203 -308
  458. package/packages/table/src/table-footer.js +75 -65
  459. package/packages/table/src/table-header.js +68 -77
  460. package/packages/table/src/table-layout.js +43 -25
  461. package/packages/table/src/table-row.js +101 -0
  462. package/packages/table/src/table.vue +155 -99
  463. package/packages/table/src/util.js +164 -1
  464. package/packages/tabs/src/tab-bar.vue +7 -7
  465. package/packages/tabs/src/tab-nav.vue +35 -14
  466. package/packages/tabs/src/tab-pane.vue +10 -18
  467. package/packages/tabs/src/tabs.vue +45 -22
  468. package/packages/tag/src/tag.vue +35 -18
  469. package/packages/theme-chalk/gulpfile.js +33 -0
  470. package/packages/theme-chalk/package.json +36 -0
  471. package/packages/theme-chalk/src/alert.scss +57 -15
  472. package/packages/theme-chalk/src/autocomplete.scss +3 -4
  473. package/packages/theme-chalk/src/avatar.scss +51 -0
  474. package/packages/theme-chalk/src/backtop.scss +22 -0
  475. package/packages/theme-chalk/src/badge.scss +17 -1
  476. package/packages/theme-chalk/src/button.scss +40 -20
  477. package/packages/theme-chalk/src/calendar.scss +79 -0
  478. package/packages/theme-chalk/src/carousel.scss +33 -6
  479. package/packages/theme-chalk/src/cascader-panel.scss +120 -0
  480. package/packages/theme-chalk/src/cascader.scss +118 -112
  481. package/packages/theme-chalk/src/checkbox.scss +18 -17
  482. package/packages/theme-chalk/src/collapse.scss +16 -9
  483. package/packages/theme-chalk/src/common/popup.scss +3 -2
  484. package/packages/theme-chalk/src/common/var.scss +500 -184
  485. package/packages/theme-chalk/src/date-picker/date-picker.scss +1 -1
  486. package/packages/theme-chalk/src/date-picker/date-range-picker.scss +4 -7
  487. package/packages/theme-chalk/src/date-picker/date-table.scss +11 -11
  488. package/packages/theme-chalk/src/date-picker/month-table.scss +48 -6
  489. package/packages/theme-chalk/src/date-picker/picker-panel.scss +3 -3
  490. package/packages/theme-chalk/src/date-picker/picker.scss +7 -0
  491. package/packages/theme-chalk/src/date-picker/time-picker.scss +1 -0
  492. package/packages/theme-chalk/src/date-picker/year-table.scss +9 -2
  493. package/packages/theme-chalk/src/descriptions-item.scss +42 -0
  494. package/packages/theme-chalk/src/descriptions.scss +111 -0
  495. package/packages/theme-chalk/src/dialog.scss +5 -4
  496. package/packages/theme-chalk/src/divider.scss +47 -0
  497. package/packages/theme-chalk/src/drawer.scss +219 -0
  498. package/packages/theme-chalk/src/dropdown.scss +14 -1
  499. package/packages/theme-chalk/src/empty.scss +45 -0
  500. package/packages/theme-chalk/src/fonts/element-icons.ttf +0 -0
  501. package/packages/theme-chalk/src/fonts/element-icons.woff +0 -0
  502. package/packages/theme-chalk/src/form.scss +18 -23
  503. package/packages/theme-chalk/src/icon.scss +1052 -71
  504. package/packages/theme-chalk/src/image.scss +179 -0
  505. package/packages/theme-chalk/src/index.scss +20 -0
  506. package/packages/theme-chalk/src/input.scss +56 -5
  507. package/packages/theme-chalk/src/link.scss +81 -0
  508. package/packages/theme-chalk/src/main.scss +2 -0
  509. package/packages/theme-chalk/src/menu.scss +11 -8
  510. package/packages/theme-chalk/src/message-box.scss +14 -11
  511. package/packages/theme-chalk/src/message.scss +10 -10
  512. package/packages/theme-chalk/src/notification.scss +8 -7
  513. package/packages/theme-chalk/src/option.scss +1 -5
  514. package/packages/theme-chalk/src/page-header.scss +41 -0
  515. package/packages/theme-chalk/src/pagination.scss +9 -10
  516. package/packages/theme-chalk/src/popconfirm.scss +16 -0
  517. package/packages/theme-chalk/src/popover.scss +3 -2
  518. package/packages/theme-chalk/src/popper.scss +4 -4
  519. package/packages/theme-chalk/src/progress.scss +13 -1
  520. package/packages/theme-chalk/src/radio-button.scss +8 -8
  521. package/packages/theme-chalk/src/radio.scss +7 -6
  522. package/packages/theme-chalk/src/result.scss +61 -0
  523. package/packages/theme-chalk/src/row.scss +4 -0
  524. package/packages/theme-chalk/src/scrollbar.scss +1 -0
  525. package/packages/theme-chalk/src/select-dropdown.scss +5 -2
  526. package/packages/theme-chalk/src/select.scss +14 -6
  527. package/packages/theme-chalk/src/skeleton-item.scss +84 -0
  528. package/packages/theme-chalk/src/skeleton.scss +40 -0
  529. package/packages/theme-chalk/src/slider.scss +22 -0
  530. package/packages/theme-chalk/src/statistic.scss +38 -0
  531. package/packages/theme-chalk/src/switch.scss +0 -3
  532. package/packages/theme-chalk/src/table.scss +67 -60
  533. package/packages/theme-chalk/src/tabs.scss +58 -32
  534. package/packages/theme-chalk/src/tag.scss +85 -68
  535. package/packages/theme-chalk/src/timeline-item.scss +86 -0
  536. package/packages/theme-chalk/src/timeline.scss +14 -0
  537. package/packages/theme-chalk/src/tooltip.scss +1 -0
  538. package/packages/theme-chalk/src/transfer.scss +2 -2
  539. package/packages/theme-chalk/src/tree.scss +8 -5
  540. package/packages/theme-chalk/src/upload.scss +1 -0
  541. package/packages/timeline/index.js +8 -0
  542. package/packages/timeline/src/item.vue +73 -0
  543. package/packages/timeline/src/main.vue +33 -0
  544. package/packages/timeline-item/index.js +8 -0
  545. package/packages/tooltip/src/main.js +52 -26
  546. package/packages/transfer/src/main.vue +15 -7
  547. package/packages/transfer/src/transfer-panel.vue +4 -4
  548. package/packages/tree/src/model/node.js +27 -21
  549. package/packages/tree/src/model/tree-store.js +22 -16
  550. package/packages/tree/src/tree-node.vue +16 -10
  551. package/packages/tree/src/tree.vue +41 -27
  552. package/packages/upload/src/index.vue +42 -13
  553. package/packages/upload/src/upload-list.vue +46 -41
  554. package/src/directives/repeat-click.js +6 -4
  555. package/src/index.js +66 -8
  556. package/src/locale/format.js +1 -1
  557. package/src/locale/index.js +1 -1
  558. package/src/locale/lang/af-ZA.js +15 -1
  559. package/src/locale/lang/ar.js +26 -12
  560. package/src/locale/lang/az.js +126 -0
  561. package/src/locale/lang/bg.js +15 -1
  562. package/src/locale/lang/bn.js +126 -0
  563. package/src/locale/lang/ca.js +21 -7
  564. package/src/locale/lang/cs-CZ.js +15 -1
  565. package/src/locale/lang/da.js +15 -1
  566. package/src/locale/lang/de.js +15 -1
  567. package/src/locale/lang/ee.js +20 -6
  568. package/src/locale/lang/el.js +16 -2
  569. package/src/locale/lang/en.js +16 -2
  570. package/src/locale/lang/eo.js +123 -0
  571. package/src/locale/lang/es.js +19 -5
  572. package/src/locale/lang/eu.js +123 -0
  573. package/src/locale/lang/fa.js +20 -6
  574. package/src/locale/lang/fi.js +36 -22
  575. package/src/locale/lang/fr.js +15 -1
  576. package/src/locale/lang/he.js +15 -1
  577. package/src/locale/lang/hr.js +123 -0
  578. package/src/locale/lang/hu.js +16 -2
  579. package/src/locale/lang/hy-AM.js +123 -0
  580. package/src/locale/lang/id.js +20 -6
  581. package/src/locale/lang/is.js +124 -0
  582. package/src/locale/lang/it.js +18 -4
  583. package/src/locale/lang/ja.js +15 -1
  584. package/src/locale/lang/kg.js +123 -0
  585. package/src/locale/lang/km.js +18 -4
  586. package/src/locale/lang/ko.js +15 -1
  587. package/src/locale/lang/ku.js +15 -1
  588. package/src/locale/lang/kz.js +15 -1
  589. package/src/locale/lang/lt.js +15 -1
  590. package/src/locale/lang/lv.js +22 -8
  591. package/src/locale/lang/mn.js +15 -1
  592. package/src/locale/lang/ms.js +122 -0
  593. package/src/locale/lang/nb-NO.js +25 -11
  594. package/src/locale/lang/nl.js +15 -1
  595. package/src/locale/lang/pl.js +15 -1
  596. package/src/locale/lang/pt-br.js +15 -1
  597. package/src/locale/lang/pt.js +15 -1
  598. package/src/locale/lang/ro.js +15 -1
  599. package/src/locale/lang/ru-RU.js +17 -3
  600. package/src/locale/lang/si.js +123 -0
  601. package/src/locale/lang/sk.js +20 -6
  602. package/src/locale/lang/sl.js +21 -7
  603. package/src/locale/lang/sr-Latn.js +123 -0
  604. package/src/locale/lang/sr.js +123 -0
  605. package/src/locale/lang/sv-SE.js +23 -9
  606. package/src/locale/lang/sw.js +123 -0
  607. package/src/locale/lang/ta.js +15 -1
  608. package/src/locale/lang/th.js +22 -8
  609. package/src/locale/lang/tk.js +15 -1
  610. package/src/locale/lang/tr-TR.js +16 -2
  611. package/src/locale/lang/ua.js +17 -3
  612. package/src/locale/lang/ug-CN.js +19 -5
  613. package/src/locale/lang/uz-UZ.js +123 -0
  614. package/src/locale/lang/vi.js +20 -6
  615. package/src/locale/lang/zh-CN.js +15 -1
  616. package/src/locale/lang/zh-TW.js +15 -1
  617. package/src/mixins/locale.js +1 -1
  618. package/src/mixins/migrating.js +6 -3
  619. package/src/transitions/collapse-transition.js +1 -1
  620. package/src/utils/aria-utils.js +2 -1
  621. package/src/utils/clickoutside.js +1 -1
  622. package/{packages/date-picker/src/util/index.js → src/utils/date-util.js} +69 -27
  623. package/src/utils/date.js +54 -30
  624. package/src/utils/dom.js +55 -2
  625. package/src/utils/lodash.js +18075 -0
  626. package/src/utils/merge.js +3 -13
  627. package/src/utils/popup/index.js +3 -11
  628. package/src/utils/popup/popup-manager.js +3 -3
  629. package/src/utils/resize-event.js +2 -1
  630. package/src/utils/types.js +38 -0
  631. package/src/utils/util.js +161 -0
  632. package/src/utils/vdom.js +1 -5
  633. package/src/utils/vue-popper.js +2 -1
  634. package/types/alert.d.ts +4 -0
  635. package/types/autocomplete.d.ts +6 -3
  636. package/types/avatar.d.ts +20 -0
  637. package/types/backtop.d.ts +16 -0
  638. package/types/calendar.d.ts +15 -0
  639. package/types/carousel.d.ts +4 -0
  640. package/types/cascader-panel.d.ts +72 -0
  641. package/types/cascader.d.ts +29 -21
  642. package/types/collapse-item.d.ts +3 -0
  643. package/types/descriptions-item.d.ts +37 -0
  644. package/types/descriptions.d.ts +52 -0
  645. package/types/dialog.d.ts +3 -0
  646. package/types/divider.d.ts +12 -0
  647. package/types/drawer.d.ts +63 -0
  648. package/types/dropdown-item.d.ts +3 -0
  649. package/types/dropdown.d.ts +12 -0
  650. package/types/element-ui.d.ts +91 -3
  651. package/types/empty.d.ts +31 -0
  652. package/types/form.d.ts +6 -6
  653. package/types/icon.d.ts +7 -0
  654. package/types/image.d.ts +43 -0
  655. package/types/infinite-scroll.d.ts +6 -0
  656. package/types/input-number.d.ts +4 -1
  657. package/types/input.d.ts +16 -1
  658. package/types/link.d.ts +25 -0
  659. package/types/loading.d.ts +3 -1
  660. package/types/message-box.d.ts +14 -4
  661. package/types/message.d.ts +17 -2
  662. package/types/page-header.d.ts +10 -0
  663. package/types/pagination.d.ts +3 -0
  664. package/types/popconfirm.d.ts +29 -0
  665. package/types/popover.d.ts +7 -1
  666. package/types/progress.d.ts +7 -1
  667. package/types/rate.d.ts +16 -4
  668. package/types/result.d.ts +33 -0
  669. package/types/select.d.ts +9 -0
  670. package/types/skeleton-item.d.ts +7 -0
  671. package/types/skeleton.d.ts +33 -0
  672. package/types/slider.d.ts +6 -0
  673. package/types/spinner.d.ts +16 -0
  674. package/types/statistic.d.ts +37 -0
  675. package/types/submenu.d.ts +1 -1
  676. package/types/switch.d.ts +3 -0
  677. package/types/table-column.d.ts +1 -1
  678. package/types/table.d.ts +58 -3
  679. package/types/tabs.d.ts +4 -1
  680. package/types/tag.d.ts +5 -1
  681. package/types/timeline-item.d.ts +20 -0
  682. package/types/timeline.d.ts +6 -0
  683. package/types/tooltip.d.ts +3 -0
  684. package/types/tree.d.ts +120 -97
  685. package/types/upload.d.ts +7 -4
  686. package/web-types.json +4195 -0
  687. package/CHANGELOG.en-US.md +0 -576
  688. package/CHANGELOG.es.md +0 -581
  689. package/CHANGELOG.zh-CN.md +0 -576
  690. package/lib/utils/sync.js +0 -59
  691. package/packages/carousel/_index.js +0 -10
  692. package/packages/carousel/cooking.conf.js +0 -6
  693. package/packages/carousel/package.json +0 -17
  694. package/packages/cascader/cooking.conf.js +0 -18
  695. package/packages/cascader/package.json +0 -15
  696. package/packages/cascader/src/main.vue +0 -438
  697. package/packages/cascader/src/menu.vue +0 -369
  698. package/packages/color-picker/cooking.conf.js +0 -6
  699. package/packages/color-picker/package.json +0 -15
  700. package/packages/date-picker/README.md +0 -64
  701. package/packages/date-picker/_index.js +0 -12
  702. package/packages/date-picker/cooking.conf.js +0 -6
  703. package/packages/date-picker/package.json +0 -15
  704. package/packages/loading/README.md +0 -66
  705. package/packages/loading/cooking.conf.js +0 -6
  706. package/packages/loading/package.json +0 -15
  707. package/packages/pagination/README.md +0 -59
  708. package/packages/pagination/cooking.conf.js +0 -6
  709. package/packages/pagination/package.json +0 -15
  710. package/packages/table/README.md +0 -106
  711. package/packages/table/_index.js +0 -10
  712. package/packages/table/cooking.conf.js +0 -6
  713. package/packages/table/package.json +0 -17
  714. package/packages/table/src/table-store.js +0 -619
  715. package/packages/theme-chalk/lib/alert.css +0 -1
  716. package/packages/theme-chalk/lib/aside.css +0 -1
  717. package/packages/theme-chalk/lib/autocomplete.css +0 -1
  718. package/packages/theme-chalk/lib/badge.css +0 -1
  719. package/packages/theme-chalk/lib/base.css +0 -1
  720. package/packages/theme-chalk/lib/breadcrumb.css +0 -1
  721. package/packages/theme-chalk/lib/button.css +0 -1
  722. package/packages/theme-chalk/lib/card.css +0 -1
  723. package/packages/theme-chalk/lib/carousel-item.css +0 -1
  724. package/packages/theme-chalk/lib/carousel.css +0 -1
  725. package/packages/theme-chalk/lib/cascader.css +0 -1
  726. package/packages/theme-chalk/lib/checkbox.css +0 -1
  727. package/packages/theme-chalk/lib/col.css +0 -1
  728. package/packages/theme-chalk/lib/collapse-item.css +0 -0
  729. package/packages/theme-chalk/lib/collapse.css +0 -1
  730. package/packages/theme-chalk/lib/color-picker.css +0 -1
  731. package/packages/theme-chalk/lib/container.css +0 -1
  732. package/packages/theme-chalk/lib/date-picker.css +0 -1
  733. package/packages/theme-chalk/lib/dialog.css +0 -1
  734. package/packages/theme-chalk/lib/display.css +0 -1
  735. package/packages/theme-chalk/lib/dropdown-item.css +0 -0
  736. package/packages/theme-chalk/lib/dropdown-menu.css +0 -0
  737. package/packages/theme-chalk/lib/dropdown.css +0 -1
  738. package/packages/theme-chalk/lib/fonts/element-icons.ttf +0 -0
  739. package/packages/theme-chalk/lib/fonts/element-icons.woff +0 -0
  740. package/packages/theme-chalk/lib/footer.css +0 -1
  741. package/packages/theme-chalk/lib/form-item.css +0 -0
  742. package/packages/theme-chalk/lib/form.css +0 -1
  743. package/packages/theme-chalk/lib/header.css +0 -1
  744. package/packages/theme-chalk/lib/icon.css +0 -1
  745. package/packages/theme-chalk/lib/index.css +0 -1
  746. package/packages/theme-chalk/lib/input-number.css +0 -1
  747. package/packages/theme-chalk/lib/input.css +0 -1
  748. package/packages/theme-chalk/lib/loading.css +0 -1
  749. package/packages/theme-chalk/lib/main.css +0 -1
  750. package/packages/theme-chalk/lib/menu-item-group.css +0 -0
  751. package/packages/theme-chalk/lib/menu-item.css +0 -0
  752. package/packages/theme-chalk/lib/menu.css +0 -1
  753. package/packages/theme-chalk/lib/message-box.css +0 -1
  754. package/packages/theme-chalk/lib/message.css +0 -1
  755. package/packages/theme-chalk/lib/notification.css +0 -1
  756. package/packages/theme-chalk/lib/option-group.css +0 -1
  757. package/packages/theme-chalk/lib/option.css +0 -1
  758. package/packages/theme-chalk/lib/pagination.css +0 -1
  759. package/packages/theme-chalk/lib/popover.css +0 -1
  760. package/packages/theme-chalk/lib/popper.css +0 -1
  761. package/packages/theme-chalk/lib/progress.css +0 -1
  762. package/packages/theme-chalk/lib/radio-button.css +0 -1
  763. package/packages/theme-chalk/lib/radio-group.css +0 -1
  764. package/packages/theme-chalk/lib/radio.css +0 -1
  765. package/packages/theme-chalk/lib/rate.css +0 -1
  766. package/packages/theme-chalk/lib/reset.css +0 -1
  767. package/packages/theme-chalk/lib/row.css +0 -1
  768. package/packages/theme-chalk/lib/scrollbar.css +0 -1
  769. package/packages/theme-chalk/lib/select-dropdown.css +0 -1
  770. package/packages/theme-chalk/lib/select.css +0 -1
  771. package/packages/theme-chalk/lib/slider.css +0 -1
  772. package/packages/theme-chalk/lib/spinner.css +0 -1
  773. package/packages/theme-chalk/lib/step.css +0 -1
  774. package/packages/theme-chalk/lib/steps.css +0 -1
  775. package/packages/theme-chalk/lib/submenu.css +0 -0
  776. package/packages/theme-chalk/lib/switch.css +0 -1
  777. package/packages/theme-chalk/lib/tab-pane.css +0 -0
  778. package/packages/theme-chalk/lib/table-column.css +0 -1
  779. package/packages/theme-chalk/lib/table.css +0 -1
  780. package/packages/theme-chalk/lib/tabs.css +0 -1
  781. package/packages/theme-chalk/lib/tag.css +0 -1
  782. package/packages/theme-chalk/lib/time-picker.css +0 -1
  783. package/packages/theme-chalk/lib/time-select.css +0 -1
  784. package/packages/theme-chalk/lib/tooltip.css +0 -1
  785. package/packages/theme-chalk/lib/transfer.css +0 -1
  786. package/packages/theme-chalk/lib/tree.css +0 -1
  787. package/packages/theme-chalk/lib/upload.css +0 -1
  788. package/packages/upload/README.md +0 -67
  789. package/packages/upload/cooking.conf.js +0 -6
  790. package/packages/upload/package.json +0 -16
  791. package/packages/upload/src/iframe-upload.vue +0 -167
  792. package/src/utils/sync.js +0 -54
  793. /package/{packages/theme-chalk/lib/breadcrumb-item.css → lib/theme-chalk/infinite-scroll.css} +0 -0
  794. /package/{packages/theme-chalk/lib/button-group.css → lib/theme-chalk/infiniteScroll.css} +0 -0
  795. /package/packages/theme-chalk/{lib/checkbox-button.css → src/infinite-scroll.scss} +0 -0
  796. /package/packages/theme-chalk/{lib/checkbox-group.css → src/infiniteScroll.scss} +0 -0
@@ -13,7 +13,8 @@
13
13
  <button
14
14
  type="button"
15
15
  class="el-picker-panel__shortcut"
16
- v-for="shortcut in shortcuts"
16
+ v-for="(shortcut, key) in shortcuts"
17
+ :key="key"
17
18
  @click="handleShortcutClick(shortcut)">{{shortcut.text}}</button>
18
19
  </div>
19
20
  <div class="el-picker-panel__body">
@@ -27,18 +28,19 @@
27
28
  :placeholder="t('el.datepicker.startDate')"
28
29
  class="el-date-range-picker__editor"
29
30
  :value="minVisibleDate"
30
- @input.native="handleDateInput($event, 'min')"
31
- @change.native="handleDateChange($event, 'min')" />
31
+ @input="val => handleDateInput(val, 'min')"
32
+ @change="val => handleDateChange(val, 'min')" />
32
33
  </span>
33
- <span class="el-date-range-picker__time-picker-wrap" v-clickoutside="() => minTimePickerVisible = false">
34
+ <span class="el-date-range-picker__time-picker-wrap" v-clickoutside="handleMinTimeClose">
34
35
  <el-input
35
36
  size="small"
37
+ class="el-date-range-picker__editor"
36
38
  :disabled="rangeState.selecting"
37
39
  :placeholder="t('el.datepicker.startTime')"
38
- class="el-date-range-picker__editor"
39
40
  :value="minVisibleTime"
40
41
  @focus="minTimePickerVisible = true"
41
- @change.native="handleTimeChange($event, 'min')" />
42
+ @input="val => handleTimeInput(val, 'min')"
43
+ @change="val => handleTimeChange(val, 'min')" />
42
44
  <time-picker
43
45
  ref="minTimePicker"
44
46
  @pick="handleMinTimePick"
@@ -53,25 +55,25 @@
53
55
  <span class="el-date-range-picker__time-picker-wrap">
54
56
  <el-input
55
57
  size="small"
58
+ class="el-date-range-picker__editor"
56
59
  :disabled="rangeState.selecting"
57
60
  :placeholder="t('el.datepicker.endDate')"
58
- class="el-date-range-picker__editor"
59
61
  :value="maxVisibleDate"
60
62
  :readonly="!minDate"
61
- @input.native="handleDateInput($event, 'max')"
62
- @change.native="handleDateChange($event, 'max')" />
63
+ @input="val => handleDateInput(val, 'max')"
64
+ @change="val => handleDateChange(val, 'max')" />
63
65
  </span>
64
- <span class="el-date-range-picker__time-picker-wrap" v-clickoutside="() => maxTimePickerVisible = false">
66
+ <span class="el-date-range-picker__time-picker-wrap" v-clickoutside="handleMaxTimeClose">
65
67
  <el-input
66
68
  size="small"
69
+ class="el-date-range-picker__editor"
67
70
  :disabled="rangeState.selecting"
68
- ref="maxInput"
69
71
  :placeholder="t('el.datepicker.endTime')"
70
- class="el-date-range-picker__editor"
71
72
  :value="maxVisibleTime"
72
- @focus="minDate && (maxTimePickerVisible = true)"
73
73
  :readonly="!minDate"
74
- @change.native="handleTimeChange($event, 'max')" />
74
+ @focus="minDate && (maxTimePickerVisible = true)"
75
+ @input="val => handleTimeInput(val, 'max')"
76
+ @change="val => handleTimeChange(val, 'max')" />
75
77
  <time-picker
76
78
  ref="maxTimePicker"
77
79
  @pick="handleMaxTimePick"
@@ -116,6 +118,7 @@
116
118
  :max-date="maxDate"
117
119
  :range-state="rangeState"
118
120
  :disabled-date="disabledDate"
121
+ :cell-class-name="cellClassName"
119
122
  @changerange="handleChangeRange"
120
123
  :first-day-of-week="firstDayOfWeek"
121
124
  @pick="handleRangePick">
@@ -155,6 +158,7 @@
155
158
  :max-date="maxDate"
156
159
  :range-state="rangeState"
157
160
  :disabled-date="disabledDate"
161
+ :cell-class-name="cellClassName"
158
162
  @changerange="handleChangeRange"
159
163
  :first-day-of-week="firstDayOfWeek"
160
164
  @pick="handleRangePick">
@@ -175,7 +179,7 @@
175
179
  size="mini"
176
180
  class="el-picker-panel__link-btn"
177
181
  :disabled="btnDisabled"
178
- @click="handleConfirm()">
182
+ @click="handleConfirm(false)">
179
183
  {{ t('el.datepicker.confirm') }}
180
184
  </el-button>
181
185
  </div>
@@ -190,32 +194,29 @@
190
194
  isDate,
191
195
  modifyDate,
192
196
  modifyTime,
193
- modifyWithDefaultTime,
197
+ modifyWithTimeString,
194
198
  prevYear,
195
199
  nextYear,
196
200
  prevMonth,
197
201
  nextMonth,
202
+ nextDate,
198
203
  extractDateFormat,
199
204
  extractTimeFormat
200
- } from '../util';
201
- import Clickoutside from 'element-ui/src/utils/clickoutside';
202
- import Locale from 'element-ui/src/mixins/locale';
205
+ } from 'mazey-element-ui/src/utils/date-util';
206
+ import Clickoutside from 'mazey-element-ui/src/utils/clickoutside';
207
+ import Locale from 'mazey-element-ui/src/mixins/locale';
203
208
  import TimePicker from './time';
204
209
  import DateTable from '../basic/date-table';
205
- import ElInput from 'element-ui/packages/input';
206
- import ElButton from 'element-ui/packages/button';
207
-
208
- const advanceDate = (date, amount) => {
209
- return new Date(new Date(date).getTime() + amount);
210
- };
210
+ import ElInput from 'mazey-element-ui/packages/input';
211
+ import ElButton from 'mazey-element-ui/packages/button';
211
212
 
212
213
  const calcDefaultValue = (defaultValue) => {
213
214
  if (Array.isArray(defaultValue)) {
214
215
  return [new Date(defaultValue[0]), new Date(defaultValue[1])];
215
216
  } else if (defaultValue) {
216
- return [new Date(defaultValue), advanceDate(defaultValue, 24 * 60 * 60 * 1000)];
217
+ return [new Date(defaultValue), nextDate(new Date(defaultValue), 1)];
217
218
  } else {
218
- return [new Date(), advanceDate(Date.now(), 24 * 60 * 60 * 1000)];
219
+ return [new Date(), nextDate(new Date(), 1)];
219
220
  }
220
221
  };
221
222
 
@@ -226,7 +227,7 @@
226
227
 
227
228
  computed: {
228
229
  btnDisabled() {
229
- return !(this.minDate && this.maxDate && !this.selecting);
230
+ return !(this.minDate && this.maxDate && !this.selecting && this.isValidValue([this.minDate, this.maxDate]));
230
231
  },
231
232
 
232
233
  leftLabel() {
@@ -262,19 +263,27 @@
262
263
  },
263
264
 
264
265
  minVisibleDate() {
265
- return this.minDate ? formatDate(this.minDate, this.dateFormat) : '';
266
+ if (this.dateUserInput.min !== null) return this.dateUserInput.min;
267
+ if (this.minDate) return formatDate(this.minDate, this.dateFormat);
268
+ return '';
266
269
  },
267
270
 
268
271
  maxVisibleDate() {
269
- return (this.maxDate || this.minDate) ? formatDate(this.maxDate || this.minDate, this.dateFormat) : '';
272
+ if (this.dateUserInput.max !== null) return this.dateUserInput.max;
273
+ if (this.maxDate || this.minDate) return formatDate(this.maxDate || this.minDate, this.dateFormat);
274
+ return '';
270
275
  },
271
276
 
272
277
  minVisibleTime() {
273
- return this.minDate ? formatDate(this.minDate, this.timeFormat) : '';
278
+ if (this.timeUserInput.min !== null) return this.timeUserInput.min;
279
+ if (this.minDate) return formatDate(this.minDate, this.timeFormat);
280
+ return '';
274
281
  },
275
282
 
276
283
  maxVisibleTime() {
277
- return (this.maxDate || this.minDate) ? formatDate(this.maxDate || this.minDate, this.timeFormat) : '';
284
+ if (this.timeUserInput.max !== null) return this.timeUserInput.max;
285
+ if (this.maxDate || this.minDate) return formatDate(this.maxDate || this.minDate, this.timeFormat);
286
+ return '';
278
287
  },
279
288
 
280
289
  timeFormat() {
@@ -324,17 +333,28 @@
324
333
  shortcuts: '',
325
334
  visible: '',
326
335
  disabledDate: '',
336
+ cellClassName: '',
327
337
  firstDayOfWeek: 7,
328
338
  minTimePickerVisible: false,
329
339
  maxTimePickerVisible: false,
330
340
  format: '',
331
341
  arrowControl: false,
332
- unlinkPanels: false
342
+ unlinkPanels: false,
343
+ dateUserInput: {
344
+ min: null,
345
+ max: null
346
+ },
347
+ timeUserInput: {
348
+ min: null,
349
+ max: null
350
+ }
333
351
  };
334
352
  },
335
353
 
336
354
  watch: {
337
355
  minDate(val) {
356
+ this.dateUserInput.min = null;
357
+ this.timeUserInput.min = null;
338
358
  this.$nextTick(() => {
339
359
  if (this.$refs.maxTimePicker && this.maxDate && this.maxDate < this.minDate) {
340
360
  const format = 'HH:mm:ss';
@@ -353,6 +373,8 @@
353
373
  },
354
374
 
355
375
  maxDate(val) {
376
+ this.dateUserInput.max = null;
377
+ this.timeUserInput.max = null;
356
378
  if (val && this.$refs.maxTimePicker) {
357
379
  this.$refs.maxTimePicker.date = val;
358
380
  this.$refs.maxTimePicker.value = val;
@@ -386,8 +408,6 @@
386
408
  } else if (Array.isArray(newVal)) {
387
409
  this.minDate = isDate(newVal[0]) ? new Date(newVal[0]) : null;
388
410
  this.maxDate = isDate(newVal[1]) ? new Date(newVal[1]) : null;
389
- // NOTE: currently, maxDate = minDate + 1 month
390
- // should allow them to be set individually in the future
391
411
  if (this.minDate) {
392
412
  this.leftDate = this.minDate;
393
413
  if (this.unlinkPanels && this.maxDate) {
@@ -434,8 +454,8 @@
434
454
  this.rangeState = val.rangeState;
435
455
  },
436
456
 
437
- handleDateInput(event, type) {
438
- const value = event.target.value;
457
+ handleDateInput(value, type) {
458
+ this.dateUserInput[type] = value;
439
459
  if (value.length !== this.dateFormat.length) return;
440
460
  const parsedValue = parseDate(value, this.dateFormat);
441
461
 
@@ -445,19 +465,22 @@
445
465
  return;
446
466
  }
447
467
  if (type === 'min') {
448
- this.minDate = new Date(parsedValue);
468
+ this.minDate = modifyDate(this.minDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
449
469
  this.leftDate = new Date(parsedValue);
450
- this.rightDate = nextMonth(this.leftDate);
470
+ if (!this.unlinkPanels) {
471
+ this.rightDate = nextMonth(this.leftDate);
472
+ }
451
473
  } else {
452
- this.maxDate = new Date(parsedValue);
453
- this.leftDate = prevMonth(parsedValue);
474
+ this.maxDate = modifyDate(this.maxDate || new Date(), parsedValue.getFullYear(), parsedValue.getMonth(), parsedValue.getDate());
454
475
  this.rightDate = new Date(parsedValue);
476
+ if (!this.unlinkPanels) {
477
+ this.leftDate = prevMonth(parsedValue);
478
+ }
455
479
  }
456
480
  }
457
481
  },
458
482
 
459
- handleDateChange(event, type) {
460
- const value = event.target.value;
483
+ handleDateChange(value, type) {
461
484
  const parsedValue = parseDate(value, this.dateFormat);
462
485
  if (parsedValue) {
463
486
  if (type === 'min') {
@@ -474,8 +497,23 @@
474
497
  }
475
498
  },
476
499
 
477
- handleTimeChange(event, type) {
478
- const value = event.target.value;
500
+ handleTimeInput(value, type) {
501
+ this.timeUserInput[type] = value;
502
+ if (value.length !== this.timeFormat.length) return;
503
+ const parsedValue = parseDate(value, this.timeFormat);
504
+
505
+ if (parsedValue) {
506
+ if (type === 'min') {
507
+ this.minDate = modifyTime(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
508
+ this.$nextTick(_ => this.$refs.minTimePicker.adjustSpinners());
509
+ } else {
510
+ this.maxDate = modifyTime(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
511
+ this.$nextTick(_ => this.$refs.maxTimePicker.adjustSpinners());
512
+ }
513
+ }
514
+ },
515
+
516
+ handleTimeChange(value, type) {
479
517
  const parsedValue = parseDate(value, this.timeFormat);
480
518
  if (parsedValue) {
481
519
  if (type === 'min') {
@@ -498,8 +536,8 @@
498
536
 
499
537
  handleRangePick(val, close = true) {
500
538
  const defaultTime = this.defaultTime || [];
501
- const minDate = modifyWithDefaultTime(val.minDate, defaultTime[0]);
502
- const maxDate = modifyWithDefaultTime(val.maxDate, defaultTime[1]);
539
+ const minDate = modifyWithTimeString(val.minDate, defaultTime[0]);
540
+ const maxDate = modifyWithTimeString(val.maxDate, defaultTime[1]);
503
541
 
504
542
  if (this.maxDate === maxDate && this.minDate === minDate) {
505
543
  return;
@@ -538,6 +576,10 @@
538
576
  }
539
577
  },
540
578
 
579
+ handleMinTimeClose() {
580
+ this.minTimePickerVisible = false;
581
+ },
582
+
541
583
  handleMaxTimePick(value, visible, first) {
542
584
  if (this.maxDate && value) {
543
585
  this.maxDate = modifyTime(this.maxDate, value.getHours(), value.getMinutes(), value.getSeconds());
@@ -552,6 +594,10 @@
552
594
  }
553
595
  },
554
596
 
597
+ handleMaxTimeClose() {
598
+ this.maxTimePickerVisible = false;
599
+ },
600
+
555
601
  // leftPrev*, rightNext* need to take care of `unlinkPanels`
556
602
  leftPrevYear() {
557
603
  this.leftDate = prevYear(this.leftDate);
@@ -603,7 +649,9 @@
603
649
  },
604
650
 
605
651
  handleConfirm(visible = false) {
606
- this.$emit('pick', [this.minDate, this.maxDate], visible);
652
+ if (this.isValidValue([this.minDate, this.maxDate])) {
653
+ this.$emit('pick', [this.minDate, this.maxDate], visible);
654
+ }
607
655
  },
608
656
 
609
657
  isValidValue(value) {
@@ -615,6 +663,15 @@
615
663
  ? !this.disabledDate(value[0]) && !this.disabledDate(value[1])
616
664
  : true
617
665
  );
666
+ },
667
+
668
+ resetView() {
669
+ // NOTE: this is a hack to reset {min, max}Date on picker open.
670
+ // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
671
+ // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
672
+ if (this.minDate && this.maxDate == null) this.rangeState.selecting = false;
673
+ this.minDate = this.value && isDate(this.value[0]) ? new Date(this.value[0]) : null;
674
+ this.maxDate = this.value && isDate(this.value[0]) ? new Date(this.value[1]) : null;
618
675
  }
619
676
  },
620
677
 
@@ -13,7 +13,8 @@
13
13
  <button
14
14
  type="button"
15
15
  class="el-picker-panel__shortcut"
16
- v-for="shortcut in shortcuts"
16
+ v-for="(shortcut, key) in shortcuts"
17
+ :key="key"
17
18
  @click="handleShortcutClick(shortcut)">{{ shortcut.text }}</button>
18
19
  </div>
19
20
  <div class="el-picker-panel__body">
@@ -26,7 +27,7 @@
26
27
  @input="val => userInputDate = val"
27
28
  @change="handleVisibleDateChange" />
28
29
  </span>
29
- <span class="el-date-picker__editor-wrap" v-clickoutside="() => timePickerVisible = false">
30
+ <span class="el-date-picker__editor-wrap" v-clickoutside="handleTimePickClose">
30
31
  <el-input
31
32
  ref="input"
32
33
  @focus="timePickerVisible = true"
@@ -90,19 +91,19 @@
90
91
  <date-table
91
92
  v-show="currentView === 'date'"
92
93
  @pick="handleDatePick"
93
- @select="handleDateSelect"
94
94
  :selection-mode="selectionMode"
95
95
  :first-day-of-week="firstDayOfWeek"
96
- :value="new Date(value)"
96
+ :value="value"
97
97
  :default-value="defaultValue ? new Date(defaultValue) : null"
98
98
  :date="date"
99
- :disabled-date="disabledDate"
100
- :selected-date="selectedDate">
99
+ :cell-class-name="cellClassName"
100
+ :disabled-date="disabledDate">
101
101
  </date-table>
102
102
  <year-table
103
103
  v-show="currentView === 'year'"
104
104
  @pick="handleYearPick"
105
- :value="new Date(value)"
105
+ :selection-mode="selectionMode"
106
+ :value="value"
106
107
  :default-value="defaultValue ? new Date(defaultValue) : null"
107
108
  :date="date"
108
109
  :disabled-date="disabledDate">
@@ -110,7 +111,8 @@
110
111
  <month-table
111
112
  v-show="currentView === 'month'"
112
113
  @pick="handleMonthPick"
113
- :value="new Date(value)"
114
+ :selection-mode="selectionMode"
115
+ :value="value"
114
116
  :default-value="defaultValue ? new Date(defaultValue) : null"
115
117
  :date="date"
116
118
  :disabled-date="disabledDate">
@@ -121,13 +123,13 @@
121
123
 
122
124
  <div
123
125
  class="el-picker-panel__footer"
124
- v-show="footerVisible && currentView === 'date'">
126
+ v-show="footerVisible && (currentView === 'date' || currentView === 'month' || currentView === 'year')">
125
127
  <el-button
126
128
  size="mini"
127
129
  type="text"
128
130
  class="el-picker-panel__link-btn"
129
131
  @click="changeToNow"
130
- v-show="selectionMode !== 'dates'">
132
+ v-show="selectionMode !== 'dates' && selectionMode !== 'months' && selectionMode !== 'years'">
131
133
  {{ t('el.datepicker.now') }}
132
134
  </el-button>
133
135
  <el-button
@@ -150,7 +152,7 @@
150
152
  isDate,
151
153
  modifyDate,
152
154
  modifyTime,
153
- modifyWithDefaultTime,
155
+ modifyWithTimeString,
154
156
  clearMilliseconds,
155
157
  clearTime,
156
158
  prevYear,
@@ -159,12 +161,13 @@
159
161
  nextMonth,
160
162
  changeYearMonthAndClampDate,
161
163
  extractDateFormat,
162
- extractTimeFormat
163
- } from '../util';
164
- import Clickoutside from 'element-ui/src/utils/clickoutside';
165
- import Locale from 'element-ui/src/mixins/locale';
166
- import ElInput from 'element-ui/packages/input';
167
- import ElButton from 'element-ui/packages/button';
164
+ extractTimeFormat,
165
+ timeWithinRange
166
+ } from 'mazey-element-ui/src/utils/date-util';
167
+ import Clickoutside from 'mazey-element-ui/src/utils/clickoutside';
168
+ import Locale from 'mazey-element-ui/src/mixins/locale';
169
+ import ElInput from 'mazey-element-ui/packages/input';
170
+ import ElButton from 'mazey-element-ui/packages/button';
168
171
  import TimePicker from './time';
169
172
  import YearTable from '../basic/year-table';
170
173
  import MonthTable from '../basic/month-table';
@@ -189,10 +192,12 @@
189
192
 
190
193
  value(val) {
191
194
  if (this.selectionMode === 'dates' && this.value) return;
195
+ if (this.selectionMode === 'months' && this.value) return;
196
+ if (this.selectionMode === 'years' && this.value) return;
192
197
  if (isDate(val)) {
193
198
  this.date = new Date(val);
194
199
  } else {
195
- this.date = this.defaultValue ? new Date(this.defaultValue) : new Date();
200
+ this.date = this.getDefaultValue();
196
201
  }
197
202
  },
198
203
 
@@ -214,6 +219,10 @@
214
219
  }
215
220
  } else if (newVal === 'dates') {
216
221
  this.currentView = 'date';
222
+ } else if (newVal === 'years') {
223
+ this.currentView = 'year';
224
+ } else if (newVal === 'months') {
225
+ this.currentView = 'month';
217
226
  }
218
227
  }
219
228
  },
@@ -223,17 +232,20 @@
223
232
  const format = timeFormat => {this.$refs.timepicker.format = timeFormat;};
224
233
  const value = value => {this.$refs.timepicker.value = value;};
225
234
  const date = date => {this.$refs.timepicker.date = date;};
235
+ const selectableRange = selectableRange => {this.$refs.timepicker.selectableRange = selectableRange;};
226
236
 
227
237
  this.$watch('value', value);
228
238
  this.$watch('date', date);
239
+ this.$watch('selectableRange', selectableRange);
229
240
 
230
241
  format(this.timeFormat);
231
242
  value(this.value);
232
243
  date(this.date);
244
+ selectableRange(this.selectableRange);
233
245
  },
234
246
 
235
247
  handleClear() {
236
- this.date = this.defaultValue ? new Date(this.defaultValue) : new Date();
248
+ this.date = this.getDefaultValue();
237
249
  this.$emit('pick', null);
238
250
  },
239
251
 
@@ -303,7 +315,9 @@
303
315
 
304
316
  handleTimePick(value, visible, first) {
305
317
  if (isDate(value)) {
306
- const newDate = this.value ? modifyTime(this.date, value.getHours(), value.getMinutes(), value.getSeconds()) : modifyWithDefaultTime(value, this.defaultTime);
318
+ const newDate = this.value
319
+ ? modifyTime(this.value, value.getHours(), value.getMinutes(), value.getSeconds())
320
+ : modifyWithTimeString(this.getDefaultValue(), this.defaultTime);
307
321
  this.date = newDate;
308
322
  this.emit(this.date, true);
309
323
  } else {
@@ -314,10 +328,16 @@
314
328
  }
315
329
  },
316
330
 
331
+ handleTimePickClose() {
332
+ this.timePickerVisible = false;
333
+ },
334
+
317
335
  handleMonthPick(month) {
318
336
  if (this.selectionMode === 'month') {
319
337
  this.date = modifyDate(this.date, this.year, month, 1);
320
338
  this.emit(this.date);
339
+ } else if (this.selectionMode === 'months') {
340
+ this.emit(month, true);
321
341
  } else {
322
342
  this.date = changeYearMonthAndClampDate(this.date, this.year, month);
323
343
  // TODO: should emit intermediate value ??
@@ -326,18 +346,21 @@
326
346
  }
327
347
  },
328
348
 
329
- handleDateSelect(value) {
330
- if (this.selectionMode === 'dates') {
331
- this.selectedDate = value;
332
- }
333
- },
334
-
335
349
  handleDatePick(value) {
336
350
  if (this.selectionMode === 'day') {
337
- this.date = this.value ? modifyDate(this.date, value.getFullYear(), value.getMonth(), value.getDate()) : modifyWithDefaultTime(value, this.defaultTime);
351
+ let newDate = this.value
352
+ ? modifyDate(this.value, value.getFullYear(), value.getMonth(), value.getDate())
353
+ : modifyWithTimeString(value, this.defaultTime);
354
+ // change default time while out of selectableRange
355
+ if (!this.checkDateWithinRange(newDate)) {
356
+ newDate = modifyDate(this.selectableRange[0][0], value.getFullYear(), value.getMonth(), value.getDate());
357
+ }
358
+ this.date = newDate;
338
359
  this.emit(this.date, this.showTime);
339
360
  } else if (this.selectionMode === 'week') {
340
361
  this.emit(value.date);
362
+ } else if (this.selectionMode === 'dates') {
363
+ this.emit(value, true); // set false to keep panel open
341
364
  }
342
365
  },
343
366
 
@@ -345,6 +368,8 @@
345
368
  if (this.selectionMode === 'year') {
346
369
  this.date = modifyDate(this.date, year, 0, 1);
347
370
  this.emit(this.date);
371
+ } else if (this.selectionMode === 'years') {
372
+ this.emit(year, true);
348
373
  } else {
349
374
  this.date = changeYearMonthAndClampDate(this.date, year, this.month);
350
375
  // TODO: should emit intermediate value ??
@@ -356,25 +381,30 @@
356
381
  changeToNow() {
357
382
  // NOTE: not a permanent solution
358
383
  // consider disable "now" button in the future
359
- if (!this.disabledDate || !this.disabledDate(new Date())) {
384
+ if ((!this.disabledDate || !this.disabledDate(new Date())) && this.checkDateWithinRange(new Date())) {
360
385
  this.date = new Date();
361
386
  this.emit(this.date);
362
387
  }
363
388
  },
364
389
 
365
390
  confirm() {
366
- if (this.selectionMode === 'dates') {
367
- this.emit(this.selectedDate);
391
+ if (this.selectionMode === 'dates' || this.selectionMode === 'months' || this.selectionMode === 'years') {
392
+ this.emit(this.value);
368
393
  } else {
369
- const date = this.value ? this.date : modifyWithDefaultTime(this.date, this.defaultTime);
370
- this.emit(date);
394
+ // value were emitted in handle{Date,Time}Pick, nothing to update here
395
+ // deal with the scenario where: user opens the picker, then confirm without doing anything
396
+ const value = this.value
397
+ ? this.value
398
+ : modifyWithTimeString(this.getDefaultValue(), this.defaultTime);
399
+ this.date = new Date(value); // refresh date
400
+ this.emit(value);
371
401
  }
372
402
  },
373
403
 
374
404
  resetView() {
375
- if (this.selectionMode === 'month') {
405
+ if (this.selectionMode === 'month' || this.selectionMode === 'months') {
376
406
  this.currentView = 'month';
377
- } else if (this.selectionMode === 'year') {
407
+ } else if (this.selectionMode === 'year' || this.selectionMode === 'years') {
378
408
  this.currentView = 'year';
379
409
  } else {
380
410
  this.currentView = 'date';
@@ -438,7 +468,7 @@
438
468
 
439
469
  handleVisibleTimeChange(value) {
440
470
  const time = parseDate(value, this.timeFormat);
441
- if (time) {
471
+ if (time && this.checkDateWithinRange(time)) {
442
472
  this.date = modifyDate(time, this.year, this.month, this.monthDate);
443
473
  this.userInputTime = null;
444
474
  this.$refs.timepicker.value = this.date;
@@ -465,7 +495,19 @@
465
495
  typeof this.disabledDate === 'function'
466
496
  ? !this.disabledDate(value)
467
497
  : true
468
- );
498
+ ) && this.checkDateWithinRange(value);
499
+ },
500
+
501
+ getDefaultValue() {
502
+ // if default-value is set, return it
503
+ // otherwise, return now (the moment this method gets called)
504
+ return this.defaultValue ? new Date(this.defaultValue) : new Date();
505
+ },
506
+
507
+ checkDateWithinRange(date) {
508
+ return this.selectableRange.length > 0
509
+ ? timeWithinRange(date, this.selectableRange, this.format || 'HH:mm:ss')
510
+ : true;
469
511
  }
470
512
  },
471
513
 
@@ -478,7 +520,7 @@
478
520
  popperClass: '',
479
521
  date: new Date(),
480
522
  value: '',
481
- defaultValue: null,
523
+ defaultValue: null, // use getDefaultValue() for time computation
482
524
  defaultTime: null,
483
525
  showTime: false,
484
526
  selectionMode: 'day',
@@ -486,7 +528,8 @@
486
528
  visible: false,
487
529
  currentView: 'date',
488
530
  disabledDate: '',
489
- selectedDate: [],
531
+ cellClassName: '',
532
+ selectableRange: [],
490
533
  firstDayOfWeek: 7,
491
534
  showWeekNumber: false,
492
535
  timePickerVisible: false,
@@ -515,7 +558,7 @@
515
558
  },
516
559
 
517
560
  footerVisible() {
518
- return this.showTime || this.selectionMode === 'dates';
561
+ return this.showTime || this.selectionMode === 'dates' || this.selectionMode === 'months' || this.selectionMode === 'years';
519
562
  },
520
563
 
521
564
  visibleTime() {