eoss-ui 0.7.51 → 0.7.53

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/button-group.js +290 -279
  2. package/lib/button.js +290 -280
  3. package/lib/calendar.js +2 -2
  4. package/lib/calogin.js +523 -512
  5. package/lib/card.js +2 -2
  6. package/lib/cascader.js +2 -2
  7. package/lib/checkbox-group.js +294 -283
  8. package/lib/clients.js +2 -2
  9. package/lib/config/api.js +3 -1
  10. package/lib/data-table-form.js +293 -282
  11. package/lib/data-table.js +292 -281
  12. package/lib/date-picker.js +290 -280
  13. package/lib/dialog.js +293 -282
  14. package/lib/enable-drag.js +2 -2
  15. package/lib/enterprise.js +2 -2
  16. package/lib/eoss-ui.common.js +5515 -5675
  17. package/lib/error-page.js +2 -2
  18. package/lib/flow-group.js +354 -362
  19. package/lib/flow-list.js +435 -412
  20. package/lib/flow.js +608 -599
  21. package/lib/form.js +295 -284
  22. package/lib/handle-user.js +384 -392
  23. package/lib/handler.js +290 -280
  24. package/lib/icon.js +291 -281
  25. package/lib/icons.js +5 -5
  26. package/lib/index.js +1 -1
  27. package/lib/input-number.js +290 -280
  28. package/lib/input.js +294 -284
  29. package/lib/label.js +2 -2
  30. package/lib/layout.js +4 -4
  31. package/lib/login.js +303 -292
  32. package/lib/main.js +466 -455
  33. package/lib/menu.js +4 -4
  34. package/lib/nav.js +292 -282
  35. package/lib/notify.js +74 -71
  36. package/lib/page.js +290 -280
  37. package/lib/pagination.js +290 -280
  38. package/lib/player.js +373 -385
  39. package/lib/qr-code.js +305 -295
  40. package/lib/radio-group.js +301 -291
  41. package/lib/retrial-auth.js +294 -284
  42. package/lib/select-ganged.js +292 -282
  43. package/lib/select.js +299 -289
  44. package/lib/selector-panel.js +295 -284
  45. package/lib/selector.js +292 -282
  46. package/lib/sizer.js +290 -280
  47. package/lib/steps.js +292 -282
  48. package/lib/switch.js +290 -280
  49. package/lib/table-form.js +297 -287
  50. package/lib/tabs-panel.js +2 -2
  51. package/lib/tabs.js +290 -280
  52. package/lib/theme-chalk/base.css +1 -1
  53. package/lib/theme-chalk/data-table.css +1 -1
  54. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  55. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  56. package/lib/theme-chalk/icon.css +1 -1
  57. package/lib/theme-chalk/index.css +1 -1
  58. package/lib/theme-chalk/main.css +1 -1
  59. package/lib/theme-chalk/menu.css +1 -1
  60. package/lib/theme-chalk/simplicity.css +1 -1
  61. package/lib/theme-chalk/sizer.css +1 -1
  62. package/lib/theme-chalk/upload.css +1 -1
  63. package/lib/tips.js +292 -282
  64. package/lib/toolbar.js +2 -2
  65. package/lib/tree-group.js +290 -280
  66. package/lib/tree.js +292 -282
  67. package/lib/upload.js +304 -293
  68. package/lib/utils/util.js +8 -12
  69. package/lib/wujie.js +290 -280
  70. package/lib/wxlogin.js +290 -280
  71. package/package.json +160 -160
  72. package/packages/button/index.js +5 -5
  73. package/packages/button/src/main.vue +418 -418
  74. package/packages/button-group/index.js +5 -5
  75. package/packages/button-group/src/main.vue +346 -346
  76. package/packages/calendar/index.js +5 -5
  77. package/packages/calogin/index.js +5 -5
  78. package/packages/calogin/src/main.vue +412 -412
  79. package/packages/calogin/src/plugin.js +915 -915
  80. package/packages/card/index.js +5 -5
  81. package/packages/card/src/main.vue +156 -156
  82. package/packages/cascader/index.js +5 -5
  83. package/packages/cascader/src/main.vue +168 -168
  84. package/packages/checkbox-group/index.js +5 -5
  85. package/packages/checkbox-group/src/main.vue +333 -333
  86. package/packages/clients/index.js +5 -5
  87. package/packages/clients/src/main.vue +151 -151
  88. package/packages/data-table/index.js +5 -5
  89. package/packages/data-table/src/children.vue +39 -39
  90. package/packages/data-table/src/column.vue +992 -992
  91. package/packages/data-table/src/main.vue +1840 -1840
  92. package/packages/data-table/src/sizer.vue +195 -195
  93. package/packages/data-table-form/index.js +5 -5
  94. package/packages/data-table-form/src/checkbox.vue +101 -101
  95. package/packages/data-table-form/src/colgroup.vue +17 -17
  96. package/packages/data-table-form/src/main.vue +181 -181
  97. package/packages/data-table-form/src/radio.vue +65 -65
  98. package/packages/data-table-form/src/table.vue +233 -233
  99. package/packages/data-table-form/src/tbody.vue +336 -336
  100. package/packages/data-table-form/src/thead.vue +68 -68
  101. package/packages/date-picker/index.js +5 -5
  102. package/packages/date-picker/src/main.vue +236 -236
  103. package/packages/dialog/index.js +5 -5
  104. package/packages/enable-drag/index.js +5 -5
  105. package/packages/enterprise/index.js +5 -5
  106. package/packages/enterprise/src/main.vue +66 -66
  107. package/packages/error-page/index.js +5 -5
  108. package/packages/error-page/src/main.vue +44 -44
  109. package/packages/flow/index.js +5 -5
  110. package/packages/flow/src/component/Circulate.vue +413 -413
  111. package/packages/flow/src/component/CommonOpinions.vue +373 -373
  112. package/packages/flow/src/component/CustomPreset.vue +322 -322
  113. package/packages/flow/src/component/FileList.vue +97 -97
  114. package/packages/flow/src/component/FreeCirculation.vue +240 -240
  115. package/packages/flow/src/component/Preset.vue +255 -255
  116. package/packages/flow/src/component/SendMsg.vue +242 -242
  117. package/packages/flow/src/component/TimeLimit.vue +190 -190
  118. package/packages/flow/src/component/taskUnionExamine.vue +756 -756
  119. package/packages/flow/src/form.vue +121 -121
  120. package/packages/flow/src/freeStartFlow.vue +2846 -2846
  121. package/packages/flow/src/main.vue +3878 -3879
  122. package/packages/flow/src/processForm.vue +1365 -1365
  123. package/packages/flow/src/processReject.vue +309 -309
  124. package/packages/flow/src/reset.vue +942 -942
  125. package/packages/flow/src/startTaskRead.vue +692 -692
  126. package/packages/flow/src/supervise.vue +159 -159
  127. package/packages/flow/src/table.vue +58 -58
  128. package/packages/flow-group/index.js +5 -5
  129. package/packages/flow-group/src/main.vue +717 -717
  130. package/packages/flow-list/index.js +5 -5
  131. package/packages/flow-list/src/main.vue +1801 -1787
  132. package/packages/form/index.js +5 -5
  133. package/packages/form/src/main.vue +3901 -3901
  134. package/packages/form/src/table.vue +1512 -1512
  135. package/packages/handle-user/index.js +5 -5
  136. package/packages/handle-user/src/main.vue +137 -137
  137. package/packages/handler/index.js +5 -5
  138. package/packages/handler/src/main.vue +496 -496
  139. package/packages/icon/index.js +5 -5
  140. package/packages/icon/src/main.vue +104 -104
  141. package/packages/icons/index.js +5 -5
  142. package/packages/icons/src/icon.json +1 -1
  143. package/packages/icons/src/main.vue +81 -81
  144. package/packages/input/index.js +5 -5
  145. package/packages/input/src/main.vue +356 -356
  146. package/packages/input-number/index.js +5 -5
  147. package/packages/input-number/src/main.vue +106 -106
  148. package/packages/label/index.js +5 -5
  149. package/packages/label/src/main.vue +457 -457
  150. package/packages/layout/index.js +5 -5
  151. package/packages/layout/src/item.vue +152 -152
  152. package/packages/layout/src/main.vue +31 -31
  153. package/packages/login/index.js +5 -5
  154. package/packages/login/src/main.vue +2082 -2082
  155. package/packages/login/src/resetPassword.vue +557 -557
  156. package/packages/main/index.js +5 -5
  157. package/packages/main/src/default/message.vue +249 -249
  158. package/packages/main/src/default/notice.vue +157 -157
  159. package/packages/main/src/default/userinfo.vue +503 -503
  160. package/packages/main/src/public/online.vue +89 -89
  161. package/packages/main/src/public/search.vue +464 -464
  162. package/packages/main/src/public/settings.vue +227 -227
  163. package/packages/main/src/simplicity/apps.vue +388 -388
  164. package/packages/main/src/simplicity/avatar.vue +82 -82
  165. package/packages/main/src/simplicity/handler.vue +160 -160
  166. package/packages/main/src/simplicity/index.vue +2277 -2277
  167. package/packages/main/src/simplicity/lists.vue +84 -84
  168. package/packages/main/src/simplicity/menu-list.vue +135 -135
  169. package/packages/main/src/simplicity/message.vue +293 -293
  170. package/packages/main/src/simplicity/notice.vue +222 -222
  171. package/packages/main/src/simplicity/router-page.vue +45 -45
  172. package/packages/main/src/simplicity/sub-menu.vue +274 -274
  173. package/packages/main/src/simplicity/user.vue +259 -259
  174. package/packages/main/src/simplicity/userinfo.vue +401 -401
  175. package/packages/menu/index.js +5 -5
  176. package/packages/menu/src/main.vue +595 -595
  177. package/packages/nav/index.js +5 -5
  178. package/packages/nav/src/main.vue +351 -351
  179. package/packages/notify/index.js +5 -5
  180. package/packages/notify/src/main.vue +538 -538
  181. package/packages/page/index.js +5 -5
  182. package/packages/page/src/main.vue +167 -167
  183. package/packages/pagination/index.js +5 -5
  184. package/packages/pagination/src/main.vue +96 -96
  185. package/packages/player/index.js +5 -5
  186. package/packages/player/src/main.vue +194 -194
  187. package/packages/qr-code/index.js +5 -5
  188. package/packages/qr-code/src/main.vue +170 -170
  189. package/packages/radio-group/index.js +6 -6
  190. package/packages/radio-group/src/main.vue +319 -319
  191. package/packages/retrial-auth/index.js +5 -5
  192. package/packages/retrial-auth/src/main.vue +280 -280
  193. package/packages/select/index.js +5 -5
  194. package/packages/select/src/main.vue +782 -782
  195. package/packages/select-ganged/index.js +5 -5
  196. package/packages/select-ganged/src/main.vue +724 -724
  197. package/packages/selector/index.js +5 -5
  198. package/packages/selector/src/main.vue +761 -761
  199. package/packages/selector-panel/index.js +5 -5
  200. package/packages/selector-panel/src/main.vue +1027 -1027
  201. package/packages/selector-panel/src/selection.vue +170 -170
  202. package/packages/selector-panel/src/tree.vue +129 -129
  203. package/packages/sizer/index.js +5 -5
  204. package/packages/sizer/src/main.vue +254 -254
  205. package/packages/steps/index.js +5 -5
  206. package/packages/steps/src/main.vue +181 -181
  207. package/packages/switch/index.js +5 -5
  208. package/packages/switch/src/main.vue +170 -170
  209. package/packages/table-form/index.js +5 -5
  210. package/packages/tabs/index.js +5 -5
  211. package/packages/tabs/src/main.vue +788 -788
  212. package/packages/tabs-panel/index.js +5 -5
  213. package/packages/tabs-panel/src/main.vue +29 -29
  214. package/packages/theme-chalk/lib/base.css +1 -1
  215. package/packages/theme-chalk/lib/data-table.css +1 -1
  216. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  217. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  218. package/packages/theme-chalk/lib/icon.css +1 -1
  219. package/packages/theme-chalk/lib/index.css +1 -1
  220. package/packages/theme-chalk/lib/main.css +1 -1
  221. package/packages/theme-chalk/lib/menu.css +1 -1
  222. package/packages/theme-chalk/lib/simplicity.css +1 -1
  223. package/packages/theme-chalk/lib/sizer.css +1 -1
  224. package/packages/theme-chalk/lib/upload.css +1 -1
  225. package/packages/theme-chalk/src/base.scss +261 -261
  226. package/packages/theme-chalk/src/button-group.scss +176 -176
  227. package/packages/theme-chalk/src/button.scss +24 -24
  228. package/packages/theme-chalk/src/calendar.scss +113 -113
  229. package/packages/theme-chalk/src/card.scss +99 -99
  230. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  231. package/packages/theme-chalk/src/clients.scss +87 -87
  232. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  233. package/packages/theme-chalk/src/data-table.scss +297 -293
  234. package/packages/theme-chalk/src/date-picker.scss +7 -7
  235. package/packages/theme-chalk/src/dialog.scss +77 -77
  236. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  237. package/packages/theme-chalk/src/enterprise.scss +5 -5
  238. package/packages/theme-chalk/src/error-page.scss +18 -18
  239. package/packages/theme-chalk/src/flow-group.scss +110 -110
  240. package/packages/theme-chalk/src/flow-list.scss +39 -39
  241. package/packages/theme-chalk/src/flow.scss +351 -351
  242. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  243. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  244. package/packages/theme-chalk/src/form.scss +501 -501
  245. package/packages/theme-chalk/src/handle-user.scss +40 -40
  246. package/packages/theme-chalk/src/handler.scss +148 -148
  247. package/packages/theme-chalk/src/icon.scss +1540 -1456
  248. package/packages/theme-chalk/src/icons.scss +99 -99
  249. package/packages/theme-chalk/src/input.scss +9 -9
  250. package/packages/theme-chalk/src/label.scss +24 -24
  251. package/packages/theme-chalk/src/layout.scss +46 -46
  252. package/packages/theme-chalk/src/login.scss +1006 -1006
  253. package/packages/theme-chalk/src/main.scss +663 -663
  254. package/packages/theme-chalk/src/menu.scss +224 -224
  255. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  256. package/packages/theme-chalk/src/nav.scss +111 -111
  257. package/packages/theme-chalk/src/page.scss +3 -3
  258. package/packages/theme-chalk/src/pagination.scss +29 -29
  259. package/packages/theme-chalk/src/player.scss +9 -9
  260. package/packages/theme-chalk/src/qr-code.scss +17 -17
  261. package/packages/theme-chalk/src/radio-group.scss +9 -9
  262. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  263. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  264. package/packages/theme-chalk/src/select.scss +8 -8
  265. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  266. package/packages/theme-chalk/src/selector.scss +114 -114
  267. package/packages/theme-chalk/src/simplicity.scss +1395 -1395
  268. package/packages/theme-chalk/src/sizer.scss +36 -36
  269. package/packages/theme-chalk/src/steps.scss +88 -88
  270. package/packages/theme-chalk/src/switch.scss +3 -3
  271. package/packages/theme-chalk/src/table-form.scss +1 -1
  272. package/packages/theme-chalk/src/tabs.scss +87 -87
  273. package/packages/theme-chalk/src/tips.scss +7 -7
  274. package/packages/theme-chalk/src/toolbar.scss +179 -179
  275. package/packages/theme-chalk/src/tree-group.scss +72 -72
  276. package/packages/theme-chalk/src/tree.scss +165 -165
  277. package/packages/theme-chalk/src/upload.scss +172 -172
  278. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  279. package/packages/tips/index.js +5 -5
  280. package/packages/tips/src/main.vue +141 -141
  281. package/packages/toolbar/index.js +5 -5
  282. package/packages/toolbar/src/main.vue +430 -430
  283. package/packages/tree/index.js +5 -5
  284. package/packages/tree-group/index.js +5 -5
  285. package/packages/upload/index.js +5 -5
  286. package/packages/upload/src/main.vue +1344 -1344
  287. package/packages/upload/src/picture.js +15 -15
  288. package/packages/wujie/index.js +5 -5
  289. package/packages/wujie/src/main.vue +145 -145
  290. package/packages/wxlogin/index.js +5 -5
  291. package/packages/wxlogin/src/main.vue +128 -128
  292. package/src/config/api.js +317 -315
  293. package/src/config/image.js +2 -2
  294. package/src/index.js +163 -163
  295. package/src/utils/bus.js +3 -3
  296. package/src/utils/date-util.js +312 -312
  297. package/src/utils/http.js +50 -50
  298. package/src/utils/rules.js +18 -18
  299. package/src/utils/store.js +21 -21
  300. package/src/utils/util.js +7 -10
  301. package/src/utils/webSocket.js +107 -107
  302. package/packages/.DS_Store +0 -0
  303. package/packages/calogin/.DS_Store +0 -0
  304. package/packages/date-picker/.DS_Store +0 -0
  305. package/packages/date-picker/src/.DS_Store +0 -0
  306. package/packages/dialog/.DS_Store +0 -0
  307. package/packages/flow/.DS_Store +0 -0
  308. package/packages/flow/src/.DS_Store +0 -0
  309. package/packages/flow-list/.DS_Store +0 -0
  310. package/packages/form/.DS_Store +0 -0
  311. package/packages/icon/.DS_Store +0 -0
  312. package/packages/login/.DS_Store +0 -0
  313. package/packages/main/.DS_Store +0 -0
  314. package/packages/main/src/.DS_Store +0 -0
  315. package/packages/menu/.DS_Store +0 -0
  316. package/packages/select/.DS_Store +0 -0
  317. package/packages/selector/.DS_Store +0 -0
  318. package/packages/selector-panel/.DS_Store +0 -0
  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
+ };