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,75 @@
1
+ @charset "UTF-8";
2
+ .time-picker-container {
3
+ width: 100%;
4
+ padding: 20rpx 0;
5
+ }
6
+
7
+ .time-picker-box {
8
+ position: relative;
9
+ display: flex;
10
+ justify-content: center;
11
+ align-items: center;
12
+ height: 240rpx;
13
+ background: #ffffff;
14
+ }
15
+
16
+ .time-picker-view {
17
+ width: 100%;
18
+ height: 240rpx;
19
+ z-index: 2;
20
+ }
21
+
22
+ .time-picker-item {
23
+ display: flex;
24
+ align-items: center;
25
+ justify-content: center;
26
+ }
27
+
28
+ .time-picker-item-text {
29
+ font-size: 32rpx;
30
+ color: #212529;
31
+ }
32
+
33
+ .time-indicator {
34
+ height: 80rpx !important;
35
+ }
36
+
37
+ .time-mask {
38
+ /* 遮罩 */
39
+ }
40
+
41
+ /* 冒号分隔符标记 */
42
+ .time-picker-marks {
43
+ position: absolute;
44
+ top: 50%;
45
+ left: 0;
46
+ width: 100%;
47
+ height: 80rpx;
48
+ margin-top: -40rpx;
49
+ display: flex;
50
+ justify-content: center;
51
+ align-items: center;
52
+ pointer-events: none;
53
+ z-index: 1;
54
+ }
55
+
56
+ .time-mark {
57
+ position: absolute;
58
+ top: 50%;
59
+ transform: translateY(-50%);
60
+ font-size: 32rpx;
61
+ color: #adb5bd;
62
+ font-weight: normal;
63
+ }
64
+
65
+ /* 第一个冒号在小时和分钟之间 */
66
+ .time-mark:first-child {
67
+ left: 33.33%;
68
+ transform: translate(-50%, -50%);
69
+ }
70
+
71
+ /* 第二个冒号在分钟和秒之间 */
72
+ .time-mark:nth-child(2) {
73
+ left: 66.66%;
74
+ transform: translate(-50%, -50%);
75
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["datetime-picker/time-picker.scss","common/style/theme.scss"],"names":[],"mappings":";AAGA;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA,YC8BgB;;;AD3BlB;EACE;EACA;EACA;;;AAGF;EACE;EACA;EACA;;;AAGF;EACE;EACA,OCsBiB;;;ADnBnB;EACE;;;AAGF;AACE;;;AAGF;AACA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;EACA;EACA,OCbiB;EDcjB;;;AAGF;AACA;EACE;EACA;;;AAGF;AACA;EACE;EACA","file":"time-picker.wxss","sourcesContent":["@use \"../common/style/theme.scss\" as *;\n@use \"../common/style/mixins.scss\" as *;\n\n.time-picker-container {\n width: 100%;\n padding: 20rpx 0;\n}\n\n.time-picker-box {\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 240rpx;\n background: $sky-color-white;\n}\n\n.time-picker-view {\n width: 100%;\n height: 240rpx;\n z-index: 2;\n}\n\n.time-picker-item {\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.time-picker-item-text {\n font-size: 32rpx;\n color: $sky-color-gray-9;\n}\n\n.time-indicator {\n height: 80rpx !important;\n}\n\n.time-mask {\n /* 遮罩 */\n}\n\n/* 冒号分隔符标记 */\n.time-picker-marks {\n position: absolute;\n top: 50%;\n left: 0;\n width: 100%;\n height: 80rpx;\n margin-top: -40rpx;\n display: flex;\n justify-content: center;\n align-items: center;\n pointer-events: none;\n z-index: 1;\n}\n\n.time-mark {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n font-size: 32rpx;\n color: $sky-color-gray-5;\n font-weight: normal;\n}\n\n/* 第一个冒号在小时和分钟之间 */\n.time-mark:first-child {\n left: 33.33%;\n transform: translate(-50%, -50%);\n}\n\n/* 第二个冒号在分钟和秒之间 */\n.time-mark:nth-child(2) {\n left: 66.66%;\n transform: translate(-50%, -50%);\n}\n","// ==========================================\r\n// Skyline-UI 极具质感的现代设计系统 (SCSS)\r\n// ==========================================\r\n\r\n// --- 品牌色体系 (HSL Tailored Colors) ---\r\n$sky-brand-h: 250; // 主品牌色相 (优雅深紫/蓝色调)\r\n$sky-brand-s: 85%;\r\n$sky-brand-l: 55%;\r\n\r\n$sky-color-primary: hsl($sky-brand-h, $sky-brand-s, $sky-brand-l);\r\n$sky-color-primary-hover: hsl($sky-brand-h, $sky-brand-s, $sky-brand-l - 8%);\r\n$sky-color-primary-active: hsl($sky-brand-h, $sky-brand-s, $sky-brand-l - 15%);\r\n$sky-color-primary-light: hsl($sky-brand-h, $sky-brand-s, 95%);\r\n\r\n// 辅助色体系 (意图表达)\r\n$sky-color-success: hsl(150, 80%, 40%);\r\n$sky-color-success-active: hsl(150, 80%, 32%);\r\n$sky-color-success-light: hsl(150, 80%, 96%);\r\n\r\n$sky-color-warning: hsl(35, 90%, 50%);\r\n$sky-color-warning-active: hsl(35, 90%, 42%);\r\n$sky-color-warning-light: hsl(35, 90%, 96%);\r\n\r\n$sky-color-danger: hsl(355, 85%, 55%);\r\n$sky-color-danger-active: hsl(355, 85%, 45%);\r\n$sky-color-danger-light: hsl(355, 85%, 96%);\r\n\r\n$sky-color-info: hsl(200, 85%, 50%);\r\n$sky-color-info-active: hsl(200, 85%, 42%);\r\n$sky-color-info-light: hsl(200, 85%, 96%);\r\n\r\n// --- Tag 标签组件专用色系 (莫兰迪低饱和) ---\r\n$sky-tag-blue: #edf2ff;\r\n$sky-tag-blue-text: #3b5bdb;\r\n$sky-tag-green: #ebfbee;\r\n$sky-tag-green-text: #2b8a3e;\r\n$sky-tag-yellow: #fff9db;\r\n$sky-tag-yellow-text: #f08c00;\r\n$sky-tag-red: #ffeef0;\r\n$sky-tag-red-text: #fa5252;\r\n$sky-tag-info: #e7f5ff;\r\n$sky-tag-info-text: #1c7ed6;\r\n\r\n// --- 纯净的中性色调 (Sleek Grays) ---\r\n$sky-color-white: #ffffff;\r\n$sky-color-gray-1: #f8f9fa; // 极浅背景\r\n$sky-color-gray-2: #f1f3f5; // 浅灰背景\r\n$sky-color-gray-3: #e9ecef; // 边框线/失效态\r\n$sky-color-gray-4: #dee2e6;\r\n$sky-color-gray-5: #adb5bd; // 提示文本\r\n$sky-color-gray-6: #868e96;\r\n$sky-color-gray-7: #495057; // 次级文本\r\n$sky-color-gray-8: #343a40;\r\n$sky-color-gray-9: #212529; // 主级文本\r\n\r\n// --- 阴影系统 (Premium Shadows) ---\r\n$sky-shadow-sm: 0 2px 4px rgba(0, 0, 0, 0.04);\r\n$sky-shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);\r\n$sky-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);\r\n$sky-shadow-primary: 0 4px 14px rgba(100, 80, 240, 0.2);\r\n\r\n// --- 圆角规范 (Borders) ---\r\n$sky-border-radius-xs: 4rpx;\r\n$sky-border-radius-sm: 8rpx;\r\n$sky-border-radius-md: 12rpx;\r\n$sky-border-radius-lg: 20rpx;\r\n$sky-border-radius-round: 9999rpx;\r\n\r\n// --- 字体与字号规范 (Typography) ---\r\n$sky-font-family: -apple-system, BlinkMacSystemFont, \"Helvetica Neue\", Helvetica, \"Segoe UI\", Arial, Roboto, sans-serif;\r\n$sky-font-size-xs: 20rpx;\r\n$sky-font-size-sm: 24rpx;\r\n$sky-font-size-md: 28rpx;\r\n$sky-font-size-lg: 32rpx;\r\n$sky-font-size-xl: 36rpx;\r\n\r\n// --- 动效与过渡 (Transitions) ---\r\n$sky-transition-duration: 200ms;\r\n$sky-transition-timing: cubic-bezier(0.4, 0, 0.2, 1);\r\n\r\n// --- 间距规范 (Spacing) ---\r\n$sky-spacing-xs: 8rpx;\r\n$sky-spacing-sm: 16rpx;\r\n$sky-spacing-md: 24rpx;\r\n$sky-spacing-lg: 32rpx;\r\n$sky-spacing-xl: 48rpx;\r\n\r\n// --- 组件高度规范 (Component Heights) ---\r\n$sky-height-sm: 56rpx;\r\n$sky-height-md: 72rpx;\r\n$sky-height-lg: 88rpx;\r\n$sky-height-xl: 96rpx;\r\n\r\n// --- 层级规范 (Z-Index) ---\r\n$sky-z-dropdown: 100;\r\n$sky-z-fixed: 500;\r\n$sky-z-popup: 1000;\r\n$sky-z-toast: 2000;\r\n"]}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * 日期时间选择器工具函数
3
+ * 从 uni-datetime-picker 适配到微信小程序原生
4
+ */
5
+ /**
6
+ * 补齐数字前导零
7
+ */
8
+ export declare function addZero(num: number): string;
9
+ /**
10
+ * 修复 iOS 日期格式问题
11
+ */
12
+ export declare function fixIosDateFormat(value: string | number | Date): string | number | Date;
13
+ /**
14
+ * 获取日期字符串 YYYY-MM-DD
15
+ */
16
+ export declare function getDate(date?: string | number | Date): string;
17
+ /**
18
+ * 获取时间字符串 HH:MM:SS 或 HH:MM
19
+ */
20
+ export declare function getTime(date?: string | number | Date, hideSecond?: boolean): string;
21
+ /**
22
+ * 获取日期时间字符串
23
+ */
24
+ export declare function getDateTime(date?: string | number | Date, hideSecond?: boolean): string;
25
+ /**
26
+ * 获取默认时间字符串
27
+ */
28
+ export declare function getDefaultSecond(hideSecond?: boolean): string;
29
+ /**
30
+ * 比较日期大小
31
+ * @returns true if startDate <= endDate
32
+ */
33
+ export declare function dateCompare(startDate: string | number | Date, endDate: string | number | Date): boolean;
34
+ /**
35
+ * 检查日期格式是否有效
36
+ */
37
+ export declare function checkDate(date: string): boolean;
38
+ /**
39
+ * 日历类
40
+ */
41
+ export declare class Calendar {
42
+ date: DateInfo;
43
+ selected: SelectedItem[];
44
+ startDate: string;
45
+ endDate: string;
46
+ range: boolean;
47
+ multipleStatus: MultipleStatus;
48
+ weeks: DateItem[][];
49
+ calendar: DateItem[];
50
+ lastHover: boolean;
51
+ constructor(options?: CalendarOptions);
52
+ /**
53
+ * 设置日期
54
+ */
55
+ setDate(date: string | number | Date): void;
56
+ /**
57
+ * 清理多选状态
58
+ */
59
+ cleanMultipleStatus(): void;
60
+ /**
61
+ * 设置开始日期
62
+ */
63
+ setStartDate(startDate: string): void;
64
+ /**
65
+ * 设置结束日期
66
+ */
67
+ setEndDate(endDate: string): void;
68
+ /**
69
+ * 获取上一个月对象
70
+ */
71
+ getPreMonthObj(date: string): DateInfo;
72
+ /**
73
+ * 获取下一个月对象
74
+ */
75
+ getNextMonthObj(date: string): DateInfo;
76
+ /**
77
+ * 获取日期对象
78
+ */
79
+ getDateObj(date: string | number | Date): DateInfo;
80
+ /**
81
+ * 获取上一个月日期集合
82
+ */
83
+ getPreMonthDays(amount: number, dateObj: DateInfo): PreMonthDay[];
84
+ /**
85
+ * 获取本月日期集合
86
+ */
87
+ getCurrentMonthDays(amount: number, dateObj: DateInfo): DateItem[];
88
+ /**
89
+ * 获取下一个月日期集合
90
+ */
91
+ getNextMonthDays(amount: number, dateObj: DateInfo): NextMonthDay[];
92
+ /**
93
+ * 获取日期详情
94
+ */
95
+ getInfo(date?: string | number | Date): DateItem | DateInfo;
96
+ /**
97
+ * 比较日期是否相等
98
+ */
99
+ dateEqual(before: string | number | Date, after: string | number | Date): boolean;
100
+ /**
101
+ * 判断是否为逻辑开始日期
102
+ */
103
+ isLogicBefore(currentDate: string, before: string, after: string): boolean;
104
+ /**
105
+ * 判断是否为逻辑结束日期
106
+ */
107
+ isLogicAfter(currentDate: string, before: string, after: string): boolean;
108
+ /**
109
+ * 获取日期范围内所有日期
110
+ */
111
+ getDateAll(begin: string, end: string): string[];
112
+ /**
113
+ * 设置多选状态
114
+ */
115
+ setMultiple(fullDate: string): void;
116
+ /**
117
+ * 设置悬停多选状态
118
+ */
119
+ setHoverMultiple(fullDate: string): void;
120
+ /**
121
+ * 设置默认多选状态
122
+ */
123
+ setDefaultMultiple(before: string, after: string): void;
124
+ /**
125
+ * 获取每周数据
126
+ */
127
+ getWeeks(dateData: string): void;
128
+ }
129
+ export interface SelectedItem {
130
+ date: string;
131
+ info?: string;
132
+ data?: Record<string, any>;
133
+ }
134
+ export interface DateInfo {
135
+ fullDate: string;
136
+ year: number;
137
+ month: string;
138
+ date: string;
139
+ day: number;
140
+ }
141
+ export interface DateItem extends DateInfo {
142
+ multiple: boolean;
143
+ beforeMultiple: boolean;
144
+ afterMultiple: boolean;
145
+ disable: boolean;
146
+ isToday: boolean;
147
+ userChecked: boolean;
148
+ extraInfo?: SelectedItem;
149
+ }
150
+ export interface PreMonthDay {
151
+ date: number;
152
+ month: string;
153
+ disable: boolean;
154
+ }
155
+ export interface NextMonthDay {
156
+ date: number;
157
+ month: string;
158
+ disable: boolean;
159
+ }
160
+ export interface MultipleStatus {
161
+ before: string;
162
+ after: string;
163
+ data: string[];
164
+ fulldate?: string;
165
+ which?: string;
166
+ }
167
+ export interface CalendarOptions {
168
+ selected?: SelectedItem[];
169
+ startDate?: string;
170
+ endDate?: string;
171
+ range?: boolean;
172
+ }
@@ -0,0 +1,404 @@
1
+ "use strict";
2
+ /**
3
+ * 日期时间选择器工具函数
4
+ * 从 uni-datetime-picker 适配到微信小程序原生
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.Calendar = void 0;
8
+ exports.addZero = addZero;
9
+ exports.fixIosDateFormat = fixIosDateFormat;
10
+ exports.getDate = getDate;
11
+ exports.getTime = getTime;
12
+ exports.getDateTime = getDateTime;
13
+ exports.getDefaultSecond = getDefaultSecond;
14
+ exports.dateCompare = dateCompare;
15
+ exports.checkDate = checkDate;
16
+ /**
17
+ * 补齐数字前导零
18
+ */
19
+ function addZero(num) {
20
+ if (num < 10) {
21
+ return `0${num}`;
22
+ }
23
+ return `${num}`;
24
+ }
25
+ /**
26
+ * 修复 iOS 日期格式问题
27
+ */
28
+ function fixIosDateFormat(value) {
29
+ if (typeof value === 'string') {
30
+ const dateTimeReg = /^\d{4}-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01])( [0-5]?[0-9]:[0-5]?[0-9](:[0-5]?[0-9])?)?$/;
31
+ if (dateTimeReg.test(value)) {
32
+ return value.replace(/-/g, '/');
33
+ }
34
+ }
35
+ return value;
36
+ }
37
+ /**
38
+ * 获取日期字符串 YYYY-MM-DD
39
+ */
40
+ function getDate(date) {
41
+ const fixedDate = fixIosDateFormat(date || new Date());
42
+ const d = new Date(fixedDate);
43
+ const year = d.getFullYear();
44
+ const month = d.getMonth() + 1;
45
+ const day = d.getDate();
46
+ return `${year}-${addZero(month)}-${addZero(day)}`;
47
+ }
48
+ /**
49
+ * 获取时间字符串 HH:MM:SS 或 HH:MM
50
+ */
51
+ function getTime(date, hideSecond = false) {
52
+ const fixedDate = fixIosDateFormat(date || new Date());
53
+ const d = new Date(fixedDate);
54
+ const hour = d.getHours();
55
+ const minute = d.getMinutes();
56
+ const second = d.getSeconds();
57
+ if (hideSecond) {
58
+ return `${addZero(hour)}:${addZero(minute)}`;
59
+ }
60
+ return `${addZero(hour)}:${addZero(minute)}:${addZero(second)}`;
61
+ }
62
+ /**
63
+ * 获取日期时间字符串
64
+ */
65
+ function getDateTime(date, hideSecond = false) {
66
+ return `${getDate(date)} ${getTime(date, hideSecond)}`;
67
+ }
68
+ /**
69
+ * 获取默认时间字符串
70
+ */
71
+ function getDefaultSecond(hideSecond = false) {
72
+ return hideSecond ? '00:00' : '00:00:00';
73
+ }
74
+ /**
75
+ * 比较日期大小
76
+ * @returns true if startDate <= endDate
77
+ */
78
+ function dateCompare(startDate, endDate) {
79
+ const start = new Date(fixIosDateFormat(startDate));
80
+ const end = new Date(fixIosDateFormat(endDate));
81
+ return start.getTime() <= end.getTime();
82
+ }
83
+ /**
84
+ * 检查日期格式是否有效
85
+ */
86
+ function checkDate(date) {
87
+ const dateReg = /((19|20)\d{2})(-|\/)\d{1,2}(-|\/)\d{1,2}/g;
88
+ return dateReg.test(date);
89
+ }
90
+ /**
91
+ * 日历类
92
+ */
93
+ class Calendar {
94
+ constructor(options = {}) {
95
+ this.date = this.getDateObj(new Date());
96
+ this.selected = options.selected || [];
97
+ this.startDate = options.startDate || '';
98
+ this.endDate = options.endDate || '';
99
+ this.range = options.range || false;
100
+ this.cleanMultipleStatus();
101
+ this.weeks = [];
102
+ this.calendar = [];
103
+ this.lastHover = false;
104
+ }
105
+ /**
106
+ * 设置日期
107
+ */
108
+ setDate(date) {
109
+ const selectDate = this.getDateObj(date);
110
+ this.getWeeks(selectDate.fullDate);
111
+ }
112
+ /**
113
+ * 清理多选状态
114
+ */
115
+ cleanMultipleStatus() {
116
+ this.multipleStatus = {
117
+ before: '',
118
+ after: '',
119
+ data: [],
120
+ fulldate: ''
121
+ };
122
+ }
123
+ /**
124
+ * 设置开始日期
125
+ */
126
+ setStartDate(startDate) {
127
+ this.startDate = startDate;
128
+ }
129
+ /**
130
+ * 设置结束日期
131
+ */
132
+ setEndDate(endDate) {
133
+ this.endDate = endDate;
134
+ }
135
+ /**
136
+ * 获取上一个月对象
137
+ */
138
+ getPreMonthObj(date) {
139
+ const fixedDate = fixIosDateFormat(date);
140
+ const d = new Date(fixedDate);
141
+ const oldMonth = d.getMonth();
142
+ d.setMonth(oldMonth - 1);
143
+ const newMonth = d.getMonth();
144
+ if (oldMonth !== 0 && newMonth - oldMonth === 0) {
145
+ d.setMonth(newMonth - 1);
146
+ }
147
+ return this.getDateObj(d);
148
+ }
149
+ /**
150
+ * 获取下一个月对象
151
+ */
152
+ getNextMonthObj(date) {
153
+ const fixedDate = fixIosDateFormat(date);
154
+ const d = new Date(fixedDate);
155
+ const oldMonth = d.getMonth();
156
+ d.setMonth(oldMonth + 1);
157
+ const newMonth = d.getMonth();
158
+ if (newMonth - oldMonth > 1) {
159
+ d.setMonth(newMonth - 1);
160
+ }
161
+ return this.getDateObj(d);
162
+ }
163
+ /**
164
+ * 获取日期对象
165
+ */
166
+ getDateObj(date) {
167
+ const fixedDate = fixIosDateFormat(date);
168
+ const d = new Date(fixedDate);
169
+ return {
170
+ fullDate: getDate(d),
171
+ year: d.getFullYear(),
172
+ month: addZero(d.getMonth() + 1),
173
+ date: addZero(d.getDate()),
174
+ day: d.getDay()
175
+ };
176
+ }
177
+ /**
178
+ * 获取上一个月日期集合
179
+ */
180
+ getPreMonthDays(amount, dateObj) {
181
+ const result = [];
182
+ for (let i = amount - 1; i >= 0; i--) {
183
+ const month = parseInt(dateObj.month) - 1;
184
+ result.push({
185
+ date: new Date(dateObj.year, month, -i).getDate(),
186
+ month: month.toString(),
187
+ disable: true
188
+ });
189
+ }
190
+ return result;
191
+ }
192
+ /**
193
+ * 获取本月日期集合
194
+ */
195
+ getCurrentMonthDays(amount, dateObj) {
196
+ const result = [];
197
+ const fullDate = this.date.fullDate;
198
+ for (let i = 1; i <= amount; i++) {
199
+ const currentDate = `${dateObj.year}-${dateObj.month}-${addZero(i)}`;
200
+ const isToday = fullDate === currentDate;
201
+ const info = this.selected && this.selected.find((item) => {
202
+ if (this.dateEqual(currentDate, item.date)) {
203
+ return item;
204
+ }
205
+ });
206
+ const multiples = this.multipleStatus.data;
207
+ let multiplesStatus = -1;
208
+ if (this.range && multiples) {
209
+ multiplesStatus = multiples.findIndex((item) => {
210
+ return this.dateEqual(item, currentDate);
211
+ });
212
+ }
213
+ const checked = multiplesStatus !== -1;
214
+ result.push({
215
+ fullDate: currentDate,
216
+ year: dateObj.year,
217
+ date: i.toString(),
218
+ day: new Date(dateObj.year, parseInt(dateObj.month) - 1, i).getDay(),
219
+ multiple: this.range ? checked : false,
220
+ beforeMultiple: this.isLogicBefore(currentDate, this.multipleStatus.before, this.multipleStatus.after),
221
+ afterMultiple: this.isLogicAfter(currentDate, this.multipleStatus.before, this.multipleStatus.after),
222
+ month: dateObj.month,
223
+ disable: !!((this.startDate && !dateCompare(this.startDate, currentDate)) || (this.endDate && !dateCompare(currentDate, this.endDate))),
224
+ isToday,
225
+ userChecked: false,
226
+ extraInfo: info
227
+ });
228
+ }
229
+ return result;
230
+ }
231
+ /**
232
+ * 获取下一个月日期集合
233
+ */
234
+ getNextMonthDays(amount, dateObj) {
235
+ const result = [];
236
+ const month = parseInt(dateObj.month) + 1;
237
+ for (let i = 1; i <= amount; i++) {
238
+ result.push({
239
+ date: i,
240
+ month: month.toString(),
241
+ disable: true
242
+ });
243
+ }
244
+ return result;
245
+ }
246
+ /**
247
+ * 获取日期详情
248
+ */
249
+ getInfo(date) {
250
+ if (!date) {
251
+ date = new Date();
252
+ }
253
+ const res = this.calendar.find(item => item.fullDate === this.getDateObj(date).fullDate);
254
+ return res ? res : this.getDateObj(date);
255
+ }
256
+ /**
257
+ * 比较日期是否相等
258
+ */
259
+ dateEqual(before, after) {
260
+ const beforeTime = new Date(fixIosDateFormat(before)).getTime();
261
+ const afterTime = new Date(fixIosDateFormat(after)).getTime();
262
+ return beforeTime === afterTime;
263
+ }
264
+ /**
265
+ * 判断是否为逻辑开始日期
266
+ */
267
+ isLogicBefore(currentDate, before, after) {
268
+ let logicBefore = before;
269
+ if (before && after) {
270
+ logicBefore = dateCompare(before, after) ? before : after;
271
+ }
272
+ return this.dateEqual(logicBefore, currentDate);
273
+ }
274
+ /**
275
+ * 判断是否为逻辑结束日期
276
+ */
277
+ isLogicAfter(currentDate, before, after) {
278
+ let logicAfter = after;
279
+ if (before && after) {
280
+ logicAfter = dateCompare(before, after) ? after : before;
281
+ }
282
+ return this.dateEqual(logicAfter, currentDate);
283
+ }
284
+ /**
285
+ * 获取日期范围内所有日期
286
+ */
287
+ getDateAll(begin, end) {
288
+ const arr = [];
289
+ const ab = begin.split('-');
290
+ const ae = end.split('-');
291
+ const db = new Date();
292
+ db.setFullYear(parseInt(ab[0]), parseInt(ab[1]) - 1, parseInt(ab[2]));
293
+ const de = new Date();
294
+ de.setFullYear(parseInt(ae[0]), parseInt(ae[1]) - 1, parseInt(ae[2]));
295
+ const unixDb = db.getTime() - 24 * 60 * 60 * 1000;
296
+ const unixDe = de.getTime() - 24 * 60 * 60 * 1000;
297
+ for (let k = unixDb; k <= unixDe;) {
298
+ k = k + 24 * 60 * 60 * 1000;
299
+ arr.push(this.getDateObj(new Date(k)).fullDate);
300
+ }
301
+ return arr;
302
+ }
303
+ /**
304
+ * 设置多选状态
305
+ */
306
+ setMultiple(fullDate) {
307
+ if (!this.range)
308
+ return;
309
+ const { before, after } = this.multipleStatus;
310
+ if (before && after) {
311
+ if (!this.lastHover) {
312
+ this.lastHover = true;
313
+ return;
314
+ }
315
+ this.multipleStatus.before = fullDate;
316
+ this.multipleStatus.after = '';
317
+ this.multipleStatus.data = [];
318
+ this.multipleStatus.fulldate = '';
319
+ this.lastHover = false;
320
+ }
321
+ else {
322
+ if (!before) {
323
+ this.multipleStatus.before = fullDate;
324
+ this.multipleStatus.after = '';
325
+ this.lastHover = false;
326
+ }
327
+ else {
328
+ this.multipleStatus.after = fullDate;
329
+ if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
330
+ this.multipleStatus.data = this.getDateAll(this.multipleStatus.before, this.multipleStatus.after);
331
+ }
332
+ else {
333
+ this.multipleStatus.data = this.getDateAll(this.multipleStatus.after, this.multipleStatus.before);
334
+ }
335
+ this.lastHover = true;
336
+ }
337
+ }
338
+ this.getWeeks(fullDate);
339
+ }
340
+ /**
341
+ * 设置悬停多选状态
342
+ */
343
+ setHoverMultiple(fullDate) {
344
+ if (!this.range || this.lastHover)
345
+ return;
346
+ const { before } = this.multipleStatus;
347
+ if (!before) {
348
+ this.multipleStatus.before = fullDate;
349
+ }
350
+ else {
351
+ this.multipleStatus.after = fullDate;
352
+ if (dateCompare(this.multipleStatus.before, this.multipleStatus.after)) {
353
+ this.multipleStatus.data = this.getDateAll(this.multipleStatus.before, this.multipleStatus.after);
354
+ }
355
+ else {
356
+ this.multipleStatus.data = this.getDateAll(this.multipleStatus.after, this.multipleStatus.before);
357
+ }
358
+ }
359
+ this.getWeeks(fullDate);
360
+ }
361
+ /**
362
+ * 设置默认多选状态
363
+ */
364
+ setDefaultMultiple(before, after) {
365
+ this.multipleStatus.before = before;
366
+ this.multipleStatus.after = after;
367
+ if (before && after) {
368
+ if (dateCompare(before, after)) {
369
+ this.multipleStatus.data = this.getDateAll(before, after);
370
+ this.getWeeks(after);
371
+ }
372
+ else {
373
+ this.multipleStatus.data = this.getDateAll(after, before);
374
+ this.getWeeks(before);
375
+ }
376
+ }
377
+ }
378
+ /**
379
+ * 获取每周数据
380
+ */
381
+ getWeeks(dateData) {
382
+ const { year, month } = this.getDateObj(dateData);
383
+ const preMonthDayAmount = new Date(year, parseInt(month) - 1, 1).getDay();
384
+ const preMonthDays = this.getPreMonthDays(preMonthDayAmount, this.getDateObj(dateData));
385
+ const currentMonthDayAmount = new Date(year, parseInt(month), 0).getDate();
386
+ const currentMonthDays = this.getCurrentMonthDays(currentMonthDayAmount, this.getDateObj(dateData));
387
+ const nextMonthDayAmount = 42 - preMonthDayAmount - currentMonthDayAmount;
388
+ const nextMonthDays = this.getNextMonthDays(nextMonthDayAmount, this.getDateObj(dateData));
389
+ const calendarDays = [...preMonthDays, ...currentMonthDays, ...nextMonthDays];
390
+ const weeks = new Array(6);
391
+ for (let i = 0; i < calendarDays.length; i++) {
392
+ const index = Math.floor(i / 7);
393
+ if (!weeks[index]) {
394
+ weeks[index] = new Array(7);
395
+ }
396
+ weeks[index][i % 7] = calendarDays[i];
397
+ }
398
+ this.calendar = currentMonthDays;
399
+ this.weeks = weeks;
400
+ }
401
+ }
402
+ exports.Calendar = Calendar;
403
+
404
+ //# sourceMappingURL=util.js.map