@lobehub/ui 6.0.0-beta.6 → 6.0.0-beta.8

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 (682) hide show
  1. package/es/Accordion/Accordion.mjs +3 -3
  2. package/es/Accordion/Accordion.mjs.map +1 -1
  3. package/es/Accordion/atoms.mjs +2 -2
  4. package/es/Accordion/atoms.mjs.map +1 -1
  5. package/es/Accordion/style.d.mts +1 -1
  6. package/es/ActionIcon/ActionIcon.mjs +2 -2
  7. package/es/ActionIcon/ActionIcon.mjs.map +1 -1
  8. package/es/Alert/Alert.mjs +5 -5
  9. package/es/Alert/Alert.mjs.map +1 -1
  10. package/es/AutoComplete/AutoComplete.mjs +5 -5
  11. package/es/AutoComplete/AutoComplete.mjs.map +1 -1
  12. package/es/AutoComplete/style.mjs +2 -2
  13. package/es/AutoComplete/style.mjs.map +1 -1
  14. package/es/Avatar/Avatar.mjs +2 -2
  15. package/es/Avatar/Avatar.mjs.map +1 -1
  16. package/es/Avatar/AvatarGroup/index.mjs +2 -2
  17. package/es/Avatar/AvatarGroup/index.mjs.map +1 -1
  18. package/es/Breadcrumb/Breadcrumb.mjs +2 -2
  19. package/es/Breadcrumb/Breadcrumb.mjs.map +1 -1
  20. package/es/Button/Button.mjs +1 -1
  21. package/es/Button/Button.mjs.map +1 -1
  22. package/es/Button/style.d.mts +8 -1
  23. package/es/Button/style.mjs +41 -18
  24. package/es/Button/style.mjs.map +1 -1
  25. package/es/Checkbox/Checkbox.mjs +3 -3
  26. package/es/Checkbox/Checkbox.mjs.map +1 -1
  27. package/es/CodeDiff/DiffPanel.mjs +4 -4
  28. package/es/CodeDiff/DiffPanel.mjs.map +1 -1
  29. package/es/CodeEditor/CodeEditor.mjs +4 -4
  30. package/es/CodeEditor/CodeEditor.mjs.map +1 -1
  31. package/es/ColorPicker/ColorInputs.mjs +136 -0
  32. package/es/ColorPicker/ColorInputs.mjs.map +1 -0
  33. package/es/ColorPicker/ColorPanel.mjs +145 -0
  34. package/es/ColorPicker/ColorPanel.mjs.map +1 -0
  35. package/es/ColorPicker/ColorPicker.mjs +62 -199
  36. package/es/ColorPicker/ColorPicker.mjs.map +1 -1
  37. package/es/ColorPicker/SaturationArea.mjs +2 -1
  38. package/es/ColorPicker/SaturationArea.mjs.map +1 -1
  39. package/es/ColorPicker/Swatch.mjs +24 -0
  40. package/es/ColorPicker/Swatch.mjs.map +1 -0
  41. package/es/ColorPicker/Swatches.mjs +66 -0
  42. package/es/ColorPicker/Swatches.mjs.map +1 -0
  43. package/es/ColorPicker/Trigger.mjs +112 -0
  44. package/es/ColorPicker/Trigger.mjs.map +1 -0
  45. package/es/ColorPicker/color.mjs +25 -1
  46. package/es/ColorPicker/color.mjs.map +1 -1
  47. package/es/ColorPicker/recent.mjs +25 -0
  48. package/es/ColorPicker/recent.mjs.map +1 -0
  49. package/es/ColorPicker/style.mjs +269 -70
  50. package/es/ColorPicker/style.mjs.map +1 -1
  51. package/es/ColorPicker/type.d.mts +15 -0
  52. package/es/ColorSwatches/type.d.mts +2 -2
  53. package/es/ContextMenu/ContextMenuHost.mjs +2 -2
  54. package/es/ContextMenu/ContextMenuHost.mjs.map +1 -1
  55. package/es/ContextMenu/ContextMenuTrigger.mjs +2 -2
  56. package/es/ContextMenu/ContextMenuTrigger.mjs.map +1 -1
  57. package/es/ContextMenu/renderItems.mjs +3 -3
  58. package/es/ContextMenu/renderItems.mjs.map +1 -1
  59. package/es/DatePicker/DatePicker.d.mts +7 -2
  60. package/es/DatePicker/DatePicker.mjs +13 -85
  61. package/es/DatePicker/DatePicker.mjs.map +1 -1
  62. package/es/DatePicker/DateRangePicker.d.mts +3 -2
  63. package/es/DatePicker/DateRangePicker.mjs +3 -125
  64. package/es/DatePicker/DateRangePicker.mjs.map +1 -1
  65. package/es/DatePicker/PurePanel.mjs +65 -0
  66. package/es/DatePicker/PurePanel.mjs.map +1 -0
  67. package/es/DatePicker/RangePicker.mjs +115 -0
  68. package/es/DatePicker/RangePicker.mjs.map +1 -0
  69. package/es/DatePicker/SinglePicker.mjs +132 -0
  70. package/es/DatePicker/SinglePicker.mjs.map +1 -0
  71. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs +57 -0
  72. package/es/DatePicker/core/PickerInput/Popup/Footer.mjs.map +1 -0
  73. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs +57 -0
  74. package/es/DatePicker/core/PickerInput/Popup/PopupPanel.mjs.map +1 -0
  75. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs +29 -0
  76. package/es/DatePicker/core/PickerInput/Popup/PresetPanel.mjs.map +1 -0
  77. package/es/DatePicker/core/PickerInput/Popup/index.mjs +133 -0
  78. package/es/DatePicker/core/PickerInput/Popup/index.mjs.map +1 -0
  79. package/es/DatePicker/core/PickerInput/RangePicker.d.mts +51 -0
  80. package/es/DatePicker/core/PickerInput/RangePicker.mjs +343 -0
  81. package/es/DatePicker/core/PickerInput/RangePicker.mjs.map +1 -0
  82. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs +27 -0
  83. package/es/DatePicker/core/PickerInput/Selector/ClearIcon.mjs.map +1 -0
  84. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs +19 -0
  85. package/es/DatePicker/core/PickerInput/Selector/Icon.mjs.map +1 -0
  86. package/es/DatePicker/core/PickerInput/Selector/Input.mjs +237 -0
  87. package/es/DatePicker/core/PickerInput/Selector/Input.mjs.map +1 -0
  88. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs +70 -0
  89. package/es/DatePicker/core/PickerInput/Selector/MaskFormat.mjs.map +1 -0
  90. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.d.mts +8 -0
  91. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs +136 -0
  92. package/es/DatePicker/core/PickerInput/Selector/RangeSelector.mjs.map +1 -0
  93. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs +28 -0
  94. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/HoverSelector.mjs.map +1 -0
  95. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs +69 -0
  96. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/MultipleDates.mjs.map +1 -0
  97. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs +111 -0
  98. package/es/DatePicker/core/PickerInput/Selector/SingleSelector/index.mjs.map +1 -0
  99. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs +18 -0
  100. package/es/DatePicker/core/PickerInput/Selector/hooks/useClearIcon.mjs.map +1 -0
  101. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs +108 -0
  102. package/es/DatePicker/core/PickerInput/Selector/hooks/useInputProps.mjs.map +1 -0
  103. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs +11 -0
  104. package/es/DatePicker/core/PickerInput/Selector/hooks/useRootProps.mjs.map +1 -0
  105. package/es/DatePicker/core/PickerInput/Selector/util.mjs +20 -0
  106. package/es/DatePicker/core/PickerInput/Selector/util.mjs.map +1 -0
  107. package/es/DatePicker/core/PickerInput/SinglePicker.d.mts +55 -0
  108. package/es/DatePicker/core/PickerInput/SinglePicker.mjs +318 -0
  109. package/es/DatePicker/core/PickerInput/SinglePicker.mjs.map +1 -0
  110. package/es/DatePicker/core/PickerInput/context.mjs +7 -0
  111. package/es/DatePicker/core/PickerInput/context.mjs.map +1 -0
  112. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs +30 -0
  113. package/es/DatePicker/core/PickerInput/hooks/useCellRender.mjs.map +1 -0
  114. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs +37 -0
  115. package/es/DatePicker/core/PickerInput/hooks/useDelayState.mjs.map +1 -0
  116. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs +18 -0
  117. package/es/DatePicker/core/PickerInput/hooks/useDisabledBoundary.mjs.map +1 -0
  118. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs +20 -0
  119. package/es/DatePicker/core/PickerInput/hooks/useFieldFormat.mjs.map +1 -0
  120. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs +31 -0
  121. package/es/DatePicker/core/PickerInput/hooks/useFieldsInvalidate.mjs.map +1 -0
  122. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs +98 -0
  123. package/es/DatePicker/core/PickerInput/hooks/useFilledProps.mjs.map +1 -0
  124. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs +41 -0
  125. package/es/DatePicker/core/PickerInput/hooks/useFocusEvents.mjs.map +1 -0
  126. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs +34 -0
  127. package/es/DatePicker/core/PickerInput/hooks/useFocusLock.mjs.map +1 -0
  128. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs +35 -0
  129. package/es/DatePicker/core/PickerInput/hooks/useHoverStore.mjs.map +1 -0
  130. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs +9 -0
  131. package/es/DatePicker/core/PickerInput/hooks/useInputReadOnly.mjs.map +1 -0
  132. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs +36 -0
  133. package/es/DatePicker/core/PickerInput/hooks/useInvalidate.mjs.map +1 -0
  134. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs +27 -0
  135. package/es/DatePicker/core/PickerInput/hooks/useLockEffect.mjs.map +1 -0
  136. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs +18 -0
  137. package/es/DatePicker/core/PickerInput/hooks/useOpen.mjs.map +1 -0
  138. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs +19 -0
  139. package/es/DatePicker/core/PickerInput/hooks/usePickerRef.mjs.map +1 -0
  140. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs +20 -0
  141. package/es/DatePicker/core/PickerInput/hooks/usePresets.mjs.map +1 -0
  142. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs +24 -0
  143. package/es/DatePicker/core/PickerInput/hooks/useRangeDisabledDate.mjs.map +1 -0
  144. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs +107 -0
  145. package/es/DatePicker/core/PickerInput/hooks/useRangePickerValue.mjs.map +1 -0
  146. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs +144 -0
  147. package/es/DatePicker/core/PickerInput/hooks/useRangeValue.mjs.map +1 -0
  148. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs +219 -0
  149. package/es/DatePicker/core/PickerInput/hooks/useRangeValueChange.mjs.map +1 -0
  150. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs +11 -0
  151. package/es/DatePicker/core/PickerInput/hooks/useShowNow.mjs.map +1 -0
  152. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs +131 -0
  153. package/es/DatePicker/core/PickerPanel/DatePanel/index.mjs.map +1 -0
  154. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs +35 -0
  155. package/es/DatePicker/core/PickerPanel/DateTimePanel/index.mjs.map +1 -0
  156. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs +84 -0
  157. package/es/DatePicker/core/PickerPanel/DecadePanel/index.mjs.map +1 -0
  158. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs +73 -0
  159. package/es/DatePicker/core/PickerPanel/MonthPanel/index.mjs.map +1 -0
  160. package/es/DatePicker/core/PickerPanel/PanelBody.mjs +95 -0
  161. package/es/DatePicker/core/PickerPanel/PanelBody.mjs.map +1 -0
  162. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs +130 -0
  163. package/es/DatePicker/core/PickerPanel/PanelHeader.mjs.map +1 -0
  164. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs +64 -0
  165. package/es/DatePicker/core/PickerPanel/QuarterPanel/index.mjs.map +1 -0
  166. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs +108 -0
  167. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/ClockDial.mjs.map +1 -0
  168. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs +44 -0
  169. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/geometry.mjs.map +1 -0
  170. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs +157 -0
  171. package/es/DatePicker/core/PickerPanel/TimePanel/TimeClock/index.mjs.map +1 -0
  172. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs +100 -0
  173. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/TimeColumn.mjs.map +1 -0
  174. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs +71 -0
  175. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/index.mjs.map +1 -0
  176. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs +62 -0
  177. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useScrollTo.mjs.map +1 -0
  178. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs +200 -0
  179. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/useTimeState.mjs.map +1 -0
  180. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs +25 -0
  181. package/es/DatePicker/core/PickerPanel/TimePanel/TimePanelBody/util.mjs.map +1 -0
  182. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs +31 -0
  183. package/es/DatePicker/core/PickerPanel/TimePanel/index.mjs.map +1 -0
  184. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs +34 -0
  185. package/es/DatePicker/core/PickerPanel/WeekPanel/index.mjs.map +1 -0
  186. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs +92 -0
  187. package/es/DatePicker/core/PickerPanel/YearPanel/index.mjs.map +1 -0
  188. package/es/DatePicker/core/PickerPanel/context.mjs +48 -0
  189. package/es/DatePicker/core/PickerPanel/context.mjs.map +1 -0
  190. package/es/DatePicker/core/PickerPanel/index.d.mts +1 -0
  191. package/es/DatePicker/core/PickerPanel/index.mjs +175 -0
  192. package/es/DatePicker/core/PickerPanel/index.mjs.map +1 -0
  193. package/es/DatePicker/core/PickerPopup.mjs +118 -0
  194. package/es/DatePicker/core/PickerPopup.mjs.map +1 -0
  195. package/es/DatePicker/core/generate/dayjs.mjs +109 -0
  196. package/es/DatePicker/core/generate/dayjs.mjs.map +1 -0
  197. package/es/DatePicker/core/generate/index.d.mts +40 -0
  198. package/es/DatePicker/core/hooks/react.mjs +58 -0
  199. package/es/DatePicker/core/hooks/react.mjs.map +1 -0
  200. package/es/DatePicker/core/hooks/useLocale.mjs +51 -0
  201. package/es/DatePicker/core/hooks/useLocale.mjs.map +1 -0
  202. package/es/DatePicker/core/hooks/useSemantic.mjs +20 -0
  203. package/es/DatePicker/core/hooks/useSemantic.mjs.map +1 -0
  204. package/es/DatePicker/core/hooks/useSyncState.mjs +25 -0
  205. package/es/DatePicker/core/hooks/useSyncState.mjs.map +1 -0
  206. package/es/DatePicker/core/hooks/useTimeConfig.mjs +173 -0
  207. package/es/DatePicker/core/hooks/useTimeConfig.mjs.map +1 -0
  208. package/es/DatePicker/core/hooks/useTimeInfo.mjs +110 -0
  209. package/es/DatePicker/core/hooks/useTimeInfo.mjs.map +1 -0
  210. package/es/DatePicker/core/hooks/useToggleDates.mjs +21 -0
  211. package/es/DatePicker/core/hooks/useToggleDates.mjs.map +1 -0
  212. package/es/DatePicker/core/index.d.mts +5 -0
  213. package/es/DatePicker/core/index.mjs +9 -0
  214. package/es/DatePicker/core/index.mjs.map +1 -0
  215. package/es/DatePicker/core/interface.d.mts +325 -0
  216. package/es/DatePicker/core/locale/common.mjs +11 -0
  217. package/es/DatePicker/core/locale/common.mjs.map +1 -0
  218. package/es/DatePicker/core/locale/en_US.mjs +39 -0
  219. package/es/DatePicker/core/locale/en_US.mjs.map +1 -0
  220. package/es/DatePicker/core/utils/common.mjs +73 -0
  221. package/es/DatePicker/core/utils/common.mjs.map +1 -0
  222. package/es/DatePicker/core/utils/dateUtil.mjs +106 -0
  223. package/es/DatePicker/core/utils/dateUtil.mjs.map +1 -0
  224. package/es/DatePicker/core/utils/miscUtil.mjs +46 -0
  225. package/es/DatePicker/core/utils/miscUtil.mjs.map +1 -0
  226. package/es/DatePicker/core/utils/uiUtil.mjs +9 -0
  227. package/es/DatePicker/core/utils/uiUtil.mjs.map +1 -0
  228. package/es/DatePicker/generateConfig.mjs +12 -0
  229. package/es/DatePicker/generateConfig.mjs.map +1 -0
  230. package/es/DatePicker/generatePicker.d.mts +12 -0
  231. package/es/DatePicker/generatePicker.mjs +22 -0
  232. package/es/DatePicker/generatePicker.mjs.map +1 -0
  233. package/es/DatePicker/index.d.mts +6 -3
  234. package/es/DatePicker/index.mjs +3 -1
  235. package/es/DatePicker/locale.d.mts +15 -0
  236. package/es/DatePicker/locale.mjs +143 -0
  237. package/es/DatePicker/locale.mjs.map +1 -0
  238. package/es/DatePicker/semantic.mjs +29 -0
  239. package/es/DatePicker/semantic.mjs.map +1 -0
  240. package/es/DatePicker/style.mjs +3 -155
  241. package/es/DatePicker/style.mjs.map +1 -1
  242. package/es/DatePicker/type.d.mts +268 -27
  243. package/es/DatePicker/usePanelKeyboard.mjs +230 -0
  244. package/es/DatePicker/usePanelKeyboard.mjs.map +1 -0
  245. package/es/DatePicker/usePickerShared.mjs +106 -0
  246. package/es/DatePicker/usePickerShared.mjs.map +1 -0
  247. package/es/DatePicker/usePresetActive.mjs +48 -0
  248. package/es/DatePicker/usePresetActive.mjs.map +1 -0
  249. package/es/DraggablePanel/atoms.mjs +5 -5
  250. package/es/DraggablePanel/atoms.mjs.map +1 -1
  251. package/es/DraggableSideNav/DraggableSideNav.mjs +3 -3
  252. package/es/DraggableSideNav/DraggableSideNav.mjs.map +1 -1
  253. package/es/Drawer/Drawer.mjs +2 -2
  254. package/es/Drawer/Drawer.mjs.map +1 -1
  255. package/es/Drawer/atoms.mjs +6 -6
  256. package/es/Drawer/atoms.mjs.map +1 -1
  257. package/es/DropdownMenu/atoms.mjs +22 -22
  258. package/es/DropdownMenu/atoms.mjs.map +1 -1
  259. package/es/DropdownMenu/sharedStyle.mjs +2 -2
  260. package/es/DropdownMenu/sharedStyle.mjs.map +1 -1
  261. package/es/EditableText/EditableText.mjs +1 -1
  262. package/es/EditorSlashMenu/atoms.mjs +12 -12
  263. package/es/EditorSlashMenu/atoms.mjs.map +1 -1
  264. package/es/EmojiPicker/EmojiPicker.mjs +7 -7
  265. package/es/EmojiPicker/EmojiPicker.mjs.map +1 -1
  266. package/es/EmojiPicker/loadEmojiData.mjs +6 -0
  267. package/es/EmojiPicker/loadEmojiData.mjs.map +1 -0
  268. package/es/FloatingPanel/FloatingPanel.mjs +2 -2
  269. package/es/FloatingPanel/FloatingPanel.mjs.map +1 -1
  270. package/es/FormKit/List.mjs +2 -2
  271. package/es/FormKit/List.mjs.map +1 -1
  272. package/es/Highlighter/FullFeatured.mjs +2 -2
  273. package/es/Highlighter/FullFeatured.mjs.map +1 -1
  274. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs +2 -2
  275. package/es/Highlighter/SyntaxHighlighter/StreamRenderer.mjs.map +1 -1
  276. package/es/Highlighter/SyntaxHighlighter/index.mjs +4 -4
  277. package/es/Highlighter/SyntaxHighlighter/index.mjs.map +1 -1
  278. package/es/Highlighter/style.mjs +2 -2
  279. package/es/Highlighter/style.mjs.map +1 -1
  280. package/es/HtmlPreview/HtmlPreview.mjs +2 -2
  281. package/es/HtmlPreview/HtmlPreview.mjs.map +1 -1
  282. package/es/Icon/Icon.mjs +2 -2
  283. package/es/Icon/Icon.mjs.map +1 -1
  284. package/es/List/ListRow.mjs +3 -3
  285. package/es/List/ListRow.mjs.map +1 -1
  286. package/es/Markdown/Markdown.mjs +2 -2
  287. package/es/Markdown/Markdown.mjs.map +1 -1
  288. package/es/Markdown/Typography.mjs +2 -2
  289. package/es/Markdown/Typography.mjs.map +1 -1
  290. package/es/Mermaid/FullFeatured.mjs +2 -2
  291. package/es/Mermaid/FullFeatured.mjs.map +1 -1
  292. package/es/Mermaid/SyntaxMermaid/index.mjs +4 -4
  293. package/es/Mermaid/SyntaxMermaid/index.mjs.map +1 -1
  294. package/es/Modal/atoms.mjs +6 -6
  295. package/es/Modal/atoms.mjs.map +1 -1
  296. package/es/Pagination/Pagination.mjs +181 -41
  297. package/es/Pagination/Pagination.mjs.map +1 -1
  298. package/es/Pagination/helpers.mjs +3 -3
  299. package/es/Pagination/helpers.mjs.map +1 -1
  300. package/es/Pagination/index.d.mts +2 -2
  301. package/es/Pagination/marker.stylex.mjs +9 -0
  302. package/es/Pagination/marker.stylex.mjs.map +1 -0
  303. package/es/Pagination/style.mjs +74 -4
  304. package/es/Pagination/style.mjs.map +1 -1
  305. package/es/Pagination/type.d.mts +41 -3
  306. package/es/Popover/PopoverInGroup.mjs +2 -2
  307. package/es/Popover/PopoverInGroup.mjs.map +1 -1
  308. package/es/Popover/atoms.mjs +6 -6
  309. package/es/Popover/atoms.mjs.map +1 -1
  310. package/es/ProTable/ProTable.d.mts +11 -0
  311. package/es/ProTable/ProTable.mjs +208 -0
  312. package/es/ProTable/ProTable.mjs.map +1 -0
  313. package/es/ProTable/hooks/useColumnRequest.mjs +55 -0
  314. package/es/ProTable/hooks/useColumnRequest.mjs.map +1 -0
  315. package/es/ProTable/hooks/useColumnsState.mjs +37 -0
  316. package/es/ProTable/hooks/useColumnsState.mjs.map +1 -0
  317. package/es/ProTable/hooks/useDelayedFlag.mjs +18 -0
  318. package/es/ProTable/hooks/useDelayedFlag.mjs.map +1 -0
  319. package/es/ProTable/hooks/useDensity.mjs +15 -0
  320. package/es/ProTable/hooks/useDensity.mjs.map +1 -0
  321. package/es/ProTable/hooks/useFetchData.mjs +97 -0
  322. package/es/ProTable/hooks/useFetchData.mjs.map +1 -0
  323. package/es/ProTable/hooks/useFullscreen.mjs +22 -0
  324. package/es/ProTable/hooks/useFullscreen.mjs.map +1 -0
  325. package/es/ProTable/hooks/usePageInfo.mjs +35 -0
  326. package/es/ProTable/hooks/usePageInfo.mjs.map +1 -0
  327. package/es/ProTable/hooks/useProColumns.mjs +123 -0
  328. package/es/ProTable/hooks/useProColumns.mjs.map +1 -0
  329. package/es/ProTable/hooks/useProLoading.mjs +19 -0
  330. package/es/ProTable/hooks/useProLoading.mjs.map +1 -0
  331. package/es/ProTable/hooks/useProLocale.mjs +22 -0
  332. package/es/ProTable/hooks/useProLocale.mjs.map +1 -0
  333. package/es/ProTable/hooks/useProRequest.mjs +137 -0
  334. package/es/ProTable/hooks/useProRequest.mjs.map +1 -0
  335. package/es/ProTable/hooks/useRowCache.mjs +11 -0
  336. package/es/ProTable/hooks/useRowCache.mjs.map +1 -0
  337. package/es/ProTable/hooks/useSearchForm.mjs +141 -0
  338. package/es/ProTable/hooks/useSearchForm.mjs.map +1 -0
  339. package/es/ProTable/hooks/useTableBindings.mjs +39 -0
  340. package/es/ProTable/hooks/useTableBindings.mjs.map +1 -0
  341. package/es/ProTable/hooks/useTableSelection.mjs +14 -0
  342. package/es/ProTable/hooks/useTableSelection.mjs.map +1 -0
  343. package/es/ProTable/index.d.mts +4 -0
  344. package/es/ProTable/index.d.ts +1 -0
  345. package/es/ProTable/index.js +1 -0
  346. package/es/ProTable/index.mjs +3 -0
  347. package/es/ProTable/locale.d.mts +15 -0
  348. package/es/ProTable/locale.mjs +66 -0
  349. package/es/ProTable/locale.mjs.map +1 -0
  350. package/es/ProTable/parts/ColumnSetting.mjs +155 -0
  351. package/es/ProTable/parts/ColumnSetting.mjs.map +1 -0
  352. package/es/ProTable/parts/FieldControl.mjs +117 -0
  353. package/es/ProTable/parts/FieldControl.mjs.map +1 -0
  354. package/es/ProTable/parts/KeywordInput.mjs +19 -0
  355. package/es/ProTable/parts/KeywordInput.mjs.map +1 -0
  356. package/es/ProTable/parts/LightFilter.mjs +70 -0
  357. package/es/ProTable/parts/LightFilter.mjs.map +1 -0
  358. package/es/ProTable/parts/OptionPopover.mjs +17 -0
  359. package/es/ProTable/parts/OptionPopover.mjs.map +1 -0
  360. package/es/ProTable/parts/SearchForm.mjs +180 -0
  361. package/es/ProTable/parts/SearchForm.mjs.map +1 -0
  362. package/es/ProTable/parts/SearchSection.mjs +33 -0
  363. package/es/ProTable/parts/SearchSection.mjs.map +1 -0
  364. package/es/ProTable/parts/TableAlert.mjs +38 -0
  365. package/es/ProTable/parts/TableAlert.mjs.map +1 -0
  366. package/es/ProTable/parts/Toolbar.mjs +50 -0
  367. package/es/ProTable/parts/Toolbar.mjs.map +1 -0
  368. package/es/ProTable/parts/ToolbarOptions.mjs +103 -0
  369. package/es/ProTable/parts/ToolbarOptions.mjs.map +1 -0
  370. package/es/ProTable/parts/renderValue.mjs +118 -0
  371. package/es/ProTable/parts/renderValue.mjs.map +1 -0
  372. package/es/ProTable/style.mjs +278 -0
  373. package/es/ProTable/style.mjs.map +1 -0
  374. package/es/ProTable/type.d.mts +397 -0
  375. package/es/ProTable/utils.mjs +152 -0
  376. package/es/ProTable/utils.mjs.map +1 -0
  377. package/es/Radio/Radio.mjs +3 -3
  378. package/es/Radio/Radio.mjs.map +1 -1
  379. package/es/ScrollArea/atoms.mjs +4 -4
  380. package/es/ScrollArea/atoms.mjs.map +1 -1
  381. package/es/Segmented/Segmented.mjs +3 -3
  382. package/es/Segmented/Segmented.mjs.map +1 -1
  383. package/es/Segmented/atoms.mjs +2 -2
  384. package/es/Segmented/atoms.mjs.map +1 -1
  385. package/es/Select/Select.mjs +22 -13
  386. package/es/Select/Select.mjs.map +1 -1
  387. package/es/Select/atoms.mjs +4 -4
  388. package/es/Select/atoms.mjs.map +1 -1
  389. package/es/Select/helpers.mjs +8 -1
  390. package/es/Select/helpers.mjs.map +1 -1
  391. package/es/Select/hooks.mjs +8 -4
  392. package/es/Select/hooks.mjs.map +1 -1
  393. package/es/Select/renderOptions.mjs +2 -2
  394. package/es/Select/renderOptions.mjs.map +1 -1
  395. package/es/Select/type.d.mts +7 -0
  396. package/es/Switch/Switch.mjs +2 -2
  397. package/es/Switch/Switch.mjs.map +1 -1
  398. package/es/Switch/atoms.mjs +2 -2
  399. package/es/Switch/atoms.mjs.map +1 -1
  400. package/es/Table/Column.d.mts +8 -0
  401. package/es/Table/Column.mjs +6 -0
  402. package/es/Table/Column.mjs.map +1 -0
  403. package/es/Table/ColumnGroup.d.mts +11 -0
  404. package/es/Table/ColumnGroup.mjs +6 -0
  405. package/es/Table/ColumnGroup.mjs.map +1 -0
  406. package/es/Table/Table.d.mts +16 -2
  407. package/es/Table/Table.mjs +149 -118
  408. package/es/Table/Table.mjs.map +1 -1
  409. package/es/Table/atoms/cells.d.mts +42 -0
  410. package/es/Table/atoms/cells.mjs +72 -0
  411. package/es/Table/atoms/cells.mjs.map +1 -0
  412. package/es/Table/atoms/index.d.mts +3 -0
  413. package/es/Table/atoms/layout.d.mts +44 -0
  414. package/es/Table/atoms/layout.mjs +62 -0
  415. package/es/Table/atoms/layout.mjs.map +1 -0
  416. package/es/Table/constants.mjs +16 -0
  417. package/es/Table/constants.mjs.map +1 -0
  418. package/es/Table/engine/fixed.d.mts +1 -0
  419. package/es/Table/engine/fixed.mjs +53 -0
  420. package/es/Table/engine/fixed.mjs.map +1 -0
  421. package/es/Table/engine/types.d.mts +1 -0
  422. package/es/Table/engine/useTableEngine.mjs +180 -0
  423. package/es/Table/engine/useTableEngine.mjs.map +1 -0
  424. package/es/Table/index.d.mts +7 -2
  425. package/es/Table/index.mjs +4 -1
  426. package/es/Table/internal.d.mts +3 -0
  427. package/es/Table/pipeline/columnUtils.d.mts +5 -0
  428. package/es/Table/pipeline/columnUtils.mjs +58 -0
  429. package/es/Table/pipeline/columnUtils.mjs.map +1 -0
  430. package/es/Table/pipeline/convertChildrenToColumns.mjs +24 -0
  431. package/es/Table/pipeline/convertChildrenToColumns.mjs.map +1 -0
  432. package/es/Table/pipeline/normalizeColumns.mjs +140 -0
  433. package/es/Table/pipeline/normalizeColumns.mjs.map +1 -0
  434. package/es/Table/pipeline/selectionUtils.d.mts +9 -0
  435. package/es/Table/pipeline/selectionUtils.mjs +115 -0
  436. package/es/Table/pipeline/selectionUtils.mjs.map +1 -0
  437. package/es/Table/pipeline/useBreakpoint.mjs +36 -0
  438. package/es/Table/pipeline/useBreakpoint.mjs.map +1 -0
  439. package/es/Table/pipeline/useExpandable.mjs +45 -0
  440. package/es/Table/pipeline/useExpandable.mjs.map +1 -0
  441. package/es/Table/pipeline/useFilter.mjs +52 -0
  442. package/es/Table/pipeline/useFilter.mjs.map +1 -0
  443. package/es/Table/pipeline/useSelection.mjs +302 -0
  444. package/es/Table/pipeline/useSelection.mjs.map +1 -0
  445. package/es/Table/pipeline/useSorter.mjs +146 -0
  446. package/es/Table/pipeline/useSorter.mjs.map +1 -0
  447. package/es/Table/pipeline/useTableLocale.mjs +30 -0
  448. package/es/Table/pipeline/useTableLocale.mjs.map +1 -0
  449. package/es/Table/pipeline/useTableState.mjs +118 -0
  450. package/es/Table/pipeline/useTableState.mjs.map +1 -0
  451. package/es/Table/pipeline/useVirtualLayout.mjs +80 -0
  452. package/es/Table/pipeline/useVirtualLayout.mjs.map +1 -0
  453. package/es/Table/render/Body.mjs +150 -0
  454. package/es/Table/render/Body.mjs.map +1 -0
  455. package/es/Table/render/BodyCell.mjs +87 -0
  456. package/es/Table/render/BodyCell.mjs.map +1 -0
  457. package/es/Table/render/CellShell.mjs +84 -0
  458. package/es/Table/render/CellShell.mjs.map +1 -0
  459. package/es/Table/render/ExpandIcon.mjs +28 -0
  460. package/es/Table/render/ExpandIcon.mjs.map +1 -0
  461. package/es/Table/render/FilterDropdown.mjs +139 -0
  462. package/es/Table/render/FilterDropdown.mjs.map +1 -0
  463. package/es/Table/render/FilterPanel.mjs +152 -0
  464. package/es/Table/render/FilterPanel.mjs.map +1 -0
  465. package/es/Table/render/FixedFrost.mjs +113 -0
  466. package/es/Table/render/FixedFrost.mjs.map +1 -0
  467. package/es/Table/render/FixedHolder.mjs +51 -0
  468. package/es/Table/render/FixedHolder.mjs.map +1 -0
  469. package/es/Table/render/Header.mjs +184 -0
  470. package/es/Table/render/Header.mjs.map +1 -0
  471. package/es/Table/render/LoadingSkeleton.mjs +78 -0
  472. package/es/Table/render/LoadingSkeleton.mjs.map +1 -0
  473. package/es/Table/render/PaginationBar.mjs +71 -0
  474. package/es/Table/render/PaginationBar.mjs.map +1 -0
  475. package/es/Table/render/SelectionCells.mjs +111 -0
  476. package/es/Table/render/SelectionCells.mjs.map +1 -0
  477. package/es/Table/render/StickyScrollBar.mjs +99 -0
  478. package/es/Table/render/StickyScrollBar.mjs.map +1 -0
  479. package/es/Table/render/Summary.d.mts +16 -0
  480. package/es/Table/render/Summary.mjs +58 -0
  481. package/es/Table/render/Summary.mjs.map +1 -0
  482. package/es/Table/render/TableView.mjs +215 -0
  483. package/es/Table/render/TableView.mjs.map +1 -0
  484. package/es/Table/render/VirtualBody.mjs +101 -0
  485. package/es/Table/render/VirtualBody.mjs.map +1 -0
  486. package/es/Table/render/context.mjs +15 -0
  487. package/es/Table/render/context.mjs.map +1 -0
  488. package/es/Table/render/filterUtils.mjs +22 -0
  489. package/es/Table/render/filterUtils.mjs.map +1 -0
  490. package/es/Table/render/tableHelpers.mjs +27 -0
  491. package/es/Table/render/tableHelpers.mjs.map +1 -0
  492. package/es/Table/render/useColGroups.mjs +23 -0
  493. package/es/Table/render/useColGroups.mjs.map +1 -0
  494. package/es/Table/render/useScrollSync.mjs +104 -0
  495. package/es/Table/render/useScrollSync.mjs.map +1 -0
  496. package/es/Table/render/useViewContexts.mjs +134 -0
  497. package/es/Table/render/useViewContexts.mjs.map +1 -0
  498. package/es/Table/semantic.mjs +45 -0
  499. package/es/Table/semantic.mjs.map +1 -0
  500. package/es/Table/store/createTableStore.d.mts +1 -0
  501. package/es/Table/store/createTableStore.mjs +40 -0
  502. package/es/Table/store/createTableStore.mjs.map +1 -0
  503. package/es/Table/store/hooks.mjs +24 -0
  504. package/es/Table/store/hooks.mjs.map +1 -0
  505. package/es/Table/style.mjs +175 -90
  506. package/es/Table/style.mjs.map +1 -1
  507. package/es/Table/type.d.mts +467 -37
  508. package/es/Table/useTableController.mjs +293 -0
  509. package/es/Table/useTableController.mjs.map +1 -0
  510. package/es/Tabs/Tabs.mjs +2 -2
  511. package/es/Tabs/Tabs.mjs.map +1 -1
  512. package/es/Tabs/atoms.mjs +2 -2
  513. package/es/Tabs/atoms.mjs.map +1 -1
  514. package/es/Tabs/style.d.mts +1 -1
  515. package/es/Tag/Tag.mjs +2 -2
  516. package/es/Tag/Tag.mjs.map +1 -1
  517. package/es/Text/Text.mjs +2 -2
  518. package/es/Text/Text.mjs.map +1 -1
  519. package/es/Text/style.d.mts +3 -3
  520. package/es/Text/style.mjs +3 -3
  521. package/es/Text/style.mjs.map +1 -1
  522. package/es/ToggleGroup/ToggleGroup.mjs +3 -3
  523. package/es/ToggleGroup/ToggleGroup.mjs.map +1 -1
  524. package/es/ToggleGroup/atoms.mjs +2 -2
  525. package/es/ToggleGroup/atoms.mjs.map +1 -1
  526. package/es/Tooltip/TooltipGroup.mjs +3 -3
  527. package/es/Tooltip/TooltipGroup.mjs.map +1 -1
  528. package/es/Tooltip/TooltipStandalone.mjs +3 -3
  529. package/es/Tooltip/TooltipStandalone.mjs.map +1 -1
  530. package/es/Tree/Tree.mjs +2 -2
  531. package/es/Tree/Tree.mjs.map +1 -1
  532. package/es/Tree/TreeNode.mjs +2 -2
  533. package/es/Tree/TreeNode.mjs.map +1 -1
  534. package/es/Video/Video.mjs +2 -2
  535. package/es/Video/Video.mjs.map +1 -1
  536. package/es/awesome/Features/FeatureItem.mjs +2 -2
  537. package/es/awesome/Features/FeatureItem.mjs.map +1 -1
  538. package/es/awesome/Hero/Hero.mjs +3 -3
  539. package/es/awesome/Hero/Hero.mjs.map +1 -1
  540. package/es/awesome/InstallBanner/InstallBanner.mjs +2 -2
  541. package/es/awesome/InstallBanner/InstallBanner.mjs.map +1 -1
  542. package/es/awesome/LandingHero/LandingHero.mjs +3 -3
  543. package/es/awesome/LandingHero/LandingHero.mjs.map +1 -1
  544. package/es/awesome/LogoMarquee/LogoMarquee.mjs +2 -2
  545. package/es/awesome/LogoMarquee/LogoMarquee.mjs.map +1 -1
  546. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs +4 -4
  547. package/es/awesome/TypewriterEffect/TypewriterEffect.mjs.map +1 -1
  548. package/es/awesome/landingActions.mjs +2 -2
  549. package/es/awesome/landingActions.mjs.map +1 -1
  550. package/es/chat/ChatItem/ChatItem.mjs +2 -2
  551. package/es/chat/ChatItem/ChatItem.mjs.map +1 -1
  552. package/es/chat/EditableMessage/EditableMessage.mjs +3 -3
  553. package/es/chat/EditableMessage/EditableMessage.mjs.map +1 -1
  554. package/es/chat/EditableMessageList/EditableMessageList.mjs +1 -1
  555. package/es/chat/MessageInput/MessageInput.mjs +3 -3
  556. package/es/chat/MessageInput/MessageInput.mjs.map +1 -1
  557. package/es/dashboard/AuthLayout/AuthLayout.mjs +8 -4
  558. package/es/dashboard/AuthLayout/AuthLayout.mjs.map +1 -1
  559. package/es/dashboard/AuthLayout/style.mjs +14 -3
  560. package/es/dashboard/AuthLayout/style.mjs.map +1 -1
  561. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs +2 -2
  562. package/es/dashboard/AuthTools/AuthLocaleSwitch.mjs.map +1 -1
  563. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs +2 -2
  564. package/es/dashboard/AuthTools/AuthThemeSwitch.mjs.map +1 -1
  565. package/es/dashboard/ConsoleNav/ConsoleNav.mjs +3 -3
  566. package/es/dashboard/ConsoleNav/ConsoleNav.mjs.map +1 -1
  567. package/es/dashboard/ConsoleNav/style.mjs +2 -2
  568. package/es/dashboard/ConsoleNav/style.mjs.map +1 -1
  569. package/es/dashboard/ConsoleShell/style.mjs +1 -1
  570. package/es/dashboard/ConsoleShell/style.mjs.map +1 -1
  571. package/es/dashboard/FilterSidebar/FilterSidebar.mjs +1 -1
  572. package/es/dashboard/FilterSidebar/style.mjs +2 -2
  573. package/es/dashboard/FilterSidebar/style.mjs.map +1 -1
  574. package/es/dashboard/FilterStrip/style.mjs +1 -1
  575. package/es/dashboard/FilterStrip/style.mjs.map +1 -1
  576. package/es/dashboard/MetricStrip/MetricCell.mjs +25 -14
  577. package/es/dashboard/MetricStrip/MetricCell.mjs.map +1 -1
  578. package/es/dashboard/MetricStrip/style.mjs +14 -1
  579. package/es/dashboard/MetricStrip/style.mjs.map +1 -1
  580. package/es/dashboard/MetricStrip/type.d.mts +2 -0
  581. package/es/dashboard/PageSkeleton/style.mjs +2 -1
  582. package/es/dashboard/PageSkeleton/style.mjs.map +1 -1
  583. package/es/dashboard/StatCard/StatCard.d.mts +1 -1
  584. package/es/dashboard/StatCard/StatCard.mjs +2 -1
  585. package/es/dashboard/StatCard/StatCard.mjs.map +1 -1
  586. package/es/dashboard/StatCard/type.d.mts +2 -0
  587. package/es/dashboard/Surface/Surface.mjs +3 -4
  588. package/es/dashboard/Surface/Surface.mjs.map +1 -1
  589. package/es/dashboard/Surface/link.mjs +1 -1
  590. package/es/dashboard/Surface/link.mjs.map +1 -1
  591. package/es/dashboard/Surface/style.mjs +15 -14
  592. package/es/dashboard/Surface/style.mjs.map +1 -1
  593. package/es/dashboard/index.mjs +2 -2
  594. package/es/eslint/noBaseUiSubpath.mjs +2 -1
  595. package/es/eslint/noBaseUiSubpath.mjs.map +1 -1
  596. package/es/i18n/resources/en/colorPicker.d.mts +5 -0
  597. package/es/i18n/resources/en/colorPicker.mjs +5 -0
  598. package/es/i18n/resources/en/colorPicker.mjs.map +1 -1
  599. package/es/i18n/resources/en/datePicker.d.mts +54 -0
  600. package/es/i18n/resources/en/datePicker.mjs +55 -1
  601. package/es/i18n/resources/en/datePicker.mjs.map +1 -1
  602. package/es/i18n/resources/en/index.d.mts +4 -3
  603. package/es/i18n/resources/en/index.mjs +3 -1
  604. package/es/i18n/resources/en/index.mjs.map +1 -1
  605. package/es/i18n/resources/en/table.d.mts +23 -0
  606. package/es/i18n/resources/en/table.mjs +24 -0
  607. package/es/i18n/resources/en/table.mjs.map +1 -0
  608. package/es/i18n/resources/zhCn/colorPicker.d.mts +5 -0
  609. package/es/i18n/resources/zhCn/colorPicker.mjs +5 -0
  610. package/es/i18n/resources/zhCn/colorPicker.mjs.map +1 -1
  611. package/es/i18n/resources/zhCn/datePicker.d.mts +54 -0
  612. package/es/i18n/resources/zhCn/datePicker.mjs +55 -1
  613. package/es/i18n/resources/zhCn/datePicker.mjs.map +1 -1
  614. package/es/i18n/resources/zhCn/index.d.mts +4 -3
  615. package/es/i18n/resources/zhCn/index.mjs +4 -2
  616. package/es/i18n/resources/zhCn/index.mjs.map +1 -1
  617. package/es/i18n/resources/zhCn/table.d.mts +23 -0
  618. package/es/i18n/resources/zhCn/table.mjs +24 -0
  619. package/es/i18n/resources/zhCn/table.mjs.map +1 -0
  620. package/es/i18n/types.d.mts +3 -2
  621. package/es/index.d.mts +15 -7
  622. package/es/index.mjs +14 -9
  623. package/es/internal/overflow/OverflowList.mjs +71 -0
  624. package/es/internal/overflow/OverflowList.mjs.map +1 -0
  625. package/es/mdx/Callout/index.mjs +2 -2
  626. package/es/mdx/Callout/index.mjs.map +1 -1
  627. package/es/mdx/Cards/Card.mjs +2 -2
  628. package/es/mdx/Cards/Card.mjs.map +1 -1
  629. package/es/mdx/Cards/index.mjs +2 -2
  630. package/es/mdx/Cards/index.mjs.map +1 -1
  631. package/es/mdx/Mdx/index.mjs +2 -2
  632. package/es/mdx/Mdx/index.mjs.map +1 -1
  633. package/es/mdx/Steps/index.mjs +2 -2
  634. package/es/mdx/Steps/index.mjs.map +1 -1
  635. package/es/mdx/mdxComponents/Pre.mjs +5 -5
  636. package/es/mdx/mdxComponents/Pre.mjs.map +1 -1
  637. package/es/storybook/StoryBook/style.mjs +2 -0
  638. package/es/storybook/StoryBook/style.mjs.map +1 -1
  639. package/es/style.css +2966 -957
  640. package/es/styles/createGlobalStyle.mjs +1 -1
  641. package/es/styles/index.d.mts +3 -2
  642. package/es/styles/index.mjs +5 -4
  643. package/es/styles/stylex/props.mjs +2 -2
  644. package/es/styles/stylex/props.mjs.map +1 -1
  645. package/es/styles/theme/createLobeToken.d.mts +3 -2
  646. package/es/styles/theme/createLobeToken.mjs.map +1 -1
  647. package/es/styles/theme/customPrimary.d.mts +7 -0
  648. package/es/styles/theme/customPrimary.mjs +66 -0
  649. package/es/styles/theme/customPrimary.mjs.map +1 -0
  650. package/es/styles/theme/scope.d.mts +4 -3
  651. package/es/styles/theme/scope.mjs +30 -8
  652. package/es/styles/theme/scope.mjs.map +1 -1
  653. package/es/styles/theme/themeCss.d.mts +2 -0
  654. package/es/styles/theme/themeCss.mjs +24 -2
  655. package/es/styles/theme/themeCss.mjs.map +1 -1
  656. package/es/styles/theme/token/primary.mjs +6 -2
  657. package/es/styles/theme/token/primary.mjs.map +1 -1
  658. package/es/theme.css +8 -0
  659. package/package.json +6 -1
  660. package/es/DatePicker/CalendarPanel.mjs +0 -189
  661. package/es/DatePicker/CalendarPanel.mjs.map +0 -1
  662. package/es/DatePicker/PickerShell.mjs +0 -43
  663. package/es/DatePicker/PickerShell.mjs.map +0 -1
  664. package/es/DatePicker/calendar.d.mts +0 -4
  665. package/es/DatePicker/calendar.mjs +0 -46
  666. package/es/DatePicker/calendar.mjs.map +0 -1
  667. package/es/Table/FilterMenu.mjs +0 -45
  668. package/es/Table/FilterMenu.mjs.map +0 -1
  669. package/es/Table/TableBody.mjs +0 -67
  670. package/es/Table/TableBody.mjs.map +0 -1
  671. package/es/Table/TableHead.mjs +0 -58
  672. package/es/Table/TableHead.mjs.map +0 -1
  673. package/es/Table/features.mjs +0 -12
  674. package/es/Table/features.mjs.map +0 -1
  675. package/es/Table/fixedOffsets.mjs +0 -29
  676. package/es/Table/fixedOffsets.mjs.map +0 -1
  677. package/es/Table/marker.stylex.mjs +0 -9
  678. package/es/Table/marker.stylex.mjs.map +0 -1
  679. package/es/Table/toColumnDefs.mjs +0 -26
  680. package/es/Table/toColumnDefs.mjs.map +0 -1
  681. package/es/Table/useTableState.mjs +0 -99
  682. package/es/Table/useTableState.mjs.map +0 -1
@@ -0,0 +1,144 @@
1
+ import { useControlledState, useEvent } from "../../hooks/react.mjs";
2
+ import { formatValue, isSame, isSameTimestamp } from "../../utils/dateUtil.mjs";
3
+ import { fillIndex } from "../../utils/miscUtil.mjs";
4
+ import useSyncState from "../../hooks/useSyncState.mjs";
5
+ import * as React$1 from "react";
6
+ //#region src/DatePicker/core/PickerInput/hooks/useRangeValue.ts
7
+ const EMPTY_VALUE = [];
8
+ function useUtil(generateConfig, locale, formatList) {
9
+ const getDateTexts = (dates) => {
10
+ return dates.map((date) => formatValue(date, {
11
+ generateConfig,
12
+ locale,
13
+ format: formatList[0]
14
+ }));
15
+ };
16
+ const isSameDates = (source, target) => {
17
+ const maxLen = Math.max(source.length, target.length);
18
+ let diffIndex = -1;
19
+ for (let i = 0; i < maxLen; i += 1) {
20
+ const prev = source[i] || null;
21
+ const next = target[i] || null;
22
+ if (prev !== next && !isSameTimestamp(generateConfig, prev, next)) {
23
+ diffIndex = i;
24
+ break;
25
+ }
26
+ }
27
+ return [diffIndex < 0, diffIndex !== 0];
28
+ };
29
+ return [getDateTexts, isSameDates];
30
+ }
31
+ function orderDates(dates, generateConfig) {
32
+ return [...dates].sort((a, b) => generateConfig.isAfter(a, b) ? 1 : -1);
33
+ }
34
+ /**
35
+ * Used for internal value management.
36
+ * It should always use `mergedValue` in render logic
37
+ */
38
+ function useCalendarValue(mergedValue) {
39
+ const [calendarValue, setCalendarValue] = useSyncState(mergedValue);
40
+ /** Sync calendarValue & submitValue back with value */
41
+ const syncWithValue = useEvent(() => {
42
+ setCalendarValue(mergedValue);
43
+ });
44
+ React$1.useEffect(() => {
45
+ syncWithValue();
46
+ }, [mergedValue]);
47
+ return [calendarValue, setCalendarValue];
48
+ }
49
+ /**
50
+ * Control the internal `value` align with prop `value` and provide a temp `calendarValue` for ui.
51
+ * The caller controls the temporary `calendarValue` lifecycle through event handlers.
52
+ */
53
+ function useInnerValue(generateConfig, locale, formatList, rangeValue, order, defaultValue, value, onCalendarChange, onOk) {
54
+ const [innerValue, setInnerValue] = useControlledState(defaultValue, value);
55
+ const mergedValue = innerValue || EMPTY_VALUE;
56
+ const [calendarValue, setCalendarValue] = useCalendarValue(mergedValue);
57
+ const [getDateTexts, isSameDates] = useUtil(generateConfig, locale, formatList);
58
+ const triggerCalendarChange = useEvent((nextCalendarValues) => {
59
+ let clone = [...nextCalendarValues];
60
+ if (rangeValue) for (let i = 0; i < 2; i += 1) clone[i] = clone[i] || null;
61
+ else if (order) clone = orderDates(clone.filter((date) => date), generateConfig);
62
+ const [isSameMergedDates, isSameStart] = isSameDates(calendarValue(), clone);
63
+ if (!isSameMergedDates) {
64
+ setCalendarValue(clone);
65
+ if (onCalendarChange) {
66
+ const cellTexts = getDateTexts(clone);
67
+ onCalendarChange(clone, cellTexts, { range: isSameStart ? "end" : "start" });
68
+ }
69
+ }
70
+ });
71
+ const triggerOk = () => {
72
+ if (onOk) onOk(calendarValue());
73
+ };
74
+ return [
75
+ mergedValue,
76
+ setInnerValue,
77
+ calendarValue,
78
+ triggerCalendarChange,
79
+ triggerOk
80
+ ];
81
+ }
82
+ function useRangeValue(info, mergedValue, setInnerValue, getCalendarValue, triggerCalendarChange, disabled, formatList, isInvalidateDate) {
83
+ const { generateConfig, locale, picker, onChange, allowEmpty, order } = info;
84
+ const orderOnChange = disabled.some((d) => d) ? false : order;
85
+ const [getDateTexts, isSameDates] = useUtil(generateConfig, locale, formatList);
86
+ const [submitValue, setSubmitValue] = useSyncState(mergedValue);
87
+ /** Sync calendarValue & submitValue back with value */
88
+ const syncWithValue = useEvent(() => {
89
+ setSubmitValue(mergedValue);
90
+ });
91
+ React$1.useEffect(() => {
92
+ syncWithValue();
93
+ }, [mergedValue]);
94
+ const triggerSubmit = useEvent((nextValue) => {
95
+ const isNullValue = nextValue === null;
96
+ let clone = [...nextValue || submitValue()];
97
+ if (isNullValue) {
98
+ const maxLen = Math.max(disabled.length, clone.length);
99
+ for (let i = 0; i < maxLen; i += 1) if (!disabled[i]) clone[i] = null;
100
+ }
101
+ if (orderOnChange && clone[0] && clone[1]) clone = orderDates(clone, generateConfig);
102
+ triggerCalendarChange(clone);
103
+ const [start, end] = clone;
104
+ const startEmpty = !start;
105
+ const endEmpty = !end;
106
+ const validateEmptyDateRange = allowEmpty ? (!startEmpty || allowEmpty[0]) && (!endEmpty || allowEmpty[1]) : true;
107
+ const validateOrder = !order || startEmpty || endEmpty || isSame(generateConfig, locale, start, end, picker) || generateConfig.isAfter(end, start);
108
+ const validateDates = (disabled[0] || !start || !isInvalidateDate(start, { activeIndex: 0 })) && (disabled[1] || !end || !isInvalidateDate(end, {
109
+ from: start,
110
+ activeIndex: 1
111
+ }));
112
+ const allPassed = isNullValue || validateEmptyDateRange && validateOrder && validateDates;
113
+ if (allPassed) {
114
+ setInnerValue(clone);
115
+ const [isSameMergedDates] = isSameDates(clone, mergedValue);
116
+ if (onChange && !isSameMergedDates) {
117
+ const everyEmpty = clone.every((val) => !val);
118
+ onChange(isNullValue && everyEmpty ? null : clone, everyEmpty ? null : getDateTexts(clone));
119
+ }
120
+ }
121
+ return allPassed;
122
+ });
123
+ return [
124
+ useEvent((index, needTriggerChange) => {
125
+ const nextSubmitValue = fillIndex(submitValue(), index, getCalendarValue()[index]);
126
+ setSubmitValue(nextSubmitValue);
127
+ if (needTriggerChange) triggerSubmit();
128
+ }),
129
+ triggerSubmit,
130
+ useEvent((index) => {
131
+ if (index === void 0) {
132
+ triggerCalendarChange(mergedValue);
133
+ syncWithValue();
134
+ return;
135
+ }
136
+ triggerCalendarChange(fillIndex(getCalendarValue(), index, mergedValue[index]));
137
+ setSubmitValue(fillIndex(submitValue(), index, mergedValue[index]));
138
+ })
139
+ ];
140
+ }
141
+ //#endregion
142
+ export { useRangeValue as default, useInnerValue };
143
+
144
+ //# sourceMappingURL=useRangeValue.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRangeValue.mjs","names":[],"sources":["../../../../../src/DatePicker/core/PickerInput/hooks/useRangeValue.ts"],"sourcesContent":["import * as React from 'react';\n\nimport type { GenerateConfig } from '../../generate';\nimport { useControlledState, useEvent } from '../../hooks/react';\nimport useSyncState from '../../hooks/useSyncState';\nimport type {\n BaseInfo,\n FormatType,\n Locale,\n NullableDateType,\n PickerMode,\n ReplaceListType,\n} from '../../interface';\nimport { formatValue, isSame, isSameTimestamp } from '../../utils/dateUtil';\nimport { fillIndex } from '../../utils/miscUtil';\nimport type { RangePickerProps } from '../RangePicker';\n\nconst EMPTY_VALUE: any[] = [];\n\n// Submit Logic:\n// * ✅ Value:\n// * merged value using controlled value, if not, use stateValue\n// * When merged value change, [1] resync calendar value and submit value\n// * ✅ Calender Value:\n// * 💻 When user typing is validate, change the calendar value\n// * 🌅 When user click on the panel, change the calendar value\n// * Submit Value:\n// * 💻 When user blur the input, flush calendar value to submit value\n// * 🌅 When user click on the panel is no needConfirm, flush calendar value to submit value\n// * 🌅 When user click on the panel is needConfirm and click OK, flush calendar value to submit value\n// * Blur logic & close logic:\n// * ✅ For value, always try flush submit\n// * ✅ If `needConfirm`, reset as [1]\n// * Else (`!needConfirm`)\n// * If has another index field, active another index\n// * ✅ Flush submit:\n// * If all the start & end field is confirmed or all blur or panel closed\n// * Update `needSubmit` mark to true\n// * trigger onChange by `needSubmit` and update stateValue\n\ntype TriggerCalendarChange<ValueType extends NullableDateType<object>[]> = (\n calendarValues: ValueType,\n) => void;\n\ntype NoUndefinedList<ValueType> = { [K in keyof ValueType]: Exclude<ValueType[K], undefined> };\n\nfunction useUtil<\n MergedValueType extends NullableDateType<DateType>[],\n DateType extends object = any,\n>(generateConfig: GenerateConfig<DateType>, locale: Locale, formatList: FormatType[]) {\n const getDateTexts = (dates: MergedValueType) => {\n return dates.map((date) =>\n formatValue(date, { generateConfig, locale, format: formatList[0] }),\n ) as any as ReplaceListType<Required<MergedValueType>, string>;\n };\n\n const isSameDates = (source: MergedValueType, target: MergedValueType) => {\n const maxLen = Math.max(source.length, target.length);\n let diffIndex = -1;\n\n for (let i = 0; i < maxLen; i += 1) {\n const prev = source[i] || null;\n const next = target[i] || null;\n\n if (prev !== next && !isSameTimestamp(generateConfig, prev, next)) {\n diffIndex = i;\n break;\n }\n }\n\n return [diffIndex < 0, diffIndex !== 0];\n };\n\n return [getDateTexts, isSameDates] as const;\n}\n\nfunction orderDates<DateType extends object, DatesType extends NullableDateType<DateType>[]>(\n dates: DatesType,\n generateConfig: GenerateConfig<DateType>,\n) {\n return [...dates].sort((a, b) => (generateConfig.isAfter(a!, b!) ? 1 : -1)) as DatesType;\n}\n\n/**\n * Used for internal value management.\n * It should always use `mergedValue` in render logic\n */\nfunction useCalendarValue<MergedValueType extends NullableDateType<object>[]>(\n mergedValue: MergedValueType,\n) {\n const [calendarValue, setCalendarValue] = useSyncState(mergedValue);\n\n /** Sync calendarValue & submitValue back with value */\n const syncWithValue = useEvent(() => {\n setCalendarValue(mergedValue);\n });\n\n React.useEffect(() => {\n syncWithValue();\n }, [mergedValue]);\n\n return [calendarValue, setCalendarValue] as const;\n}\n\n/**\n * Control the internal `value` align with prop `value` and provide a temp `calendarValue` for ui.\n * The caller controls the temporary `calendarValue` lifecycle through event handlers.\n */\nexport function useInnerValue<\n ValueType extends NullableDateType<DateType>[],\n DateType extends object = any,\n>(\n generateConfig: GenerateConfig<DateType>,\n locale: Locale,\n formatList: FormatType[],\n /** Used for RangePicker. `true` means [DateType, DateType] or will be DateType[] */\n rangeValue: boolean,\n /**\n * Trigger order when trigger calendar value change.\n * This should only used in SinglePicker with `multiple` mode.\n * So when `rangeValue` is `true`, order will be ignored.\n */\n order: boolean,\n defaultValue?: ValueType | null,\n value?: ValueType | null,\n onCalendarChange?: (\n dates: NoUndefinedList<ValueType>,\n dateStrings: ReplaceListType<Required<ValueType>, string>,\n info: BaseInfo,\n ) => void,\n onOk?: (dates: NoUndefinedList<ValueType>) => void,\n) {\n // This is the root value which will sync with controlled or uncontrolled value\n const [innerValue, setInnerValue] = useControlledState(defaultValue, value);\n const mergedValue = innerValue || (EMPTY_VALUE as ValueType);\n\n // ========================= Inner Values =========================\n const [calendarValue, setCalendarValue] = useCalendarValue(mergedValue);\n\n // ============================ Change ============================\n const [getDateTexts, isSameDates] = useUtil<ValueType, DateType>(\n generateConfig,\n locale,\n formatList,\n );\n\n const triggerCalendarChange: TriggerCalendarChange<ValueType> = useEvent(\n (nextCalendarValues: ValueType) => {\n let clone = [...nextCalendarValues] as ValueType;\n\n if (rangeValue) {\n for (let i = 0; i < 2; i += 1) {\n clone[i] = clone[i] || null;\n }\n } else if (order) {\n clone = orderDates(clone.filter((date) => date) as ValueType, generateConfig);\n }\n\n // Update merged value\n const [isSameMergedDates, isSameStart] = isSameDates(calendarValue(), clone);\n if (!isSameMergedDates) {\n setCalendarValue(clone);\n\n // Trigger calendar change event\n if (onCalendarChange) {\n const cellTexts = getDateTexts(clone);\n onCalendarChange(clone as NoUndefinedList<ValueType>, cellTexts, {\n range: isSameStart ? 'end' : 'start',\n });\n }\n }\n },\n );\n\n const triggerOk = () => {\n if (onOk) {\n onOk(calendarValue() as NoUndefinedList<ValueType>);\n }\n };\n\n return [mergedValue, setInnerValue, calendarValue, triggerCalendarChange, triggerOk] as const;\n}\n\nexport default function useRangeValue<\n ValueType extends NullableDateType<DateType>[],\n DateType extends object = any,\n>(\n info: Pick<RangePickerProps<DateType>, 'generateConfig' | 'locale' | 'order'> & {\n picker: PickerMode;\n allowEmpty?: [boolean, boolean];\n // Method syntax keeps the parameter check bivariant: the public onChange takes no undefined\n // entries, while ValueType still allows them.\n // eslint-disable-next-line @typescript-eslint/method-signature-style\n onChange?(\n dates: ValueType | null,\n dateStrings: ReplaceListType<Required<ValueType>, string> | null,\n ): void;\n },\n mergedValue: ValueType,\n setInnerValue: (nextValue: ValueType) => void,\n getCalendarValue: () => ValueType,\n triggerCalendarChange: TriggerCalendarChange<ValueType>,\n disabled: ReplaceListType<Required<ValueType>, boolean>,\n formatList: FormatType[],\n isInvalidateDate: (date: DateType, info?: { from?: DateType; activeIndex: number }) => boolean,\n): [\n /** Trigger `onChange` by check `disabledDate` */\n flushSubmit: (index: number, needTriggerChange: boolean) => void,\n /** Trigger `onChange` directly without check `disabledDate` */\n triggerSubmitChange: (value?: ValueType | null) => boolean,\n /** Reset calendar and submit values back to the committed value */\n resetValue: (index?: number) => void,\n] {\n const {\n // MISC\n generateConfig,\n locale,\n\n picker,\n\n onChange,\n\n // Checker\n allowEmpty,\n order,\n } = info;\n\n const orderOnChange = disabled.some((d) => d) ? false : order;\n\n // ============================= Util =============================\n const [getDateTexts, isSameDates] = useUtil<ValueType, DateType>(\n generateConfig,\n locale,\n formatList,\n );\n\n // ============================ Values ============================\n // Used for trigger `onChange` event.\n // Record current value which is wait for submit.\n const [submitValue, setSubmitValue] = useSyncState(mergedValue);\n\n /** Sync calendarValue & submitValue back with value */\n const syncWithValue = useEvent(() => {\n setSubmitValue(mergedValue);\n });\n\n React.useEffect(() => {\n syncWithValue();\n }, [mergedValue]);\n\n // ============================ Submit ============================\n const triggerSubmit = useEvent((nextValue?: ValueType | null) => {\n const isNullValue = nextValue === null;\n\n let clone = [...(nextValue || submitValue())] as ValueType;\n\n // Fill null value\n if (isNullValue) {\n const maxLen = Math.max(disabled.length, clone.length);\n\n for (let i = 0; i < maxLen; i += 1) {\n if (!disabled[i]) {\n clone[i] = null;\n }\n }\n }\n\n // Only when exist value to sort\n if (orderOnChange && clone[0] && clone[1]) {\n clone = orderDates(clone, generateConfig);\n }\n\n // Sync `calendarValue`\n triggerCalendarChange(clone);\n\n // ========= Validate check =========\n const [start, end] = clone;\n\n // >>> Empty\n const startEmpty = !start;\n const endEmpty = !end;\n\n const validateEmptyDateRange = allowEmpty\n ? // Validate empty start\n (!startEmpty || allowEmpty[0]) &&\n // Validate empty end\n (!endEmpty || allowEmpty[1])\n : true;\n\n // >>> Order\n const validateOrder =\n !order ||\n startEmpty ||\n endEmpty ||\n isSame(generateConfig, locale, start, end, picker) ||\n generateConfig.isAfter(end, start);\n\n // >>> Invalid\n const validateDates =\n // Validate start\n (disabled[0] || !start || !isInvalidateDate(start, { activeIndex: 0 })) &&\n // Validate end\n (disabled[1] || !end || !isInvalidateDate(end, { from: start!, activeIndex: 1 }));\n // >>> Result\n const allPassed =\n // Null value is from clear button\n isNullValue ||\n // Normal check\n (validateEmptyDateRange && validateOrder && validateDates);\n\n if (allPassed) {\n // Sync value with submit value\n setInnerValue(clone);\n\n const [isSameMergedDates] = isSameDates(clone, mergedValue);\n\n // Trigger `onChange` if needed\n if (onChange && !isSameMergedDates) {\n const everyEmpty = clone.every((val) => !val);\n onChange(\n // Return null directly if all date are empty\n isNullValue && everyEmpty ? null : clone,\n everyEmpty ? null : getDateTexts(clone),\n );\n }\n }\n\n return allPassed;\n });\n\n // ========================= Flush Submit =========================\n const flushSubmit = useEvent((index: number, needTriggerChange: boolean) => {\n const nextSubmitValue = fillIndex(submitValue(), index, getCalendarValue()[index]);\n setSubmitValue(nextSubmitValue);\n\n if (needTriggerChange) {\n triggerSubmit();\n }\n });\n\n const resetValue = useEvent((index?: number) => {\n if (index === undefined) {\n triggerCalendarChange(mergedValue);\n syncWithValue();\n return;\n }\n\n triggerCalendarChange(fillIndex(getCalendarValue(), index, mergedValue[index]));\n setSubmitValue(fillIndex(submitValue(), index, mergedValue[index]));\n });\n\n // ============================ Return ============================\n return [flushSubmit, triggerSubmit, resetValue];\n}\n"],"mappings":"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"}
@@ -0,0 +1,219 @@
1
+ import { useEvent, useLatestState } from "../../hooks/react.mjs";
2
+ import * as React$1 from "react";
3
+ //#region src/DatePicker/core/PickerInput/hooks/useRangeValueChange.ts
4
+ /**
5
+ * Coordinate CalendarValue updates, part submits and final submits for any
6
+ * number of fields.
7
+ * 统一管理任意数量 field 的 CalendarValue 更新、局部提交与最终提交。
8
+ *
9
+ * Flow / 流程:
10
+ * Every event is first resolved from `source`, `needConfirm`, `allowEmpty` and
11
+ * the field indexes to one action. State changes only happen while executing
12
+ * that action, so event sources never submit or reset values on their own.
13
+ * 每个事件先根据 `source`、`needConfirm`、`allowEmpty` 与 field index 得到唯一
14
+ * action。状态只在执行 action 时改变,事件来源本身不直接提交或重置值。
15
+ *
16
+ * Index transitions also expose whether focus must follow the next field.
17
+ * Confirm-like operations and a popup close following a panel operation
18
+ * switch focus strongly. A popup close following input, Tab and an actual
19
+ * field focus switch only update the expected index.
20
+ * index 切换还会同步给出是否必须跟随聚焦下一个 field。确认类操作,以及面板
21
+ * 操作后的 popup 关闭使用强切换;input 后的 popup 关闭、Tab 与真实 field
22
+ * 聚焦切换只更新预期 index。
23
+ *
24
+ * Source resolution / 事件解析:
25
+ *
26
+ * - `esc` always resolves to `resetAll`.
27
+ * `esc` 始终解析为 `resetAll`。
28
+ * - With no current field, `popupClose` resolves to `resetAll`; any other
29
+ * non-cancel event starts a new interaction from its field.
30
+ * 没有当前 field 时,`popupClose` 解析为 `resetAll`;其余非撤销事件从
31
+ * 对应 field 开始新一轮交互。
32
+ * - `field-switch` advances exactly one field in circular order. `needConfirm`
33
+ * locks an unconfirmed non-empty field unless it allows empty; an allow-empty
34
+ * field is reset before advancing.
35
+ * `field-switch` 只允许按循环顺序推进一个 field。`needConfirm` 会锁定未确认
36
+ * 且非空的 field;允许空值时先重置再推进。
37
+ * - Other sources must target the current field. `input` and
38
+ * `panel-intermediate` modify it; `remove` explicitly submits the removed
39
+ * value even when the field does not allow empty. `panel-final` advances only
40
+ * without confirmation; `keyboard-submit-weak` part-submits without
41
+ * advancing; `keyboard-submit` and `confirm` advance only when the field has
42
+ * a value or allows empty.
43
+ * 其余来源必须指向当前 field。`input` 与 `panel-intermediate` 只修改;
44
+ * `remove` 会明确提交删除后的值,即使 field 不允许为空;`panel-final`
45
+ * 仅在无需确认时推进;`keyboard-submit-weak` 只做局部提交而不推进;
46
+ * `keyboard-submit` 与 `confirm` 仅在有值或允许空值时推进。
47
+ * - `popupClose` finishes an untouched interaction. Without confirmation it
48
+ * submits a valid field; with confirmation it submits only after every field
49
+ * has participated, otherwise it resets all temporary values. A modified
50
+ * allow-empty field is reset before the final submit.
51
+ * `popupClose` 会直接结束未修改的交互。无需确认时提交有效 field;需要确认时
52
+ * 仅在所有 field 都参与过后提交,否则重置全部临时值。当前 field 已修改且
53
+ * 允许为空时,会先重置当前值再完成提交。
54
+ *
55
+ * Action execution / Action 执行:
56
+ *
57
+ * - `modify`: update or record the current CalendarValue.
58
+ * 更新或记录当前 CalendarValue。
59
+ * - `submitCurrent`: part-submit the current field without advancing.
60
+ * 局部提交当前 field,但不推进。
61
+ * - `switchNext`: submit the current field and advance to the next field.
62
+ * 提交当前 field 并推进到下一个 field。
63
+ * - `finish`: end an interaction in which no field was modified without
64
+ * resetting values. / 结束所有 field 均未修改的交互,不重置任何值。
65
+ * - `abort`: stop without changing any state.
66
+ * 直接短路,不改变任何状态。
67
+ * - `resetCurrent`: discard only the current field.
68
+ * 仅撤销当前 field。
69
+ * - `resetCurrentAndSwitchNext`: discard the current temporary value and
70
+ * advance without submitting. Revisiting a field starts a new round.
71
+ * 撤销当前临时值并直接推进,不触发提交;再次进入已访问 field 时开启新一轮。
72
+ * - `resetAll`: discard all temporary values and end the interaction.
73
+ * 撤销全部临时值并结束本轮交互。
74
+ */
75
+ function useRangeValueChange(fieldCount, needConfirm, allowEmpty, getCalendarValue, triggerCalendarChange, flushSubmit, resetValue) {
76
+ const triggeredFieldsRef = React$1.useRef([]);
77
+ const confirmedIndexRef = React$1.useRef(null);
78
+ const isLastInputRef = React$1.useRef(false);
79
+ const [getCurrentIndex, setCurrentIndex] = useLatestState(null);
80
+ const [getForceFocus, setForceFocus] = useLatestState(false);
81
+ const lastValidIndexRef = React$1.useRef(void 0);
82
+ const reset = useEvent(() => {
83
+ triggeredFieldsRef.current = [];
84
+ confirmedIndexRef.current = null;
85
+ isLastInputRef.current = false;
86
+ setCurrentIndex(null);
87
+ setForceFocus(false);
88
+ });
89
+ const recordTriggeredField = (index, modified) => {
90
+ const field = triggeredFieldsRef.current.find((item) => item.index === index);
91
+ if (field) {
92
+ if (modified !== void 0) field.modified = modified;
93
+ } else triggeredFieldsRef.current = [...triggeredFieldsRef.current, {
94
+ index,
95
+ modified: modified ?? false
96
+ }];
97
+ };
98
+ const submitField = (index) => {
99
+ recordTriggeredField(index);
100
+ const allFieldsTriggered = triggeredFieldsRef.current.length >= fieldCount;
101
+ flushSubmit(index, allFieldsTriggered);
102
+ if (allFieldsTriggered) reset();
103
+ return allFieldsTriggered;
104
+ };
105
+ const resolveAction = (currentIndex, index, source, value) => {
106
+ if (source === "esc") return "resetAll";
107
+ if (currentIndex === null) return source === "popupClose" ? "resetAll" : "abort";
108
+ const currentValue = value === void 0 ? getCalendarValue()[currentIndex] : value;
109
+ const canSwitch = !(currentValue === null || currentValue === void 0) || allowEmpty[currentIndex];
110
+ const canSubmit = source === "remove" || canSwitch;
111
+ if (source === "field-switch") {
112
+ if (index === currentIndex) return "abort";
113
+ const nextIndex = (currentIndex + 1) % fieldCount;
114
+ if (index !== nextIndex) return "abort";
115
+ const nextFieldTriggered = triggeredFieldsRef.current.some((field) => field.index === nextIndex);
116
+ if (needConfirm) {
117
+ if (confirmedIndexRef.current === currentIndex) return "switchNext";
118
+ return allowEmpty[currentIndex] ? "resetCurrentAndSwitchNext" : "abort";
119
+ }
120
+ if (canSwitch) return "switchNext";
121
+ return nextFieldTriggered ? "resetCurrentAndSwitchNext" : "resetCurrent";
122
+ }
123
+ if (index !== currentIndex) return "abort";
124
+ if (source === "popupClose") {
125
+ if (!triggeredFieldsRef.current.some((field) => field.modified)) return "finish";
126
+ if (needConfirm) {
127
+ const currentModified = triggeredFieldsRef.current.some((field) => field.index === currentIndex && field.modified);
128
+ if (!(triggeredFieldsRef.current.length >= fieldCount) || !canSwitch) return "resetAll";
129
+ if (currentModified) return allowEmpty[currentIndex] ? "resetCurrentAndSwitchNext" : "resetAll";
130
+ return "switchNext";
131
+ }
132
+ if (!canSubmit) return "resetAll";
133
+ return "switchNext";
134
+ }
135
+ if (source === "input" || source === "panel-intermediate") return "modify";
136
+ if (source === "panel-final") return needConfirm ? "modify" : "switchNext";
137
+ if (source === "keyboard-submit-weak") return canSubmit ? "submitCurrent" : "abort";
138
+ if (source === "keyboard-submit" || source === "confirm" || source === "remove") return canSubmit ? "switchNext" : "abort";
139
+ return "abort";
140
+ };
141
+ const triggerChange = useEvent((index, source, value) => {
142
+ let currentIndex = getCurrentIndex();
143
+ if (source !== "popupClose") isLastInputRef.current = source === "input";
144
+ if (currentIndex === null && source !== "popupClose" && source !== "esc") {
145
+ currentIndex = index;
146
+ setCurrentIndex(index);
147
+ setForceFocus(false);
148
+ recordTriggeredField(index, false);
149
+ }
150
+ const action = resolveAction(currentIndex, index, source, value);
151
+ const actionIndex = currentIndex ?? index;
152
+ switch (action) {
153
+ case "modify":
154
+ recordTriggeredField(actionIndex, true);
155
+ if (confirmedIndexRef.current === actionIndex) confirmedIndexRef.current = null;
156
+ if (value !== void 0) triggerCalendarChange(actionIndex, value);
157
+ break;
158
+ case "submitCurrent":
159
+ if (needConfirm) confirmedIndexRef.current = actionIndex;
160
+ submitField(actionIndex);
161
+ break;
162
+ case "switchNext": {
163
+ if (source === "panel-final" || value !== void 0) recordTriggeredField(actionIndex, true);
164
+ if (value !== void 0) triggerCalendarChange(actionIndex, value);
165
+ if (needConfirm && (source === "keyboard-submit" || source === "confirm")) confirmedIndexRef.current = actionIndex;
166
+ const forceFocus = source === "confirm" || source === "keyboard-submit" || source === "panel-final" || source === "popupClose" && !isLastInputRef.current;
167
+ const allFieldsTriggered = submitField(actionIndex);
168
+ if (allFieldsTriggered && source === "field-switch") {
169
+ setCurrentIndex(index);
170
+ setForceFocus(false);
171
+ } else if (!allFieldsTriggered) {
172
+ const nextIndex = (actionIndex + 1) % fieldCount;
173
+ setCurrentIndex(nextIndex);
174
+ setForceFocus(forceFocus);
175
+ }
176
+ if (source === "field-switch") recordTriggeredField(index, false);
177
+ break;
178
+ }
179
+ case "finish":
180
+ reset();
181
+ break;
182
+ case "resetCurrent":
183
+ resetValue(actionIndex);
184
+ if (confirmedIndexRef.current === actionIndex) confirmedIndexRef.current = null;
185
+ triggeredFieldsRef.current = triggeredFieldsRef.current.filter((field) => field.index !== actionIndex);
186
+ break;
187
+ case "resetCurrentAndSwitchNext":
188
+ resetValue(actionIndex);
189
+ if (confirmedIndexRef.current === actionIndex) confirmedIndexRef.current = null;
190
+ if (source === "field-switch") {
191
+ if (triggeredFieldsRef.current.some((field) => field.index === index)) triggeredFieldsRef.current = [];
192
+ setCurrentIndex(index);
193
+ setForceFocus(false);
194
+ recordTriggeredField(index, false);
195
+ } else reset();
196
+ break;
197
+ case "resetAll":
198
+ resetValue();
199
+ reset();
200
+ break;
201
+ case "abort": if (source === "field-switch" && index === actionIndex) recordTriggeredField(index);
202
+ }
203
+ });
204
+ const currentIndex = getCurrentIndex();
205
+ lastValidIndexRef.current = currentIndex ?? lastValidIndexRef.current ?? 0;
206
+ const triggeredFields = triggeredFieldsRef.current.map((field) => field.index);
207
+ return [
208
+ currentIndex,
209
+ lastValidIndexRef.current,
210
+ getForceFocus(),
211
+ triggeredFields,
212
+ triggerChange,
213
+ reset
214
+ ];
215
+ }
216
+ //#endregion
217
+ export { useRangeValueChange as default };
218
+
219
+ //# sourceMappingURL=useRangeValueChange.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRangeValueChange.mjs","names":["React"],"sources":["../../../../../src/DatePicker/core/PickerInput/hooks/useRangeValueChange.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { useEvent, useLatestState } from '../../hooks/react';\n\n// ============================= Types =============================\n\n/** Change source of a field. / Field 的变更来源。 */\nexport type RangeValueChangeSource =\n | 'input'\n | 'remove'\n | 'keyboard-submit'\n | 'keyboard-submit-weak'\n | 'esc'\n | 'panel-intermediate'\n | 'panel-final'\n | 'popupClose'\n | 'field-switch'\n | 'confirm';\n\n/** Resolved operation for one field interaction. / 一次 field 交互最终执行的操作。 */\nexport type RangeValueChangeAction =\n | 'modify'\n | 'submitCurrent'\n | 'switchNext'\n | 'finish'\n | 'abort'\n | 'resetCurrent'\n | 'resetCurrentAndSwitchNext'\n | 'resetAll';\n\n/** Receive a field interaction and its optional value. / 接收 field 交互及可选变更值。 */\nexport type TriggerChange<FieldValue> = (\n index: number,\n source: RangeValueChangeSource,\n value?: FieldValue,\n) => void;\n\n/** Read the latest temporary CalendarValue. / 读取最新的临时 CalendarValue。 */\nexport type GetCalendarValue<FieldValue> = () => readonly (FieldValue | null | undefined)[];\n\n/** Update one field in CalendarValue. / 更新 CalendarValue 中的一个 field。 */\nexport type TriggerCalendarChange<FieldValue> = (index: number, value: FieldValue) => void;\n\n/**\n * Flush one field and optionally emit the final change.\n * 提交一个 field,并按需触发最终 change。\n */\nexport type FlushSubmit = (index: number, needTriggerChange: boolean) => void;\n\n/**\n * Reset one field, or all fields when index is omitted.\n * 重置指定 field;未传 index 时重置全部 field。\n */\nexport type ResetValue = (index?: number) => void;\n\nexport type UseRangeValueChangeReturn<FieldValue> = [\n currentIndex: number | null,\n activeIndex: number,\n forceFocus: boolean,\n triggeredFields: number[],\n triggerChange: TriggerChange<FieldValue>,\n reset: VoidFunction,\n];\n\ninterface TriggeredField {\n index: number;\n modified: boolean;\n}\n\n// ============================== Hook ==============================\n\n/**\n * Coordinate CalendarValue updates, part submits and final submits for any\n * number of fields.\n * 统一管理任意数量 field 的 CalendarValue 更新、局部提交与最终提交。\n *\n * Flow / 流程:\n * Every event is first resolved from `source`, `needConfirm`, `allowEmpty` and\n * the field indexes to one action. State changes only happen while executing\n * that action, so event sources never submit or reset values on their own.\n * 每个事件先根据 `source`、`needConfirm`、`allowEmpty` 与 field index 得到唯一\n * action。状态只在执行 action 时改变,事件来源本身不直接提交或重置值。\n *\n * Index transitions also expose whether focus must follow the next field.\n * Confirm-like operations and a popup close following a panel operation\n * switch focus strongly. A popup close following input, Tab and an actual\n * field focus switch only update the expected index.\n * index 切换还会同步给出是否必须跟随聚焦下一个 field。确认类操作,以及面板\n * 操作后的 popup 关闭使用强切换;input 后的 popup 关闭、Tab 与真实 field\n * 聚焦切换只更新预期 index。\n *\n * Source resolution / 事件解析:\n *\n * - `esc` always resolves to `resetAll`.\n * `esc` 始终解析为 `resetAll`。\n * - With no current field, `popupClose` resolves to `resetAll`; any other\n * non-cancel event starts a new interaction from its field.\n * 没有当前 field 时,`popupClose` 解析为 `resetAll`;其余非撤销事件从\n * 对应 field 开始新一轮交互。\n * - `field-switch` advances exactly one field in circular order. `needConfirm`\n * locks an unconfirmed non-empty field unless it allows empty; an allow-empty\n * field is reset before advancing.\n * `field-switch` 只允许按循环顺序推进一个 field。`needConfirm` 会锁定未确认\n * 且非空的 field;允许空值时先重置再推进。\n * - Other sources must target the current field. `input` and\n * `panel-intermediate` modify it; `remove` explicitly submits the removed\n * value even when the field does not allow empty. `panel-final` advances only\n * without confirmation; `keyboard-submit-weak` part-submits without\n * advancing; `keyboard-submit` and `confirm` advance only when the field has\n * a value or allows empty.\n * 其余来源必须指向当前 field。`input` 与 `panel-intermediate` 只修改;\n * `remove` 会明确提交删除后的值,即使 field 不允许为空;`panel-final`\n * 仅在无需确认时推进;`keyboard-submit-weak` 只做局部提交而不推进;\n * `keyboard-submit` 与 `confirm` 仅在有值或允许空值时推进。\n * - `popupClose` finishes an untouched interaction. Without confirmation it\n * submits a valid field; with confirmation it submits only after every field\n * has participated, otherwise it resets all temporary values. A modified\n * allow-empty field is reset before the final submit.\n * `popupClose` 会直接结束未修改的交互。无需确认时提交有效 field;需要确认时\n * 仅在所有 field 都参与过后提交,否则重置全部临时值。当前 field 已修改且\n * 允许为空时,会先重置当前值再完成提交。\n *\n * Action execution / Action 执行:\n *\n * - `modify`: update or record the current CalendarValue.\n * 更新或记录当前 CalendarValue。\n * - `submitCurrent`: part-submit the current field without advancing.\n * 局部提交当前 field,但不推进。\n * - `switchNext`: submit the current field and advance to the next field.\n * 提交当前 field 并推进到下一个 field。\n * - `finish`: end an interaction in which no field was modified without\n * resetting values. / 结束所有 field 均未修改的交互,不重置任何值。\n * - `abort`: stop without changing any state.\n * 直接短路,不改变任何状态。\n * - `resetCurrent`: discard only the current field.\n * 仅撤销当前 field。\n * - `resetCurrentAndSwitchNext`: discard the current temporary value and\n * advance without submitting. Revisiting a field starts a new round.\n * 撤销当前临时值并直接推进,不触发提交;再次进入已访问 field 时开启新一轮。\n * - `resetAll`: discard all temporary values and end the interaction.\n * 撤销全部临时值并结束本轮交互。\n */\nexport default function useRangeValueChange<FieldValue = unknown>(\n fieldCount: number,\n needConfirm: boolean,\n allowEmpty: readonly boolean[],\n getCalendarValue: GetCalendarValue<FieldValue>,\n triggerCalendarChange: TriggerCalendarChange<FieldValue>,\n flushSubmit: FlushSubmit,\n resetValue: ResetValue,\n): UseRangeValueChangeReturn<FieldValue> {\n // ============================= State =============================\n\n // Record fields involved in the current interaction and whether each field\n // has been modified since it became active.\n // 记录当前一轮交互中触发过的 field,以及它从本次激活后是否发生过修改。\n const triggeredFieldsRef = React.useRef<TriggeredField[]>([]);\n\n // Track the last explicitly confirmed field. `triggeredFields` also records\n // focus, so it cannot tell confirmed and unconfirmed values apart.\n // 记录最后一个明确确认过的 field。`triggeredFields` 同时记录 focus,\n // 因此无法单独区分已确认值与未确认值。\n const confirmedIndexRef = React.useRef<number | null>(null);\n\n // Mark whether the latest value update came from the input.\n // 标记最近一次值更新是否来自 input。\n const isLastInputRef = React.useRef(false);\n\n // Keep a render value and a synchronous getter for event handlers.\n // 同时保存渲染值,以及供事件处理函数同步读取的 getter。\n const [getCurrentIndex, setCurrentIndex] = useLatestState<number | null>(null);\n\n // Record whether the latest index transition must actively move DOM focus.\n // 记录最近一次 index 切换是否需要主动移动 DOM 焦点。\n const [getForceFocus, setForceFocus] = useLatestState(false);\n\n // Keep the latest accepted field for panel and selector rendering.\n // 保留最后一个被业务接受的 field,供 panel 和 selector 渲染使用;\n const lastValidIndexRef = React.useRef<number | undefined>(undefined);\n\n // ============================= Reset =============================\n\n // End the current interaction without changing CalendarValue or the\n // committed value. External events such as Clear can reset bookkeeping and\n // handle their own value update separately.\n // 结束当前交互,但不修改 CalendarValue 或已提交值。Clear 等外部事件可先\n // 重置交互记录,再独立处理自身的值变更。\n const reset = useEvent(() => {\n triggeredFieldsRef.current = [];\n confirmedIndexRef.current = null;\n isLastInputRef.current = false;\n setCurrentIndex(null);\n setForceFocus(false);\n });\n\n // ============================= Record ============================\n\n // Keep fields unique while preserving their first-triggered order. Omit\n // `modified` to keep the existing state, or pass it to start a new field\n // visit and record a modification.\n // field 保持唯一并保留首次触发顺序。省略 `modified` 时保留原状态;传入时\n // 用于开始一次新的 field 访问,或记录本次修改。\n const recordTriggeredField = (index: number, modified?: boolean) => {\n const field = triggeredFieldsRef.current.find((item) => item.index === index);\n\n if (field) {\n if (modified !== undefined) {\n field.modified = modified;\n }\n } else {\n triggeredFieldsRef.current = [\n ...triggeredFieldsRef.current,\n { index, modified: modified ?? false },\n ];\n }\n };\n\n // ============================= Submit ============================\n\n // Flush the current field and report whether the whole round is complete.\n // Index and focus transitions are handled by the resolved action.\n // 提交当前 field,并返回本轮是否已经完成。index 与焦点切换由解析后的\n // action 负责。\n const submitField = (index: number) => {\n recordTriggeredField(index);\n\n // Trigger final change after every field has participated once.\n // 所有 field 都参与过一次后,触发最终 change。\n const allFieldsTriggered = triggeredFieldsRef.current.length >= fieldCount;\n flushSubmit(index, allFieldsTriggered);\n\n if (allFieldsTriggered) {\n reset();\n }\n\n return allFieldsTriggered;\n };\n\n // ============================= Resolve ===========================\n\n // Resolve an interaction to one action without changing any state.\n // 仅根据当前状态解析 action,不在判断过程中修改任何状态。\n const resolveAction = (\n currentIndex: number | null,\n index: number,\n source: RangeValueChangeSource,\n value?: FieldValue,\n ): RangeValueChangeAction => {\n if (source === 'esc') {\n return 'resetAll';\n }\n\n if (currentIndex === null) {\n // Closing the popup after the interaction has completed still needs to\n // discard any temporary CalendarValue left by a controlled value.\n // 一轮交互结束后关闭 popup,仍需清理受控值留下的临时 CalendarValue。\n return source === 'popupClose' ? 'resetAll' : 'abort';\n }\n\n const currentValue = value === undefined ? getCalendarValue()[currentIndex] : value;\n const currentEmpty = currentValue === null || currentValue === undefined;\n const canSwitch = !currentEmpty || allowEmpty[currentIndex];\n const canSubmit = source === 'remove' || canSwitch;\n\n if (source === 'field-switch') {\n if (index === currentIndex) {\n return 'abort';\n }\n\n const nextIndex = (currentIndex + 1) % fieldCount;\n if (index !== nextIndex) {\n return 'abort';\n }\n\n const nextFieldTriggered = triggeredFieldsRef.current.some(\n (field) => field.index === nextIndex,\n );\n\n if (needConfirm) {\n if (confirmedIndexRef.current === currentIndex) {\n return 'switchNext';\n }\n\n // An allowEmpty field may be left without confirmation. Discard any\n // unconfirmed CalendarValue before moving to the next field.\n // allowEmpty field 可以在未确认时离开;切换前需要丢弃未确认的\n // CalendarValue,再进入下一个 field。\n return allowEmpty[currentIndex] ? 'resetCurrentAndSwitchNext' : 'abort';\n }\n\n if (canSwitch) {\n return 'switchNext';\n }\n\n // Revisiting the next field starts another circular round. Discard the\n // invalid current field and finish the old round before entering it.\n // 再次进入已触发的 next field 表示开始新一轮循环。进入前先丢弃当前\n // 无效 field,并结束旧的一轮。\n return nextFieldTriggered ? 'resetCurrentAndSwitchNext' : 'resetCurrent';\n }\n\n if (index !== currentIndex) {\n return 'abort';\n }\n\n if (source === 'popupClose') {\n const interactionModified = triggeredFieldsRef.current.some((field) => field.modified);\n\n if (!interactionModified) {\n return 'finish';\n }\n\n if (needConfirm) {\n const currentModified = triggeredFieldsRef.current.some(\n (field) => field.index === currentIndex && field.modified,\n );\n const allFieldsTriggered = triggeredFieldsRef.current.length >= fieldCount;\n\n // Closing the popup ends the interaction instead of advancing to an\n // unvisited field. When the current field allows empty, discard its\n // unconfirmed value before finishing the round.\n // 关闭 popup 用于结束交互,不应继续推进到尚未访问的 field。当前\n // field 允许为空时,先丢弃未确认值,再结束本轮。\n if (!allFieldsTriggered || !canSwitch) {\n return 'resetAll';\n }\n\n if (currentModified) {\n return allowEmpty[currentIndex] ? 'resetCurrentAndSwitchNext' : 'resetAll';\n }\n\n return 'switchNext';\n }\n\n if (!canSubmit) {\n return 'resetAll';\n }\n\n return 'switchNext';\n }\n\n if (source === 'input' || source === 'panel-intermediate') {\n return 'modify';\n }\n\n if (source === 'panel-final') {\n return needConfirm ? 'modify' : 'switchNext';\n }\n\n if (source === 'keyboard-submit-weak') {\n return canSubmit ? 'submitCurrent' : 'abort';\n }\n\n if (source === 'keyboard-submit' || source === 'confirm' || source === 'remove') {\n return canSubmit ? 'switchNext' : 'abort';\n }\n\n return 'abort';\n };\n\n // ============================= Trigger ===========================\n\n // Route every interaction through action resolution, then execute the\n // resolved action in one place.\n // 所有交互先统一解析 action,再在一个位置执行对应操作。\n const triggerChange = useEvent(\n (index: number, source: RangeValueChangeSource, value?: FieldValue) => {\n let currentIndex = getCurrentIndex();\n\n // Popup close consumes the previous update type instead of replacing it.\n // popup 关闭消费上一次更新类型,自身不覆盖该标记。\n if (source !== 'popupClose') {\n isLastInputRef.current = source === 'input';\n }\n\n // Start a new interaction from the first non-close event. Closing the\n // popup may clean temporary values but must not create an active field.\n // 第一条非关闭事件用于建立新一轮交互;关闭 popup 可以清理临时值,\n // 但不应因此创建 currentIndex。\n if (currentIndex === null && source !== 'popupClose' && source !== 'esc') {\n currentIndex = index;\n setCurrentIndex(index);\n setForceFocus(false);\n recordTriggeredField(index, false);\n }\n\n const action = resolveAction(currentIndex, index, source, value);\n const actionIndex = currentIndex ?? index;\n\n switch (action) {\n case 'modify': {\n recordTriggeredField(actionIndex, true);\n if (confirmedIndexRef.current === actionIndex) {\n confirmedIndexRef.current = null;\n }\n if (value !== undefined) {\n triggerCalendarChange(actionIndex, value);\n }\n break;\n }\n\n case 'submitCurrent': {\n if (needConfirm) {\n confirmedIndexRef.current = actionIndex;\n }\n submitField(actionIndex);\n break;\n }\n\n case 'switchNext': {\n if (source === 'panel-final' || value !== undefined) {\n recordTriggeredField(actionIndex, true);\n }\n if (value !== undefined) {\n triggerCalendarChange(actionIndex, value);\n }\n if (needConfirm && (source === 'keyboard-submit' || source === 'confirm')) {\n confirmedIndexRef.current = actionIndex;\n }\n\n // Confirm-like operations and panel-originated popup closes must\n // move focus to the next field. Input-originated closes remain weak.\n // 确认类操作和面板操作后的 popup 关闭必须主动聚焦下一个 field;\n // input 操作后的关闭仍保持弱切换。\n const forceFocus =\n source === 'confirm' ||\n source === 'keyboard-submit' ||\n source === 'panel-final' ||\n (source === 'popupClose' && !isLastInputRef.current);\n\n const allFieldsTriggered = submitField(actionIndex);\n\n if (allFieldsTriggered && source === 'field-switch') {\n // The focus switch finishes the previous round and also starts a\n // new round from its target field.\n // 本次 focus 切换既结束上一轮,也以目标 field 开始新一轮。\n setCurrentIndex(index);\n setForceFocus(false);\n } else if (!allFieldsTriggered) {\n const nextIndex = (actionIndex + 1) % fieldCount;\n setCurrentIndex(nextIndex);\n setForceFocus(forceFocus);\n }\n\n if (source === 'field-switch') {\n recordTriggeredField(index, false);\n }\n break;\n }\n\n case 'finish': {\n reset();\n break;\n }\n\n case 'resetCurrent': {\n resetValue(actionIndex);\n if (confirmedIndexRef.current === actionIndex) {\n confirmedIndexRef.current = null;\n }\n triggeredFieldsRef.current = triggeredFieldsRef.current.filter(\n (field) => field.index !== actionIndex,\n );\n break;\n }\n\n case 'resetCurrentAndSwitchNext': {\n resetValue(actionIndex);\n if (confirmedIndexRef.current === actionIndex) {\n confirmedIndexRef.current = null;\n }\n\n if (source === 'field-switch') {\n const nextFieldTriggered = triggeredFieldsRef.current.some(\n (field) => field.index === index,\n );\n\n // A reset never submits or checks whether all fields were handled.\n // Revisiting the target discards the old round before starting the\n // next one from that target.\n // reset 不触发提交,也不判断所有 field 是否已处理。再次进入目标\n // field 时丢弃旧一轮记录,并从该 field 开启新一轮。\n if (nextFieldTriggered) {\n triggeredFieldsRef.current = [];\n }\n\n setCurrentIndex(index);\n setForceFocus(false);\n recordTriggeredField(index, false);\n } else {\n // Closing the popup ends the whole Picker interaction instead of\n // focusing the next field.\n // 关闭 popup 表示结束整个 Picker 交互,因此不再聚焦下一个 field。\n reset();\n }\n break;\n }\n\n case 'resetAll': {\n resetValue();\n reset();\n break;\n }\n\n case 'abort': {\n if (source === 'field-switch' && index === actionIndex) {\n recordTriggeredField(index);\n }\n break;\n }\n }\n },\n );\n\n const currentIndex = getCurrentIndex();\n lastValidIndexRef.current = currentIndex ?? lastValidIndexRef.current ?? 0;\n\n const triggeredFields = triggeredFieldsRef.current.map((field) => field.index);\n\n return [\n currentIndex,\n lastValidIndexRef.current,\n getForceFocus(),\n triggeredFields,\n triggerChange,\n reset,\n ];\n}\n"],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ //#region src/DatePicker/core/PickerInput/hooks/useShowNow.ts
2
+ function useShowNow(picker, mode, showNow, showToday, rangePicker) {
3
+ if (mode !== "date" && mode !== "time") return false;
4
+ if (showNow !== void 0) return showNow;
5
+ if (showToday !== void 0) return showToday;
6
+ return !rangePicker && (picker === "date" || picker === "time");
7
+ }
8
+ //#endregion
9
+ export { useShowNow as default };
10
+
11
+ //# sourceMappingURL=useShowNow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useShowNow.mjs","names":[],"sources":["../../../../../src/DatePicker/core/PickerInput/hooks/useShowNow.ts"],"sourcesContent":["import type { InternalMode, PanelMode } from '../../interface';\n\nexport default function useShowNow(\n picker: InternalMode,\n mode: PanelMode,\n showNow?: boolean,\n showToday?: boolean,\n rangePicker?: boolean,\n) {\n if (mode !== 'date' && mode !== 'time') {\n return false;\n }\n\n if (showNow !== undefined) {\n return showNow;\n }\n\n // Compatible with old version `showToday`\n if (showToday !== undefined) {\n return showToday;\n }\n\n return !rangePicker && (picker === 'date' || picker === 'time');\n}\n"],"mappings":";AAEA,SAAwB,WACtB,QACA,MACA,SACA,WACA,aACA;CACA,IAAI,SAAS,UAAU,SAAS,QAC9B,OAAO;CAGT,IAAI,YAAY,KAAA,GACd,OAAO;CAIT,IAAI,cAAc,KAAA,GAChB,OAAO;CAGT,OAAO,CAAC,gBAAgB,WAAW,UAAU,WAAW;AAC1D"}
@@ -0,0 +1,131 @@
1
+ import { formatValue, getWeekStartDate, isSameDate, isSameMonth } from "../../utils/dateUtil.mjs";
2
+ import { PanelContext, useInfo } from "../context.mjs";
3
+ import PanelBody from "../PanelBody.mjs";
4
+ import PanelHeader from "../PanelHeader.mjs";
5
+ import "react";
6
+ import { jsx, jsxs } from "react/jsx-runtime";
7
+ import { clsx } from "clsx";
8
+ //#region src/DatePicker/core/PickerPanel/DatePanel/index.tsx
9
+ function DatePanel(props) {
10
+ const { prefixCls, panelName = "date", locale, generateConfig, pickerValue, onPickerValueChange, onModeChange, mode = "date", disabledDate, onSelect, onHover, showWeek } = props;
11
+ const panelPrefixCls = `${prefixCls}-${panelName}-panel`;
12
+ const cellPrefixCls = `${prefixCls}-cell`;
13
+ const isWeek = mode === "week";
14
+ const [info, now] = useInfo(props, mode);
15
+ const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);
16
+ const monthStartDate = generateConfig.setDate(pickerValue, 1);
17
+ const baseDate = getWeekStartDate(locale.locale, generateConfig, monthStartDate);
18
+ const month = generateConfig.getMonth(pickerValue);
19
+ const prefixColumn = (showWeek === void 0 ? isWeek : showWeek) ? (date) => {
20
+ const disabled = disabledDate?.(date, { type: "week" });
21
+ return /* @__PURE__ */ jsx("td", {
22
+ className: clsx(cellPrefixCls, `${cellPrefixCls}-week`, { [`${cellPrefixCls}-disabled`]: disabled }),
23
+ onClick: () => {
24
+ if (!disabled) onSelect(date);
25
+ },
26
+ onMouseEnter: () => {
27
+ if (!disabled) onHover?.(date);
28
+ },
29
+ onMouseLeave: () => {
30
+ if (!disabled) onHover?.(null);
31
+ },
32
+ children: /* @__PURE__ */ jsx("div", {
33
+ className: `${cellPrefixCls}-inner`,
34
+ children: generateConfig.locale.getWeek(locale.locale, date)
35
+ })
36
+ }, "week");
37
+ } : null;
38
+ const headerCells = [];
39
+ const weekDaysLocale = locale.shortWeekDays || (generateConfig.locale.getShortWeekDays ? generateConfig.locale.getShortWeekDays(locale.locale) : []);
40
+ if (prefixColumn) headerCells.push(/* @__PURE__ */ jsx("th", { children: /* @__PURE__ */ jsx("span", {
41
+ style: {
42
+ width: 0,
43
+ height: 0,
44
+ position: "absolute",
45
+ overflow: "hidden",
46
+ opacity: 0
47
+ },
48
+ children: locale.week
49
+ }) }, "empty"));
50
+ for (let i = 0; i < 7; i += 1) headerCells.push(/* @__PURE__ */ jsx("th", { children: weekDaysLocale[(i + weekFirstDay) % 7] }, i));
51
+ const getCellDate = (date, offset) => {
52
+ return generateConfig.addDate(date, offset);
53
+ };
54
+ const getCellText = (date) => {
55
+ return formatValue(date, {
56
+ locale,
57
+ format: locale.cellDateFormat,
58
+ generateConfig
59
+ });
60
+ };
61
+ const getCellClassName = (date) => {
62
+ return {
63
+ [`${prefixCls}-cell-in-view`]: isSameMonth(generateConfig, date, pickerValue),
64
+ [`${prefixCls}-cell-today`]: isSameDate(generateConfig, date, now)
65
+ };
66
+ };
67
+ const monthsLocale = locale.shortMonths || (generateConfig.locale.getShortMonths ? generateConfig.locale.getShortMonths(locale.locale) : []);
68
+ const yearNode = /* @__PURE__ */ jsx("button", {
69
+ "aria-label": locale.yearSelect,
70
+ className: `${prefixCls}-year-btn`,
71
+ tabIndex: -1,
72
+ type: "button",
73
+ onClick: () => {
74
+ onModeChange("year", pickerValue);
75
+ },
76
+ children: formatValue(pickerValue, {
77
+ locale,
78
+ format: locale.yearFormat,
79
+ generateConfig
80
+ })
81
+ }, "year");
82
+ const monthNode = /* @__PURE__ */ jsx("button", {
83
+ "aria-label": locale.monthSelect,
84
+ className: `${prefixCls}-month-btn`,
85
+ tabIndex: -1,
86
+ type: "button",
87
+ onClick: () => {
88
+ onModeChange("month", pickerValue);
89
+ },
90
+ children: locale.monthFormat ? formatValue(pickerValue, {
91
+ locale,
92
+ format: locale.monthFormat,
93
+ generateConfig
94
+ }) : monthsLocale[month]
95
+ }, "month");
96
+ const monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];
97
+ return /* @__PURE__ */ jsx(PanelContext, {
98
+ value: info,
99
+ children: /* @__PURE__ */ jsxs("div", {
100
+ className: clsx(panelPrefixCls, showWeek && `${panelPrefixCls}-show-week`),
101
+ children: [/* @__PURE__ */ jsx(PanelHeader, {
102
+ offset: (distance) => generateConfig.addMonth(pickerValue, distance),
103
+ superOffset: (distance) => generateConfig.addYear(pickerValue, distance),
104
+ getEnd: (date) => {
105
+ let clone = generateConfig.setDate(date, 1);
106
+ clone = generateConfig.addMonth(clone, 1);
107
+ return generateConfig.addDate(clone, -1);
108
+ },
109
+ onChange: onPickerValueChange,
110
+ getStart: (date) => generateConfig.setDate(date, 1),
111
+ children: monthYearNodes
112
+ }), /* @__PURE__ */ jsx(PanelBody, {
113
+ titleFormat: locale.fieldDateFormat,
114
+ ...props,
115
+ cellSelection: !isWeek,
116
+ colNum: 7,
117
+ getCellText,
118
+ prefixColumn,
119
+ rowNum: 6,
120
+ baseDate,
121
+ headerCells,
122
+ getCellClassName,
123
+ getCellDate
124
+ })]
125
+ })
126
+ });
127
+ }
128
+ //#endregion
129
+ export { DatePanel as default };
130
+
131
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../../../../src/DatePicker/core/PickerPanel/DatePanel/index.tsx"],"sourcesContent":["import { clsx } from 'clsx';\nimport * as React from 'react';\n\nimport type { PanelMode, SharedPanelProps } from '../../interface';\nimport {\n formatValue,\n getWeekStartDate,\n isSameDate,\n isSameMonth,\n WEEK_DAY_COUNT,\n} from '../../utils/dateUtil';\nimport { PanelContext, useInfo } from '../context';\nimport PanelBody from '../PanelBody';\nimport PanelHeader from '../PanelHeader';\n\nexport interface DatePanelProps<DateType extends object> extends SharedPanelProps<DateType> {\n cellSelection?: boolean;\n /** Used for `WeekPanel` */\n mode?: PanelMode;\n\n panelName?: PanelMode;\n rowClassName?: (date: DateType) => string;\n}\n\nexport default function DatePanel<DateType extends object = any>(props: DatePanelProps<DateType>) {\n const {\n prefixCls,\n panelName = 'date',\n locale,\n generateConfig,\n pickerValue,\n onPickerValueChange,\n onModeChange,\n mode = 'date',\n disabledDate,\n onSelect,\n onHover,\n showWeek,\n } = props;\n\n const panelPrefixCls = `${prefixCls}-${panelName}-panel`;\n\n const cellPrefixCls = `${prefixCls}-cell`;\n\n const isWeek = mode === 'week';\n\n // ========================== Base ==========================\n const [info, now] = useInfo(props, mode);\n const weekFirstDay = generateConfig.locale.getWeekFirstDay(locale.locale);\n const monthStartDate = generateConfig.setDate(pickerValue, 1);\n const baseDate = getWeekStartDate(locale.locale, generateConfig, monthStartDate);\n const month = generateConfig.getMonth(pickerValue);\n\n // =========================== PrefixColumn ===========================\n const showPrefixColumn = showWeek === undefined ? isWeek : showWeek;\n const prefixColumn = showPrefixColumn\n ? (date: DateType) => {\n // >>> Additional check for disabled\n const disabled = disabledDate?.(date, { type: 'week' });\n\n return (\n <td\n key=\"week\"\n className={clsx(cellPrefixCls, `${cellPrefixCls}-week`, {\n [`${cellPrefixCls}-disabled`]: disabled,\n })}\n // Operation: Same as code in PanelBody\n onClick={() => {\n if (!disabled) {\n onSelect(date);\n }\n }}\n onMouseEnter={() => {\n if (!disabled) {\n onHover?.(date);\n }\n }}\n onMouseLeave={() => {\n if (!disabled) {\n onHover?.(null);\n }\n }}\n >\n <div className={`${cellPrefixCls}-inner`}>\n {generateConfig.locale.getWeek(locale.locale, date)}\n </div>\n </td>\n );\n }\n : null;\n\n // ========================= Cells ==========================\n // >>> Header Cells\n const headerCells: React.ReactNode[] = [];\n const weekDaysLocale: string[] =\n locale.shortWeekDays ||\n (generateConfig.locale.getShortWeekDays\n ? generateConfig.locale.getShortWeekDays(locale.locale)\n : []);\n\n if (prefixColumn) {\n headerCells.push(\n <th key=\"empty\">\n <span style={{ width: 0, height: 0, position: 'absolute', overflow: 'hidden', opacity: 0 }}>\n {locale.week}\n </span>\n </th>,\n );\n }\n for (let i = 0; i < WEEK_DAY_COUNT; i += 1) {\n headerCells.push(<th key={i}>{weekDaysLocale[(i + weekFirstDay) % WEEK_DAY_COUNT]}</th>);\n }\n\n // >>> Body Cells\n const getCellDate = (date: DateType, offset: number) => {\n return generateConfig.addDate(date, offset);\n };\n\n const getCellText = (date: DateType) => {\n return formatValue(date, {\n locale,\n format: locale.cellDateFormat!,\n generateConfig,\n });\n };\n\n const getCellClassName = (date: DateType) => {\n const classObj = {\n [`${prefixCls}-cell-in-view`]: isSameMonth(generateConfig, date, pickerValue),\n [`${prefixCls}-cell-today`]: isSameDate(generateConfig, date, now),\n };\n\n return classObj;\n };\n\n // ========================= Header =========================\n const monthsLocale: string[] =\n locale.shortMonths ||\n (generateConfig.locale.getShortMonths\n ? generateConfig.locale.getShortMonths(locale.locale)\n : []);\n\n const yearNode: React.ReactNode = (\n <button\n aria-label={locale.yearSelect}\n className={`${prefixCls}-year-btn`}\n key=\"year\"\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n onModeChange('year', pickerValue);\n }}\n >\n {formatValue(pickerValue, {\n locale,\n format: locale.yearFormat!,\n generateConfig,\n })}\n </button>\n );\n const monthNode: React.ReactNode = (\n <button\n aria-label={locale.monthSelect}\n className={`${prefixCls}-month-btn`}\n key=\"month\"\n tabIndex={-1}\n type=\"button\"\n onClick={() => {\n onModeChange('month', pickerValue);\n }}\n >\n {locale.monthFormat\n ? formatValue(pickerValue, {\n locale,\n format: locale.monthFormat,\n generateConfig,\n })\n : monthsLocale[month]}\n </button>\n );\n\n const monthYearNodes = locale.monthBeforeYear ? [monthNode, yearNode] : [yearNode, monthNode];\n\n // ========================= Render =========================\n return (\n <PanelContext value={info}>\n <div className={clsx(panelPrefixCls, showWeek && `${panelPrefixCls}-show-week`)}>\n {/* Header */}\n <PanelHeader<DateType>\n offset={(distance) => generateConfig.addMonth(pickerValue, distance)}\n superOffset={(distance) => generateConfig.addYear(pickerValue, distance)}\n getEnd={(date) => {\n let clone = generateConfig.setDate(date, 1);\n clone = generateConfig.addMonth(clone, 1);\n return generateConfig.addDate(clone, -1);\n }}\n onChange={onPickerValueChange}\n // Limitation\n getStart={(date) => generateConfig.setDate(date, 1)}\n >\n {monthYearNodes}\n </PanelHeader>\n\n {/* Body */}\n <PanelBody\n titleFormat={locale.fieldDateFormat}\n {...props}\n cellSelection={!isWeek}\n colNum={WEEK_DAY_COUNT}\n getCellText={getCellText}\n prefixColumn={prefixColumn}\n rowNum={6}\n baseDate={baseDate}\n // Header\n headerCells={headerCells}\n getCellClassName={getCellClassName}\n // Body\n getCellDate={getCellDate}\n />\n </div>\n </PanelContext>\n );\n}\n"],"mappings":"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"}