eoss-ui 0.8.6 → 0.8.8

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 (322) hide show
  1. package/lib/calogin.js +233 -233
  2. package/lib/eoss-ui.common.js +1200 -1022
  3. package/lib/flow-list.js +96 -96
  4. package/lib/flow.js +550 -379
  5. package/lib/form.js +7 -2
  6. package/lib/index.js +1 -1
  7. package/lib/main.js +288 -288
  8. package/lib/qr-code.js +13 -13
  9. package/lib/select.js +2 -0
  10. package/package.json +1 -1
  11. package/packages/button/index.js +5 -5
  12. package/packages/button/src/main.vue +418 -418
  13. package/packages/button-group/index.js +5 -5
  14. package/packages/button-group/src/main.vue +346 -346
  15. package/packages/calendar/index.js +5 -5
  16. package/packages/calogin/index.js +5 -5
  17. package/packages/calogin/src/main.vue +412 -412
  18. package/packages/calogin/src/plugin.js +915 -915
  19. package/packages/card/index.js +5 -5
  20. package/packages/card/src/main.vue +156 -156
  21. package/packages/cascader/index.js +5 -5
  22. package/packages/cascader/src/main.vue +168 -168
  23. package/packages/checkbox-group/index.js +5 -5
  24. package/packages/checkbox-group/src/main.vue +333 -333
  25. package/packages/clients/index.js +5 -5
  26. package/packages/clients/src/main.vue +151 -151
  27. package/packages/data-table/index.js +5 -5
  28. package/packages/data-table/src/children.vue +46 -46
  29. package/packages/data-table/src/main.vue +1876 -1876
  30. package/packages/data-table/src/sizer.vue +195 -195
  31. package/packages/data-table-form/index.js +5 -5
  32. package/packages/data-table-form/src/checkbox.vue +101 -101
  33. package/packages/data-table-form/src/colgroup.vue +17 -17
  34. package/packages/data-table-form/src/main.vue +181 -181
  35. package/packages/data-table-form/src/radio.vue +65 -65
  36. package/packages/data-table-form/src/table.vue +233 -233
  37. package/packages/data-table-form/src/tbody.vue +336 -336
  38. package/packages/data-table-form/src/thead.vue +68 -68
  39. package/packages/date-picker/index.js +5 -5
  40. package/packages/date-picker/src/main.vue +236 -236
  41. package/packages/dialog/index.js +5 -5
  42. package/packages/enable-drag/index.js +5 -5
  43. package/packages/enterprise/index.js +5 -5
  44. package/packages/enterprise/src/main.vue +66 -66
  45. package/packages/error-page/index.js +5 -5
  46. package/packages/error-page/src/main.vue +44 -44
  47. package/packages/flow/index.js +5 -5
  48. package/packages/flow/src/component/Circulate.vue +419 -417
  49. package/packages/flow/src/component/CommonOpinions.vue +376 -376
  50. package/packages/flow/src/component/CustomPreset.vue +324 -324
  51. package/packages/flow/src/component/FileList.vue +97 -97
  52. package/packages/flow/src/component/FreeCirculation.vue +245 -245
  53. package/packages/flow/src/component/Preset.vue +257 -257
  54. package/packages/flow/src/component/SendMsg.vue +242 -242
  55. package/packages/flow/src/component/SortFlow.vue +110 -110
  56. package/packages/flow/src/component/TimeLimit.vue +190 -190
  57. package/packages/flow/src/component/taskUnionExamine.vue +763 -761
  58. package/packages/flow/src/form.vue +123 -123
  59. package/packages/flow/src/freeStartFlow.vue +2898 -2855
  60. package/packages/flow/src/main.vue +4201 -4165
  61. package/packages/flow/src/processForm.vue +1717 -1711
  62. package/packages/flow/src/processReject.vue +311 -309
  63. package/packages/flow/src/reset.vue +952 -946
  64. package/packages/flow/src/startTaskRead.vue +698 -695
  65. package/packages/flow/src/supervise.vue +162 -159
  66. package/packages/flow/src/table.vue +58 -58
  67. package/packages/flow-group/index.js +5 -5
  68. package/packages/flow-group/src/main.vue +750 -750
  69. package/packages/flow-list/index.js +5 -5
  70. package/packages/flow-list/src/main.vue +2337 -2337
  71. package/packages/form/index.js +5 -5
  72. package/packages/form/src/main.vue +3906 -3901
  73. package/packages/form/src/table.vue +1512 -1512
  74. package/packages/handle-user/index.js +5 -5
  75. package/packages/handle-user/src/main.vue +137 -137
  76. package/packages/handler/index.js +5 -5
  77. package/packages/handler/src/main.vue +499 -499
  78. package/packages/icon/index.js +5 -5
  79. package/packages/icon/src/main.vue +104 -104
  80. package/packages/icons/index.js +5 -5
  81. package/packages/icons/src/main.vue +81 -81
  82. package/packages/input/index.js +5 -5
  83. package/packages/input/src/main.vue +356 -356
  84. package/packages/input-number/index.js +5 -5
  85. package/packages/input-number/src/main.vue +106 -106
  86. package/packages/label/index.js +5 -5
  87. package/packages/label/src/main.vue +457 -457
  88. package/packages/layout/index.js +5 -5
  89. package/packages/layout/src/item.vue +152 -152
  90. package/packages/layout/src/main.vue +31 -31
  91. package/packages/login/index.js +5 -5
  92. package/packages/login/src/main.vue +2088 -2088
  93. package/packages/login/src/resetPassword.vue +557 -557
  94. package/packages/main/index.js +5 -5
  95. package/packages/main/src/default/message.vue +249 -249
  96. package/packages/main/src/default/notice.vue +157 -157
  97. package/packages/main/src/default/userinfo.vue +513 -513
  98. package/packages/main/src/public/online.vue +89 -89
  99. package/packages/main/src/public/search.vue +464 -464
  100. package/packages/main/src/public/settings.vue +273 -273
  101. package/packages/main/src/simplicity/apps.vue +388 -388
  102. package/packages/main/src/simplicity/avatar.vue +82 -82
  103. package/packages/main/src/simplicity/handler.vue +158 -158
  104. package/packages/main/src/simplicity/index.vue +2335 -2335
  105. package/packages/main/src/simplicity/lists.vue +84 -84
  106. package/packages/main/src/simplicity/menu-list.vue +135 -135
  107. package/packages/main/src/simplicity/message.vue +293 -293
  108. package/packages/main/src/simplicity/notice.vue +222 -222
  109. package/packages/main/src/simplicity/router-page.vue +45 -45
  110. package/packages/main/src/simplicity/sub-menu.vue +276 -276
  111. package/packages/main/src/simplicity/user.vue +259 -259
  112. package/packages/main/src/simplicity/userinfo.vue +408 -408
  113. package/packages/main/src/simplicityTop/apps.vue +388 -388
  114. package/packages/main/src/simplicityTop/avatar.vue +82 -82
  115. package/packages/main/src/simplicityTop/handler.vue +215 -215
  116. package/packages/main/src/simplicityTop/index.vue +2626 -2626
  117. package/packages/main/src/simplicityTop/lists.vue +84 -84
  118. package/packages/main/src/simplicityTop/menu-list.vue +135 -135
  119. package/packages/main/src/simplicityTop/message.vue +293 -293
  120. package/packages/main/src/simplicityTop/notice.vue +222 -222
  121. package/packages/main/src/simplicityTop/router-page.vue +45 -45
  122. package/packages/main/src/simplicityTop/sub-menu.vue +274 -274
  123. package/packages/main/src/simplicityTop/user.vue +259 -259
  124. package/packages/main/src/simplicityTop/userinfo.vue +408 -408
  125. package/packages/menu/index.js +5 -5
  126. package/packages/menu/src/main.vue +595 -595
  127. package/packages/nav/index.js +5 -5
  128. package/packages/nav/src/main.vue +351 -351
  129. package/packages/notify/index.js +5 -5
  130. package/packages/notify/src/main.vue +538 -538
  131. package/packages/page/index.js +5 -5
  132. package/packages/page/src/main.vue +167 -167
  133. package/packages/pagination/index.js +5 -5
  134. package/packages/pagination/src/main.vue +96 -96
  135. package/packages/player/index.js +5 -5
  136. package/packages/player/src/main.vue +194 -194
  137. package/packages/qr-code/index.js +5 -5
  138. package/packages/qr-code/src/main.vue +170 -170
  139. package/packages/radio-group/index.js +6 -6
  140. package/packages/radio-group/src/main.vue +319 -319
  141. package/packages/retrial-auth/index.js +5 -5
  142. package/packages/retrial-auth/src/main.vue +299 -299
  143. package/packages/select/index.js +5 -5
  144. package/packages/select/src/main.vue +2 -0
  145. package/packages/select-ganged/index.js +5 -5
  146. package/packages/select-ganged/src/main.vue +724 -724
  147. package/packages/selector/index.js +5 -5
  148. package/packages/selector/src/main.vue +761 -761
  149. package/packages/selector-panel/index.js +5 -5
  150. package/packages/selector-panel/src/main.vue +1036 -1036
  151. package/packages/selector-panel/src/selection.vue +174 -174
  152. package/packages/selector-panel/src/tree.vue +129 -129
  153. package/packages/sizer/index.js +5 -5
  154. package/packages/sizer/src/main.vue +254 -254
  155. package/packages/steps/index.js +5 -5
  156. package/packages/steps/src/main.vue +181 -181
  157. package/packages/switch/index.js +5 -5
  158. package/packages/switch/src/main.vue +170 -170
  159. package/packages/table-form/index.js +5 -5
  160. package/packages/tabs/index.js +5 -5
  161. package/packages/tabs/src/main.vue +788 -788
  162. package/packages/tabs-panel/index.js +5 -5
  163. package/packages/tabs-panel/src/main.vue +29 -29
  164. package/packages/theme-chalk/gulpfile.js +25 -0
  165. package/packages/theme-chalk/src/base.scss +261 -261
  166. package/packages/theme-chalk/src/button-group.scss +176 -176
  167. package/packages/theme-chalk/src/button.scss +24 -24
  168. package/packages/theme-chalk/src/calendar.scss +113 -113
  169. package/packages/theme-chalk/src/card.scss +99 -99
  170. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  171. package/packages/theme-chalk/src/clients.scss +87 -87
  172. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  173. package/packages/theme-chalk/src/data-table.scss +297 -297
  174. package/packages/theme-chalk/src/date-picker.scss +7 -7
  175. package/packages/theme-chalk/src/dialog.scss +77 -77
  176. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  177. package/packages/theme-chalk/src/enterprise.scss +5 -5
  178. package/packages/theme-chalk/src/error-page.scss +18 -18
  179. package/packages/theme-chalk/src/flow-group.scss +110 -110
  180. package/packages/theme-chalk/src/flow-list.scss +55 -55
  181. package/packages/theme-chalk/src/flow.scss +373 -373
  182. package/packages/theme-chalk/src/form.scss +501 -501
  183. package/packages/theme-chalk/src/handle-user.scss +40 -40
  184. package/packages/theme-chalk/src/handler.scss +148 -148
  185. package/packages/theme-chalk/src/icon.scss +3452 -3452
  186. package/packages/theme-chalk/src/icons.scss +99 -99
  187. package/packages/theme-chalk/src/input.scss +9 -9
  188. package/packages/theme-chalk/src/label.scss +24 -24
  189. package/packages/theme-chalk/src/layout.scss +46 -46
  190. package/packages/theme-chalk/src/login.scss +1006 -1006
  191. package/packages/theme-chalk/src/main.scss +664 -664
  192. package/packages/theme-chalk/src/menu.scss +224 -224
  193. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  194. package/packages/theme-chalk/src/nav.scss +111 -111
  195. package/packages/theme-chalk/src/page.scss +3 -3
  196. package/packages/theme-chalk/src/pagination.scss +29 -29
  197. package/packages/theme-chalk/src/player.scss +9 -9
  198. package/packages/theme-chalk/src/qr-code.scss +17 -17
  199. package/packages/theme-chalk/src/radio-group.scss +9 -9
  200. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  201. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  202. package/packages/theme-chalk/src/select.scss +8 -8
  203. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  204. package/packages/theme-chalk/src/selector.scss +114 -114
  205. package/packages/theme-chalk/src/simplicity-top.scss +1845 -1845
  206. package/packages/theme-chalk/src/simplicity.scss +1403 -1403
  207. package/packages/theme-chalk/src/sizer.scss +36 -36
  208. package/packages/theme-chalk/src/steps.scss +88 -88
  209. package/packages/theme-chalk/src/switch.scss +3 -3
  210. package/packages/theme-chalk/src/table-form.scss +1 -1
  211. package/packages/theme-chalk/src/tabs.scss +87 -87
  212. package/packages/theme-chalk/src/tips.scss +7 -7
  213. package/packages/theme-chalk/src/toolbar.scss +179 -179
  214. package/packages/theme-chalk/src/tree-group.scss +72 -72
  215. package/packages/theme-chalk/src/tree.scss +165 -165
  216. package/packages/theme-chalk/src/upload.scss +172 -172
  217. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  218. package/packages/tips/index.js +5 -5
  219. package/packages/tips/src/main.vue +141 -141
  220. package/packages/toolbar/index.js +5 -5
  221. package/packages/toolbar/src/main.vue +430 -430
  222. package/packages/tree/index.js +5 -5
  223. package/packages/tree-group/index.js +5 -5
  224. package/packages/upload/index.js +5 -5
  225. package/packages/upload/src/main.vue +1344 -1344
  226. package/packages/upload/src/picture.js +15 -15
  227. package/packages/wujie/index.js +5 -5
  228. package/packages/wujie/src/main.vue +146 -146
  229. package/packages/wxlogin/index.js +5 -5
  230. package/packages/wxlogin/src/main.vue +128 -128
  231. package/src/config/api.js +348 -348
  232. package/src/config/image.js +2 -2
  233. package/src/index.js +163 -163
  234. package/src/utils/bus.js +3 -3
  235. package/src/utils/date-util.js +312 -312
  236. package/src/utils/http.js +50 -50
  237. package/src/utils/rules.js +18 -18
  238. package/src/utils/store.js +21 -21
  239. package/src/utils/webSocket.js +107 -107
  240. package/packages/.DS_Store +0 -0
  241. package/packages/calogin/.DS_Store +0 -0
  242. package/packages/date-picker/.DS_Store +0 -0
  243. package/packages/date-picker/src/.DS_Store +0 -0
  244. package/packages/dialog/.DS_Store +0 -0
  245. package/packages/flow/.DS_Store +0 -0
  246. package/packages/flow/src/.DS_Store +0 -0
  247. package/packages/flow-list/.DS_Store +0 -0
  248. package/packages/form/.DS_Store +0 -0
  249. package/packages/icon/.DS_Store +0 -0
  250. package/packages/login/.DS_Store +0 -0
  251. package/packages/main/.DS_Store +0 -0
  252. package/packages/main/src/.DS_Store +0 -0
  253. package/packages/menu/.DS_Store +0 -0
  254. package/packages/select/.DS_Store +0 -0
  255. package/packages/selector/.DS_Store +0 -0
  256. package/packages/selector-panel/.DS_Store +0 -0
  257. package/packages/theme-chalk/lib/base.css +0 -1
  258. package/packages/theme-chalk/lib/button-group.css +0 -1
  259. package/packages/theme-chalk/lib/button.css +0 -1
  260. package/packages/theme-chalk/lib/calendar.css +0 -1
  261. package/packages/theme-chalk/lib/calogin.css +0 -0
  262. package/packages/theme-chalk/lib/card.css +0 -1
  263. package/packages/theme-chalk/lib/cascader.css +0 -0
  264. package/packages/theme-chalk/lib/checkbox-group.css +0 -1
  265. package/packages/theme-chalk/lib/clients.css +0 -1
  266. package/packages/theme-chalk/lib/data-table-form.css +0 -1
  267. package/packages/theme-chalk/lib/data-table.css +0 -1
  268. package/packages/theme-chalk/lib/date-picker.css +0 -1
  269. package/packages/theme-chalk/lib/dialog.css +0 -1
  270. package/packages/theme-chalk/lib/enable-drag.css +0 -1
  271. package/packages/theme-chalk/lib/enterprise.css +0 -1
  272. package/packages/theme-chalk/lib/error-page.css +0 -1
  273. package/packages/theme-chalk/lib/flow-chart.css +0 -0
  274. package/packages/theme-chalk/lib/flow-group.css +0 -1
  275. package/packages/theme-chalk/lib/flow-list.css +0 -1
  276. package/packages/theme-chalk/lib/flow.css +0 -1
  277. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  278. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  279. package/packages/theme-chalk/lib/form.css +0 -1
  280. package/packages/theme-chalk/lib/handle-user.css +0 -1
  281. package/packages/theme-chalk/lib/handler.css +0 -1
  282. package/packages/theme-chalk/lib/icon.css +0 -1
  283. package/packages/theme-chalk/lib/icons.css +0 -1
  284. package/packages/theme-chalk/lib/index.css +0 -1
  285. package/packages/theme-chalk/lib/input-number.css +0 -0
  286. package/packages/theme-chalk/lib/input.css +0 -1
  287. package/packages/theme-chalk/lib/label.css +0 -1
  288. package/packages/theme-chalk/lib/layout.css +0 -1
  289. package/packages/theme-chalk/lib/login.css +0 -1
  290. package/packages/theme-chalk/lib/main.css +0 -1
  291. package/packages/theme-chalk/lib/menu.css +0 -1
  292. package/packages/theme-chalk/lib/nav.css +0 -1
  293. package/packages/theme-chalk/lib/notify.css +0 -0
  294. package/packages/theme-chalk/lib/page.css +0 -1
  295. package/packages/theme-chalk/lib/pagination.css +0 -1
  296. package/packages/theme-chalk/lib/player.css +0 -1
  297. package/packages/theme-chalk/lib/qr-code.css +0 -1
  298. package/packages/theme-chalk/lib/radio-group.css +0 -1
  299. package/packages/theme-chalk/lib/retrial-auth.css +0 -1
  300. package/packages/theme-chalk/lib/select-ganged.css +0 -1
  301. package/packages/theme-chalk/lib/select.css +0 -1
  302. package/packages/theme-chalk/lib/selector-panel.css +0 -1
  303. package/packages/theme-chalk/lib/selector.css +0 -1
  304. package/packages/theme-chalk/lib/simplicity-top.css +0 -1
  305. package/packages/theme-chalk/lib/simplicity.css +0 -1
  306. package/packages/theme-chalk/lib/sizer.css +0 -1
  307. package/packages/theme-chalk/lib/steps.css +0 -1
  308. package/packages/theme-chalk/lib/switch.css +0 -1
  309. package/packages/theme-chalk/lib/table-form.css +0 -0
  310. package/packages/theme-chalk/lib/tabs-panel.css +0 -0
  311. package/packages/theme-chalk/lib/tabs.css +0 -1
  312. package/packages/theme-chalk/lib/tips.css +0 -1
  313. package/packages/theme-chalk/lib/toolbar.css +0 -1
  314. package/packages/theme-chalk/lib/tree-group.css +0 -1
  315. package/packages/theme-chalk/lib/tree.css +0 -1
  316. package/packages/theme-chalk/lib/upload.css +0 -1
  317. package/packages/theme-chalk/lib/wujie.css +0 -0
  318. package/packages/theme-chalk/lib/wxlogin.css +0 -1
  319. package/packages/theme-chalk/src/.DS_Store +0 -0
  320. package/packages/upload/.DS_Store +0 -0
  321. package/src/.DS_Store +0 -0
  322. package/src/utils/.DS_Store +0 -0
@@ -1,312 +1,312 @@
1
- import fecha from 'element-ui/src/utils/date';
2
- import { t } from 'element-ui/src/locale';
3
-
4
- const weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
5
- const months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
6
-
7
- const newArray = function(start, end) {
8
- let result = [];
9
- for (let i = start; i <= end; i++) {
10
- result.push(i);
11
- }
12
- return result;
13
- };
14
-
15
- export const getI18nSettings = () => {
16
- return {
17
- dayNamesShort: weeks.map(week => t(`el.datepicker.weeks.${week}`)),
18
- dayNames: weeks.map(week => t(`el.datepicker.weeks.${week}`)),
19
- monthNamesShort: months.map(month => t(`el.datepicker.months.${month}`)),
20
- monthNames: months.map((month, index) => t(`el.datepicker.month${index + 1}`)),
21
- amPm: ['am', 'pm']
22
- };
23
- };
24
-
25
- export const toDate = function(date) {
26
- return isDate(date) ? new Date(date) : null;
27
- };
28
-
29
- export const isDate = function(date) {
30
- if (date === null || date === undefined) return false;
31
- if (isNaN(new Date(date).getTime())) return false;
32
- if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
33
- return true;
34
- };
35
-
36
- export const isDateObject = function(val) {
37
- return val instanceof Date;
38
- };
39
-
40
- export const formatDate = function(date, format) {
41
- date = toDate(date);
42
- if (!date) return '';
43
- return fecha.format(date, format || 'yyyy-MM-dd', getI18nSettings());
44
- };
45
-
46
- export const parseDate = function(string, format) {
47
- return fecha.parse(string, format || 'yyyy-MM-dd', getI18nSettings());
48
- };
49
-
50
- export const getDayCountOfMonth = function(year, month) {
51
- if (month === 3 || month === 5 || month === 8 || month === 10) {
52
- return 30;
53
- }
54
-
55
- if (month === 1) {
56
- if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
57
- return 29;
58
- } else {
59
- return 28;
60
- }
61
- }
62
-
63
- return 31;
64
- };
65
-
66
- export const getDayCountOfYear = function(year) {
67
- const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
68
- return isLeapYear ? 366 : 365;
69
- };
70
-
71
- export const getFirstDayOfMonth = function(date) {
72
- const temp = new Date(date.getTime());
73
- temp.setDate(1);
74
- return temp.getDay();
75
- };
76
-
77
- // see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
78
- // {prev, next} Date should work for Daylight Saving Time
79
- // Adding 24 * 60 * 60 * 1000 does not work in the above scenario
80
- export const prevDate = function(date, amount = 1) {
81
- return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
82
- };
83
-
84
- export const nextDate = function(date, amount = 1) {
85
- return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
86
- };
87
-
88
- export const getStartDateOfMonth = function(year, month) {
89
- const result = new Date(year, month, 1);
90
- const day = result.getDay();
91
-
92
- if (day === 0) {
93
- return prevDate(result, 7);
94
- } else {
95
- return prevDate(result, day);
96
- }
97
- };
98
-
99
- export const getWeekNumber = function(src) {
100
- if (!isDate(src)) return null;
101
- const date = new Date(src.getTime());
102
- date.setHours(0, 0, 0, 0);
103
- // Thursday in current week decides the year.
104
- date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
105
- // January 4 is always in week 1.
106
- const week1 = new Date(date.getFullYear(), 0, 4);
107
- // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
108
- // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
109
- return (
110
- 1 +
111
- Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + ((week1.getDay() + 6) % 7)) / 7)
112
- );
113
- };
114
-
115
- export const getRangeHours = function(ranges) {
116
- const hours = [];
117
- let disabledHours = [];
118
-
119
- (ranges || []).forEach(range => {
120
- const value = range.map(date => date.getHours());
121
-
122
- disabledHours = disabledHours.concat(newArray(value[0], value[1]));
123
- });
124
-
125
- if (disabledHours.length) {
126
- for (let i = 0; i < 24; i++) {
127
- hours[i] = disabledHours.indexOf(i) === -1;
128
- }
129
- } else {
130
- for (let i = 0; i < 24; i++) {
131
- hours[i] = false;
132
- }
133
- }
134
-
135
- return hours;
136
- };
137
-
138
- export const getPrevMonthLastDays = (date, amount) => {
139
- if (amount <= 0) return [];
140
- const temp = new Date(date.getTime());
141
- temp.setDate(0);
142
- const lastDay = temp.getDate();
143
- return range(amount).map((_, index) => lastDay - (amount - index - 1));
144
- };
145
-
146
- export const getMonthDays = date => {
147
- const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
148
- const days = temp.getDate();
149
- return range(days).map((_, index) => index + 1);
150
- };
151
-
152
- function setRangeData(arr, start, end, value) {
153
- for (let i = start; i < end; i++) {
154
- arr[i] = value;
155
- }
156
- }
157
-
158
- export const getRangeMinutes = function(ranges, hour) {
159
- const minutes = new Array(60);
160
-
161
- if (ranges.length > 0) {
162
- ranges.forEach(range => {
163
- const start = range[0];
164
- const end = range[1];
165
- const startHour = start.getHours();
166
- const startMinute = start.getMinutes();
167
- const endHour = end.getHours();
168
- const endMinute = end.getMinutes();
169
- if (startHour === hour && endHour !== hour) {
170
- setRangeData(minutes, startMinute, 60, true);
171
- } else if (startHour === hour && endHour === hour) {
172
- setRangeData(minutes, startMinute, endMinute + 1, true);
173
- } else if (startHour !== hour && endHour === hour) {
174
- setRangeData(minutes, 0, endMinute + 1, true);
175
- } else if (startHour < hour && endHour > hour) {
176
- setRangeData(minutes, 0, 60, true);
177
- }
178
- });
179
- } else {
180
- setRangeData(minutes, 0, 60, true);
181
- }
182
- return minutes;
183
- };
184
-
185
- export const range = function(n) {
186
- // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
187
- return Array.apply(null, { length: n }).map((_, n) => n);
188
- };
189
-
190
- export const modifyDate = function(date, y, m, d) {
191
- return new Date(
192
- y,
193
- m,
194
- d,
195
- date.getHours(),
196
- date.getMinutes(),
197
- date.getSeconds(),
198
- date.getMilliseconds()
199
- );
200
- };
201
-
202
- export const modifyTime = function(date, h, m, s) {
203
- return new Date(
204
- date.getFullYear(),
205
- date.getMonth(),
206
- date.getDate(),
207
- h,
208
- m,
209
- s,
210
- date.getMilliseconds()
211
- );
212
- };
213
-
214
- export const modifyWithTimeString = (date, time) => {
215
- if (date == null || !time) {
216
- return date;
217
- }
218
- time = parseDate(time, 'HH:mm:ss');
219
- return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
220
- };
221
-
222
- export const clearTime = function(date) {
223
- return new Date(date.getFullYear(), date.getMonth(), date.getDate());
224
- };
225
-
226
- export const clearMilliseconds = function(date) {
227
- return new Date(
228
- date.getFullYear(),
229
- date.getMonth(),
230
- date.getDate(),
231
- date.getHours(),
232
- date.getMinutes(),
233
- date.getSeconds(),
234
- 0
235
- );
236
- };
237
-
238
- export const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {
239
- // TODO: refactory a more elegant solution
240
- if (ranges.length === 0) return date;
241
- const normalizeDate = date => fecha.parse(fecha.format(date, format), format);
242
- const ndate = normalizeDate(date);
243
- const nranges = ranges.map(range => range.map(normalizeDate));
244
- if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;
245
-
246
- let minDate = nranges[0][0];
247
- let maxDate = nranges[0][0];
248
-
249
- nranges.forEach(nrange => {
250
- minDate = new Date(Math.min(nrange[0], minDate));
251
- maxDate = new Date(Math.max(nrange[1], minDate));
252
- });
253
-
254
- const ret = ndate < minDate ? minDate : maxDate;
255
- // preserve Year/Month/Date
256
- return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());
257
- };
258
-
259
- export const timeWithinRange = function(date, selectableRange, format) {
260
- const limitedDate = limitTimeRange(date, selectableRange, format);
261
- return limitedDate.getTime() === date.getTime();
262
- };
263
-
264
- export const changeYearMonthAndClampDate = function(date, year, month) {
265
- // clamp date to the number of days in `year`, `month`
266
- // eg: (2010-1-31, 2010, 2) => 2010-2-28
267
- const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
268
- return modifyDate(date, year, month, monthDate);
269
- };
270
-
271
- export const prevMonth = function(date) {
272
- const year = date.getFullYear();
273
- const month = date.getMonth();
274
- return month === 0
275
- ? changeYearMonthAndClampDate(date, year - 1, 11)
276
- : changeYearMonthAndClampDate(date, year, month - 1);
277
- };
278
-
279
- export const nextMonth = function(date) {
280
- const year = date.getFullYear();
281
- const month = date.getMonth();
282
- return month === 11
283
- ? changeYearMonthAndClampDate(date, year + 1, 0)
284
- : changeYearMonthAndClampDate(date, year, month + 1);
285
- };
286
-
287
- export const prevYear = function(date, amount = 1) {
288
- const year = date.getFullYear();
289
- const month = date.getMonth();
290
- return changeYearMonthAndClampDate(date, year - amount, month);
291
- };
292
-
293
- export const nextYear = function(date, amount = 1) {
294
- const year = date.getFullYear();
295
- const month = date.getMonth();
296
- return changeYearMonthAndClampDate(date, year + amount, month);
297
- };
298
-
299
- export const extractDateFormat = function(format) {
300
- return format
301
- .replace(/\W?m{1,2}|\W?ZZ/g, '')
302
- .replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
303
- .trim();
304
- };
305
-
306
- export const extractTimeFormat = function(format) {
307
- return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '').trim();
308
- };
309
-
310
- export const validateRangeInOneMonth = function(start, end) {
311
- return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();
312
- };
1
+ import fecha from 'element-ui/src/utils/date';
2
+ import { t } from 'element-ui/src/locale';
3
+
4
+ const weeks = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];
5
+ const months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
6
+
7
+ const newArray = function(start, end) {
8
+ let result = [];
9
+ for (let i = start; i <= end; i++) {
10
+ result.push(i);
11
+ }
12
+ return result;
13
+ };
14
+
15
+ export const getI18nSettings = () => {
16
+ return {
17
+ dayNamesShort: weeks.map(week => t(`el.datepicker.weeks.${week}`)),
18
+ dayNames: weeks.map(week => t(`el.datepicker.weeks.${week}`)),
19
+ monthNamesShort: months.map(month => t(`el.datepicker.months.${month}`)),
20
+ monthNames: months.map((month, index) => t(`el.datepicker.month${index + 1}`)),
21
+ amPm: ['am', 'pm']
22
+ };
23
+ };
24
+
25
+ export const toDate = function(date) {
26
+ return isDate(date) ? new Date(date) : null;
27
+ };
28
+
29
+ export const isDate = function(date) {
30
+ if (date === null || date === undefined) return false;
31
+ if (isNaN(new Date(date).getTime())) return false;
32
+ if (Array.isArray(date)) return false; // deal with `new Date([ new Date() ]) -> new Date()`
33
+ return true;
34
+ };
35
+
36
+ export const isDateObject = function(val) {
37
+ return val instanceof Date;
38
+ };
39
+
40
+ export const formatDate = function(date, format) {
41
+ date = toDate(date);
42
+ if (!date) return '';
43
+ return fecha.format(date, format || 'yyyy-MM-dd', getI18nSettings());
44
+ };
45
+
46
+ export const parseDate = function(string, format) {
47
+ return fecha.parse(string, format || 'yyyy-MM-dd', getI18nSettings());
48
+ };
49
+
50
+ export const getDayCountOfMonth = function(year, month) {
51
+ if (month === 3 || month === 5 || month === 8 || month === 10) {
52
+ return 30;
53
+ }
54
+
55
+ if (month === 1) {
56
+ if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
57
+ return 29;
58
+ } else {
59
+ return 28;
60
+ }
61
+ }
62
+
63
+ return 31;
64
+ };
65
+
66
+ export const getDayCountOfYear = function(year) {
67
+ const isLeapYear = year % 400 === 0 || (year % 100 !== 0 && year % 4 === 0);
68
+ return isLeapYear ? 366 : 365;
69
+ };
70
+
71
+ export const getFirstDayOfMonth = function(date) {
72
+ const temp = new Date(date.getTime());
73
+ temp.setDate(1);
74
+ return temp.getDay();
75
+ };
76
+
77
+ // see: https://stackoverflow.com/questions/3674539/incrementing-a-date-in-javascript
78
+ // {prev, next} Date should work for Daylight Saving Time
79
+ // Adding 24 * 60 * 60 * 1000 does not work in the above scenario
80
+ export const prevDate = function(date, amount = 1) {
81
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() - amount);
82
+ };
83
+
84
+ export const nextDate = function(date, amount = 1) {
85
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate() + amount);
86
+ };
87
+
88
+ export const getStartDateOfMonth = function(year, month) {
89
+ const result = new Date(year, month, 1);
90
+ const day = result.getDay();
91
+
92
+ if (day === 0) {
93
+ return prevDate(result, 7);
94
+ } else {
95
+ return prevDate(result, day);
96
+ }
97
+ };
98
+
99
+ export const getWeekNumber = function(src) {
100
+ if (!isDate(src)) return null;
101
+ const date = new Date(src.getTime());
102
+ date.setHours(0, 0, 0, 0);
103
+ // Thursday in current week decides the year.
104
+ date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
105
+ // January 4 is always in week 1.
106
+ const week1 = new Date(date.getFullYear(), 0, 4);
107
+ // Adjust to Thursday in week 1 and count number of weeks from date to week 1.
108
+ // Rounding should be fine for Daylight Saving Time. Its shift should never be more than 12 hours.
109
+ return (
110
+ 1 +
111
+ Math.round(((date.getTime() - week1.getTime()) / 86400000 - 3 + ((week1.getDay() + 6) % 7)) / 7)
112
+ );
113
+ };
114
+
115
+ export const getRangeHours = function(ranges) {
116
+ const hours = [];
117
+ let disabledHours = [];
118
+
119
+ (ranges || []).forEach(range => {
120
+ const value = range.map(date => date.getHours());
121
+
122
+ disabledHours = disabledHours.concat(newArray(value[0], value[1]));
123
+ });
124
+
125
+ if (disabledHours.length) {
126
+ for (let i = 0; i < 24; i++) {
127
+ hours[i] = disabledHours.indexOf(i) === -1;
128
+ }
129
+ } else {
130
+ for (let i = 0; i < 24; i++) {
131
+ hours[i] = false;
132
+ }
133
+ }
134
+
135
+ return hours;
136
+ };
137
+
138
+ export const getPrevMonthLastDays = (date, amount) => {
139
+ if (amount <= 0) return [];
140
+ const temp = new Date(date.getTime());
141
+ temp.setDate(0);
142
+ const lastDay = temp.getDate();
143
+ return range(amount).map((_, index) => lastDay - (amount - index - 1));
144
+ };
145
+
146
+ export const getMonthDays = date => {
147
+ const temp = new Date(date.getFullYear(), date.getMonth() + 1, 0);
148
+ const days = temp.getDate();
149
+ return range(days).map((_, index) => index + 1);
150
+ };
151
+
152
+ function setRangeData(arr, start, end, value) {
153
+ for (let i = start; i < end; i++) {
154
+ arr[i] = value;
155
+ }
156
+ }
157
+
158
+ export const getRangeMinutes = function(ranges, hour) {
159
+ const minutes = new Array(60);
160
+
161
+ if (ranges.length > 0) {
162
+ ranges.forEach(range => {
163
+ const start = range[0];
164
+ const end = range[1];
165
+ const startHour = start.getHours();
166
+ const startMinute = start.getMinutes();
167
+ const endHour = end.getHours();
168
+ const endMinute = end.getMinutes();
169
+ if (startHour === hour && endHour !== hour) {
170
+ setRangeData(minutes, startMinute, 60, true);
171
+ } else if (startHour === hour && endHour === hour) {
172
+ setRangeData(minutes, startMinute, endMinute + 1, true);
173
+ } else if (startHour !== hour && endHour === hour) {
174
+ setRangeData(minutes, 0, endMinute + 1, true);
175
+ } else if (startHour < hour && endHour > hour) {
176
+ setRangeData(minutes, 0, 60, true);
177
+ }
178
+ });
179
+ } else {
180
+ setRangeData(minutes, 0, 60, true);
181
+ }
182
+ return minutes;
183
+ };
184
+
185
+ export const range = function(n) {
186
+ // see https://stackoverflow.com/questions/3746725/create-a-javascript-array-containing-1-n
187
+ return Array.apply(null, { length: n }).map((_, n) => n);
188
+ };
189
+
190
+ export const modifyDate = function(date, y, m, d) {
191
+ return new Date(
192
+ y,
193
+ m,
194
+ d,
195
+ date.getHours(),
196
+ date.getMinutes(),
197
+ date.getSeconds(),
198
+ date.getMilliseconds()
199
+ );
200
+ };
201
+
202
+ export const modifyTime = function(date, h, m, s) {
203
+ return new Date(
204
+ date.getFullYear(),
205
+ date.getMonth(),
206
+ date.getDate(),
207
+ h,
208
+ m,
209
+ s,
210
+ date.getMilliseconds()
211
+ );
212
+ };
213
+
214
+ export const modifyWithTimeString = (date, time) => {
215
+ if (date == null || !time) {
216
+ return date;
217
+ }
218
+ time = parseDate(time, 'HH:mm:ss');
219
+ return modifyTime(date, time.getHours(), time.getMinutes(), time.getSeconds());
220
+ };
221
+
222
+ export const clearTime = function(date) {
223
+ return new Date(date.getFullYear(), date.getMonth(), date.getDate());
224
+ };
225
+
226
+ export const clearMilliseconds = function(date) {
227
+ return new Date(
228
+ date.getFullYear(),
229
+ date.getMonth(),
230
+ date.getDate(),
231
+ date.getHours(),
232
+ date.getMinutes(),
233
+ date.getSeconds(),
234
+ 0
235
+ );
236
+ };
237
+
238
+ export const limitTimeRange = function(date, ranges, format = 'HH:mm:ss') {
239
+ // TODO: refactory a more elegant solution
240
+ if (ranges.length === 0) return date;
241
+ const normalizeDate = date => fecha.parse(fecha.format(date, format), format);
242
+ const ndate = normalizeDate(date);
243
+ const nranges = ranges.map(range => range.map(normalizeDate));
244
+ if (nranges.some(nrange => ndate >= nrange[0] && ndate <= nrange[1])) return date;
245
+
246
+ let minDate = nranges[0][0];
247
+ let maxDate = nranges[0][0];
248
+
249
+ nranges.forEach(nrange => {
250
+ minDate = new Date(Math.min(nrange[0], minDate));
251
+ maxDate = new Date(Math.max(nrange[1], minDate));
252
+ });
253
+
254
+ const ret = ndate < minDate ? minDate : maxDate;
255
+ // preserve Year/Month/Date
256
+ return modifyDate(ret, date.getFullYear(), date.getMonth(), date.getDate());
257
+ };
258
+
259
+ export const timeWithinRange = function(date, selectableRange, format) {
260
+ const limitedDate = limitTimeRange(date, selectableRange, format);
261
+ return limitedDate.getTime() === date.getTime();
262
+ };
263
+
264
+ export const changeYearMonthAndClampDate = function(date, year, month) {
265
+ // clamp date to the number of days in `year`, `month`
266
+ // eg: (2010-1-31, 2010, 2) => 2010-2-28
267
+ const monthDate = Math.min(date.getDate(), getDayCountOfMonth(year, month));
268
+ return modifyDate(date, year, month, monthDate);
269
+ };
270
+
271
+ export const prevMonth = function(date) {
272
+ const year = date.getFullYear();
273
+ const month = date.getMonth();
274
+ return month === 0
275
+ ? changeYearMonthAndClampDate(date, year - 1, 11)
276
+ : changeYearMonthAndClampDate(date, year, month - 1);
277
+ };
278
+
279
+ export const nextMonth = function(date) {
280
+ const year = date.getFullYear();
281
+ const month = date.getMonth();
282
+ return month === 11
283
+ ? changeYearMonthAndClampDate(date, year + 1, 0)
284
+ : changeYearMonthAndClampDate(date, year, month + 1);
285
+ };
286
+
287
+ export const prevYear = function(date, amount = 1) {
288
+ const year = date.getFullYear();
289
+ const month = date.getMonth();
290
+ return changeYearMonthAndClampDate(date, year - amount, month);
291
+ };
292
+
293
+ export const nextYear = function(date, amount = 1) {
294
+ const year = date.getFullYear();
295
+ const month = date.getMonth();
296
+ return changeYearMonthAndClampDate(date, year + amount, month);
297
+ };
298
+
299
+ export const extractDateFormat = function(format) {
300
+ return format
301
+ .replace(/\W?m{1,2}|\W?ZZ/g, '')
302
+ .replace(/\W?h{1,2}|\W?s{1,3}|\W?a/gi, '')
303
+ .trim();
304
+ };
305
+
306
+ export const extractTimeFormat = function(format) {
307
+ return format.replace(/\W?D{1,2}|\W?Do|\W?d{1,4}|\W?M{1,4}|\W?y{2,4}/g, '').trim();
308
+ };
309
+
310
+ export const validateRangeInOneMonth = function(start, end) {
311
+ return start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear();
312
+ };