eoss-ui 0.6.40 → 0.6.42

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 (297) hide show
  1. package/lib/button-group.js +5 -0
  2. package/lib/button.js +5 -0
  3. package/lib/checkbox-group.js +5 -0
  4. package/lib/data-table-form.js +5 -0
  5. package/lib/data-table.js +11 -6
  6. package/lib/date-picker.js +5 -0
  7. package/lib/dialog.js +5 -0
  8. package/lib/eoss-ui.common.js +1967 -1458
  9. package/lib/flow-group.js +5 -0
  10. package/lib/flow-list.js +128 -112
  11. package/lib/flow.js +903 -801
  12. package/lib/form.js +5 -0
  13. package/lib/handle-user.js +5 -0
  14. package/lib/handler.js +152 -76
  15. package/lib/icon.js +5 -0
  16. package/lib/icons.js +1 -1
  17. package/lib/index.js +1 -1
  18. package/lib/input-number.js +5 -0
  19. package/lib/input.js +5 -0
  20. package/lib/login.js +248 -160
  21. package/lib/main.js +461 -245
  22. package/lib/nav.js +5 -0
  23. package/lib/page.js +5 -0
  24. package/lib/pagination.js +5 -0
  25. package/lib/player.js +5 -0
  26. package/lib/qr-code.js +18 -13
  27. package/lib/radio-group.js +5 -0
  28. package/lib/retrial-auth.js +5 -0
  29. package/lib/select-ganged.js +5 -0
  30. package/lib/select.js +5 -0
  31. package/lib/selector-panel.js +7 -3
  32. package/lib/selector.js +42 -5
  33. package/lib/sizer.js +5 -0
  34. package/lib/steps.js +5 -0
  35. package/lib/switch.js +5 -0
  36. package/lib/table-form.js +5 -0
  37. package/lib/tabs.js +5 -0
  38. package/lib/theme-chalk/base.css +1 -1
  39. package/lib/theme-chalk/flow.css +1 -1
  40. package/lib/theme-chalk/fonts/iconfont.ttf +0 -0
  41. package/lib/theme-chalk/fonts/iconfont.woff +0 -0
  42. package/lib/theme-chalk/icon.css +1 -1
  43. package/lib/theme-chalk/index.css +1 -1
  44. package/lib/theme-chalk/login.css +1 -1
  45. package/lib/theme-chalk/main.css +1 -1
  46. package/lib/theme-chalk/menu.css +1 -1
  47. package/lib/theme-chalk/simplicity.css +1 -1
  48. package/lib/theme-chalk/sizer.css +1 -1
  49. package/lib/theme-chalk/upload.css +1 -1
  50. package/lib/tips.js +5 -0
  51. package/lib/tree-group.js +5 -0
  52. package/lib/tree.js +5 -0
  53. package/lib/upload.js +5 -0
  54. package/lib/utils/util.js +5 -0
  55. package/lib/wujie.js +5 -0
  56. package/lib/wxlogin.js +5 -0
  57. package/package.json +159 -159
  58. package/packages/button/index.js +5 -5
  59. package/packages/button/src/main.vue +418 -418
  60. package/packages/button-group/index.js +5 -5
  61. package/packages/button-group/src/main.vue +298 -298
  62. package/packages/calendar/index.js +5 -5
  63. package/packages/card/index.js +5 -5
  64. package/packages/card/src/main.vue +156 -156
  65. package/packages/cascader/index.js +5 -5
  66. package/packages/cascader/src/main.vue +168 -168
  67. package/packages/checkbox-group/index.js +5 -5
  68. package/packages/checkbox-group/src/main.vue +333 -333
  69. package/packages/clients/index.js +5 -5
  70. package/packages/clients/src/main.vue +144 -144
  71. package/packages/data-table/index.js +5 -5
  72. package/packages/data-table/src/children.vue +39 -39
  73. package/packages/data-table/src/column.vue +989 -989
  74. package/packages/data-table/src/main.vue +1822 -1820
  75. package/packages/data-table/src/sizer.vue +195 -195
  76. package/packages/data-table-form/index.js +5 -5
  77. package/packages/data-table-form/src/checkbox.vue +101 -101
  78. package/packages/data-table-form/src/colgroup.vue +17 -17
  79. package/packages/data-table-form/src/main.vue +181 -181
  80. package/packages/data-table-form/src/radio.vue +65 -65
  81. package/packages/data-table-form/src/table.vue +233 -233
  82. package/packages/data-table-form/src/tbody.vue +336 -336
  83. package/packages/data-table-form/src/thead.vue +68 -68
  84. package/packages/date-picker/index.js +5 -5
  85. package/packages/date-picker/src/main.vue +236 -236
  86. package/packages/dialog/index.js +5 -5
  87. package/packages/enterprise/index.js +5 -5
  88. package/packages/enterprise/src/main.vue +66 -66
  89. package/packages/error-page/index.js +5 -5
  90. package/packages/error-page/src/main.vue +44 -44
  91. package/packages/flow/index.js +5 -5
  92. package/packages/flow/src/component/CommonOpinions.vue +345 -345
  93. package/packages/flow/src/component/CustomPreset.vue +322 -322
  94. package/packages/flow/src/component/FileList.vue +99 -99
  95. package/packages/flow/src/component/Preset.vue +255 -255
  96. package/packages/flow/src/component/SendMsg.vue +229 -229
  97. package/packages/flow/src/component/TimeLimit.vue +190 -190
  98. package/packages/flow/src/component/taskUnionExamine.vue +611 -603
  99. package/packages/flow/src/form.vue +121 -121
  100. package/packages/flow/src/freeStartFlow.vue +2843 -2843
  101. package/packages/flow/src/main.vue +2952 -2864
  102. package/packages/flow/src/processForm.vue +1018 -1007
  103. package/packages/flow/src/processReject.vue +293 -293
  104. package/packages/flow/src/reset.vue +899 -901
  105. package/packages/flow/src/startTaskRead.vue +596 -596
  106. package/packages/flow/src/table.vue +58 -58
  107. package/packages/flow-group/index.js +5 -5
  108. package/packages/flow-group/src/main.vue +688 -688
  109. package/packages/flow-list/index.js +5 -5
  110. package/packages/flow-list/src/main.vue +1183 -1172
  111. package/packages/form/index.js +5 -5
  112. package/packages/form/src/main.vue +3584 -3584
  113. package/packages/form/src/table.vue +1420 -1420
  114. package/packages/handle-user/index.js +5 -5
  115. package/packages/handle-user/src/main.vue +138 -138
  116. package/packages/handler/index.js +5 -5
  117. package/packages/handler/src/main.vue +474 -388
  118. package/packages/icon/index.js +5 -5
  119. package/packages/icon/src/main.vue +101 -101
  120. package/packages/icons/index.js +5 -5
  121. package/packages/icons/src/icon.json +1 -1
  122. package/packages/icons/src/main.vue +81 -81
  123. package/packages/input/index.js +5 -5
  124. package/packages/input/src/main.vue +356 -356
  125. package/packages/input-number/index.js +5 -5
  126. package/packages/input-number/src/main.vue +106 -106
  127. package/packages/label/index.js +5 -5
  128. package/packages/label/src/main.vue +457 -457
  129. package/packages/layout/index.js +5 -5
  130. package/packages/layout/src/item.vue +152 -152
  131. package/packages/layout/src/main.vue +31 -31
  132. package/packages/login/index.js +5 -5
  133. package/packages/login/src/main.vue +1935 -1892
  134. package/packages/login/src/resetPassword.vue +562 -562
  135. package/packages/main/index.js +5 -5
  136. package/packages/main/src/default/index.vue +32 -3
  137. package/packages/main/src/default/message.vue +249 -249
  138. package/packages/main/src/default/notice.vue +157 -157
  139. package/packages/main/src/default/userinfo.vue +505 -505
  140. package/packages/main/src/public/online.vue +89 -89
  141. package/packages/main/src/public/search.vue +461 -454
  142. package/packages/main/src/public/settings.vue +221 -221
  143. package/packages/main/src/simplicity/apps.vue +388 -388
  144. package/packages/main/src/simplicity/avatar.vue +82 -82
  145. package/packages/main/src/simplicity/handler.vue +259 -221
  146. package/packages/main/src/simplicity/index.vue +2047 -1993
  147. package/packages/main/src/simplicity/lists.vue +84 -84
  148. package/packages/main/src/simplicity/menu-list.vue +128 -128
  149. package/packages/main/src/simplicity/message.vue +259 -259
  150. package/packages/main/src/simplicity/notice.vue +190 -190
  151. package/packages/main/src/simplicity/router-page.vue +45 -45
  152. package/packages/main/src/simplicity/sub-menu.vue +241 -241
  153. package/packages/main/src/simplicity/user.vue +257 -257
  154. package/packages/main/src/simplicity/userinfo.vue +312 -312
  155. package/packages/menu/index.js +5 -5
  156. package/packages/menu/src/main.vue +536 -536
  157. package/packages/nav/index.js +5 -5
  158. package/packages/nav/src/main.vue +402 -402
  159. package/packages/notify/index.js +5 -5
  160. package/packages/notify/src/main.vue +538 -538
  161. package/packages/page/index.js +5 -5
  162. package/packages/page/src/main.vue +167 -167
  163. package/packages/pagination/index.js +5 -5
  164. package/packages/pagination/src/main.vue +96 -96
  165. package/packages/player/index.js +5 -5
  166. package/packages/player/src/main.vue +194 -194
  167. package/packages/qr-code/index.js +5 -5
  168. package/packages/qr-code/src/main.vue +170 -170
  169. package/packages/radio-group/index.js +6 -6
  170. package/packages/radio-group/src/main.vue +319 -319
  171. package/packages/retrial-auth/index.js +5 -5
  172. package/packages/retrial-auth/src/main.vue +280 -280
  173. package/packages/select/index.js +5 -5
  174. package/packages/select/src/main.vue +775 -775
  175. package/packages/select-ganged/index.js +5 -5
  176. package/packages/select-ganged/src/main.vue +724 -724
  177. package/packages/selector/index.js +5 -5
  178. package/packages/selector/src/main.vue +689 -677
  179. package/packages/selector-panel/index.js +5 -5
  180. package/packages/selector-panel/src/main.vue +1027 -1028
  181. package/packages/selector-panel/src/selection.vue +177 -177
  182. package/packages/selector-panel/src/tree.vue +129 -129
  183. package/packages/sizer/index.js +5 -5
  184. package/packages/sizer/src/main.vue +254 -254
  185. package/packages/steps/index.js +5 -5
  186. package/packages/steps/src/main.vue +181 -181
  187. package/packages/switch/index.js +5 -5
  188. package/packages/switch/src/main.vue +154 -154
  189. package/packages/table-form/index.js +5 -5
  190. package/packages/tabs/index.js +5 -5
  191. package/packages/tabs/src/main.vue +788 -788
  192. package/packages/tabs-panel/index.js +5 -5
  193. package/packages/tabs-panel/src/main.vue +29 -29
  194. package/packages/theme-chalk/lib/base.css +1 -1
  195. package/packages/theme-chalk/lib/flow.css +1 -1
  196. package/packages/theme-chalk/lib/fonts/iconfont.ttf +0 -0
  197. package/packages/theme-chalk/lib/fonts/iconfont.woff +0 -0
  198. package/packages/theme-chalk/lib/icon.css +1 -1
  199. package/packages/theme-chalk/lib/index.css +1 -1
  200. package/packages/theme-chalk/lib/login.css +1 -1
  201. package/packages/theme-chalk/lib/main.css +1 -1
  202. package/packages/theme-chalk/lib/menu.css +1 -1
  203. package/packages/theme-chalk/lib/simplicity.css +1 -1
  204. package/packages/theme-chalk/lib/sizer.css +1 -1
  205. package/packages/theme-chalk/lib/upload.css +1 -1
  206. package/packages/theme-chalk/src/base.scss +260 -260
  207. package/packages/theme-chalk/src/button-group.scss +175 -175
  208. package/packages/theme-chalk/src/button.scss +24 -24
  209. package/packages/theme-chalk/src/calendar.scss +113 -113
  210. package/packages/theme-chalk/src/card.scss +99 -99
  211. package/packages/theme-chalk/src/checkbox-group.scss +8 -8
  212. package/packages/theme-chalk/src/clients.scss +87 -87
  213. package/packages/theme-chalk/src/data-table-form.scss +67 -67
  214. package/packages/theme-chalk/src/data-table.scss +293 -293
  215. package/packages/theme-chalk/src/date-picker.scss +7 -7
  216. package/packages/theme-chalk/src/dialog.scss +77 -77
  217. package/packages/theme-chalk/src/enterprise.scss +5 -5
  218. package/packages/theme-chalk/src/error-page.scss +18 -18
  219. package/packages/theme-chalk/src/flow-group.scss +110 -110
  220. package/packages/theme-chalk/src/flow-list.scss +36 -36
  221. package/packages/theme-chalk/src/flow.scss +318 -310
  222. package/packages/theme-chalk/src/fonts/iconfont.ttf +0 -0
  223. package/packages/theme-chalk/src/fonts/iconfont.woff +0 -0
  224. package/packages/theme-chalk/src/form.scss +496 -496
  225. package/packages/theme-chalk/src/handle-user.scss +40 -40
  226. package/packages/theme-chalk/src/handler.scss +143 -143
  227. package/packages/theme-chalk/src/icon.scss +1789 -1760
  228. package/packages/theme-chalk/src/icons.scss +99 -99
  229. package/packages/theme-chalk/src/input.scss +9 -9
  230. package/packages/theme-chalk/src/label.scss +24 -24
  231. package/packages/theme-chalk/src/layout.scss +46 -46
  232. package/packages/theme-chalk/src/login.scss +947 -939
  233. package/packages/theme-chalk/src/main.scss +639 -632
  234. package/packages/theme-chalk/src/menu.scss +222 -222
  235. package/packages/theme-chalk/src/mixins/color.scss +117 -117
  236. package/packages/theme-chalk/src/nav.scss +125 -125
  237. package/packages/theme-chalk/src/page.scss +3 -3
  238. package/packages/theme-chalk/src/pagination.scss +29 -29
  239. package/packages/theme-chalk/src/player.scss +9 -9
  240. package/packages/theme-chalk/src/qr-code.scss +17 -17
  241. package/packages/theme-chalk/src/radio-group.scss +9 -9
  242. package/packages/theme-chalk/src/retrial-auth.scss +38 -38
  243. package/packages/theme-chalk/src/select-ganged.scss +8 -8
  244. package/packages/theme-chalk/src/select.scss +8 -8
  245. package/packages/theme-chalk/src/selector-panel.scss +204 -204
  246. package/packages/theme-chalk/src/selector.scss +91 -91
  247. package/packages/theme-chalk/src/simplicity.scss +1262 -1262
  248. package/packages/theme-chalk/src/sizer.scss +36 -36
  249. package/packages/theme-chalk/src/steps.scss +88 -88
  250. package/packages/theme-chalk/src/switch.scss +3 -3
  251. package/packages/theme-chalk/src/table-form.scss +1 -1
  252. package/packages/theme-chalk/src/tabs.scss +87 -87
  253. package/packages/theme-chalk/src/tips.scss +7 -7
  254. package/packages/theme-chalk/src/toolbar.scss +179 -179
  255. package/packages/theme-chalk/src/tree-group.scss +72 -72
  256. package/packages/theme-chalk/src/tree.scss +165 -165
  257. package/packages/theme-chalk/src/upload.scss +167 -167
  258. package/packages/theme-chalk/src/wxlogin.scss +3 -3
  259. package/packages/tips/index.js +5 -5
  260. package/packages/tips/src/main.vue +141 -141
  261. package/packages/toolbar/index.js +5 -5
  262. package/packages/toolbar/src/main.vue +430 -430
  263. package/packages/tree/index.js +5 -5
  264. package/packages/tree-group/index.js +5 -5
  265. package/packages/upload/index.js +5 -5
  266. package/packages/upload/src/main.vue +1334 -1334
  267. package/packages/upload/src/picture.js +15 -15
  268. package/packages/wujie/index.js +5 -5
  269. package/packages/wujie/src/main.vue +145 -145
  270. package/packages/wxlogin/index.js +5 -5
  271. package/packages/wxlogin/src/main.vue +128 -128
  272. package/src/config/api.js +248 -248
  273. package/src/config/image.js +2 -2
  274. package/src/index.js +157 -157
  275. package/src/utils/bus.js +3 -3
  276. package/src/utils/date-util.js +312 -312
  277. package/src/utils/http.js +50 -50
  278. package/src/utils/rules.js +18 -18
  279. package/src/utils/store.js +21 -21
  280. package/src/utils/util.js +5 -0
  281. package/src/utils/webSocket.js +107 -107
  282. package/packages/.DS_Store +0 -0
  283. package/packages/data-table/.DS_Store +0 -0
  284. package/packages/data-table-form/.DS_Store +0 -0
  285. package/packages/error-page/.DS_Store +0 -0
  286. package/packages/flow/.DS_Store +0 -0
  287. package/packages/form/.DS_Store +0 -0
  288. package/packages/login/.DS_Store +0 -0
  289. package/packages/main/.DS_Store +0 -0
  290. package/packages/main/src/.DS_Store +0 -0
  291. package/packages/selector/.DS_Store +0 -0
  292. package/packages/selector-panel/.DS_Store +0 -0
  293. package/packages/sizer/.DS_Store +0 -0
  294. package/packages/tabs/.DS_Store +0 -0
  295. package/packages/theme-chalk/src/.DS_Store +0 -0
  296. package/packages/upload/.DS_Store +0 -0
  297. package/src/.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
+ };