eoss-ui 0.6.85 → 0.6.86

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