eoss-ui 0.6.63 → 0.6.64

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 (301) hide show
  1. package/lib/.DS_Store +0 -0
  2. package/lib/button-group.js +41 -30
  3. package/lib/button.js +40 -29
  4. package/lib/calendar.js +2 -2
  5. package/lib/calogin.js +5279 -0
  6. package/lib/card.js +2 -2
  7. package/lib/cascader.js +2 -2
  8. package/lib/checkbox-group.js +45 -34
  9. package/lib/clients.js +2 -2
  10. package/lib/config/api.js +15 -15
  11. package/lib/data-table-form.js +43 -33
  12. package/lib/data-table.js +42 -32
  13. package/lib/date-picker.js +40 -29
  14. package/lib/dialog.js +44 -33
  15. package/lib/enable-drag.js +2 -2
  16. package/lib/enterprise.js +2 -2
  17. package/lib/eoss-ui.common.js +1809 -652
  18. package/lib/error-page.js +2 -2
  19. package/lib/flow-group.js +262 -233
  20. package/lib/flow-list.js +135 -120
  21. package/lib/flow.js +323 -313
  22. package/lib/form.js +59 -44
  23. package/lib/handle-user.js +44 -33
  24. package/lib/handler.js +47 -36
  25. package/lib/icon.js +40 -29
  26. package/lib/icons.js +4 -4
  27. package/lib/index.js +1 -1
  28. package/lib/input-number.js +40 -29
  29. package/lib/input.js +44 -33
  30. package/lib/label.js +2 -2
  31. package/lib/layout.js +4 -4
  32. package/lib/login.js +216 -96
  33. package/lib/main.js +211 -190
  34. package/lib/menu.js +4 -4
  35. package/lib/nav.js +42 -31
  36. package/lib/notify.js +17 -17
  37. package/lib/page.js +40 -29
  38. package/lib/pagination.js +40 -29
  39. package/lib/player.js +50 -39
  40. package/lib/qr-code.js +55 -44
  41. package/lib/radio-group.js +51 -40
  42. package/lib/retrial-auth.js +47 -36
  43. package/lib/select-ganged.js +185 -174
  44. package/lib/select.js +187 -176
  45. package/lib/selector-panel.js +45 -35
  46. package/lib/selector.js +42 -31
  47. package/lib/sizer.js +40 -29
  48. package/lib/steps.js +42 -31
  49. package/lib/switch.js +40 -29
  50. package/lib/table-form.js +49 -38
  51. package/lib/tabs-panel.js +2 -2
  52. package/lib/tabs.js +40 -29
  53. package/lib/theme-chalk/calogin.css +0 -0
  54. package/lib/theme-chalk/index.css +1 -1
  55. package/lib/theme-chalk/login.css +1 -1
  56. package/lib/theme-chalk/main.css +1 -1
  57. package/lib/theme-chalk/simplicity.css +1 -1
  58. package/lib/tips.js +42 -31
  59. package/lib/toolbar.js +2 -2
  60. package/lib/tree-group.js +40 -29
  61. package/lib/tree.js +42 -31
  62. package/lib/upload.js +48 -37
  63. package/lib/utils/util.js +4 -1
  64. package/lib/wujie.js +47 -36
  65. package/lib/wxlogin.js +40 -29
  66. package/package.json +160 -159
  67. package/packages/.DS_Store +0 -0
  68. package/packages/autocomplete/.DS_Store +0 -0
  69. package/packages/button/index.js +5 -5
  70. package/packages/button/src/main.vue +418 -418
  71. package/packages/button-group/index.js +5 -5
  72. package/packages/button-group/src/main.vue +298 -298
  73. package/packages/calendar/index.js +5 -5
  74. package/packages/calogin/index.js +5 -0
  75. package/packages/calogin/src/main.vue +131 -0
  76. package/packages/calogin/src/plugin.js +748 -0
  77. package/packages/card/index.js +5 -5
  78. package/packages/card/src/main.vue +156 -156
  79. package/packages/cascader/index.js +5 -5
  80. package/packages/cascader/src/main.vue +168 -168
  81. package/packages/checkbox-group/index.js +5 -5
  82. package/packages/checkbox-group/src/main.vue +333 -333
  83. package/packages/clients/index.js +5 -5
  84. package/packages/clients/src/main.vue +151 -151
  85. package/packages/data-table/index.js +5 -5
  86. package/packages/data-table/src/children.vue +39 -39
  87. package/packages/data-table/src/column.vue +989 -989
  88. package/packages/data-table/src/main.vue +1822 -1822
  89. package/packages/data-table/src/sizer.vue +195 -195
  90. package/packages/data-table-form/index.js +5 -5
  91. package/packages/data-table-form/src/checkbox.vue +101 -101
  92. package/packages/data-table-form/src/colgroup.vue +17 -17
  93. package/packages/data-table-form/src/main.vue +181 -181
  94. package/packages/data-table-form/src/radio.vue +65 -65
  95. package/packages/data-table-form/src/table.vue +233 -233
  96. package/packages/data-table-form/src/tbody.vue +336 -336
  97. package/packages/data-table-form/src/thead.vue +68 -68
  98. package/packages/date-picker/.DS_Store +0 -0
  99. package/packages/date-picker/index.js +5 -5
  100. package/packages/date-picker/src/.DS_Store +0 -0
  101. package/packages/date-picker/src/main.vue +236 -236
  102. package/packages/dialog/index.js +5 -5
  103. package/packages/enable-drag/index.js +5 -5
  104. package/packages/enterprise/index.js +5 -5
  105. package/packages/enterprise/src/main.vue +66 -66
  106. package/packages/error-page/index.js +5 -5
  107. package/packages/error-page/src/main.vue +44 -44
  108. package/packages/flow/index.js +5 -5
  109. package/packages/flow/src/component/Circulate.vue +322 -322
  110. package/packages/flow/src/component/CommonOpinions.vue +346 -346
  111. package/packages/flow/src/component/CustomPreset.vue +322 -322
  112. package/packages/flow/src/component/FileList.vue +99 -99
  113. package/packages/flow/src/component/Preset.vue +255 -255
  114. package/packages/flow/src/component/SendMsg.vue +241 -241
  115. package/packages/flow/src/component/TimeLimit.vue +190 -190
  116. package/packages/flow/src/component/taskUnionExamine.vue +619 -619
  117. package/packages/flow/src/form.vue +121 -121
  118. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  119. package/packages/flow/src/main.vue +3275 -3275
  120. package/packages/flow/src/processForm.vue +1091 -1091
  121. package/packages/flow/src/processReject.vue +294 -294
  122. package/packages/flow/src/reset.vue +900 -900
  123. package/packages/flow/src/startTaskRead.vue +659 -659
  124. package/packages/flow/src/supervise.vue +149 -149
  125. package/packages/flow/src/table.vue +58 -58
  126. package/packages/flow-group/index.js +5 -5
  127. package/packages/flow-group/src/main.vue +688 -688
  128. package/packages/flow-list/index.js +5 -5
  129. package/packages/flow-list/src/main.vue +1724 -1720
  130. package/packages/form/index.js +5 -5
  131. package/packages/form/src/main.vue +3581 -3583
  132. package/packages/form/src/table.vue +1426 -1426
  133. package/packages/handle-user/index.js +5 -5
  134. package/packages/handle-user/src/main.vue +138 -138
  135. package/packages/handler/index.js +5 -5
  136. package/packages/handler/src/main.vue +493 -493
  137. package/packages/icon/index.js +5 -5
  138. package/packages/icon/src/main.vue +101 -101
  139. package/packages/icons/index.js +5 -5
  140. package/packages/icons/src/main.vue +81 -81
  141. package/packages/input/index.js +5 -5
  142. package/packages/input/src/main.vue +356 -356
  143. package/packages/input-number/index.js +5 -5
  144. package/packages/input-number/src/main.vue +106 -106
  145. package/packages/label/index.js +5 -5
  146. package/packages/label/src/main.vue +457 -457
  147. package/packages/layout/index.js +5 -5
  148. package/packages/layout/src/item.vue +152 -152
  149. package/packages/layout/src/main.vue +31 -31
  150. package/packages/login/index.js +5 -5
  151. package/packages/login/src/main.vue +1976 -1942
  152. package/packages/login/src/resetPassword.vue +562 -562
  153. package/packages/main/.DS_Store +0 -0
  154. package/packages/main/index.js +5 -5
  155. package/packages/main/src/.DS_Store +0 -0
  156. package/packages/main/src/default/message.vue +249 -249
  157. package/packages/main/src/default/notice.vue +157 -157
  158. package/packages/main/src/default/userinfo.vue +503 -503
  159. package/packages/main/src/public/online.vue +89 -89
  160. package/packages/main/src/public/search.vue +462 -462
  161. package/packages/main/src/public/settings.vue +221 -221
  162. package/packages/main/src/simplicity/apps.vue +388 -388
  163. package/packages/main/src/simplicity/avatar.vue +83 -82
  164. package/packages/main/src/simplicity/handler.vue +259 -259
  165. package/packages/main/src/simplicity/index.vue +2089 -2087
  166. package/packages/main/src/simplicity/lists.vue +84 -84
  167. package/packages/main/src/simplicity/menu-list.vue +135 -135
  168. package/packages/main/src/simplicity/message.vue +259 -259
  169. package/packages/main/src/simplicity/notice.vue +190 -190
  170. package/packages/main/src/simplicity/router-page.vue +45 -45
  171. package/packages/main/src/simplicity/sub-menu.vue +264 -264
  172. package/packages/main/src/simplicity/user.vue +257 -257
  173. package/packages/main/src/simplicity/userinfo.vue +312 -312
  174. package/packages/menu/.DS_Store +0 -0
  175. package/packages/menu/index.js +5 -5
  176. package/packages/menu/src/main.vue +584 -584
  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/scrollbar/.DS_Store +0 -0
  194. package/packages/select/.DS_Store +0 -0
  195. package/packages/select/index.js +5 -5
  196. package/packages/select/src/main.vue +778 -778
  197. package/packages/select-ganged/index.js +5 -5
  198. package/packages/select-ganged/src/main.vue +724 -724
  199. package/packages/selector/index.js +5 -5
  200. package/packages/selector/src/main.vue +687 -687
  201. package/packages/selector-panel/index.js +5 -5
  202. package/packages/selector-panel/src/main.vue +1027 -1027
  203. package/packages/selector-panel/src/selection.vue +177 -177
  204. package/packages/selector-panel/src/tree.vue +129 -129
  205. package/packages/sizer/index.js +5 -5
  206. package/packages/sizer/src/main.vue +254 -254
  207. package/packages/steps/index.js +5 -5
  208. package/packages/steps/src/main.vue +181 -181
  209. package/packages/switch/index.js +5 -5
  210. package/packages/switch/src/main.vue +154 -154
  211. package/packages/table-form/index.js +5 -5
  212. package/packages/tabs/index.js +5 -5
  213. package/packages/tabs/src/main.vue +788 -788
  214. package/packages/tabs-panel/index.js +5 -5
  215. package/packages/tabs-panel/src/main.vue +29 -29
  216. package/packages/theme-chalk/lib/calogin.css +0 -0
  217. package/packages/theme-chalk/lib/index.css +1 -1
  218. package/packages/theme-chalk/lib/login.css +1 -1
  219. package/packages/theme-chalk/lib/main.css +1 -1
  220. package/packages/theme-chalk/lib/simplicity.css +1 -1
  221. package/packages/theme-chalk/src/.DS_Store +0 -0
  222. package/packages/theme-chalk/src/base.scss +261 -261
  223. package/packages/theme-chalk/src/button-group.scss +176 -176
  224. package/packages/theme-chalk/src/button.scss +24 -24
  225. package/packages/theme-chalk/src/calendar.scss +113 -113
  226. package/packages/theme-chalk/src/calogin.scss +0 -0
  227. package/packages/theme-chalk/src/card.scss +99 -99
  228. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  229. package/packages/theme-chalk/src/clients.scss +87 -87
  230. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  231. package/packages/theme-chalk/src/data-table.scss +293 -293
  232. package/packages/theme-chalk/src/date-picker.scss +7 -7
  233. package/packages/theme-chalk/src/dialog.scss +77 -77
  234. package/packages/theme-chalk/src/enable-drag.scss +181 -181
  235. package/packages/theme-chalk/src/enterprise.scss +5 -5
  236. package/packages/theme-chalk/src/error-page.scss +18 -18
  237. package/packages/theme-chalk/src/flow-group.scss +110 -110
  238. package/packages/theme-chalk/src/flow-list.scss +39 -39
  239. package/packages/theme-chalk/src/flow.scss +343 -343
  240. package/packages/theme-chalk/src/form.scss +496 -496
  241. package/packages/theme-chalk/src/handle-user.scss +40 -40
  242. package/packages/theme-chalk/src/handler.scss +143 -143
  243. package/packages/theme-chalk/src/icon.scss +1792 -1792
  244. package/packages/theme-chalk/src/icons.scss +99 -99
  245. package/packages/theme-chalk/src/index.scss +1 -0
  246. package/packages/theme-chalk/src/input.scss +9 -9
  247. package/packages/theme-chalk/src/label.scss +24 -24
  248. package/packages/theme-chalk/src/layout.scss +46 -46
  249. package/packages/theme-chalk/src/login.scss +981 -969
  250. package/packages/theme-chalk/src/main.scss +663 -663
  251. package/packages/theme-chalk/src/menu.scss +222 -222
  252. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  253. package/packages/theme-chalk/src/nav.scss +111 -111
  254. package/packages/theme-chalk/src/page.scss +3 -3
  255. package/packages/theme-chalk/src/pagination.scss +29 -29
  256. package/packages/theme-chalk/src/player.scss +9 -9
  257. package/packages/theme-chalk/src/qr-code.scss +17 -17
  258. package/packages/theme-chalk/src/radio-group.scss +9 -9
  259. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  260. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  261. package/packages/theme-chalk/src/select.scss +8 -8
  262. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  263. package/packages/theme-chalk/src/selector.scss +91 -91
  264. package/packages/theme-chalk/src/simplicity.scss +1355 -1351
  265. package/packages/theme-chalk/src/sizer.scss +36 -36
  266. package/packages/theme-chalk/src/steps.scss +88 -88
  267. package/packages/theme-chalk/src/switch.scss +3 -3
  268. package/packages/theme-chalk/src/table-form.scss +1 -1
  269. package/packages/theme-chalk/src/tabs.scss +87 -87
  270. package/packages/theme-chalk/src/tips.scss +7 -7
  271. package/packages/theme-chalk/src/toolbar.scss +179 -179
  272. package/packages/theme-chalk/src/tree-group.scss +72 -72
  273. package/packages/theme-chalk/src/tree.scss +165 -165
  274. package/packages/theme-chalk/src/upload.scss +168 -168
  275. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  276. package/packages/tips/index.js +5 -5
  277. package/packages/tips/src/main.vue +141 -141
  278. package/packages/toolbar/index.js +5 -5
  279. package/packages/toolbar/src/main.vue +430 -430
  280. package/packages/tree/index.js +5 -5
  281. package/packages/tree-group/index.js +5 -5
  282. package/packages/upload/.DS_Store +0 -0
  283. package/packages/upload/index.js +5 -5
  284. package/packages/upload/src/main.vue +1347 -1347
  285. package/packages/upload/src/picture.js +15 -15
  286. package/packages/wujie/index.js +5 -5
  287. package/packages/wujie/src/main.vue +145 -145
  288. package/packages/wxlogin/index.js +5 -5
  289. package/packages/wxlogin/src/main.vue +128 -128
  290. package/src/.DS_Store +0 -0
  291. package/src/config/api.js +290 -290
  292. package/src/config/image.js +2 -2
  293. package/src/index.js +163 -160
  294. package/src/utils/.DS_Store +0 -0
  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 +3 -1
  301. package/src/utils/webSocket.js +107 -107
@@ -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
+ };