wx-sky-ui 1.0.0

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 (235) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -0
  3. package/miniprogram_dist/action-sheet/index.d.ts +0 -0
  4. package/miniprogram_dist/action-sheet/index.js +67 -0
  5. package/miniprogram_dist/action-sheet/index.js.map +1 -0
  6. package/miniprogram_dist/action-sheet/index.json +6 -0
  7. package/miniprogram_dist/action-sheet/index.wxml +62 -0
  8. package/miniprogram_dist/action-sheet/index.wxss +227 -0
  9. package/miniprogram_dist/action-sheet/index.wxss.map +1 -0
  10. package/miniprogram_dist/badge/index.d.ts +0 -0
  11. package/miniprogram_dist/badge/index.js +114 -0
  12. package/miniprogram_dist/badge/index.js.map +1 -0
  13. package/miniprogram_dist/badge/index.json +6 -0
  14. package/miniprogram_dist/badge/index.wxml +16 -0
  15. package/miniprogram_dist/badge/index.wxss +105 -0
  16. package/miniprogram_dist/badge/index.wxss.map +1 -0
  17. package/miniprogram_dist/button/index.d.ts +0 -0
  18. package/miniprogram_dist/button/index.js +140 -0
  19. package/miniprogram_dist/button/index.js.map +1 -0
  20. package/miniprogram_dist/button/index.json +6 -0
  21. package/miniprogram_dist/button/index.wxml +28 -0
  22. package/miniprogram_dist/button/index.wxss +211 -0
  23. package/miniprogram_dist/button/index.wxss.map +1 -0
  24. package/miniprogram_dist/cell/index.d.ts +0 -0
  25. package/miniprogram_dist/cell/index.js +55 -0
  26. package/miniprogram_dist/cell/index.js.map +1 -0
  27. package/miniprogram_dist/cell/index.json +6 -0
  28. package/miniprogram_dist/cell/index.wxml +37 -0
  29. package/miniprogram_dist/cell/index.wxss +82 -0
  30. package/miniprogram_dist/cell/index.wxss.map +1 -0
  31. package/miniprogram_dist/checkbox/index.d.ts +0 -0
  32. package/miniprogram_dist/checkbox/index.js +50 -0
  33. package/miniprogram_dist/checkbox/index.js.map +1 -0
  34. package/miniprogram_dist/checkbox/index.json +6 -0
  35. package/miniprogram_dist/checkbox/index.wxml +16 -0
  36. package/miniprogram_dist/checkbox/index.wxss +87 -0
  37. package/miniprogram_dist/checkbox/index.wxss.map +1 -0
  38. package/miniprogram_dist/common/utils/index.d.ts +22 -0
  39. package/miniprogram_dist/common/utils/index.js +46 -0
  40. package/miniprogram_dist/common/utils/index.js.map +1 -0
  41. package/miniprogram_dist/datetime-picker/calendar.d.ts +1 -0
  42. package/miniprogram_dist/datetime-picker/calendar.js +424 -0
  43. package/miniprogram_dist/datetime-picker/calendar.js.map +1 -0
  44. package/miniprogram_dist/datetime-picker/calendar.json +8 -0
  45. package/miniprogram_dist/datetime-picker/calendar.wxml +86 -0
  46. package/miniprogram_dist/datetime-picker/calendar.wxss +352 -0
  47. package/miniprogram_dist/datetime-picker/calendar.wxss.map +1 -0
  48. package/miniprogram_dist/datetime-picker/index.d.ts +1 -0
  49. package/miniprogram_dist/datetime-picker/index.js +672 -0
  50. package/miniprogram_dist/datetime-picker/index.js.map +1 -0
  51. package/miniprogram_dist/datetime-picker/index.json +9 -0
  52. package/miniprogram_dist/datetime-picker/index.wxml +125 -0
  53. package/miniprogram_dist/datetime-picker/index.wxss +243 -0
  54. package/miniprogram_dist/datetime-picker/index.wxss.map +1 -0
  55. package/miniprogram_dist/datetime-picker/time-picker.d.ts +0 -0
  56. package/miniprogram_dist/datetime-picker/time-picker.js +83 -0
  57. package/miniprogram_dist/datetime-picker/time-picker.js.map +1 -0
  58. package/miniprogram_dist/datetime-picker/time-picker.json +6 -0
  59. package/miniprogram_dist/datetime-picker/time-picker.wxml +36 -0
  60. package/miniprogram_dist/datetime-picker/time-picker.wxss +75 -0
  61. package/miniprogram_dist/datetime-picker/time-picker.wxss.map +1 -0
  62. package/miniprogram_dist/datetime-picker/util.d.ts +172 -0
  63. package/miniprogram_dist/datetime-picker/util.js +404 -0
  64. package/miniprogram_dist/datetime-picker/util.js.map +1 -0
  65. package/miniprogram_dist/dialog/index.d.ts +0 -0
  66. package/miniprogram_dist/dialog/index.js +81 -0
  67. package/miniprogram_dist/dialog/index.js.map +1 -0
  68. package/miniprogram_dist/dialog/index.json +6 -0
  69. package/miniprogram_dist/dialog/index.wxml +55 -0
  70. package/miniprogram_dist/dialog/index.wxss +143 -0
  71. package/miniprogram_dist/dialog/index.wxss.map +1 -0
  72. package/miniprogram_dist/dropdown-select/index.d.ts +4 -0
  73. package/miniprogram_dist/dropdown-select/index.js +84 -0
  74. package/miniprogram_dist/dropdown-select/index.js.map +1 -0
  75. package/miniprogram_dist/dropdown-select/index.json +6 -0
  76. package/miniprogram_dist/dropdown-select/index.wxml +42 -0
  77. package/miniprogram_dist/dropdown-select/index.wxss +189 -0
  78. package/miniprogram_dist/dropdown-select/index.wxss.map +1 -0
  79. package/miniprogram_dist/editor/index.d.ts +0 -0
  80. package/miniprogram_dist/editor/index.js +254 -0
  81. package/miniprogram_dist/editor/index.js.map +1 -0
  82. package/miniprogram_dist/editor/index.json +6 -0
  83. package/miniprogram_dist/editor/index.wxml +142 -0
  84. package/miniprogram_dist/editor/index.wxss +613 -0
  85. package/miniprogram_dist/editor/index.wxss.map +1 -0
  86. package/miniprogram_dist/float-button/index.d.ts +0 -0
  87. package/miniprogram_dist/float-button/index.js +281 -0
  88. package/miniprogram_dist/float-button/index.js.map +1 -0
  89. package/miniprogram_dist/float-button/index.json +8 -0
  90. package/miniprogram_dist/float-button/index.wxml +68 -0
  91. package/miniprogram_dist/float-button/index.wxss +119 -0
  92. package/miniprogram_dist/float-button/index.wxss.map +1 -0
  93. package/miniprogram_dist/html-renderer/index.d.ts +1 -0
  94. package/miniprogram_dist/html-renderer/index.js +74 -0
  95. package/miniprogram_dist/html-renderer/index.js.map +1 -0
  96. package/miniprogram_dist/html-renderer/index.json +6 -0
  97. package/miniprogram_dist/html-renderer/index.wxml +79 -0
  98. package/miniprogram_dist/html-renderer/index.wxss +200 -0
  99. package/miniprogram_dist/html-renderer/index.wxss.map +1 -0
  100. package/miniprogram_dist/html-renderer/parser.d.ts +12 -0
  101. package/miniprogram_dist/html-renderer/parser.js +103 -0
  102. package/miniprogram_dist/html-renderer/parser.js.map +1 -0
  103. package/miniprogram_dist/icon/index.d.ts +1 -0
  104. package/miniprogram_dist/icon/index.js +231 -0
  105. package/miniprogram_dist/icon/index.js.map +1 -0
  106. package/miniprogram_dist/icon/index.json +6 -0
  107. package/miniprogram_dist/icon/index.wxml +13 -0
  108. package/miniprogram_dist/icon/index.wxss +14 -0
  109. package/miniprogram_dist/icon/index.wxss.map +1 -0
  110. package/miniprogram_dist/icon/presets.d.ts +7 -0
  111. package/miniprogram_dist/icon/presets.js +68 -0
  112. package/miniprogram_dist/icon/presets.js.map +1 -0
  113. package/miniprogram_dist/index.d.ts +6 -0
  114. package/miniprogram_dist/index.js +9 -0
  115. package/miniprogram_dist/index.js.map +1 -0
  116. package/miniprogram_dist/input/index.d.ts +0 -0
  117. package/miniprogram_dist/input/index.js +137 -0
  118. package/miniprogram_dist/input/index.js.map +1 -0
  119. package/miniprogram_dist/input/index.json +6 -0
  120. package/miniprogram_dist/input/index.wxml +57 -0
  121. package/miniprogram_dist/input/index.wxss +331 -0
  122. package/miniprogram_dist/input/index.wxss.map +1 -0
  123. package/miniprogram_dist/nav-bar/index.d.ts +0 -0
  124. package/miniprogram_dist/nav-bar/index.js +162 -0
  125. package/miniprogram_dist/nav-bar/index.js.map +1 -0
  126. package/miniprogram_dist/nav-bar/index.json +9 -0
  127. package/miniprogram_dist/nav-bar/index.wxml +46 -0
  128. package/miniprogram_dist/nav-bar/index.wxss +160 -0
  129. package/miniprogram_dist/nav-bar/index.wxss.map +1 -0
  130. package/miniprogram_dist/popup-select/index.d.ts +4 -0
  131. package/miniprogram_dist/popup-select/index.js +70 -0
  132. package/miniprogram_dist/popup-select/index.js.map +1 -0
  133. package/miniprogram_dist/popup-select/index.json +6 -0
  134. package/miniprogram_dist/popup-select/index.wxml +48 -0
  135. package/miniprogram_dist/popup-select/index.wxss +184 -0
  136. package/miniprogram_dist/popup-select/index.wxss.map +1 -0
  137. package/miniprogram_dist/progress/index.d.ts +0 -0
  138. package/miniprogram_dist/progress/index.js +120 -0
  139. package/miniprogram_dist/progress/index.js.map +1 -0
  140. package/miniprogram_dist/progress/index.json +6 -0
  141. package/miniprogram_dist/progress/index.wxml +31 -0
  142. package/miniprogram_dist/progress/index.wxss +163 -0
  143. package/miniprogram_dist/progress/index.wxss.map +1 -0
  144. package/miniprogram_dist/radio/index.d.ts +0 -0
  145. package/miniprogram_dist/radio/index.js +52 -0
  146. package/miniprogram_dist/radio/index.js.map +1 -0
  147. package/miniprogram_dist/radio/index.json +6 -0
  148. package/miniprogram_dist/radio/index.wxml +16 -0
  149. package/miniprogram_dist/radio/index.wxss +62 -0
  150. package/miniprogram_dist/radio/index.wxss.map +1 -0
  151. package/miniprogram_dist/rate/index.d.ts +0 -0
  152. package/miniprogram_dist/rate/index.js +128 -0
  153. package/miniprogram_dist/rate/index.js.map +1 -0
  154. package/miniprogram_dist/rate/index.json +6 -0
  155. package/miniprogram_dist/rate/index.wxml +31 -0
  156. package/miniprogram_dist/rate/index.wxss +89 -0
  157. package/miniprogram_dist/rate/index.wxss.map +1 -0
  158. package/miniprogram_dist/select-input/index.d.ts +0 -0
  159. package/miniprogram_dist/select-input/index.js +116 -0
  160. package/miniprogram_dist/select-input/index.js.map +1 -0
  161. package/miniprogram_dist/select-input/index.json +6 -0
  162. package/miniprogram_dist/select-input/index.wxml +43 -0
  163. package/miniprogram_dist/select-input/index.wxss +143 -0
  164. package/miniprogram_dist/select-input/index.wxss.map +1 -0
  165. package/miniprogram_dist/skeleton/index.d.ts +0 -0
  166. package/miniprogram_dist/skeleton/index.js +102 -0
  167. package/miniprogram_dist/skeleton/index.js.map +1 -0
  168. package/miniprogram_dist/skeleton/index.json +6 -0
  169. package/miniprogram_dist/skeleton/index.wxml +40 -0
  170. package/miniprogram_dist/skeleton/index.wxss +103 -0
  171. package/miniprogram_dist/skeleton/index.wxss.map +1 -0
  172. package/miniprogram_dist/slider/index.d.ts +0 -0
  173. package/miniprogram_dist/slider/index.js +180 -0
  174. package/miniprogram_dist/slider/index.js.map +1 -0
  175. package/miniprogram_dist/slider/index.json +6 -0
  176. package/miniprogram_dist/slider/index.wxml +38 -0
  177. package/miniprogram_dist/slider/index.wxss +132 -0
  178. package/miniprogram_dist/slider/index.wxss.map +1 -0
  179. package/miniprogram_dist/subsection/index.d.ts +0 -0
  180. package/miniprogram_dist/subsection/index.js +85 -0
  181. package/miniprogram_dist/subsection/index.js.map +1 -0
  182. package/miniprogram_dist/subsection/index.json +6 -0
  183. package/miniprogram_dist/subsection/index.wxml +55 -0
  184. package/miniprogram_dist/subsection/index.wxss +150 -0
  185. package/miniprogram_dist/subsection/index.wxss.map +1 -0
  186. package/miniprogram_dist/swipe-cell/index.d.ts +0 -0
  187. package/miniprogram_dist/swipe-cell/index.js +91 -0
  188. package/miniprogram_dist/swipe-cell/index.js.map +1 -0
  189. package/miniprogram_dist/swipe-cell/index.json +6 -0
  190. package/miniprogram_dist/swipe-cell/index.wxml +30 -0
  191. package/miniprogram_dist/swipe-cell/index.wxss +42 -0
  192. package/miniprogram_dist/swipe-cell/index.wxss.map +1 -0
  193. package/miniprogram_dist/swiper/index.d.ts +0 -0
  194. package/miniprogram_dist/swiper/index.js +82 -0
  195. package/miniprogram_dist/swiper/index.js.map +1 -0
  196. package/miniprogram_dist/swiper/index.json +6 -0
  197. package/miniprogram_dist/swiper/index.wxml +53 -0
  198. package/miniprogram_dist/swiper/index.wxss +123 -0
  199. package/miniprogram_dist/swiper/index.wxss.map +1 -0
  200. package/miniprogram_dist/switch/index.d.ts +0 -0
  201. package/miniprogram_dist/switch/index.js +53 -0
  202. package/miniprogram_dist/switch/index.js.map +1 -0
  203. package/miniprogram_dist/switch/index.json +6 -0
  204. package/miniprogram_dist/switch/index.wxml +21 -0
  205. package/miniprogram_dist/switch/index.wxss +198 -0
  206. package/miniprogram_dist/switch/index.wxss.map +1 -0
  207. package/miniprogram_dist/tag/index.d.ts +0 -0
  208. package/miniprogram_dist/tag/index.js +114 -0
  209. package/miniprogram_dist/tag/index.js.map +1 -0
  210. package/miniprogram_dist/tag/index.json +6 -0
  211. package/miniprogram_dist/tag/index.wxml +19 -0
  212. package/miniprogram_dist/tag/index.wxss +182 -0
  213. package/miniprogram_dist/tag/index.wxss.map +1 -0
  214. package/miniprogram_dist/textarea/index.d.ts +0 -0
  215. package/miniprogram_dist/textarea/index.js +143 -0
  216. package/miniprogram_dist/textarea/index.js.map +1 -0
  217. package/miniprogram_dist/textarea/index.json +6 -0
  218. package/miniprogram_dist/textarea/index.wxml +59 -0
  219. package/miniprogram_dist/textarea/index.wxss +242 -0
  220. package/miniprogram_dist/textarea/index.wxss.map +1 -0
  221. package/miniprogram_dist/toast/index.d.ts +0 -0
  222. package/miniprogram_dist/toast/index.js +92 -0
  223. package/miniprogram_dist/toast/index.js.map +1 -0
  224. package/miniprogram_dist/toast/index.json +8 -0
  225. package/miniprogram_dist/toast/index.wxml +30 -0
  226. package/miniprogram_dist/toast/index.wxss +116 -0
  227. package/miniprogram_dist/toast/index.wxss.map +1 -0
  228. package/miniprogram_dist/uploader/index.d.ts +8 -0
  229. package/miniprogram_dist/uploader/index.js +192 -0
  230. package/miniprogram_dist/uploader/index.js.map +1 -0
  231. package/miniprogram_dist/uploader/index.json +8 -0
  232. package/miniprogram_dist/uploader/index.wxml +88 -0
  233. package/miniprogram_dist/uploader/index.wxss +179 -0
  234. package/miniprogram_dist/uploader/index.wxss.map +1 -0
  235. package/package.json +70 -0
@@ -0,0 +1,672 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * datetime-picker 组件
5
+ * 复刻 uni-datetime-picker 功能,适配微信小程序原生语法和 Skyline 渲染引擎
6
+ */
7
+ const util_1 = require("./util");
8
+ Component({
9
+ options: {
10
+ virtualHost: true,
11
+ multipleSlots: true
12
+ },
13
+ properties: {
14
+ // 选择器类型: datetime | date | time | datetimerange | daterange
15
+ type: {
16
+ type: String,
17
+ value: 'datetime'
18
+ },
19
+ // 绑定值
20
+ value: {
21
+ type: null,
22
+ value: ''
23
+ },
24
+ // 起始时间
25
+ start: {
26
+ type: String,
27
+ value: ''
28
+ },
29
+ // 终止时间
30
+ end: {
31
+ type: String,
32
+ value: ''
33
+ },
34
+ // 返回类型: string | timestamp | date
35
+ returnType: {
36
+ type: String,
37
+ value: 'string'
38
+ },
39
+ // 占位符
40
+ placeholder: {
41
+ type: String,
42
+ value: ''
43
+ },
44
+ // 范围选择开始占位符
45
+ startPlaceholder: {
46
+ type: String,
47
+ value: ''
48
+ },
49
+ // 范围选择结束占位符
50
+ endPlaceholder: {
51
+ type: String,
52
+ value: ''
53
+ },
54
+ // 范围分隔符
55
+ rangeSeparator: {
56
+ type: String,
57
+ value: '-'
58
+ },
59
+ // 是否显示边框
60
+ border: {
61
+ type: Boolean,
62
+ value: true
63
+ },
64
+ // 是否禁用
65
+ disabled: {
66
+ type: Boolean,
67
+ value: false
68
+ },
69
+ // 是否显示清除按钮
70
+ clearable: {
71
+ type: Boolean,
72
+ value: true
73
+ },
74
+ // 是否隐藏秒
75
+ hideSecond: {
76
+ type: Boolean,
77
+ value: false
78
+ },
79
+ // 默认值
80
+ defaultValue: {
81
+ type: null,
82
+ value: ''
83
+ }
84
+ },
85
+ data: {
86
+ isRange: false,
87
+ hasTime: false,
88
+ displayValue: '',
89
+ inputDate: '',
90
+ calendarDate: '',
91
+ pickerTime: '',
92
+ calendarRange: {
93
+ startDate: '',
94
+ startTime: '',
95
+ endDate: '',
96
+ endTime: ''
97
+ },
98
+ displayRangeValue: {
99
+ startDate: '',
100
+ endDate: ''
101
+ },
102
+ tempRange: {
103
+ startDate: '',
104
+ startTime: '',
105
+ endDate: '',
106
+ endTime: ''
107
+ },
108
+ // 左右日历同步数据
109
+ startMultipleStatus: {
110
+ before: '',
111
+ after: '',
112
+ data: [],
113
+ fulldate: '',
114
+ which: 'right'
115
+ },
116
+ endMultipleStatus: {
117
+ before: '',
118
+ after: '',
119
+ data: [],
120
+ fulldate: '',
121
+ which: 'left'
122
+ },
123
+ pickerVisible: false,
124
+ isPhone: false,
125
+ isFirstShow: true,
126
+ // 国际化文本
127
+ selectDateText: '选择日期',
128
+ selectDateTimeText: '选择日期时间',
129
+ selectTimeText: '选择时间',
130
+ startDateText: '开始日期',
131
+ startTimeText: '开始时间',
132
+ endDateText: '结束日期',
133
+ endTimeText: '结束时间',
134
+ okText: '确定',
135
+ clearText: '清除',
136
+ cancelText: '取消',
137
+ isEmitValue: false,
138
+ _timers: [] // 延时句柄集合,组件销毁时统一清理
139
+ },
140
+ lifetimes: {
141
+ attached() {
142
+ this.platform();
143
+ },
144
+ detached() {
145
+ const timers = this.data._timers || [];
146
+ timers.forEach((t) => clearTimeout(t));
147
+ }
148
+ },
149
+ observers: {
150
+ 'type': function (type) {
151
+ this.setData({
152
+ hasTime: type.indexOf('time') !== -1,
153
+ isRange: type.indexOf('range') !== -1
154
+ });
155
+ },
156
+ 'value': function (value) {
157
+ if (!this.data.isEmitValue) {
158
+ this.initPicker(value);
159
+ }
160
+ this.setData({ isEmitValue: false });
161
+ },
162
+ 'start': function (start) {
163
+ if (!start)
164
+ return;
165
+ this.setData({
166
+ 'calendarRange.startDate': (0, util_1.getDate)(start)
167
+ });
168
+ if (this.data.hasTime) {
169
+ this.setData({
170
+ 'calendarRange.startTime': (0, util_1.getTime)(start, this.data.hideSecond)
171
+ });
172
+ }
173
+ },
174
+ 'end': function (end) {
175
+ if (!end)
176
+ return;
177
+ this.setData({
178
+ 'calendarRange.endDate': (0, util_1.getDate)(end)
179
+ });
180
+ if (this.data.hasTime) {
181
+ this.setData({
182
+ 'calendarRange.endTime': (0, util_1.getTime)(end, this.data.hideSecond)
183
+ });
184
+ }
185
+ }
186
+ },
187
+ methods: {
188
+ // 移植解决 TS 编译报错的第二步:将原本在 methods 里的布尔变量删除,避免触发方法签名冲突
189
+ // 初始化选择器
190
+ initPicker(newVal) {
191
+ if ((!newVal && !this.data.defaultValue) || (Array.isArray(newVal) && !newVal.length)) {
192
+ this.data._timers = this.data._timers || [];
193
+ this.data._timers.push(setTimeout(() => {
194
+ this.clear(false);
195
+ }, 0));
196
+ return;
197
+ }
198
+ if (!Array.isArray(newVal) && !this.data.isRange) {
199
+ if (newVal) {
200
+ const date = (0, util_1.getDate)(newVal);
201
+ this.setData({
202
+ displayValue: date,
203
+ inputDate: date,
204
+ calendarDate: date
205
+ });
206
+ if (this.data.hasTime) {
207
+ const time = (0, util_1.getTime)(newVal, this.data.hideSecond);
208
+ this.setData({
209
+ pickerTime: time,
210
+ displayValue: `${date} ${time}`
211
+ });
212
+ }
213
+ }
214
+ else if (this.data.defaultValue) {
215
+ const date = (0, util_1.getDate)(this.data.defaultValue);
216
+ this.setData({
217
+ inputDate: date,
218
+ calendarDate: date
219
+ });
220
+ if (this.data.hasTime) {
221
+ this.setData({
222
+ pickerTime: (0, util_1.getTime)(this.data.defaultValue, this.data.hideSecond)
223
+ });
224
+ }
225
+ }
226
+ }
227
+ else {
228
+ const [before, after] = newVal || [];
229
+ if (!before && !after)
230
+ return;
231
+ const beforeDate = (0, util_1.getDate)(before);
232
+ const beforeTime = (0, util_1.getTime)(before, this.data.hideSecond);
233
+ const afterDate = (0, util_1.getDate)(after);
234
+ const afterTime = (0, util_1.getTime)(after, this.data.hideSecond);
235
+ this.setData({
236
+ 'displayRangeValue.startDate': beforeDate,
237
+ 'displayRangeValue.endDate': afterDate,
238
+ 'tempRange.startDate': beforeDate,
239
+ 'tempRange.endDate': afterDate
240
+ });
241
+ if (this.data.hasTime) {
242
+ this.setData({
243
+ 'displayRangeValue.startDate': `${beforeDate} ${beforeTime}`,
244
+ 'displayRangeValue.endDate': `${afterDate} ${afterTime}`,
245
+ 'tempRange.startTime': beforeTime,
246
+ 'tempRange.endTime': afterTime
247
+ });
248
+ }
249
+ const defaultRange = { before: beforeDate, after: afterDate };
250
+ this.setData({
251
+ startMultipleStatus: { ...this.data.startMultipleStatus, ...defaultRange, which: 'right' },
252
+ endMultipleStatus: { ...this.data.endMultipleStatus, ...defaultRange, which: 'left' }
253
+ });
254
+ }
255
+ },
256
+ // 更新左侧日历
257
+ updateLeftCale(e) {
258
+ // selectComponent 返回的是子组件实例,其自定义方法不在 TS 类型定义中
259
+ const left = this.selectComponent('#left');
260
+ if (left && left.cale) {
261
+ left.cale.setHoverMultiple(e.detail.after);
262
+ left.setDate(left.data.nowDate.fullDate);
263
+ }
264
+ },
265
+ // 更新右侧日历
266
+ updateRightCale(e) {
267
+ const right = this.selectComponent('#right');
268
+ if (right && right.cale) {
269
+ right.cale.setHoverMultiple(e.detail.after);
270
+ right.setDate(right.data.nowDate.fullDate);
271
+ }
272
+ },
273
+ // 判断平台
274
+ platform() {
275
+ const sysInfo = wx.getSystemInfoSync();
276
+ this.setData({
277
+ isPhone: sysInfo.windowWidth <= 500
278
+ });
279
+ },
280
+ // 显示选择器
281
+ show() {
282
+ this.triggerEvent('show');
283
+ if (this.data.disabled)
284
+ return;
285
+ this.platform();
286
+ if (this.data.isPhone) {
287
+ const mobile = this.selectComponent('#mobile');
288
+ if (mobile) {
289
+ this.data._timers = this.data._timers || [];
290
+ this.data._timers.push(setTimeout(() => mobile.open(), 0));
291
+ }
292
+ return;
293
+ }
294
+ this.setData({ pickerVisible: true });
295
+ if (this.data.isRange && this.data.isFirstShow) {
296
+ this.setData({ isFirstShow: false });
297
+ const { startDate, endDate } = this.data.calendarRange;
298
+ if (startDate && endDate) {
299
+ if (this.diffDate(startDate, endDate) < 30) {
300
+ const right = this.selectComponent('#right');
301
+ if (right)
302
+ right.changeMonth('pre');
303
+ }
304
+ }
305
+ }
306
+ },
307
+ // 关闭选择器
308
+ close() {
309
+ this.data._timers = this.data._timers || [];
310
+ this.data._timers.push(setTimeout(() => {
311
+ this.setData({ pickerVisible: false });
312
+ this.triggerEvent('close');
313
+ const mobile = this.selectComponent('#mobile');
314
+ if (mobile)
315
+ mobile.close();
316
+ }, 20));
317
+ },
318
+ // 派发事件
319
+ setEmit(value) {
320
+ if (this.data.returnType === 'timestamp' || this.data.returnType === 'date') {
321
+ if (!Array.isArray(value)) {
322
+ if (!this.data.hasTime) {
323
+ value = value + ' 00:00:00';
324
+ }
325
+ value = this.createTimestamp(value);
326
+ if (this.data.returnType === 'date') {
327
+ value = new Date(value);
328
+ }
329
+ }
330
+ else {
331
+ if (!this.data.hasTime) {
332
+ value[0] = value[0] + ' 00:00:00';
333
+ value[1] = value[1] + ' 00:00:00';
334
+ }
335
+ value[0] = this.createTimestamp(value[0]);
336
+ value[1] = this.createTimestamp(value[1]);
337
+ if (this.data.returnType === 'date') {
338
+ value[0] = new Date(value[0]);
339
+ value[1] = new Date(value[1]);
340
+ }
341
+ }
342
+ }
343
+ this.setData({ isEmitValue: true });
344
+ this.triggerEvent('change', value);
345
+ },
346
+ // 创建时间戳
347
+ createTimestamp(date) {
348
+ const fixed = (0, util_1.fixIosDateFormat)(date);
349
+ return Date.parse(new Date(fixed).toString());
350
+ },
351
+ // 单选改变
352
+ singleChange(e) {
353
+ const fulldate = e.detail.fulldate;
354
+ this.setData({
355
+ calendarDate: fulldate,
356
+ inputDate: fulldate
357
+ });
358
+ if (this.data.hasTime)
359
+ return;
360
+ this.confirmSingleChange();
361
+ },
362
+ // 确认单选
363
+ confirmSingleChange() {
364
+ if (!(0, util_1.checkDate)(this.data.inputDate)) {
365
+ const now = new Date();
366
+ const date = (0, util_1.getDate)(now);
367
+ const time = (0, util_1.getTime)(now, this.data.hideSecond);
368
+ this.setData({
369
+ calendarDate: date,
370
+ inputDate: date,
371
+ pickerTime: time
372
+ });
373
+ }
374
+ let startLaterInputDate = false;
375
+ let startDate = '', startTime = '';
376
+ if (this.data.start) {
377
+ let startString = this.data.start;
378
+ if (typeof this.data.start === 'number') {
379
+ startString = (0, util_1.getDateTime)(this.data.start, this.data.hideSecond);
380
+ }
381
+ [startDate, startTime] = startString.split(' ');
382
+ if (this.data.start && !(0, util_1.dateCompare)(startDate, this.data.inputDate)) {
383
+ startLaterInputDate = true;
384
+ this.setData({ inputDate: startDate });
385
+ }
386
+ }
387
+ let endEarlierInputDate = false;
388
+ let endDate = '', endTime = '';
389
+ if (this.data.end) {
390
+ let endString = this.data.end;
391
+ if (typeof this.data.end === 'number') {
392
+ endString = (0, util_1.getDateTime)(this.data.end, this.data.hideSecond);
393
+ }
394
+ [endDate, endTime] = endString.split(' ');
395
+ if (this.data.end && !(0, util_1.dateCompare)(this.data.inputDate, endDate)) {
396
+ endEarlierInputDate = true;
397
+ this.setData({ inputDate: endDate });
398
+ }
399
+ }
400
+ if (this.data.hasTime) {
401
+ let pickerTime = this.data.pickerTime;
402
+ if (startLaterInputDate) {
403
+ pickerTime = startTime || (0, util_1.getDefaultSecond)(this.data.hideSecond);
404
+ }
405
+ if (endEarlierInputDate) {
406
+ pickerTime = endTime || (0, util_1.getDefaultSecond)(this.data.hideSecond);
407
+ }
408
+ if (!pickerTime) {
409
+ pickerTime = (0, util_1.getTime)(Date.now(), this.data.hideSecond);
410
+ }
411
+ this.setData({
412
+ pickerTime,
413
+ displayValue: `${this.data.inputDate} ${pickerTime}`
414
+ });
415
+ }
416
+ else {
417
+ this.setData({ displayValue: this.data.inputDate });
418
+ }
419
+ this.setEmit(this.data.displayValue);
420
+ this.setData({ pickerVisible: false });
421
+ },
422
+ // 左侧日历改变
423
+ leftChange(e) {
424
+ const { before, after } = e.detail.range;
425
+ this.rangeChange(before, after);
426
+ this.setData({
427
+ startMultipleStatus: { ...this.data.startMultipleStatus, ...e.detail.range, fulldate: e.detail.fulldate }
428
+ });
429
+ this.triggerEvent('calendarClick', e.detail);
430
+ },
431
+ // 右侧日历改变
432
+ rightChange(e) {
433
+ const { before, after } = e.detail.range;
434
+ this.rangeChange(before, after);
435
+ this.setData({
436
+ endMultipleStatus: { ...this.data.endMultipleStatus, ...e.detail.range, fulldate: e.detail.fulldate }
437
+ });
438
+ this.triggerEvent('calendarClick', e.detail);
439
+ },
440
+ // 移动端改变
441
+ mobileChange(e) {
442
+ if (this.data.isRange) {
443
+ const { before, after } = e.detail.range;
444
+ if (!before)
445
+ return;
446
+ this.handleStartAndEnd(before, after, true);
447
+ if (this.data.hasTime) {
448
+ const { startTime, endTime } = e.detail.timeRange || {};
449
+ this.setData({
450
+ 'tempRange.startTime': startTime,
451
+ 'tempRange.endTime': endTime
452
+ });
453
+ }
454
+ this.confirmRangeChange();
455
+ }
456
+ else {
457
+ let displayValue = '';
458
+ if (this.data.hasTime) {
459
+ displayValue = e.detail.fulldate + ' ' + e.detail.time;
460
+ }
461
+ else {
462
+ displayValue = e.detail.fulldate;
463
+ }
464
+ this.setData({
465
+ displayValue,
466
+ calendarDate: displayValue
467
+ });
468
+ this.setEmit(displayValue);
469
+ }
470
+ const mobile = this.selectComponent('#mobile');
471
+ if (mobile)
472
+ mobile.close();
473
+ },
474
+ // 范围改变
475
+ rangeChange(before, after) {
476
+ if (!(before && after))
477
+ return;
478
+ this.handleStartAndEnd(before, after, true);
479
+ if (this.data.hasTime)
480
+ return;
481
+ this.confirmRangeChange();
482
+ },
483
+ // 确认范围选择
484
+ confirmRangeChange() {
485
+ if (!this.data.tempRange.startDate || !this.data.tempRange.endDate) {
486
+ this.setData({ pickerVisible: false });
487
+ return;
488
+ }
489
+ let startDate = this.data.tempRange.startDate;
490
+ let endDate = this.data.tempRange.endDate;
491
+ if (!(0, util_1.checkDate)(startDate)) {
492
+ startDate = (0, util_1.getDate)(Date.now());
493
+ }
494
+ if (!(0, util_1.checkDate)(endDate)) {
495
+ endDate = (0, util_1.getDate)(Date.now());
496
+ }
497
+ this.setData({
498
+ 'tempRange.startDate': startDate,
499
+ 'tempRange.endDate': endDate
500
+ });
501
+ let compareStartDateString = startDate;
502
+ let compareEndDateString = endDate;
503
+ if (this.data.hasTime) {
504
+ compareStartDateString = `${startDate} ${this.data.tempRange.startTime}`;
505
+ compareEndDateString = `${endDate} ${this.data.tempRange.endTime}`;
506
+ }
507
+ let startDateLaterRangeStartDate = false;
508
+ let startDateLaterRangeEndDate = false;
509
+ let startDateFromProp = '', startTimeFromProp = '';
510
+ if (this.data.start) {
511
+ let startString = this.data.start;
512
+ if (typeof this.data.start === 'number') {
513
+ startString = (0, util_1.getDateTime)(this.data.start, this.data.hideSecond);
514
+ }
515
+ [startDateFromProp, startTimeFromProp] = startString.split(' ');
516
+ if (this.data.start && !(0, util_1.dateCompare)(this.data.start, compareStartDateString)) {
517
+ startDateLaterRangeStartDate = true;
518
+ this.setData({ 'tempRange.startDate': startDateFromProp });
519
+ }
520
+ if (this.data.start && !(0, util_1.dateCompare)(this.data.start, compareEndDateString)) {
521
+ startDateLaterRangeEndDate = true;
522
+ this.setData({ 'tempRange.endDate': startDateFromProp });
523
+ }
524
+ }
525
+ let endDateEarlierRangeStartDate = false;
526
+ let endDateEarlierRangeEndDate = false;
527
+ let endDateFromProp = '', endTimeFromProp = '';
528
+ if (this.data.end) {
529
+ let endString = this.data.end;
530
+ if (typeof this.data.end === 'number') {
531
+ endString = (0, util_1.getDateTime)(this.data.end, this.data.hideSecond);
532
+ }
533
+ [endDateFromProp, endTimeFromProp] = endString.split(' ');
534
+ if (this.data.end && !(0, util_1.dateCompare)(compareStartDateString, this.data.end)) {
535
+ endDateEarlierRangeStartDate = true;
536
+ this.setData({ 'tempRange.startDate': endDateFromProp });
537
+ }
538
+ if (this.data.end && !(0, util_1.dateCompare)(compareEndDateString, this.data.end)) {
539
+ endDateEarlierRangeEndDate = true;
540
+ this.setData({ 'tempRange.endDate': endDateFromProp });
541
+ }
542
+ }
543
+ let start = '', end = '';
544
+ if (!this.data.hasTime) {
545
+ start = this.data.tempRange.startDate;
546
+ end = this.data.tempRange.endDate;
547
+ }
548
+ else {
549
+ let startTime = this.data.tempRange.startTime;
550
+ let endTime = this.data.tempRange.endTime;
551
+ if (startDateLaterRangeStartDate) {
552
+ startTime = startTimeFromProp || (0, util_1.getDefaultSecond)(this.data.hideSecond);
553
+ }
554
+ else if (endDateEarlierRangeStartDate) {
555
+ startTime = endTimeFromProp || (0, util_1.getDefaultSecond)(this.data.hideSecond);
556
+ }
557
+ if (!startTime) {
558
+ startTime = (0, util_1.getTime)(Date.now(), this.data.hideSecond);
559
+ }
560
+ if (startDateLaterRangeEndDate) {
561
+ endTime = startTimeFromProp || (0, util_1.getDefaultSecond)(this.data.hideSecond);
562
+ }
563
+ else if (endDateEarlierRangeEndDate) {
564
+ endTime = endTimeFromProp || (0, util_1.getDefaultSecond)(this.data.hideSecond);
565
+ }
566
+ if (!endTime) {
567
+ endTime = (0, util_1.getTime)(Date.now(), this.data.hideSecond);
568
+ }
569
+ this.setData({
570
+ 'tempRange.startTime': startTime,
571
+ 'tempRange.endTime': endTime
572
+ });
573
+ start = `${this.data.tempRange.startDate} ${startTime}`;
574
+ end = `${this.data.tempRange.endDate} ${endTime}`;
575
+ }
576
+ if (!(0, util_1.dateCompare)(start, end)) {
577
+ [start, end] = [end, start];
578
+ }
579
+ this.setData({
580
+ 'displayRangeValue.startDate': start,
581
+ 'displayRangeValue.endDate': end
582
+ });
583
+ this.setEmit([start, end]);
584
+ this.setData({ pickerVisible: false });
585
+ },
586
+ // 处理开始和结束日期
587
+ handleStartAndEnd(before, after, temp = false) {
588
+ if (!before)
589
+ return;
590
+ if (!after)
591
+ after = before;
592
+ const type = temp ? 'tempRange' : 'range';
593
+ const isStartEarlierEnd = (0, util_1.dateCompare)(before, after);
594
+ const start = isStartEarlierEnd ? before : after;
595
+ const end = isStartEarlierEnd ? after : before;
596
+ this.setData({
597
+ [`${type}.startDate`]: start,
598
+ [`${type}.endDate`]: end
599
+ });
600
+ },
601
+ // 比较时间差
602
+ diffDate(startDate, endDate) {
603
+ const start = new Date((0, util_1.fixIosDateFormat)(startDate));
604
+ const end = new Date((0, util_1.fixIosDateFormat)(endDate));
605
+ const diff = (end.getTime() - start.getTime()) / (24 * 60 * 60 * 1000);
606
+ return Math.abs(diff);
607
+ },
608
+ // 清除
609
+ clear(needEmit = true) {
610
+ if (!this.data.isRange) {
611
+ this.setData({
612
+ displayValue: '',
613
+ inputDate: '',
614
+ pickerTime: ''
615
+ });
616
+ const pcSingle = this.selectComponent('#pcSingle');
617
+ if (pcSingle)
618
+ pcSingle.clearCalender();
619
+ if (needEmit) {
620
+ this.triggerEvent('clear');
621
+ this.triggerEvent('change', '');
622
+ }
623
+ }
624
+ else {
625
+ this.setData({
626
+ 'displayRangeValue.startDate': '',
627
+ 'displayRangeValue.endDate': '',
628
+ 'tempRange.startDate': '',
629
+ 'tempRange.startTime': '',
630
+ 'tempRange.endDate': '',
631
+ 'tempRange.endTime': ''
632
+ });
633
+ const left = this.selectComponent('#left');
634
+ const right = this.selectComponent('#right');
635
+ if (left)
636
+ left.clearCalender();
637
+ if (right) {
638
+ right.clearCalender();
639
+ right.changeMonth('next');
640
+ }
641
+ if (needEmit) {
642
+ this.triggerEvent('clear');
643
+ this.triggerEvent('change', []);
644
+ }
645
+ }
646
+ },
647
+ // 日历点击
648
+ calendarClick(e) {
649
+ this.triggerEvent('calendarClick', e.detail);
650
+ },
651
+ // 时间改变
652
+ timeChange(e) {
653
+ const { hour, minute, second } = e.detail;
654
+ const time = `${hour < 10 ? '0' + hour : hour}:${minute < 10 ? '0' + minute : minute}${this.data.hideSecond ? '' : ':' + (second < 10 ? '0' + second : second)}`;
655
+ this.setData({ pickerTime: time });
656
+ },
657
+ // 开始时间改变
658
+ startTimeChange(e) {
659
+ const { hour, minute, second } = e.detail;
660
+ const time = `${hour < 10 ? '0' + hour : hour}:${minute < 10 ? '0' + minute : minute}${this.data.hideSecond ? '' : ':' + (second < 10 ? '0' + second : second)}`;
661
+ this.setData({ 'tempRange.startTime': time });
662
+ },
663
+ // 结束时间改变
664
+ endTimeChange(e) {
665
+ const { hour, minute, second } = e.detail;
666
+ const time = `${hour < 10 ? '0' + hour : hour}:${minute < 10 ? '0' + minute : minute}${this.data.hideSecond ? '' : ':' + (second < 10 ? '0' + second : second)}`;
667
+ this.setData({ 'tempRange.endTime': time });
668
+ }
669
+ }
670
+ });
671
+
672
+ //# sourceMappingURL=index.js.map