eoss-ui 0.6.59 → 0.6.60

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