eoss-ui 0.6.48 → 0.6.49

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