@yoka-ui/ui 1.0.1

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 (488) hide show
  1. package/@Docs-yoka/exports.generated.md +93 -0
  2. package/@Docs-yoka/llms.txt +23 -0
  3. package/README.md +113 -0
  4. package/dist/es/Themes/InputTheme/index.d.ts +6 -0
  5. package/dist/es/Themes/InputTheme/index.js +22 -0
  6. package/dist/es/Themes/InputTheme/index.js.map +7 -0
  7. package/dist/es/Themes/TableTheme/index.d.ts +7 -0
  8. package/dist/es/Themes/TableTheme/index.js +31 -0
  9. package/dist/es/Themes/TableTheme/index.js.map +7 -0
  10. package/dist/es/Themes/TableTheme/index.less +46 -0
  11. package/dist/es/assets/image/YKUI-logo.png +0 -0
  12. package/dist/es/assets/less/ant-reset.less +402 -0
  13. package/dist/es/assets/less/index.less +1 -0
  14. package/dist/es/assets/less/variables.less +16 -0
  15. package/dist/es/business/AiChat/MarkdownRender.d.ts +9 -0
  16. package/dist/es/business/AiChat/MarkdownRender.js +72 -0
  17. package/dist/es/business/AiChat/MarkdownRender.js.map +7 -0
  18. package/dist/es/business/AiChat/index.d.ts +16 -0
  19. package/dist/es/business/AiChat/index.js +733 -0
  20. package/dist/es/business/AiChat/index.js.map +7 -0
  21. package/dist/es/business/AiChat/intentRecognizer.d.ts +33 -0
  22. package/dist/es/business/AiChat/intentRecognizer.js +166 -0
  23. package/dist/es/business/AiChat/intentRecognizer.js.map +7 -0
  24. package/dist/es/business/AiChat/navigationManager.d.ts +94 -0
  25. package/dist/es/business/AiChat/navigationManager.js +208 -0
  26. package/dist/es/business/AiChat/navigationManager.js.map +7 -0
  27. package/dist/es/business/AiChat/sse.d.ts +16 -0
  28. package/dist/es/business/AiChat/sse.js +171 -0
  29. package/dist/es/business/AiChat/sse.js.map +7 -0
  30. package/dist/es/business/AiChat/type.d.ts +156 -0
  31. package/dist/es/business/AiChat/type.js +1 -0
  32. package/dist/es/business/AiChat/type.js.map +7 -0
  33. package/dist/es/business/AiChat/useAiChat.d.ts +2 -0
  34. package/dist/es/business/AiChat/useAiChat.js +268 -0
  35. package/dist/es/business/AiChat/useAiChat.js.map +7 -0
  36. package/dist/es/business/AiChat/useTaskWorkflow.d.ts +25 -0
  37. package/dist/es/business/AiChat/useTaskWorkflow.js +196 -0
  38. package/dist/es/business/AiChat/useTaskWorkflow.js.map +7 -0
  39. package/dist/es/business/DrawerPageInfo/index.d.ts +35 -0
  40. package/dist/es/business/DrawerPageInfo/index.js +133 -0
  41. package/dist/es/business/DrawerPageInfo/index.js.map +7 -0
  42. package/dist/es/business/DrawerPageInfo/index.module.less +87 -0
  43. package/dist/es/business/DrawerPageInfo/test.png +0 -0
  44. package/dist/es/business/Editor/index.d.ts +11 -0
  45. package/dist/es/business/Editor/index.js +86 -0
  46. package/dist/es/business/Editor/index.js.map +7 -0
  47. package/dist/es/business/Editor/index.less +31 -0
  48. package/dist/es/business/Empty/empty.png +0 -0
  49. package/dist/es/business/Empty/index.d.ts +19 -0
  50. package/dist/es/business/Empty/index.js +51 -0
  51. package/dist/es/business/Empty/index.js.map +7 -0
  52. package/dist/es/business/ModCommonFilter/assets/images/empty.png +0 -0
  53. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
  54. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js +51 -0
  55. package/dist/es/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
  56. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
  57. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js +51 -0
  58. package/dist/es/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
  59. package/dist/es/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
  60. package/dist/es/business/ModCommonFilter/components/FilterButton/index.js +30 -0
  61. package/dist/es/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
  62. package/dist/es/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
  63. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
  64. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js +74 -0
  65. package/dist/es/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
  66. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
  67. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js +216 -0
  68. package/dist/es/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
  69. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
  70. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js +102 -0
  71. package/dist/es/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
  72. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
  73. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js +71 -0
  74. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
  75. package/dist/es/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
  76. package/dist/es/business/ModCommonFilter/index.d.ts +53 -0
  77. package/dist/es/business/ModCommonFilter/index.js +129 -0
  78. package/dist/es/business/ModCommonFilter/index.js.map +7 -0
  79. package/dist/es/business/ModCommonFilter/index.module.less +7 -0
  80. package/dist/es/business/ModCommonFilter/typing.d.ts +20 -0
  81. package/dist/es/business/ModCommonFilter/typing.js +1 -0
  82. package/dist/es/business/ModCommonFilter/typing.js.map +7 -0
  83. package/dist/es/business/YkPorjectSelect/icon-product.png +0 -0
  84. package/dist/es/business/YkPorjectSelect/index.d.ts +51 -0
  85. package/dist/es/business/YkPorjectSelect/index.js +260 -0
  86. package/dist/es/business/YkPorjectSelect/index.js.map +7 -0
  87. package/dist/es/business/YkPorjectSelect/index.module.less +334 -0
  88. package/dist/es/business/YkPorjectSelect/product-close.png +0 -0
  89. package/dist/es/components/Clock/index.d.ts +19 -0
  90. package/dist/es/components/Clock/index.js +55 -0
  91. package/dist/es/components/Clock/index.js.map +7 -0
  92. package/dist/es/components/DebounceInput/index.d.ts +16 -0
  93. package/dist/es/components/DebounceInput/index.js +77 -0
  94. package/dist/es/components/DebounceInput/index.js.map +7 -0
  95. package/dist/es/components/DebounceInput/index.module.less +23 -0
  96. package/dist/es/components/MultipleSelect/index.d.ts +23 -0
  97. package/dist/es/components/MultipleSelect/index.js +249 -0
  98. package/dist/es/components/MultipleSelect/index.js.map +7 -0
  99. package/dist/es/components/MultipleSelect/index.module.less +174 -0
  100. package/dist/es/components/NumericInput/index.d.ts +19 -0
  101. package/dist/es/components/NumericInput/index.js +56 -0
  102. package/dist/es/components/NumericInput/index.js.map +7 -0
  103. package/dist/es/components/RefreshButton/index.d.ts +8 -0
  104. package/dist/es/components/RefreshButton/index.js +21 -0
  105. package/dist/es/components/RefreshButton/index.js.map +7 -0
  106. package/dist/es/components/SearchWithHistory/index.d.ts +21 -0
  107. package/dist/es/components/SearchWithHistory/index.js +115 -0
  108. package/dist/es/components/SearchWithHistory/index.js.map +7 -0
  109. package/dist/es/components/SearchWithHistory/index.module.less +64 -0
  110. package/dist/es/components/TextWithInput/index.d.ts +15 -0
  111. package/dist/es/components/TextWithInput/index.js +35 -0
  112. package/dist/es/components/TextWithInput/index.js.map +7 -0
  113. package/dist/es/components/TextWithToolTip/index.d.ts +17 -0
  114. package/dist/es/components/TextWithToolTip/index.js +118 -0
  115. package/dist/es/components/TextWithToolTip/index.js.map +7 -0
  116. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
  117. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js +161 -0
  118. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
  119. package/dist/es/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
  120. package/dist/es/components/TreeTransfer/index.d.ts +28 -0
  121. package/dist/es/components/TreeTransfer/index.js +210 -0
  122. package/dist/es/components/TreeTransfer/index.js.map +7 -0
  123. package/dist/es/components/TreeTransfer/index.less +69 -0
  124. package/dist/es/components/TreeTransfer/types.d.ts +122 -0
  125. package/dist/es/components/TreeTransfer/types.js +6 -0
  126. package/dist/es/components/TreeTransfer/types.js.map +7 -0
  127. package/dist/es/components/TreeTransfer/utils/index.d.ts +120 -0
  128. package/dist/es/components/TreeTransfer/utils/index.js +195 -0
  129. package/dist/es/components/TreeTransfer/utils/index.js.map +7 -0
  130. package/dist/es/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
  131. package/dist/es/components/YkDateRangePicker/index.d.ts +61 -0
  132. package/dist/es/components/YkDateRangePicker/index.js +317 -0
  133. package/dist/es/components/YkDateRangePicker/index.js.map +7 -0
  134. package/dist/es/components/YkDateRangePicker/index.module.less +304 -0
  135. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
  136. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +193 -0
  137. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
  138. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
  139. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +576 -0
  140. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
  141. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
  142. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +55 -0
  143. package/dist/es/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
  144. package/dist/es/components/YkRangeDateWithVS/index.d.ts +62 -0
  145. package/dist/es/components/YkRangeDateWithVS/index.js +130 -0
  146. package/dist/es/components/YkRangeDateWithVS/index.js.map +7 -0
  147. package/dist/es/components/YkRangeDateWithVS/index.module.less +566 -0
  148. package/dist/es/components/YkRangeDateWithVS/styles.d.ts +2 -0
  149. package/dist/es/components/YkRangeDateWithVS/styles.js +18 -0
  150. package/dist/es/components/YkRangeDateWithVS/styles.js.map +7 -0
  151. package/dist/es/components/YkRangeDateWithVS/typing.d.ts +15 -0
  152. package/dist/es/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
  153. package/dist/es/components/YkRangeTimeWithRecent/constants.js +288 -0
  154. package/dist/es/components/YkRangeTimeWithRecent/constants.js.map +7 -0
  155. package/dist/es/components/YkRangeTimeWithRecent/index.d.ts +26 -0
  156. package/dist/es/components/YkRangeTimeWithRecent/index.js +647 -0
  157. package/dist/es/components/YkRangeTimeWithRecent/index.js.map +7 -0
  158. package/dist/es/components/YkRangeTimeWithRecent/index.module.less +263 -0
  159. package/dist/es/creative/ButtonRadioWithInfo/index.d.ts +17 -0
  160. package/dist/es/creative/ButtonRadioWithInfo/index.js +103 -0
  161. package/dist/es/creative/ButtonRadioWithInfo/index.js.map +7 -0
  162. package/dist/es/creative/ButtonRadioWithInfo/index.less +106 -0
  163. package/dist/es/creative/ButtonWithProgress/index.d.ts +11 -0
  164. package/dist/es/creative/ButtonWithProgress/index.js +79 -0
  165. package/dist/es/creative/ButtonWithProgress/index.js.map +7 -0
  166. package/dist/es/creative/ButtonWithProgress/index.less +66 -0
  167. package/dist/es/global.less +12 -0
  168. package/dist/es/index.d.ts +43 -0
  169. package/dist/es/index.js +87 -0
  170. package/dist/es/index.js.map +7 -0
  171. package/dist/es/index.less +35 -0
  172. package/dist/es/layout/FlexGrid/index.d.ts +25 -0
  173. package/dist/es/layout/FlexGrid/index.js +63 -0
  174. package/dist/es/layout/FlexGrid/index.js.map +7 -0
  175. package/dist/es/layout/YkContainer/index.d.ts +27 -0
  176. package/dist/es/layout/YkContainer/index.js +79 -0
  177. package/dist/es/layout/YkContainer/index.js.map +7 -0
  178. package/dist/es/layout/YkDrawer/index.d.ts +22 -0
  179. package/dist/es/layout/YkDrawer/index.js +160 -0
  180. package/dist/es/layout/YkDrawer/index.js.map +7 -0
  181. package/dist/es/layout/YkDrawer/index.module.less +45 -0
  182. package/dist/es/ui/LabelSelect/demo.d.ts +3 -0
  183. package/dist/es/ui/LabelSelect/demo.js +83 -0
  184. package/dist/es/ui/LabelSelect/demo.js.map +7 -0
  185. package/dist/es/ui/LabelSelect/index.d.ts +41 -0
  186. package/dist/es/ui/LabelSelect/index.js +136 -0
  187. package/dist/es/ui/LabelSelect/index.js.map +7 -0
  188. package/dist/es/ui/LogicOperator/index.d.ts +10 -0
  189. package/dist/es/ui/LogicOperator/index.js +12 -0
  190. package/dist/es/ui/LogicOperator/index.js.map +7 -0
  191. package/dist/es/ui/LogicOperator/index.module.less +97 -0
  192. package/dist/es/ui/YkButton/index.d.ts +9 -0
  193. package/dist/es/ui/YkButton/index.js +59 -0
  194. package/dist/es/ui/YkButton/index.js.map +7 -0
  195. package/dist/es/ui/YkCard/index.d.ts +4 -0
  196. package/dist/es/ui/YkCard/index.js +79 -0
  197. package/dist/es/ui/YkCard/index.js.map +7 -0
  198. package/dist/es/ui/YkCard/index.module.less +30 -0
  199. package/dist/es/ui/YkCheckbox/index.d.ts +4 -0
  200. package/dist/es/ui/YkCheckbox/index.js +45 -0
  201. package/dist/es/ui/YkCheckbox/index.js.map +7 -0
  202. package/dist/es/ui/YkCheckbox/index.module.less +22 -0
  203. package/dist/es/ui/YkDescriptions/index.d.ts +4 -0
  204. package/dist/es/ui/YkDescriptions/index.js +41 -0
  205. package/dist/es/ui/YkDescriptions/index.js.map +7 -0
  206. package/dist/es/ui/YkPagination/index.d.ts +4 -0
  207. package/dist/es/ui/YkPagination/index.js +63 -0
  208. package/dist/es/ui/YkPagination/index.js.map +7 -0
  209. package/dist/es/ui/YkPagination/index.module.less +22 -0
  210. package/dist/es/ui/YkRadio/index.d.ts +4 -0
  211. package/dist/es/ui/YkRadio/index.js +51 -0
  212. package/dist/es/ui/YkRadio/index.js.map +7 -0
  213. package/dist/es/ui/YkRadio/index.module.less +22 -0
  214. package/dist/es/ui/YkRadioBtnSpecial/index.d.ts +15 -0
  215. package/dist/es/ui/YkRadioBtnSpecial/index.js +23 -0
  216. package/dist/es/ui/YkRadioBtnSpecial/index.js.map +7 -0
  217. package/dist/es/ui/YkRadioBtnSpecial/index.module.less +112 -0
  218. package/dist/es/ui/YkSegmented/index.d.ts +4 -0
  219. package/dist/es/ui/YkSegmented/index.js +41 -0
  220. package/dist/es/ui/YkSegmented/index.js.map +7 -0
  221. package/dist/es/ui/YkSelect/index.d.ts +7 -0
  222. package/dist/es/ui/YkSelect/index.js +54 -0
  223. package/dist/es/ui/YkSelect/index.js.map +7 -0
  224. package/dist/es/ui/YkSpin/index.d.ts +4 -0
  225. package/dist/es/ui/YkSpin/index.js +41 -0
  226. package/dist/es/ui/YkSpin/index.js.map +7 -0
  227. package/dist/es/ui/YkStatistic/index.d.ts +4 -0
  228. package/dist/es/ui/YkStatistic/index.js +41 -0
  229. package/dist/es/ui/YkStatistic/index.js.map +7 -0
  230. package/dist/es/ui/YkSwitch/index.d.ts +4 -0
  231. package/dist/es/ui/YkSwitch/index.js +51 -0
  232. package/dist/es/ui/YkSwitch/index.js.map +7 -0
  233. package/dist/es/ui/YkTabs/index.d.ts +12 -0
  234. package/dist/es/ui/YkTabs/index.js +75 -0
  235. package/dist/es/ui/YkTabs/index.js.map +7 -0
  236. package/dist/es/ui/YkTabs/index.module.less +11 -0
  237. package/dist/es/ui/YkTooltip/index.d.ts +4 -0
  238. package/dist/es/ui/YkTooltip/index.js +50 -0
  239. package/dist/es/ui/YkTooltip/index.js.map +7 -0
  240. package/dist/es/utils/styleUtils.d.ts +18 -0
  241. package/dist/es/utils/styleUtils.js +57 -0
  242. package/dist/es/utils/styleUtils.js.map +7 -0
  243. package/dist/es/utils/ykStorybookDoc.d.ts +17 -0
  244. package/dist/es/utils/ykStorybookDoc.js +18 -0
  245. package/dist/es/utils/ykStorybookDoc.js.map +7 -0
  246. package/dist/lib/Themes/InputTheme/index.d.ts +6 -0
  247. package/dist/lib/Themes/InputTheme/index.js +52 -0
  248. package/dist/lib/Themes/InputTheme/index.js.map +7 -0
  249. package/dist/lib/Themes/TableTheme/index.d.ts +7 -0
  250. package/dist/lib/Themes/TableTheme/index.js +61 -0
  251. package/dist/lib/Themes/TableTheme/index.js.map +7 -0
  252. package/dist/lib/Themes/TableTheme/index.less +46 -0
  253. package/dist/lib/assets/image/YKUI-logo.png +0 -0
  254. package/dist/lib/assets/less/ant-reset.less +402 -0
  255. package/dist/lib/assets/less/index.less +1 -0
  256. package/dist/lib/assets/less/variables.less +16 -0
  257. package/dist/lib/business/AiChat/MarkdownRender.d.ts +9 -0
  258. package/dist/lib/business/AiChat/MarkdownRender.js +102 -0
  259. package/dist/lib/business/AiChat/MarkdownRender.js.map +7 -0
  260. package/dist/lib/business/AiChat/index.d.ts +16 -0
  261. package/dist/lib/business/AiChat/index.js +723 -0
  262. package/dist/lib/business/AiChat/index.js.map +7 -0
  263. package/dist/lib/business/AiChat/intentRecognizer.d.ts +33 -0
  264. package/dist/lib/business/AiChat/intentRecognizer.js +193 -0
  265. package/dist/lib/business/AiChat/intentRecognizer.js.map +7 -0
  266. package/dist/lib/business/AiChat/navigationManager.d.ts +94 -0
  267. package/dist/lib/business/AiChat/navigationManager.js +214 -0
  268. package/dist/lib/business/AiChat/navigationManager.js.map +7 -0
  269. package/dist/lib/business/AiChat/sse.d.ts +16 -0
  270. package/dist/lib/business/AiChat/sse.js +171 -0
  271. package/dist/lib/business/AiChat/sse.js.map +7 -0
  272. package/dist/lib/business/AiChat/type.d.ts +156 -0
  273. package/dist/lib/business/AiChat/type.js +18 -0
  274. package/dist/lib/business/AiChat/type.js.map +7 -0
  275. package/dist/lib/business/AiChat/useAiChat.d.ts +2 -0
  276. package/dist/lib/business/AiChat/useAiChat.js +252 -0
  277. package/dist/lib/business/AiChat/useAiChat.js.map +7 -0
  278. package/dist/lib/business/AiChat/useTaskWorkflow.d.ts +25 -0
  279. package/dist/lib/business/AiChat/useTaskWorkflow.js +182 -0
  280. package/dist/lib/business/AiChat/useTaskWorkflow.js.map +7 -0
  281. package/dist/lib/business/DrawerPageInfo/index.d.ts +35 -0
  282. package/dist/lib/business/DrawerPageInfo/index.js +163 -0
  283. package/dist/lib/business/DrawerPageInfo/index.js.map +7 -0
  284. package/dist/lib/business/DrawerPageInfo/index.module.less +87 -0
  285. package/dist/lib/business/DrawerPageInfo/test.png +0 -0
  286. package/dist/lib/business/Editor/index.d.ts +11 -0
  287. package/dist/lib/business/Editor/index.js +99 -0
  288. package/dist/lib/business/Editor/index.js.map +7 -0
  289. package/dist/lib/business/Editor/index.less +31 -0
  290. package/dist/lib/business/Empty/empty.png +0 -0
  291. package/dist/lib/business/Empty/index.d.ts +19 -0
  292. package/dist/lib/business/Empty/index.js +65 -0
  293. package/dist/lib/business/Empty/index.js.map +7 -0
  294. package/dist/lib/business/ModCommonFilter/assets/images/empty.png +0 -0
  295. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.d.ts +13 -0
  296. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js +50 -0
  297. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconClose.js.map +7 -0
  298. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.d.ts +13 -0
  299. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js +50 -0
  300. package/dist/lib/business/ModCommonFilter/components/FilterButton/IconXiala.js.map +7 -0
  301. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.d.ts +25 -0
  302. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js +60 -0
  303. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.js.map +7 -0
  304. package/dist/lib/business/ModCommonFilter/components/FilterButton/index.module.less +97 -0
  305. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.d.ts +18 -0
  306. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js +69 -0
  307. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Category.js.map +7 -0
  308. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.d.ts +37 -0
  309. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js +211 -0
  310. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Content.js.map +7 -0
  311. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.d.ts +26 -0
  312. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js +97 -0
  313. package/dist/lib/business/ModCommonFilter/components/PopoverContent/Selected.js.map +7 -0
  314. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.d.ts +51 -0
  315. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js +101 -0
  316. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.js.map +7 -0
  317. package/dist/lib/business/ModCommonFilter/components/PopoverContent/index.module.less +260 -0
  318. package/dist/lib/business/ModCommonFilter/index.d.ts +53 -0
  319. package/dist/lib/business/ModCommonFilter/index.js +143 -0
  320. package/dist/lib/business/ModCommonFilter/index.js.map +7 -0
  321. package/dist/lib/business/ModCommonFilter/index.module.less +7 -0
  322. package/dist/lib/business/ModCommonFilter/typing.d.ts +20 -0
  323. package/dist/lib/business/ModCommonFilter/typing.js +18 -0
  324. package/dist/lib/business/ModCommonFilter/typing.js.map +7 -0
  325. package/dist/lib/business/YkPorjectSelect/icon-product.png +0 -0
  326. package/dist/lib/business/YkPorjectSelect/index.d.ts +51 -0
  327. package/dist/lib/business/YkPorjectSelect/index.js +235 -0
  328. package/dist/lib/business/YkPorjectSelect/index.js.map +7 -0
  329. package/dist/lib/business/YkPorjectSelect/index.module.less +334 -0
  330. package/dist/lib/business/YkPorjectSelect/product-close.png +0 -0
  331. package/dist/lib/components/Clock/index.d.ts +19 -0
  332. package/dist/lib/components/Clock/index.js +85 -0
  333. package/dist/lib/components/Clock/index.js.map +7 -0
  334. package/dist/lib/components/DebounceInput/index.d.ts +16 -0
  335. package/dist/lib/components/DebounceInput/index.js +107 -0
  336. package/dist/lib/components/DebounceInput/index.js.map +7 -0
  337. package/dist/lib/components/DebounceInput/index.module.less +23 -0
  338. package/dist/lib/components/MultipleSelect/index.d.ts +23 -0
  339. package/dist/lib/components/MultipleSelect/index.js +279 -0
  340. package/dist/lib/components/MultipleSelect/index.js.map +7 -0
  341. package/dist/lib/components/MultipleSelect/index.module.less +174 -0
  342. package/dist/lib/components/NumericInput/index.d.ts +19 -0
  343. package/dist/lib/components/NumericInput/index.js +67 -0
  344. package/dist/lib/components/NumericInput/index.js.map +7 -0
  345. package/dist/lib/components/RefreshButton/index.d.ts +8 -0
  346. package/dist/lib/components/RefreshButton/index.js +51 -0
  347. package/dist/lib/components/RefreshButton/index.js.map +7 -0
  348. package/dist/lib/components/SearchWithHistory/index.d.ts +21 -0
  349. package/dist/lib/components/SearchWithHistory/index.js +145 -0
  350. package/dist/lib/components/SearchWithHistory/index.js.map +7 -0
  351. package/dist/lib/components/SearchWithHistory/index.module.less +64 -0
  352. package/dist/lib/components/TextWithInput/index.d.ts +15 -0
  353. package/dist/lib/components/TextWithInput/index.js +65 -0
  354. package/dist/lib/components/TextWithInput/index.js.map +7 -0
  355. package/dist/lib/components/TextWithToolTip/index.d.ts +17 -0
  356. package/dist/lib/components/TextWithToolTip/index.js +134 -0
  357. package/dist/lib/components/TextWithToolTip/index.js.map +7 -0
  358. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.d.ts +28 -0
  359. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js +191 -0
  360. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.js.map +7 -0
  361. package/dist/lib/components/TreeTransfer/components/TreeTransferPanel/index.less +151 -0
  362. package/dist/lib/components/TreeTransfer/index.d.ts +28 -0
  363. package/dist/lib/components/TreeTransfer/index.js +214 -0
  364. package/dist/lib/components/TreeTransfer/index.js.map +7 -0
  365. package/dist/lib/components/TreeTransfer/index.less +69 -0
  366. package/dist/lib/components/TreeTransfer/types.d.ts +122 -0
  367. package/dist/lib/components/TreeTransfer/types.js +30 -0
  368. package/dist/lib/components/TreeTransfer/types.js.map +7 -0
  369. package/dist/lib/components/TreeTransfer/utils/index.d.ts +120 -0
  370. package/dist/lib/components/TreeTransfer/utils/index.js +208 -0
  371. package/dist/lib/components/TreeTransfer/utils/index.js.map +7 -0
  372. package/dist/lib/components/YkDateRangePicker/YkDateRangePicker.mdx +180 -0
  373. package/dist/lib/components/YkDateRangePicker/index.d.ts +61 -0
  374. package/dist/lib/components/YkDateRangePicker/index.js +338 -0
  375. package/dist/lib/components/YkDateRangePicker/index.js.map +7 -0
  376. package/dist/lib/components/YkDateRangePicker/index.module.less +304 -0
  377. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.d.ts +16 -0
  378. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js +223 -0
  379. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSCompare.js.map +7 -0
  380. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.d.ts +31 -0
  381. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js +587 -0
  382. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSRange.js.map +7 -0
  383. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.d.ts +16 -0
  384. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js +85 -0
  385. package/dist/lib/components/YkRangeDateWithVS/YkRangeDateWithVSSelect.js.map +7 -0
  386. package/dist/lib/components/YkRangeDateWithVS/index.d.ts +62 -0
  387. package/dist/lib/components/YkRangeDateWithVS/index.js +140 -0
  388. package/dist/lib/components/YkRangeDateWithVS/index.js.map +7 -0
  389. package/dist/lib/components/YkRangeDateWithVS/index.module.less +566 -0
  390. package/dist/lib/components/YkRangeDateWithVS/styles.d.ts +2 -0
  391. package/dist/lib/components/YkRangeDateWithVS/styles.js +48 -0
  392. package/dist/lib/components/YkRangeDateWithVS/styles.js.map +7 -0
  393. package/dist/lib/components/YkRangeDateWithVS/typing.d.ts +15 -0
  394. package/dist/lib/components/YkRangeTimeWithRecent/constants.d.ts +48 -0
  395. package/dist/lib/components/YkRangeTimeWithRecent/constants.js +333 -0
  396. package/dist/lib/components/YkRangeTimeWithRecent/constants.js.map +7 -0
  397. package/dist/lib/components/YkRangeTimeWithRecent/index.d.ts +26 -0
  398. package/dist/lib/components/YkRangeTimeWithRecent/index.js +647 -0
  399. package/dist/lib/components/YkRangeTimeWithRecent/index.js.map +7 -0
  400. package/dist/lib/components/YkRangeTimeWithRecent/index.module.less +263 -0
  401. package/dist/lib/creative/ButtonRadioWithInfo/index.d.ts +17 -0
  402. package/dist/lib/creative/ButtonRadioWithInfo/index.js +102 -0
  403. package/dist/lib/creative/ButtonRadioWithInfo/index.js.map +7 -0
  404. package/dist/lib/creative/ButtonRadioWithInfo/index.less +106 -0
  405. package/dist/lib/creative/ButtonWithProgress/index.d.ts +11 -0
  406. package/dist/lib/creative/ButtonWithProgress/index.js +70 -0
  407. package/dist/lib/creative/ButtonWithProgress/index.js.map +7 -0
  408. package/dist/lib/creative/ButtonWithProgress/index.less +66 -0
  409. package/dist/lib/global.less +12 -0
  410. package/dist/lib/index.d.ts +43 -0
  411. package/dist/lib/index.js +161 -0
  412. package/dist/lib/index.js.map +7 -0
  413. package/dist/lib/index.less +35 -0
  414. package/dist/lib/layout/FlexGrid/index.d.ts +25 -0
  415. package/dist/lib/layout/FlexGrid/index.js +77 -0
  416. package/dist/lib/layout/FlexGrid/index.js.map +7 -0
  417. package/dist/lib/layout/YkContainer/index.d.ts +27 -0
  418. package/dist/lib/layout/YkContainer/index.js +79 -0
  419. package/dist/lib/layout/YkContainer/index.js.map +7 -0
  420. package/dist/lib/layout/YkDrawer/index.d.ts +22 -0
  421. package/dist/lib/layout/YkDrawer/index.js +152 -0
  422. package/dist/lib/layout/YkDrawer/index.js.map +7 -0
  423. package/dist/lib/layout/YkDrawer/index.module.less +45 -0
  424. package/dist/lib/ui/LabelSelect/demo.d.ts +3 -0
  425. package/dist/lib/ui/LabelSelect/demo.js +113 -0
  426. package/dist/lib/ui/LabelSelect/demo.js.map +7 -0
  427. package/dist/lib/ui/LabelSelect/index.d.ts +41 -0
  428. package/dist/lib/ui/LabelSelect/index.js +124 -0
  429. package/dist/lib/ui/LabelSelect/index.js.map +7 -0
  430. package/dist/lib/ui/LogicOperator/index.d.ts +10 -0
  431. package/dist/lib/ui/LogicOperator/index.js +42 -0
  432. package/dist/lib/ui/LogicOperator/index.js.map +7 -0
  433. package/dist/lib/ui/LogicOperator/index.module.less +97 -0
  434. package/dist/lib/ui/YkButton/index.d.ts +9 -0
  435. package/dist/lib/ui/YkButton/index.js +55 -0
  436. package/dist/lib/ui/YkButton/index.js.map +7 -0
  437. package/dist/lib/ui/YkCard/index.d.ts +4 -0
  438. package/dist/lib/ui/YkCard/index.js +76 -0
  439. package/dist/lib/ui/YkCard/index.js.map +7 -0
  440. package/dist/lib/ui/YkCard/index.module.less +30 -0
  441. package/dist/lib/ui/YkCheckbox/index.d.ts +4 -0
  442. package/dist/lib/ui/YkCheckbox/index.js +42 -0
  443. package/dist/lib/ui/YkCheckbox/index.js.map +7 -0
  444. package/dist/lib/ui/YkCheckbox/index.module.less +22 -0
  445. package/dist/lib/ui/YkDescriptions/index.d.ts +4 -0
  446. package/dist/lib/ui/YkDescriptions/index.js +41 -0
  447. package/dist/lib/ui/YkDescriptions/index.js.map +7 -0
  448. package/dist/lib/ui/YkPagination/index.d.ts +4 -0
  449. package/dist/lib/ui/YkPagination/index.js +60 -0
  450. package/dist/lib/ui/YkPagination/index.js.map +7 -0
  451. package/dist/lib/ui/YkPagination/index.module.less +22 -0
  452. package/dist/lib/ui/YkRadio/index.d.ts +4 -0
  453. package/dist/lib/ui/YkRadio/index.js +51 -0
  454. package/dist/lib/ui/YkRadio/index.js.map +7 -0
  455. package/dist/lib/ui/YkRadio/index.module.less +22 -0
  456. package/dist/lib/ui/YkRadioBtnSpecial/index.d.ts +15 -0
  457. package/dist/lib/ui/YkRadioBtnSpecial/index.js +53 -0
  458. package/dist/lib/ui/YkRadioBtnSpecial/index.js.map +7 -0
  459. package/dist/lib/ui/YkRadioBtnSpecial/index.module.less +112 -0
  460. package/dist/lib/ui/YkSegmented/index.d.ts +4 -0
  461. package/dist/lib/ui/YkSegmented/index.js +41 -0
  462. package/dist/lib/ui/YkSegmented/index.js.map +7 -0
  463. package/dist/lib/ui/YkSelect/index.d.ts +7 -0
  464. package/dist/lib/ui/YkSelect/index.js +54 -0
  465. package/dist/lib/ui/YkSelect/index.js.map +7 -0
  466. package/dist/lib/ui/YkSpin/index.d.ts +4 -0
  467. package/dist/lib/ui/YkSpin/index.js +41 -0
  468. package/dist/lib/ui/YkSpin/index.js.map +7 -0
  469. package/dist/lib/ui/YkStatistic/index.d.ts +4 -0
  470. package/dist/lib/ui/YkStatistic/index.js +41 -0
  471. package/dist/lib/ui/YkStatistic/index.js.map +7 -0
  472. package/dist/lib/ui/YkSwitch/index.d.ts +4 -0
  473. package/dist/lib/ui/YkSwitch/index.js +51 -0
  474. package/dist/lib/ui/YkSwitch/index.js.map +7 -0
  475. package/dist/lib/ui/YkTabs/index.d.ts +12 -0
  476. package/dist/lib/ui/YkTabs/index.js +70 -0
  477. package/dist/lib/ui/YkTabs/index.js.map +7 -0
  478. package/dist/lib/ui/YkTabs/index.module.less +11 -0
  479. package/dist/lib/ui/YkTooltip/index.d.ts +4 -0
  480. package/dist/lib/ui/YkTooltip/index.js +45 -0
  481. package/dist/lib/ui/YkTooltip/index.js.map +7 -0
  482. package/dist/lib/utils/styleUtils.d.ts +18 -0
  483. package/dist/lib/utils/styleUtils.js +84 -0
  484. package/dist/lib/utils/styleUtils.js.map +7 -0
  485. package/dist/lib/utils/ykStorybookDoc.d.ts +17 -0
  486. package/dist/lib/utils/ykStorybookDoc.js +41 -0
  487. package/dist/lib/utils/ykStorybookDoc.js.map +7 -0
  488. package/package.json +148 -0
@@ -0,0 +1,180 @@
1
+ import { Meta, ArgTypes } from '@storybook/addon-docs/blocks';
2
+ import * as YkDateRangePickerStories from './index.stories';
3
+
4
+ <Meta of={YkDateRangePickerStories} />
5
+
6
+ # YkDateRangePicker 事件日期范围选择器
7
+
8
+ 事件类日期范围选择器,支持**紧凑预设标签**与**完整 RangePicker** 双模式切换,提供多项快捷预设与受控逻辑。
9
+
10
+ ## ✨ 核心特性
11
+
12
+ - 🎯 **双模式交互**:紧凑模式(预设标签)↔ 完整模式(RangePicker)无缝切换
13
+ - ⚡ **智能预设**:内置 8 个常用时间快捷选项,2 列网格布局
14
+ - 🎨 **视觉反馈**:当前激活项高亮显示,蓝色背景标识选中状态
15
+ - 🤖 **智能默认**:无初始值时自动选中「近5分钟」预设
16
+ - 🔄 **受控组件**:精准区分「用户操作」与「外部赋值」,仅用户操作触发 `onChange`
17
+ - 🔒 **日期限制**:仅允许选择近 7 天(含今天)的时间范围
18
+ - 🗑️ **清除支持**:`allowClear` 一键清除,清除后自动重置预设状态
19
+ - 🔧 **ref 控制**:通过 `forwardRef` 暴露 `toggleFirstPreset()` 方法,支持外部强制切换预设
20
+
21
+ ## 📦 依赖
22
+
23
+ ```json
24
+ {
25
+ "react": "^18.3.1",
26
+ "antd": "^5.29.2",
27
+ "dayjs": "^1.x",
28
+ "classnames": "^2.5.1",
29
+ "@ant-design/icons": "^5.6.1"
30
+ }
31
+ ```
32
+
33
+ ## 🚀 快速开始
34
+
35
+ ### 基础使用
36
+
37
+ ```tsx
38
+ import { useState, useRef } from 'react';
39
+ import { YkDateRangePicker, type DateRangeValue, type YkDateRangePickerRef } from '@yoka/ui';
40
+ import dayjs from 'dayjs';
41
+
42
+ function App() {
43
+ const [range, setRange] = useState<DateRangeValue | []>([]);
44
+ const pickerRef = useRef<YkDateRangePickerRef>(null);
45
+
46
+ return (
47
+ <YkDateRangePicker
48
+ value={range}
49
+ onChange={(dates) => setRange(dates ?? [])}
50
+ ref={pickerRef}
51
+ />
52
+ );
53
+ }
54
+ ```
55
+
56
+ ### 外部控制
57
+
58
+ ```tsx
59
+ // 强制切换到「近5分钟」预设
60
+ pickerRef.current?.toggleFirstPreset();
61
+
62
+ // 设置外部值
63
+ setRange([dayjs().subtract(1, 'hour'), dayjs()]);
64
+
65
+ // 清空选择
66
+ setRange([]);
67
+ ```
68
+
69
+ ## 📋 API 文档
70
+
71
+ <ArgTypes of={YkDateRangePickerStories} />
72
+
73
+ ## 💡 使用场景
74
+
75
+ ### 1. 日志查询
76
+
77
+ 适用于需要快速筛选最近时间段日志的场景,预设的「近5分钟」「近1小时」等选项大幅提升操作效率。
78
+
79
+ ### 2. 数据分析
80
+
81
+ 在数据报表页面中,用户可以通过预设快速切换常用分析周期,或通过自定义范围进行精细化查询。
82
+
83
+ ### 3. 监控告警
84
+
85
+ 结合实时监控需求,预设项帮助用户快速定位异常发生的时间段。
86
+
87
+ ## 🎯 最佳实践
88
+
89
+ ### 保持受控模式
90
+
91
+ 始终使用受控模式(controlled mode),通过 `value` 和 `onChange` 管理状态,确保组件行为可预测:
92
+
93
+ ```tsx
94
+ // ✅ 推荐:受控模式
95
+ const [value, setValue] = useState<DateRangeValue | []>([]);
96
+ <YkDateRangePicker value={value} onChange={setValue} />
97
+
98
+ // ❌ 避免:非受控模式可能导致状态不一致
99
+ <YkDateRangePicker defaultValue={initialValue} />
100
+ ```
101
+
102
+ ### 合理使用 ref
103
+
104
+ ref 方法 `toggleFirstPreset()` 适用于特殊场景(如重置查询条件),日常使用中建议通过受控 props 控制组件:
105
+
106
+ ```tsx
107
+ // 在重置按钮的回调中使用
108
+ const handleReset = () => {
109
+ setValue([]); // 清空值
110
+ pickerRef.current?.toggleFirstPreset(); // 重置到默认预设
111
+ };
112
+ ```
113
+
114
+ ### 处理空值
115
+
116
+ 组件支持空数组 `[]` 作为值,表示未选择任何时间范围。清除后建议重置为 `[]` 而非 `undefined`:
117
+
118
+ ```tsx
119
+ onChange={(val) => {
120
+ // ✅ 推荐:始终转换为数组
121
+ setValue(val || []);
122
+ }}
123
+ ```
124
+
125
+ ## ⚠️ 注意事项
126
+
127
+ 1. **样式引入**:业务侧使用 `@yoka/ui` 时,需确保引入 Ant Design 全局样式和组件库样式:
128
+ ```tsx
129
+ import 'antd/dist/reset.css';
130
+ import '@yoka/ui/dist/index.less';
131
+ ```
132
+
133
+ 2. **版本要求**:需要 React 18+ 和 Ant Design 5+,与库的版本保持一致。
134
+
135
+ 3. **日期限制**:组件默认限制只能选择近 7 天(含今天)的时间范围,如需调整需修改源码中的禁用逻辑。
136
+
137
+ 4. **预设范围**:预设项的时长计算基于当前时间,每次展开时会重新计算。
138
+
139
+ 5. **性能优化**:组件内部使用 `useMemo` 和 `useCallback` 优化预设计算和事件处理,避免不必要的重渲染。
140
+
141
+ ## 🎨 预设项说明
142
+
143
+ | 预设标签 | 时间范围 | 使用场景 |
144
+ | --------- | --------- | --------- |
145
+ | 近5分钟 | 当前时间 - 5分钟 ~ 现在 | 实时监控、日志追踪 |
146
+ | 近15分钟 | 当前时间 - 15分钟 ~ 现在 | 短期数据分析 |
147
+ | 近30分钟 | 当前时间 - 30分钟 ~ 现在 | 中等时长监控 |
148
+ | 近1小时 | 当前时间 - 1小时 ~ 现在 | 小时级数据分析 |
149
+ | 近6小时 | 当前时间 - 6小时 ~ 现在 | 半日数据查看 |
150
+ | 近12小时 | 当前时间 - 12小时 ~ 现在 | 半日对比分析 |
151
+ | 近24小时 | 当前时间 - 24小时 ~ 现在 | 日级数据查询 |
152
+ | 近7天 | 当前时间 - 7天 ~ 现在 | 周级趋势分析 |
153
+
154
+ ## 🔍 交互行为
155
+
156
+ ### 预设选择流程
157
+
158
+ 1. 用户点击紧凑模式的标签区域
159
+ 2. 下拉面板展开,显示 8 个预设选项和完整的 RangePicker
160
+ 3. 用户点击任意预设项,组件自动计算对应时间范围
161
+ 4. 选择后立即触发 `onChange` 回调,并关闭面板
162
+ 5. 紧凑模式标签更新为「预设名称 + 格式化时间」或「起止时间」
163
+
164
+ ### 自定义时间选择
165
+
166
+ 1. 用户在展开的面板中点击 RangePicker
167
+ 2. 选择自定义开始和结束时间
168
+ 3. 点击确定后触发 `onChange` 回调
169
+ 4. 紧凑模式标签显示为「开始时间 ~ 结束时间」格式
170
+
171
+ ### 清除行为
172
+
173
+ - 当设置 `allowClear=true` 时,标签右侧显示清除图标
174
+ - 点击清除图标后,值重置为 `[]`,预设状态被清除
175
+ - 触发 `onChange` 回调,参数为 `[]`
176
+
177
+ ## 📚 相关组件
178
+
179
+ - [DatePicker](https://ant.design/components/date-picker) - Ant Design 基础日期选择器
180
+ - [RangePicker](https://ant.design/components/date-picker#rangepicker) - Ant Design 日期范围选择器
@@ -0,0 +1,61 @@
1
+ /**
2
+ * YkDateRangePicker
3
+ *
4
+ * 带「紧凑预设 tag」与「完整 RangePicker」双模式切换的日期范围选择器。
5
+ *
6
+ * 功能特性:
7
+ * - 默认紧凑模式:以 tag 形式展示「预设标签 + 格式化时间」或「起止时间」
8
+ * - mount 时若无初始值,自动选中「近5分钟」预设
9
+ * - 点击 tag 后展开内嵌的完整 RangePicker,失焦后自动收起
10
+ * - 8 个内置快捷预设,2 列 Grid 布局渲染,当前激活项高亮
11
+ * - 受控组件:区分「用户操作」与「外部赋值」,仅用户操作触发 onChange
12
+ * - 禁用日期:仅允许过去 7 天(含今天)
13
+ * - allowClear:支持一键清除,清除后重置预设状态
14
+ * - 通过 forwardRef + useImperativeHandle 对外暴露 toggleFirstPreset()
15
+ *
16
+ * @example
17
+ * ```tsx
18
+ * const pickerRef = useRef<YkDateRangePickerRef>(null);
19
+ *
20
+ * <YkDateRangePicker
21
+ * value={range}
22
+ * onChange={(val) => setRange(val)}
23
+ * ref={pickerRef}
24
+ * />
25
+ *
26
+ * // 外部强制切换到「近5分钟」
27
+ * pickerRef.current?.toggleFirstPreset();
28
+ * ```
29
+ */
30
+ import { Dayjs } from 'dayjs';
31
+ import React from 'react';
32
+ /** 时间范围值 */
33
+ export type DateRangeValue = [Dayjs, Dayjs];
34
+ export interface YkDateRangePickerProps {
35
+ /** 受控值 */
36
+ value?: DateRangeValue | [];
37
+ /** 用户操作改变时触发(外部 setValue 不会触发) */
38
+ onChange?: (value: DateRangeValue | null) => void;
39
+ /**
40
+ * 是否允许清除。
41
+ * - false(默认):隐藏清除按钮,与 Vue 原版行为一致
42
+ * - true:显示清除按钮,清除后重置预设状态并触发 onChange(null)
43
+ */
44
+ allowClear?: boolean;
45
+ /**
46
+ * 紧凑 tag 无值/清空时的占位文本。
47
+ * 默认:「请选择时间范围」
48
+ */
49
+ placeholder?: string;
50
+ /** 是否禁用选择器 */
51
+ disabled?: boolean;
52
+ /** 校验状态 */
53
+ status?: '' | 'error' | 'warning';
54
+ }
55
+ /** 通过 ref 对父组件暴露的方法 */
56
+ export interface YkDateRangePickerRef {
57
+ /** 强制切换到第一个预设(近5分钟)并触发 onChange */
58
+ toggleFirstPreset: () => void;
59
+ }
60
+ declare const YkDateRangePicker: React.ForwardRefExoticComponent<YkDateRangePickerProps & React.RefAttributes<YkDateRangePickerRef>>;
61
+ export default YkDateRangePicker;
@@ -0,0 +1,338 @@
1
+ var __create = Object.create;
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __getProtoOf = Object.getPrototypeOf;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
+ // If the importer is in node compatibility mode or this is not an ESM
21
+ // file that has been converted to a CommonJS file using a Babel-
22
+ // compatible transform (i.e. "__esModule" has not been set), then set
23
+ // "default" to the CommonJS "module.exports" for node compatibility.
24
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
+ mod
26
+ ));
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+
29
+ // src/components/YkDateRangePicker/index.tsx
30
+ var YkDateRangePicker_exports = {};
31
+ __export(YkDateRangePicker_exports, {
32
+ default: () => YkDateRangePicker_default
33
+ });
34
+ module.exports = __toCommonJS(YkDateRangePicker_exports);
35
+ var import_antd = require("antd");
36
+ var import_classnames = __toESM(require("classnames"));
37
+ var import_dayjs = __toESM(require("dayjs"));
38
+ var import_react = __toESM(require("react"));
39
+ var import_index_module = __toESM(require("./index.module.less"));
40
+ var { RangePicker } = import_antd.DatePicker;
41
+ function pastTime(n, unit) {
42
+ const fmt = "YYYY-MM-DD HH:mm:00";
43
+ return [(0, import_dayjs.default)((0, import_dayjs.default)().subtract(n, unit).format(fmt)), (0, import_dayjs.default)((0, import_dayjs.default)().format(fmt))];
44
+ }
45
+ var DISPLAY_FORMAT = "YYYY-MM-DD HH:mm:ss";
46
+ function formatToKey(d) {
47
+ return (0, import_dayjs.default)(d).format(DISPLAY_FORMAT);
48
+ }
49
+ function isValueEqual(a, b) {
50
+ if (a === b)
51
+ return true;
52
+ if (!a || !b)
53
+ return a === b;
54
+ if (a.length !== b.length)
55
+ return false;
56
+ if (a.length < 2 || b.length < 2)
57
+ return a.length === b.length;
58
+ return formatToKey(a[0]) === formatToKey(b[0]) && formatToKey(a[1]) === formatToKey(b[1]);
59
+ }
60
+ var RANGE_PRESETS = [
61
+ {
62
+ label: "近5分钟",
63
+ value: () => pastTime(5, "minute")
64
+ },
65
+ {
66
+ label: "近15分钟",
67
+ value: () => pastTime(15, "minute")
68
+ },
69
+ {
70
+ label: "近30分钟",
71
+ value: () => pastTime(30, "minute")
72
+ },
73
+ {
74
+ label: "近1小时",
75
+ value: () => pastTime(1, "hour")
76
+ },
77
+ {
78
+ label: "近2小时",
79
+ value: () => pastTime(2, "hour")
80
+ },
81
+ {
82
+ label: "近6小时",
83
+ value: () => pastTime(6, "hour")
84
+ },
85
+ {
86
+ label: "今天",
87
+ value: () => [
88
+ (0, import_dayjs.default)((0, import_dayjs.default)().startOf("day").format("YYYY-MM-DD HH:mm:ss")),
89
+ (0, import_dayjs.default)((0, import_dayjs.default)().endOf("day").format("YYYY-MM-DD HH:mm:ss"))
90
+ ],
91
+ // 紧凑模式只展示日期,如「03-25」
92
+ format: (v) => v[0].format("MM-DD")
93
+ },
94
+ {
95
+ label: "昨天",
96
+ value: () => [
97
+ (0, import_dayjs.default)((0, import_dayjs.default)().subtract(1, "day").startOf("day").format("YYYY-MM-DD HH:mm:ss")),
98
+ (0, import_dayjs.default)((0, import_dayjs.default)().subtract(1, "day").endOf("day").format("YYYY-MM-DD HH:mm:ss"))
99
+ ],
100
+ format: (v) => v[0].format("MM-DD")
101
+ },
102
+ {
103
+ label: "近7天",
104
+ value: () => [
105
+ (0, import_dayjs.default)((0, import_dayjs.default)().subtract(6, "day").startOf("day").format("YYYY-MM-DD HH:mm:ss")),
106
+ (0, import_dayjs.default)((0, import_dayjs.default)().endOf("day").format("YYYY-MM-DD HH:mm:ss"))
107
+ ],
108
+ // 紧凑模式展示完整日期区间,如「2024-03-19 ~ 2024-03-25」
109
+ format: (v) => [v[0].format("YYYY-MM-DD"), v[1].format("YYYY-MM-DD")]
110
+ }
111
+ ];
112
+ var YkDateRangePicker = (0, import_react.forwardRef)(function YkDateRangePicker2({ value, onChange, allowClear = false, placeholder = "请选择时间范围", disabled = false, status = "" }, ref) {
113
+ const [showFullPicker, setShowFullPicker] = (0, import_react.useState)(false);
114
+ const [open, setOpen] = (0, import_react.useState)(false);
115
+ const [activePreset, setActivePreset] = (0, import_react.useState)(void 0);
116
+ const [presetFormatText, setPresetFormatText] = (0, import_react.useState)(void 0);
117
+ const selfChangeRef = (0, import_react.useRef)(false);
118
+ const isPresetClickRef = (0, import_react.useRef)(false);
119
+ const collapseTimerRef = (0, import_react.useRef)();
120
+ const wrapperRef = (0, import_react.useRef)(null);
121
+ const pickerRef = (0, import_react.useRef)(null);
122
+ const prevValueRef = (0, import_react.useRef)(value);
123
+ const scheduleCollapse = (0, import_react.useCallback)((delay) => {
124
+ clearTimeout(collapseTimerRef.current);
125
+ collapseTimerRef.current = setTimeout(() => {
126
+ setOpen(false);
127
+ setShowFullPicker(false);
128
+ }, delay ?? 0);
129
+ }, []);
130
+ (0, import_react.useEffect)(() => () => clearTimeout(collapseTimerRef.current), []);
131
+ (0, import_react.useEffect)(() => {
132
+ if (value && value.length === 2)
133
+ return;
134
+ const first = RANGE_PRESETS[0];
135
+ const currentValue = first.value();
136
+ const formatText = currentValue.map((v) => (0, import_dayjs.default)(v).format("HH:mm:ss")).join(" ~ ");
137
+ setActivePreset(first);
138
+ setPresetFormatText(formatText);
139
+ selfChangeRef.current = true;
140
+ onChange == null ? void 0 : onChange(currentValue);
141
+ }, []);
142
+ (0, import_react.useEffect)(() => {
143
+ if (isValueEqual(prevValueRef.current, value))
144
+ return;
145
+ prevValueRef.current = value;
146
+ if (!selfChangeRef.current) {
147
+ setActivePreset(void 0);
148
+ setPresetFormatText(void 0);
149
+ }
150
+ selfChangeRef.current = false;
151
+ }, [value]);
152
+ const showState = (0, import_react.useMemo)(() => {
153
+ if (!value || value.length < 2)
154
+ return [];
155
+ return [formatToKey(value[0]), formatToKey(value[1])];
156
+ }, [value]);
157
+ const activePresetIndex = (0, import_react.useMemo)(() => {
158
+ if (!value || value.length < 2)
159
+ return -1;
160
+ const [v0, v1] = value;
161
+ const valKeys = [formatToKey(v0), formatToKey(v1)];
162
+ return RANGE_PRESETS.findIndex((preset) => {
163
+ const presetVal = preset.value();
164
+ const presetKeys = [formatToKey(presetVal[0]), formatToKey(presetVal[1])];
165
+ return valKeys[0] === presetKeys[0] && valKeys[1] === presetKeys[1];
166
+ });
167
+ }, [value, open]);
168
+ const handlePresetClick = (0, import_react.useCallback)(
169
+ (preset) => {
170
+ isPresetClickRef.current = true;
171
+ const currentValue = preset.value();
172
+ let formatText;
173
+ if (preset.format) {
174
+ const res = preset.format(currentValue);
175
+ formatText = Array.isArray(res) ? res.join(" ~ ") : res;
176
+ } else {
177
+ formatText = currentValue.map((v) => (0, import_dayjs.default)(v).format("HH:mm:ss")).join(" ~ ");
178
+ }
179
+ setActivePreset(preset);
180
+ setPresetFormatText(formatText);
181
+ selfChangeRef.current = true;
182
+ onChange == null ? void 0 : onChange(currentValue);
183
+ scheduleCollapse();
184
+ },
185
+ [onChange]
186
+ );
187
+ const handlePickerChange = (0, import_react.useCallback)(
188
+ (dates) => {
189
+ setActivePreset(void 0);
190
+ setPresetFormatText(void 0);
191
+ isPresetClickRef.current = false;
192
+ selfChangeRef.current = true;
193
+ if ((dates == null ? void 0 : dates[0]) && (dates == null ? void 0 : dates[1])) {
194
+ onChange == null ? void 0 : onChange(dates);
195
+ } else {
196
+ onChange == null ? void 0 : onChange(null);
197
+ scheduleCollapse();
198
+ }
199
+ },
200
+ [onChange]
201
+ );
202
+ const activateCompactTag = (0, import_react.useCallback)(() => {
203
+ setShowFullPicker(true);
204
+ setTimeout(() => {
205
+ var _a;
206
+ const el = (_a = pickerRef.current) == null ? void 0 : _a.nativeElement;
207
+ if (el) {
208
+ const input = el.querySelector("input");
209
+ input == null ? void 0 : input.click();
210
+ input == null ? void 0 : input.focus();
211
+ }
212
+ }, 0);
213
+ }, []);
214
+ const handleOpenChange = (0, import_react.useCallback)(
215
+ (isOpen) => {
216
+ setOpen(isOpen);
217
+ if (!isOpen) {
218
+ scheduleCollapse(150);
219
+ }
220
+ },
221
+ [scheduleCollapse]
222
+ );
223
+ const disabledDate = (0, import_react.useCallback)((current) => {
224
+ return current && (current > (0, import_dayjs.default)().endOf("day") || current < (0, import_dayjs.default)().subtract(6, "day").startOf("day"));
225
+ }, []);
226
+ const getPopupContainer = (0, import_react.useCallback)(() => {
227
+ return wrapperRef.current ?? document.body;
228
+ }, []);
229
+ const presetsNode = (0, import_react.useMemo)(() => {
230
+ return RANGE_PRESETS.map((preset, index) => {
231
+ const isActive = activePresetIndex === index;
232
+ return {
233
+ label: /* @__PURE__ */ import_react.default.createElement(
234
+ "div",
235
+ {
236
+ className: (0, import_classnames.default)(import_index_module.default.yokaPresetItem, {
237
+ [import_index_module.default.yokaPresetItemActive]: isActive
238
+ }),
239
+ role: "option",
240
+ tabIndex: 0,
241
+ "aria-selected": isActive,
242
+ onClick: (e) => {
243
+ e.stopPropagation();
244
+ handlePresetClick(preset);
245
+ },
246
+ onKeyDown: (e) => {
247
+ if (e.key === "Enter" || e.key === " ") {
248
+ e.preventDefault();
249
+ e.stopPropagation();
250
+ handlePresetClick(preset);
251
+ }
252
+ }
253
+ },
254
+ preset.label
255
+ ),
256
+ value: preset.value()
257
+ };
258
+ });
259
+ }, [activePresetIndex, handlePresetClick]);
260
+ (0, import_react.useImperativeHandle)(
261
+ ref,
262
+ () => ({
263
+ toggleFirstPreset() {
264
+ handlePresetClick(RANGE_PRESETS[0]);
265
+ }
266
+ }),
267
+ [handlePresetClick]
268
+ );
269
+ const pickerVisible = showFullPicker || open;
270
+ return /* @__PURE__ */ import_react.default.createElement(
271
+ "div",
272
+ {
273
+ className: (0, import_classnames.default)(import_index_module.default.YkDateRangePicker, {
274
+ [import_index_module.default.yokaDisabled]: disabled
275
+ }),
276
+ ref: wrapperRef
277
+ },
278
+ !showFullPicker && /* @__PURE__ */ import_react.default.createElement(
279
+ "span",
280
+ {
281
+ className: import_index_module.default.yokaCompactTag,
282
+ role: "button",
283
+ tabIndex: disabled ? -1 : 0,
284
+ "aria-haspopup": "dialog",
285
+ "aria-expanded": open,
286
+ "aria-disabled": disabled,
287
+ onClick: disabled ? void 0 : activateCompactTag,
288
+ onKeyDown: (e) => {
289
+ if (disabled)
290
+ return;
291
+ if (e.key === "Enter" || e.key === " ") {
292
+ e.preventDefault();
293
+ activateCompactTag();
294
+ }
295
+ }
296
+ },
297
+ /* @__PURE__ */ import_react.default.createElement("i", { className: (0, import_classnames.default)("iconfont icon-riqi1", import_index_module.default.yokaCompactTagIcon) }),
298
+ /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagContent }, activePreset ? (
299
+ // 已选预设:「预设名称 (格式化时间)」
300
+ /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagPresetLabel }, activePreset.label), /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagPresetFormat }, "(", presetFormatText, ")"))
301
+ ) : showState.length === 2 ? (
302
+ // 自定义时间:「起始时间 ~ 结束时间」
303
+ /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagDatetime }, showState[0]), /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagSeparator }, "~"), /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagDatetime }, showState[1]))
304
+ ) : (
305
+ // 无值/清空:placeholder 居中显示
306
+ /* @__PURE__ */ import_react.default.createElement("span", { className: import_index_module.default.yokaCompactTagPlaceholder }, placeholder)
307
+ ))
308
+ ),
309
+ /* @__PURE__ */ import_react.default.createElement("div", { className: import_index_module.default.yokaPickerWrapper, style: { display: pickerVisible ? "flex" : "none" } }, /* @__PURE__ */ import_react.default.createElement("i", { className: (0, import_classnames.default)("iconfont icon-riqi1", import_index_module.default.yokaPickerWrapperIcon) }), /* @__PURE__ */ import_react.default.createElement(
310
+ RangePicker,
311
+ {
312
+ ref: pickerRef,
313
+ value: value && value.length === 2 ? value : void 0,
314
+ onChange: handlePickerChange,
315
+ open,
316
+ onOpenChange: handleOpenChange,
317
+ variant: "borderless",
318
+ allowClear,
319
+ disabled,
320
+ status: status || void 0,
321
+ suffixIcon: null,
322
+ showTime: {
323
+ format: "HH:mm:ss",
324
+ hideDisabledOptions: true,
325
+ defaultValue: [(0, import_dayjs.default)("00:00", "HH:mm"), (0, import_dayjs.default)("23:59", "HH:mm")]
326
+ },
327
+ format: "YYYY-MM-DD HH:mm:ss",
328
+ disabledDate,
329
+ presets: presetsNode,
330
+ getPopupContainer,
331
+ classNames: { popup: { root: "yoka-daterangepicker-popup" } }
332
+ }
333
+ ))
334
+ );
335
+ });
336
+ YkDateRangePicker.displayName = "YkDateRangePicker";
337
+ var YkDateRangePicker_default = YkDateRangePicker;
338
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/components/YkDateRangePicker/index.tsx"],
4
+ "sourcesContent": ["/**\n * YkDateRangePicker\n *\n * 带「紧凑预设 tag」与「完整 RangePicker」双模式切换的日期范围选择器。\n *\n * 功能特性:\n * - 默认紧凑模式:以 tag 形式展示「预设标签 + 格式化时间」或「起止时间」\n * - mount 时若无初始值,自动选中「近5分钟」预设\n * - 点击 tag 后展开内嵌的完整 RangePicker,失焦后自动收起\n * - 8 个内置快捷预设,2 列 Grid 布局渲染,当前激活项高亮\n * - 受控组件:区分「用户操作」与「外部赋值」,仅用户操作触发 onChange\n * - 禁用日期:仅允许过去 7 天(含今天)\n * - allowClear:支持一键清除,清除后重置预设状态\n * - 通过 forwardRef + useImperativeHandle 对外暴露 toggleFirstPreset()\n *\n * @example\n * ```tsx\n * const pickerRef = useRef<YkDateRangePickerRef>(null);\n *\n * <YkDateRangePicker\n * value={range}\n * onChange={(val) => setRange(val)}\n * ref={pickerRef}\n * />\n *\n * // 外部强制切换到「近5分钟」\n * pickerRef.current?.toggleFirstPreset();\n * ```\n */\n\nimport { DatePicker } from 'antd';\nimport classNames from 'classnames';\nimport dayjs, { Dayjs } from 'dayjs';\nimport React, {\n type ComponentRef,\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport styles from './index.module.less';\nconst { RangePicker } = DatePicker;\n\n// ─── 类型 ─────────────────────────────────────────────────────────────────────\n\n/** 时间范围值 */\nexport type DateRangeValue = [Dayjs, Dayjs];\n\n/**\n * 预设项定义\n * - value() 每次调用都返回最新时间,避免闭包缓存旧值\n * - format() 可选,控制紧凑 tag 中的格式化展示文本\n */\ninterface RangePreset {\n label: string;\n /** 工厂函数,返回实时时间范围 */\n value: () => DateRangeValue;\n /** 自定义紧凑模式格式化:返回单个字符串或 [start, end] 数组 */\n format?: (value: DateRangeValue) => string | [string, string];\n}\n\nexport interface YkDateRangePickerProps {\n /** 受控值 */\n value?: DateRangeValue | [];\n /** 用户操作改变时触发(外部 setValue 不会触发) */\n onChange?: (value: DateRangeValue | null) => void;\n /**\n * 是否允许清除。\n * - false(默认):隐藏清除按钮,与 Vue 原版行为一致\n * - true:显示清除按钮,清除后重置预设状态并触发 onChange(null)\n */\n allowClear?: boolean;\n /**\n * 紧凑 tag 无值/清空时的占位文本。\n * 默认:「请选择时间范围」\n */\n placeholder?: string;\n /** 是否禁用选择器 */\n disabled?: boolean;\n /** 校验状态 */\n status?: '' | 'error' | 'warning';\n}\n\n/** 通过 ref 对父组件暴露的方法 */\nexport interface YkDateRangePickerRef {\n /** 强制切换到第一个预设(近5分钟)并触发 onChange */\n toggleFirstPreset: () => void;\n}\n\n// ─── 工具函数 ─────────────────────────────────────────────────────────────────\n\n/** 精确到分钟的过去时间区间 */\nfunction pastTime(n: number, unit: dayjs.ManipulateType): DateRangeValue {\n const fmt = 'YYYY-MM-DD HH:mm:00';\n return [dayjs(dayjs().subtract(n, unit).format(fmt)), dayjs(dayjs().format(fmt))];\n}\n\nconst DISPLAY_FORMAT = 'YYYY-MM-DD HH:mm:ss';\n\n/** 格式化 Dayjs 为紧凑模式展示字符串 / 预设匹配字符串 */\nfunction formatToKey(d: Dayjs): string {\n return dayjs(d).format(DISPLAY_FORMAT);\n}\n\n/** 深度比较两个 value 是否「语义相同」(忽略 Dayjs 引用差异) */\nfunction isValueEqual(a: DateRangeValue | [] | undefined, b: DateRangeValue | [] | undefined): boolean {\n if (a === b) return true;\n if (!a || !b) return a === b;\n if (a.length !== b.length) return false;\n if (a.length < 2 || b.length < 2) return a.length === b.length;\n return (\n formatToKey(a[0] as Dayjs) === formatToKey(b[0] as Dayjs) &&\n formatToKey(a[1] as Dayjs) === formatToKey(b[1] as Dayjs)\n );\n}\n\n// ─── 内置预设列表 ─────────────────────────────────────────────────────────────\n\n/**\n * 8 个内置快捷预设。\n * value 始终是工厂函数,保证每次点击都获取最新的当前时间。\n */\nconst RANGE_PRESETS: RangePreset[] = [\n {\n label: '近5分钟',\n value: () => pastTime(5, 'minute'),\n },\n {\n label: '近15分钟',\n value: () => pastTime(15, 'minute'),\n },\n {\n label: '近30分钟',\n value: () => pastTime(30, 'minute'),\n },\n {\n label: '近1小时',\n value: () => pastTime(1, 'hour'),\n },\n {\n label: '近2小时',\n value: () => pastTime(2, 'hour'),\n },\n {\n label: '近6小时',\n value: () => pastTime(6, 'hour'),\n },\n {\n label: '今天',\n value: () =>\n [\n dayjs(dayjs().startOf('day').format('YYYY-MM-DD HH:mm:ss')),\n dayjs(dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')),\n ] as DateRangeValue,\n // 紧凑模式只展示日期,如「03-25」\n format: (v) => v[0].format('MM-DD'),\n },\n {\n label: '昨天',\n value: () =>\n [\n dayjs(dayjs().subtract(1, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')),\n dayjs(dayjs().subtract(1, 'day').endOf('day').format('YYYY-MM-DD HH:mm:ss')),\n ] as DateRangeValue,\n format: (v) => v[0].format('MM-DD'),\n },\n {\n label: '近7天',\n value: () =>\n [\n dayjs(dayjs().subtract(6, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')),\n dayjs(dayjs().endOf('day').format('YYYY-MM-DD HH:mm:ss')),\n ] as DateRangeValue,\n // 紧凑模式展示完整日期区间,如「2024-03-19 ~ 2024-03-25」\n format: (v) => [v[0].format('YYYY-MM-DD'), v[1].format('YYYY-MM-DD')],\n },\n];\n\n// ─── 主组件 ───────────────────────────────────────────────────────────────────\n\nconst YkDateRangePicker = forwardRef<YkDateRangePickerRef, YkDateRangePickerProps>(function YkDateRangePicker(\n { value, onChange, allowClear = false, placeholder = '请选择时间范围', disabled = false, status = '' },\n ref,\n) {\n // ── 内部状态 ───────────────────────────────────────────────────────────────\n\n /** 是否展示完整 RangePicker(false = 紧凑 tag 模式) */\n const [showFullPicker, setShowFullPicker] = useState(false);\n\n /** RangePicker 下拉面板是否展开 */\n const [open, setOpen] = useState(false);\n\n /**\n * 当前激活的预设定义引用。\n * undefined 表示用户手动选了自定义时间范围。\n */\n const [activePreset, setActivePreset] = useState<RangePreset | undefined>(undefined);\n\n /**\n * 紧凑 tag 中预设的格式化文本。\n * 例:「12:00:00 ~ 13:00:00」或「03-25」或「2024-03-19 ~ 2024-03-25」\n */\n const [presetFormatText, setPresetFormatText] = useState<string | undefined>(undefined);\n\n // ── Refs ───────────────────────────────────────────────────────────────────\n\n /**\n * 标记本次 value 变化是否由用户操作触发(非外部赋值)。\n * 用 ref 而非 state,避免触发额外的重渲染。\n * 与 Vue 版 selfChange 逻辑一致。\n */\n const selfChangeRef = useRef(false);\n\n /**\n * 标记当前 RangePicker.onChange 是否由预设点击触发。\n * 用于区分「预设点击」vs「手动选择」,避免手动选择时错误保留预设状态。\n */\n const isPresetClickRef = useRef(false);\n\n /** 管理 setTimeout,防止竞态 */\n const collapseTimerRef = useRef<ReturnType<typeof setTimeout>>();\n\n /** 组件根元素,用作 getPopupContainer */\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n /** RangePicker 实例 ref,用于编程式展开面板 */\n const pickerRef = useRef<ComponentRef<typeof RangePicker>>(null);\n\n /** 缓存上一次的 value,用于判断是否是外部变更 */\n const prevValueRef = useRef(value);\n\n /** 延迟收起完整 picker,清除旧定时器避免竞态 */\n const scheduleCollapse = useCallback((delay?: number) => {\n clearTimeout(collapseTimerRef.current);\n collapseTimerRef.current = setTimeout(() => {\n setOpen(false);\n setShowFullPicker(false);\n }, delay ?? 0);\n }, []);\n\n /** 卸载时清理定时器 */\n useEffect(() => () => clearTimeout(collapseTimerRef.current), []);\n\n // ── 默认值:mount 时无初始 value 则自动选中「近5分钟」 ───────────────────\n\n useEffect(() => {\n // 仅在外部未传有效初始值时执行一次\n if (value && (value as DateRangeValue).length === 2) return;\n\n const first = RANGE_PRESETS[0];\n const currentValue = first.value();\n const formatText = currentValue.map((v) => dayjs(v).format('HH:mm:ss')).join(' ~ ');\n\n setActivePreset(first);\n setPresetFormatText(formatText);\n\n // 标记为用户操作,避免被下方的外部 value 监听 effect 清空预设状态\n selfChangeRef.current = true;\n onChange?.(currentValue);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // ── 外部 value 变化同步 ────────────────────────────────────────────────────\n\n useEffect(() => {\n // 跳过初始 mount(value 未真正变化)\n if (isValueEqual(prevValueRef.current, value)) return;\n prevValueRef.current = value;\n\n if (!selfChangeRef.current) {\n // 外部 setField 赋值:清空预设状态(无法得知外部值对应哪个预设)\n setActivePreset(undefined);\n setPresetFormatText(undefined);\n }\n // 消费掉标记,等待下次用户操作重新置位\n selfChangeRef.current = false;\n }, [value]);\n\n // ── 紧凑 tag 展示文本 ──────────────────────────────────────────────────────\n\n /**\n * 紧凑模式下起止时间的字符串表示。\n * 与 Vue showState 计算属性逻辑一致。\n */\n const showState = useMemo<[string, string] | []>(() => {\n if (!value || value.length < 2) return [];\n return [formatToKey(value[0] as Dayjs), formatToKey(value[1] as Dayjs)];\n }, [value]);\n\n // ── 预设激活项检测 ─────────────────────────────────────────────────────────\n\n /**\n * 根据当前 value 匹配激活的预设 index(用于高亮渲染)。\n * 将 value 和预设值都格式化为同一字符串后比对,与 Vue presetsNode computed 一致。\n * 依赖 open,确保面板打开时(时间流逝后)重新计算。\n */\n const activePresetIndex = useMemo<number>(() => {\n if (!value || value.length < 2) return -1;\n const [v0, v1] = value as DateRangeValue;\n const valKeys = [formatToKey(v0), formatToKey(v1)];\n return RANGE_PRESETS.findIndex((preset) => {\n const presetVal = preset.value();\n const presetKeys = [formatToKey(presetVal[0]), formatToKey(presetVal[1])];\n return valKeys[0] === presetKeys[0] && valKeys[1] === presetKeys[1];\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value, open]);\n\n // ── 事件处理 ──────────────────────────────────────────────────────────────\n\n /**\n * 点击预设项。\n * 对应 Vue handleTogglePreset。\n */\n const handlePresetClick = useCallback(\n (preset: RangePreset) => {\n isPresetClickRef.current = true;\n\n const currentValue = preset.value();\n\n // 计算紧凑 tag 中的格式化文本\n let formatText: string;\n if (preset.format) {\n const res = preset.format(currentValue);\n formatText = Array.isArray(res) ? res.join(' ~ ') : res;\n } else {\n // 无自定义 format:默认展示时间部分,如「12:00:00 ~ 13:00:00」\n formatText = currentValue.map((v) => dayjs(v).format('HH:mm:ss')).join(' ~ ');\n }\n\n setActivePreset(preset);\n setPresetFormatText(formatText);\n\n // 向父组件通知新值\n selfChangeRef.current = true;\n onChange?.(currentValue);\n\n // 选完预设后收起 picker\n scheduleCollapse();\n },\n [onChange],\n );\n\n /**\n * RangePicker onChange(用户手动选择日期或点击清除后触发)。\n * 对应 Vue handleChange。\n */\n const handlePickerChange = useCallback(\n (dates: [Dayjs | null, Dayjs | null] | null) => {\n // 无论是否预设点击,只要触发 change 都先清空预设状态\n setActivePreset(undefined);\n setPresetFormatText(undefined);\n isPresetClickRef.current = false;\n\n selfChangeRef.current = true;\n\n if (dates?.[0] && dates?.[1]) {\n // 正常选择\n onChange?.(dates as DateRangeValue);\n } else {\n // 点击清除:value 置为 [](空数组),并退回紧凑 tag 模式显示 placeholder\n onChange?.(null);\n scheduleCollapse();\n }\n },\n [onChange],\n );\n\n /**\n * 点击紧凑 tag → 展开完整 RangePicker 并聚焦。\n * 对应 Vue handleClickPresetPicker。\n */\n /** 模拟按钮激活行为,同时支持鼠标点击和键盘回车/空格 */\n const activateCompactTag = useCallback(() => {\n setShowFullPicker(true);\n // 等待 DOM 渲染后再触发 picker 展开\n setTimeout(() => {\n const el = pickerRef.current?.nativeElement;\n if (el) {\n // 触发第一个 input 的点击,使 antd RangePicker 展开面板\n const input = el.querySelector<HTMLInputElement>('input');\n input?.click();\n input?.focus();\n }\n }, 0);\n }, []);\n\n /**\n * RangePicker 面板开关回调。\n * 面板关闭时延迟退回紧凑模式(避免与选择操作冲突)。\n */\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n setOpen(isOpen);\n if (!isOpen) {\n scheduleCollapse(150);\n }\n },\n [scheduleCollapse],\n );\n\n /**\n * 禁用日期规则:只允许过去 7 天(含今天)。\n * 对应 Vue disabledDate。\n */\n const disabledDate = useCallback((current: Dayjs) => {\n return current && (current > dayjs().endOf('day') || current < dayjs().subtract(6, 'day').startOf('day'));\n }, []);\n\n /**\n * Popup 挂载容器:挂在组件自身 wrapper 内,避免全局定位错乱。\n * 对应 Vue getPopupContainer。\n */\n const getPopupContainer = useCallback((): HTMLElement => {\n return wrapperRef.current ?? document.body;\n }, []);\n\n // ── antd presets 节点 ──────────────────────────────────────────────────────\n\n /**\n * 构建传入 RangePicker 的 presets prop。\n * - label 为自定义 ReactNode,实现点击处理与高亮样式\n * - value 传实时值供 antd 内部使用(如 disabledDate 校验)\n * antd 5.x presets 格式:{ label: ReactNode; value: [Dayjs, Dayjs] }[]\n */\n const presetsNode = useMemo(() => {\n return RANGE_PRESETS.map((preset, index) => {\n const isActive = activePresetIndex === index;\n return {\n label: (\n <div\n className={classNames(styles.yokaPresetItem, {\n [styles.yokaPresetItemActive]: isActive,\n })}\n role=\"option\"\n tabIndex={0}\n aria-selected={isActive}\n onClick={(e) => {\n e.stopPropagation();\n handlePresetClick(preset);\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n e.stopPropagation();\n handlePresetClick(preset);\n }\n }}\n >\n {preset.label}\n </div>\n ),\n value: preset.value() as [Dayjs, Dayjs],\n };\n });\n }, [activePresetIndex, handlePresetClick]);\n\n // ── 对外暴露方法 ───────────────────────────────────────────────────────────\n\n /**\n * 通过 ref 暴露 toggleFirstPreset(),供父组件调用。\n * 对应 Vue defineExpose({ toggleFirstPreset })。\n */\n useImperativeHandle(\n ref,\n () => ({\n toggleFirstPreset() {\n handlePresetClick(RANGE_PRESETS[0]);\n },\n }),\n [handlePresetClick],\n );\n\n // ── 渲染 ──────────────────────────────────────────────────────────────────\n\n // 完整 picker 的可见性:展开状态 或 下拉面板打开时均显示\n const pickerVisible = showFullPicker || open;\n\n return (\n <div\n className={classNames(styles.YkDateRangePicker, {\n [styles.yokaDisabled]: disabled,\n })}\n ref={wrapperRef}\n >\n {/* ── 紧凑 Tag 模式 ── */}\n {!showFullPicker && (\n <span\n className={styles.yokaCompactTag}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n aria-disabled={disabled}\n onClick={disabled ? undefined : activateCompactTag}\n onKeyDown={(e) => {\n if (disabled) return;\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n activateCompactTag();\n }\n }}\n >\n {/* 图标:绝对定位固定在左侧 */}\n <i className={classNames('iconfont icon-riqi1', styles.yokaCompactTagIcon)} />\n {/* 内容区:flex:1 + justify-content:center 实现视觉居中 */}\n <span className={styles.yokaCompactTagContent}>\n {activePreset ? (\n // 已选预设:「预设名称 (格式化时间)」\n <>\n <span className={styles.yokaCompactTagPresetLabel}>{activePreset.label}</span>\n <span className={styles.yokaCompactTagPresetFormat}>({presetFormatText})</span>\n </>\n ) : showState.length === 2 ? (\n // 自定义时间:「起始时间 ~ 结束时间」\n <>\n <span className={styles.yokaCompactTagDatetime}>{showState[0]}</span>\n <span className={styles.yokaCompactTagSeparator}>~</span>\n <span className={styles.yokaCompactTagDatetime}>{showState[1]}</span>\n </>\n ) : (\n // 无值/清空:placeholder 居中显示\n <span className={styles.yokaCompactTagPlaceholder}>{placeholder}</span>\n )}\n </span>\n </span>\n )}\n\n {/* ── 完整 RangePicker(display 切换以保持 DOM 挂载,避免 focus 闪烁) ── */}\n <div className={styles.yokaPickerWrapper} style={{ display: pickerVisible ? 'flex' : 'none' }}>\n <i className={classNames('iconfont icon-riqi1', styles.yokaPickerWrapperIcon)} />\n <RangePicker\n ref={pickerRef}\n // 值与回调\n value={value && value.length === 2 ? (value as [Dayjs, Dayjs]) : undefined}\n onChange={handlePickerChange}\n open={open}\n onOpenChange={handleOpenChange}\n // 外观\n variant=\"borderless\"\n allowClear={allowClear}\n disabled={disabled}\n status={status || undefined}\n suffixIcon={null}\n // 时间选择(支持秒)\n showTime={{\n format: 'HH:mm:ss',\n hideDisabledOptions: true,\n defaultValue: [dayjs('00:00', 'HH:mm'), dayjs('23:59', 'HH:mm')],\n }}\n format=\"YYYY-MM-DD HH:mm:ss\"\n // 禁用日期\n disabledDate={disabledDate}\n // 预设(自定义渲染)\n presets={presetsNode}\n // Popup 容器\n getPopupContainer={getPopupContainer}\n classNames={{ popup: { root: 'yoka-daterangepicker-popup' } }}\n />\n </div>\n </div>\n );\n});\n\nYkDateRangePicker.displayName = 'YkDateRangePicker';\n\nexport default YkDateRangePicker;\n"],
5
+ "mappings": "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",
6
+ "names": ["dayjs", "YkDateRangePicker", "React", "classNames", "styles"]
7
+ }