@douyinfe/semi-foundation 2.24.3 → 2.25.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (971) hide show
  1. package/anchor/anchor.scss +6 -0
  2. package/anchor/foundation.ts +7 -6
  3. package/anchor/linkFoundation.ts +0 -1
  4. package/anchor/variables.scss +4 -0
  5. package/autoComplete/autoComplete.scss +2 -0
  6. package/autoComplete/foundation.ts +23 -20
  7. package/autoComplete/optionFoundation.ts +0 -2
  8. package/avatar/animation.scss +19 -0
  9. package/avatar/avatar.scss +314 -1
  10. package/avatar/constants.ts +21 -4
  11. package/avatar/foundation.ts +21 -4
  12. package/avatar/variables.scss +66 -10
  13. package/badge/badge.scss +13 -0
  14. package/badge/constants.ts +1 -1
  15. package/badge/variables.scss +4 -0
  16. package/base/foundation.ts +2 -3
  17. package/breadcrumb/breadcrumb.scss +10 -4
  18. package/breadcrumb/foundation.ts +0 -1
  19. package/breadcrumb/variables.scss +4 -0
  20. package/button/button.scss +88 -21
  21. package/button/iconButton.scss +1 -0
  22. package/button/splitButtonGroup.scss +10 -9
  23. package/button/variables.scss +13 -0
  24. package/calendar/calendar.scss +1 -1
  25. package/calendar/eventUtil.ts +14 -10
  26. package/calendar/foundation.ts +9 -9
  27. package/carousel/carousel.scss +4 -0
  28. package/carousel/foundation.ts +12 -7
  29. package/cascader/cascader.scss +66 -23
  30. package/cascader/constants.ts +5 -1
  31. package/cascader/foundation.ts +111 -63
  32. package/cascader/util.ts +64 -10
  33. package/cascader/variables.scss +5 -1
  34. package/checkbox/checkbox.scss +0 -1
  35. package/checkbox/checkboxFoundation.ts +1 -2
  36. package/checkbox/checkboxGroupFoundation.ts +0 -1
  37. package/collapse/foundation.ts +1 -0
  38. package/datePicker/_utils/getDefaultFormatToken.ts +1 -0
  39. package/datePicker/_utils/getInsetInputFormatToken.ts +1 -0
  40. package/datePicker/_utils/getInsetInputValueFromInsetInputStr.ts +1 -0
  41. package/datePicker/_utils/getYears.ts +8 -4
  42. package/datePicker/_utils/isValidTimeZone.ts +3 -0
  43. package/datePicker/constants.ts +1 -1
  44. package/datePicker/datePicker.scss +170 -21
  45. package/datePicker/foundation.ts +175 -150
  46. package/datePicker/inputFoundation.ts +34 -16
  47. package/datePicker/monthFoundation.ts +0 -1
  48. package/datePicker/monthsGridFoundation.ts +52 -32
  49. package/datePicker/variables.scss +13 -4
  50. package/datePicker/yearAndMonthFoundation.ts +68 -21
  51. package/descriptions/constants.ts +2 -1
  52. package/descriptions/descriptions.scss +20 -0
  53. package/descriptions/foundation.ts +36 -0
  54. package/descriptions/variables.scss +10 -0
  55. package/dropdown/constants.ts +1 -1
  56. package/dropdown/dropdown.scss +5 -0
  57. package/dropdown/foundation.ts +4 -3
  58. package/dropdown/menuFoundation.ts +3 -3
  59. package/form/constants.ts +2 -1
  60. package/form/form.scss +5 -2
  61. package/form/foundation.ts +12 -10
  62. package/form/interface.ts +5 -6
  63. package/form/utils.ts +39 -16
  64. package/form/variables.scss +3 -0
  65. package/grid/grid.scss +1 -1
  66. package/image/constants.ts +5 -1
  67. package/image/image.scss +9 -5
  68. package/image/previewFooterFoundation.ts +1 -4
  69. package/image/previewFoundation.ts +1 -1
  70. package/image/previewImageFoundation.ts +61 -70
  71. package/image/previewInnerFoundation.ts +93 -47
  72. package/image/utils.ts +18 -20
  73. package/image/variables.scss +1 -1
  74. package/input/foundation.ts +2 -4
  75. package/input/input.scss +48 -3
  76. package/input/textarea.scss +34 -0
  77. package/input/textareaFoundation.ts +42 -18
  78. package/input/variables.scss +7 -0
  79. package/inputNumber/foundation.ts +0 -5
  80. package/inputNumber/inputNumber.scss +9 -0
  81. package/lib/cjs/anchor/anchor.css +5 -0
  82. package/lib/cjs/anchor/anchor.scss +6 -0
  83. package/lib/cjs/anchor/constants.js +1 -3
  84. package/lib/cjs/anchor/foundation.js +20 -80
  85. package/lib/cjs/anchor/linkFoundation.js +3 -16
  86. package/lib/cjs/anchor/variables.scss +4 -0
  87. package/lib/cjs/autoComplete/autoComplete.css +1 -0
  88. package/lib/cjs/autoComplete/autoComplete.scss +2 -0
  89. package/lib/cjs/autoComplete/constants.js +3 -6
  90. package/lib/cjs/autoComplete/foundation.d.ts +3 -1
  91. package/lib/cjs/autoComplete/foundation.js +37 -149
  92. package/lib/cjs/autoComplete/optionFoundation.js +2 -14
  93. package/lib/cjs/avatar/animation.scss +19 -0
  94. package/lib/cjs/avatar/avatar.css +261 -0
  95. package/lib/cjs/avatar/avatar.scss +314 -1
  96. package/lib/cjs/avatar/constants.js +1 -4
  97. package/lib/cjs/avatar/foundation.d.ts +3 -0
  98. package/lib/cjs/avatar/foundation.js +21 -19
  99. package/lib/cjs/avatar/variables.scss +66 -10
  100. package/lib/cjs/backtop/constants.js +1 -3
  101. package/lib/cjs/backtop/foundation.d.ts +2 -2
  102. package/lib/cjs/backtop/foundation.js +0 -21
  103. package/lib/cjs/badge/badge.css +10 -0
  104. package/lib/cjs/badge/badge.scss +13 -0
  105. package/lib/cjs/badge/constants.js +2 -4
  106. package/lib/cjs/badge/variables.scss +4 -0
  107. package/lib/cjs/banner/constants.js +1 -3
  108. package/lib/cjs/banner/foundation.js +0 -7
  109. package/lib/cjs/base/constants.js +2 -4
  110. package/lib/cjs/base/foundation.d.ts +3 -3
  111. package/lib/cjs/base/foundation.js +12 -46
  112. package/lib/cjs/base/index.js +0 -3
  113. package/lib/cjs/breadcrumb/breadcrumb.css +5 -3
  114. package/lib/cjs/breadcrumb/breadcrumb.scss +10 -4
  115. package/lib/cjs/breadcrumb/constants.js +1 -3
  116. package/lib/cjs/breadcrumb/foundation.js +0 -13
  117. package/lib/cjs/breadcrumb/itemFoundation.js +0 -7
  118. package/lib/cjs/breadcrumb/variables.scss +4 -0
  119. package/lib/cjs/button/button.css +32 -5
  120. package/lib/cjs/button/button.scss +88 -21
  121. package/lib/cjs/button/constants.js +1 -3
  122. package/lib/cjs/button/iconButton.css +1 -0
  123. package/lib/cjs/button/iconButton.scss +1 -0
  124. package/lib/cjs/button/splitButtonGroup.scss +10 -9
  125. package/lib/cjs/button/variables.scss +13 -0
  126. package/lib/cjs/calendar/calendar.css +2 -2
  127. package/lib/cjs/calendar/calendar.scss +1 -1
  128. package/lib/cjs/calendar/constants.js +1 -3
  129. package/lib/cjs/calendar/eventUtil.d.ts +7 -6
  130. package/lib/cjs/calendar/eventUtil.js +15 -83
  131. package/lib/cjs/calendar/foundation.d.ts +4 -4
  132. package/lib/cjs/calendar/foundation.js +32 -128
  133. package/lib/cjs/card/constants.js +1 -3
  134. package/lib/cjs/carousel/carousel.css +4 -0
  135. package/lib/cjs/carousel/carousel.scss +4 -0
  136. package/lib/cjs/carousel/constants.js +9 -11
  137. package/lib/cjs/carousel/foundation.d.ts +2 -0
  138. package/lib/cjs/carousel/foundation.js +7 -52
  139. package/lib/cjs/cascader/cascader.css +45 -4
  140. package/lib/cjs/cascader/cascader.scss +66 -23
  141. package/lib/cjs/cascader/constants.d.ts +3 -0
  142. package/lib/cjs/cascader/constants.js +9 -8
  143. package/lib/cjs/cascader/foundation.d.ts +27 -8
  144. package/lib/cjs/cascader/foundation.js +122 -300
  145. package/lib/cjs/cascader/util.d.ts +9 -1
  146. package/lib/cjs/cascader/util.js +69 -33
  147. package/lib/cjs/cascader/variables.scss +5 -1
  148. package/lib/cjs/checkbox/checkbox.css +0 -1
  149. package/lib/cjs/checkbox/checkbox.scss +0 -1
  150. package/lib/cjs/checkbox/checkboxFoundation.js +1 -38
  151. package/lib/cjs/checkbox/checkboxGroupFoundation.js +1 -23
  152. package/lib/cjs/checkbox/constants.js +13 -15
  153. package/lib/cjs/collapse/constants.js +1 -3
  154. package/lib/cjs/collapse/foundation.d.ts +2 -1
  155. package/lib/cjs/collapse/foundation.js +2 -13
  156. package/lib/cjs/collapsible/constants.js +1 -3
  157. package/lib/cjs/collapsible/foundation.js +0 -9
  158. package/lib/cjs/datePicker/_utils/formatter.js +4 -10
  159. package/lib/cjs/datePicker/_utils/getDayOfWeek.d.ts +1 -1
  160. package/lib/cjs/datePicker/_utils/getDayOfWeek.js +0 -4
  161. package/lib/cjs/datePicker/_utils/getDefaultFormatToken.d.ts +1 -0
  162. package/lib/cjs/datePicker/_utils/getDefaultFormatToken.js +2 -6
  163. package/lib/cjs/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
  164. package/lib/cjs/datePicker/_utils/getDefaultPickerDate.js +0 -15
  165. package/lib/cjs/datePicker/_utils/getFullDateOffset.js +0 -7
  166. package/lib/cjs/datePicker/_utils/getInsetInputFormatToken.js +2 -6
  167. package/lib/cjs/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +1 -6
  168. package/lib/cjs/datePicker/_utils/getMonthTable.d.ts +1 -1
  169. package/lib/cjs/datePicker/_utils/getMonthTable.js +7 -18
  170. package/lib/cjs/datePicker/_utils/getMonthsInYear.js +1 -3
  171. package/lib/cjs/datePicker/_utils/getYears.d.ts +1 -1
  172. package/lib/cjs/datePicker/_utils/getYears.js +9 -7
  173. package/lib/cjs/datePicker/_utils/index.js +0 -13
  174. package/lib/cjs/datePicker/_utils/isAfter.js +0 -4
  175. package/lib/cjs/datePicker/_utils/isBefore.js +0 -4
  176. package/lib/cjs/datePicker/_utils/isBetween.js +0 -4
  177. package/lib/cjs/datePicker/_utils/isDate.js +0 -1
  178. package/lib/cjs/datePicker/_utils/isSameDay.js +0 -4
  179. package/lib/cjs/datePicker/_utils/isTimestamp.js +0 -4
  180. package/lib/cjs/datePicker/_utils/isUnixTimestamp.js +0 -4
  181. package/lib/cjs/datePicker/_utils/isValidDate.js +0 -1
  182. package/lib/cjs/datePicker/_utils/isValidTimeZone.d.ts +1 -0
  183. package/lib/cjs/datePicker/_utils/isValidTimeZone.js +9 -0
  184. package/lib/cjs/datePicker/_utils/isWithinInterval.js +0 -4
  185. package/lib/cjs/datePicker/_utils/parser.js +0 -10
  186. package/lib/cjs/datePicker/constants.d.ts +1 -1
  187. package/lib/cjs/datePicker/constants.js +28 -31
  188. package/lib/cjs/datePicker/datePicker.css +88 -13
  189. package/lib/cjs/datePicker/datePicker.scss +170 -21
  190. package/lib/cjs/datePicker/foundation.d.ts +79 -50
  191. package/lib/cjs/datePicker/foundation.js +173 -441
  192. package/lib/cjs/datePicker/inputFoundation.d.ts +15 -6
  193. package/lib/cjs/datePicker/inputFoundation.js +35 -98
  194. package/lib/cjs/datePicker/monthFoundation.d.ts +1 -1
  195. package/lib/cjs/datePicker/monthFoundation.js +2 -28
  196. package/lib/cjs/datePicker/monthsGridFoundation.d.ts +18 -13
  197. package/lib/cjs/datePicker/monthsGridFoundation.js +70 -247
  198. package/lib/cjs/datePicker/variables.scss +13 -4
  199. package/lib/cjs/datePicker/yearAndMonthFoundation.d.ts +68 -13
  200. package/lib/cjs/datePicker/yearAndMonthFoundation.js +55 -42
  201. package/lib/cjs/descriptions/constants.d.ts +1 -0
  202. package/lib/cjs/descriptions/constants.js +3 -4
  203. package/lib/cjs/descriptions/descriptions.css +15 -0
  204. package/lib/cjs/descriptions/descriptions.scss +20 -0
  205. package/lib/cjs/descriptions/foundation.d.ts +7 -0
  206. package/lib/cjs/descriptions/foundation.js +45 -0
  207. package/lib/cjs/descriptions/variables.scss +10 -0
  208. package/lib/cjs/divider/constants.js +1 -3
  209. package/lib/cjs/dropdown/constants.js +4 -7
  210. package/lib/cjs/dropdown/dropdown.css +4 -0
  211. package/lib/cjs/dropdown/dropdown.scss +5 -0
  212. package/lib/cjs/dropdown/foundation.js +9 -25
  213. package/lib/cjs/dropdown/menuFoundation.js +9 -28
  214. package/lib/cjs/empty/constants.js +1 -3
  215. package/lib/cjs/form/constants.d.ts +1 -0
  216. package/lib/cjs/form/constants.js +3 -4
  217. package/lib/cjs/form/form.css +4 -0
  218. package/lib/cjs/form/form.scss +5 -2
  219. package/lib/cjs/form/foundation.d.ts +4 -4
  220. package/lib/cjs/form/foundation.js +84 -214
  221. package/lib/cjs/form/interface.d.ts +10 -10
  222. package/lib/cjs/form/utils.d.ts +10 -1
  223. package/lib/cjs/form/utils.js +85 -93
  224. package/lib/cjs/form/variables.scss +3 -0
  225. package/lib/cjs/grid/constants.js +1 -3
  226. package/lib/cjs/grid/grid.css +1 -1
  227. package/lib/cjs/grid/grid.scss +1 -1
  228. package/lib/cjs/highlight/constants.js +1 -3
  229. package/lib/cjs/icons/constants.js +1 -3
  230. package/lib/cjs/image/constants.d.ts +4 -1
  231. package/lib/cjs/image/constants.js +7 -5
  232. package/lib/cjs/image/image.css +4 -2
  233. package/lib/cjs/image/image.scss +9 -5
  234. package/lib/cjs/image/imageFoundation.js +4 -18
  235. package/lib/cjs/image/previewFooterFoundation.d.ts +0 -1
  236. package/lib/cjs/image/previewFooterFoundation.js +0 -14
  237. package/lib/cjs/image/previewFoundation.js +0 -11
  238. package/lib/cjs/image/previewImageFoundation.d.ts +9 -24
  239. package/lib/cjs/image/previewImageFoundation.js +79 -164
  240. package/lib/cjs/image/previewInnerFoundation.d.ts +19 -15
  241. package/lib/cjs/image/previewInnerFoundation.js +108 -114
  242. package/lib/cjs/image/utils.d.ts +1 -1
  243. package/lib/cjs/image/utils.js +46 -35
  244. package/lib/cjs/image/variables.scss +1 -1
  245. package/lib/cjs/input/constants.js +1 -3
  246. package/lib/cjs/input/foundation.js +19 -104
  247. package/lib/cjs/input/input.css +45 -1
  248. package/lib/cjs/input/input.scss +48 -3
  249. package/lib/cjs/input/textarea.css +20 -0
  250. package/lib/cjs/input/textarea.scss +34 -0
  251. package/lib/cjs/input/textareaFoundation.d.ts +1 -1
  252. package/lib/cjs/input/textareaFoundation.js +58 -101
  253. package/lib/cjs/input/util/calculateNodeHeight.js +6 -18
  254. package/lib/cjs/input/util/getSizingData.js +7 -11
  255. package/lib/cjs/input/variables.scss +7 -0
  256. package/lib/cjs/inputNumber/constants.js +0 -2
  257. package/lib/cjs/inputNumber/foundation.js +28 -197
  258. package/lib/cjs/inputNumber/inputNumber.css +4 -0
  259. package/lib/cjs/inputNumber/inputNumber.scss +9 -0
  260. package/lib/cjs/layout/constants.js +1 -3
  261. package/lib/cjs/list/constants.js +1 -3
  262. package/lib/cjs/modal/constants.js +1 -3
  263. package/lib/cjs/modal/modal.css +8 -0
  264. package/lib/cjs/modal/modal.scss +10 -1
  265. package/lib/cjs/modal/modalContentFoundation.js +0 -20
  266. package/lib/cjs/modal/modalFoundation.d.ts +8 -4
  267. package/lib/cjs/modal/modalFoundation.js +40 -15
  268. package/lib/cjs/modal/variables.scss +6 -1
  269. package/lib/cjs/navigation/NavItem.js +0 -12
  270. package/lib/cjs/navigation/constants.js +1 -4
  271. package/lib/cjs/navigation/foundation.js +3 -70
  272. package/lib/cjs/navigation/itemFoundation.js +3 -22
  273. package/lib/cjs/navigation/subNavFoundation.js +7 -42
  274. package/lib/cjs/notification/constants.js +3 -6
  275. package/lib/cjs/notification/notification.css +18 -0
  276. package/lib/cjs/notification/notification.scss +21 -1
  277. package/lib/cjs/notification/notificationFoundation.d.ts +6 -6
  278. package/lib/cjs/notification/notificationFoundation.js +0 -16
  279. package/lib/cjs/notification/notificationListFoundation.d.ts +4 -1
  280. package/lib/cjs/notification/notificationListFoundation.js +15 -18
  281. package/lib/cjs/overflowList/constants.d.ts +6 -4
  282. package/lib/cjs/overflowList/constants.js +3 -3
  283. package/lib/cjs/overflowList/foundation.d.ts +3 -1
  284. package/lib/cjs/overflowList/foundation.js +59 -68
  285. package/lib/cjs/pagination/constants.js +1 -3
  286. package/lib/cjs/pagination/foundation.d.ts +5 -3
  287. package/lib/cjs/pagination/foundation.js +36 -93
  288. package/lib/cjs/pagination/pagination.css +23 -0
  289. package/lib/cjs/pagination/pagination.scss +29 -0
  290. package/lib/cjs/pagination/variables.scss +1 -0
  291. package/lib/cjs/popconfirm/constants.js +2 -4
  292. package/lib/cjs/popconfirm/popconfirm.css +4 -24
  293. package/lib/cjs/popconfirm/popconfirm.scss +4 -16
  294. package/lib/cjs/popconfirm/popconfirmFoundation.d.ts +4 -0
  295. package/lib/cjs/popconfirm/popconfirmFoundation.js +17 -19
  296. package/lib/cjs/popconfirm/rtl.scss +0 -13
  297. package/lib/cjs/popconfirm/variables.scss +0 -4
  298. package/lib/cjs/popover/constants.d.ts +1 -1
  299. package/lib/cjs/popover/constants.js +3 -6
  300. package/lib/cjs/popover/popover.css +2 -0
  301. package/lib/cjs/popover/popover.scss +2 -0
  302. package/lib/cjs/progress/constants.js +1 -3
  303. package/lib/cjs/progress/generates.d.ts +2 -2
  304. package/lib/cjs/progress/generates.js +33 -74
  305. package/lib/cjs/radio/constants.js +13 -15
  306. package/lib/cjs/radio/radio.css +3 -0
  307. package/lib/cjs/radio/radio.scss +6 -3
  308. package/lib/cjs/radio/radioFoundation.js +0 -14
  309. package/lib/cjs/radio/radioGroupFoundation.js +3 -23
  310. package/lib/cjs/radio/radioInnerFoundation.js +1 -19
  311. package/lib/cjs/radio/variables.scss +4 -0
  312. package/lib/cjs/rating/constants.js +1 -3
  313. package/lib/cjs/rating/foundation.js +10 -62
  314. package/lib/cjs/scrollList/constants.js +2 -4
  315. package/lib/cjs/scrollList/foundation.js +0 -4
  316. package/lib/cjs/scrollList/itemFoundation.js +8 -61
  317. package/lib/cjs/scrollList/scrollTo.js +2 -5
  318. package/lib/cjs/select/constants.js +3 -6
  319. package/lib/cjs/select/foundation.d.ts +8 -6
  320. package/lib/cjs/select/foundation.js +172 -433
  321. package/lib/cjs/select/option.scss +1 -1
  322. package/lib/cjs/select/optionFoundation.js +2 -14
  323. package/lib/cjs/select/select.css +50 -0
  324. package/lib/cjs/select/select.scss +74 -5
  325. package/lib/cjs/select/variables.scss +9 -6
  326. package/lib/cjs/sideSheet/constants.js +2 -4
  327. package/lib/cjs/sideSheet/sideSheet.css +30 -0
  328. package/lib/cjs/sideSheet/sideSheet.scss +38 -0
  329. package/lib/cjs/sideSheet/sideSheetFoundation.d.ts +1 -0
  330. package/lib/cjs/sideSheet/sideSheetFoundation.js +0 -18
  331. package/lib/cjs/sideSheet/variables.scss +7 -0
  332. package/lib/cjs/skeleton/constants.js +1 -3
  333. package/lib/cjs/skeleton/skeleton.css +3 -2
  334. package/lib/cjs/skeleton/skeleton.scss +1 -0
  335. package/lib/cjs/skeleton/variables.scss +2 -2
  336. package/lib/cjs/slider/constants.d.ts +1 -0
  337. package/lib/cjs/slider/constants.js +8 -9
  338. package/lib/cjs/slider/foundation.d.ts +13 -2
  339. package/lib/cjs/slider/foundation.js +30 -226
  340. package/lib/cjs/slider/slider.css +25 -11
  341. package/lib/cjs/slider/slider.scss +16 -1
  342. package/lib/cjs/slider/variables.scss +15 -9
  343. package/lib/cjs/space/constants.js +1 -3
  344. package/lib/cjs/spin/constants.js +1 -3
  345. package/lib/cjs/spin/foundation.js +3 -13
  346. package/lib/cjs/spin/spin.css +3 -0
  347. package/lib/cjs/spin/spin.scss +3 -0
  348. package/lib/cjs/steps/bacisSteps.scss +10 -3
  349. package/lib/cjs/steps/constants.js +2 -4
  350. package/lib/cjs/steps/fillSteps.scss +7 -7
  351. package/lib/cjs/steps/steps.css +27 -22
  352. package/lib/cjs/steps/variables.scss +3 -3
  353. package/lib/cjs/switch/constants.js +13 -15
  354. package/lib/cjs/switch/foundation.js +1 -21
  355. package/lib/cjs/switch/switch.css +10 -0
  356. package/lib/cjs/switch/switch.scss +13 -2
  357. package/lib/cjs/table/bodyFoundation.js +1 -34
  358. package/lib/cjs/table/cellFoundation.js +0 -5
  359. package/lib/cjs/table/constants.d.ts +0 -1
  360. package/lib/cjs/table/constants.js +13 -18
  361. package/lib/cjs/table/foundation.d.ts +26 -16
  362. package/lib/cjs/table/foundation.js +79 -308
  363. package/lib/cjs/table/rtl.scss +33 -2
  364. package/lib/cjs/table/table.css +100 -64
  365. package/lib/cjs/table/table.scss +66 -8
  366. package/lib/cjs/table/tableRowFoundation.js +0 -12
  367. package/lib/cjs/table/tableSelectionCellFoundation.js +0 -6
  368. package/lib/cjs/table/utils.d.ts +6 -4
  369. package/lib/cjs/table/utils.js +27 -160
  370. package/lib/cjs/table/variables.scss +6 -3
  371. package/lib/cjs/tabs/constants.js +21 -23
  372. package/lib/cjs/tabs/foundation.js +2 -40
  373. package/lib/cjs/tabs/tabs.css +207 -7
  374. package/lib/cjs/tabs/tabs.scss +339 -24
  375. package/lib/cjs/tag/constants.js +1 -4
  376. package/lib/cjs/tag/tag.css +34 -1
  377. package/lib/cjs/tag/tag.scss +43 -4
  378. package/lib/cjs/tag/variables.scss +5 -0
  379. package/lib/cjs/tagInput/constants.js +1 -3
  380. package/lib/cjs/tagInput/foundation.d.ts +7 -4
  381. package/lib/cjs/tagInput/foundation.js +64 -88
  382. package/lib/cjs/tagInput/tagInput.css +35 -9
  383. package/lib/cjs/tagInput/tagInput.scss +41 -12
  384. package/lib/cjs/tagInput/utils/getSplitedArray.js +0 -11
  385. package/lib/cjs/tagInput/variables.scss +2 -0
  386. package/lib/cjs/timePicker/ComboxFoundation.js +6 -41
  387. package/lib/cjs/timePicker/constants.js +3 -6
  388. package/lib/cjs/timePicker/foundation.d.ts +2 -2
  389. package/lib/cjs/timePicker/foundation.js +28 -107
  390. package/lib/cjs/timePicker/inputFoundation.js +4 -25
  391. package/lib/cjs/timePicker/timePicker.css +15 -0
  392. package/lib/cjs/timePicker/timePicker.scss +22 -1
  393. package/lib/cjs/timePicker/utils/index.js +12 -51
  394. package/lib/cjs/timePicker/utils/localeDate.js +0 -10
  395. package/lib/cjs/timeline/constants.js +2 -4
  396. package/lib/cjs/toast/animation.scss +3 -0
  397. package/lib/cjs/toast/constants.js +3 -6
  398. package/lib/cjs/toast/toast.css +35 -3
  399. package/lib/cjs/toast/toast.scss +43 -3
  400. package/lib/cjs/toast/toastFoundation.d.ts +5 -4
  401. package/lib/cjs/toast/toastFoundation.js +0 -14
  402. package/lib/cjs/toast/toastListFoundation.d.ts +5 -0
  403. package/lib/cjs/toast/toastListFoundation.js +10 -22
  404. package/lib/cjs/toast/variables.scss +14 -0
  405. package/lib/cjs/tooltip/constants.d.ts +1 -1
  406. package/lib/cjs/tooltip/constants.js +2 -4
  407. package/lib/cjs/tooltip/foundation.d.ts +5 -2
  408. package/lib/cjs/tooltip/foundation.js +143 -336
  409. package/lib/cjs/tooltip/tooltip.css +7 -0
  410. package/lib/cjs/tooltip/tooltip.scss +9 -0
  411. package/lib/cjs/transfer/constants.js +1 -3
  412. package/lib/cjs/transfer/foundation.d.ts +1 -1
  413. package/lib/cjs/transfer/foundation.js +4 -69
  414. package/lib/cjs/transfer/transfer.css +4 -0
  415. package/lib/cjs/transfer/transfer.scss +7 -0
  416. package/lib/cjs/transfer/transferUtils.js +5 -27
  417. package/lib/cjs/tree/constants.js +2 -4
  418. package/lib/cjs/tree/foundation.d.ts +14 -9
  419. package/lib/cjs/tree/foundation.js +60 -183
  420. package/lib/cjs/tree/rtl.scss +19 -11
  421. package/lib/cjs/tree/tree.css +147 -65
  422. package/lib/cjs/tree/tree.scss +112 -17
  423. package/lib/cjs/tree/treeUtil.d.ts +17 -8
  424. package/lib/cjs/tree/treeUtil.js +102 -195
  425. package/lib/cjs/tree/variables.scss +3 -2
  426. package/lib/cjs/treeSelect/constants.js +3 -5
  427. package/lib/cjs/treeSelect/foundation.d.ts +26 -13
  428. package/lib/cjs/treeSelect/foundation.js +153 -248
  429. package/lib/cjs/treeSelect/treeSelect.css +55 -10
  430. package/lib/cjs/treeSelect/treeSelect.scss +76 -20
  431. package/lib/cjs/treeSelect/variables.scss +4 -2
  432. package/lib/cjs/typography/constants.d.ts +1 -0
  433. package/lib/cjs/typography/constants.js +2 -3
  434. package/lib/cjs/typography/formatNumeral.d.ts +3 -3
  435. package/lib/cjs/typography/formatNumeral.js +22 -43
  436. package/lib/cjs/typography/typography.css +135 -2
  437. package/lib/cjs/typography/typography.scss +151 -8
  438. package/lib/cjs/typography/variables.scss +52 -0
  439. package/lib/cjs/upload/constants.js +2 -4
  440. package/lib/cjs/upload/fileCardFoundation.d.ts +9 -0
  441. package/lib/cjs/upload/fileCardFoundation.js +18 -0
  442. package/lib/cjs/upload/foundation.d.ts +14 -5
  443. package/lib/cjs/upload/foundation.js +107 -247
  444. package/lib/cjs/upload/upload.css +9 -0
  445. package/lib/cjs/upload/upload.scss +8 -0
  446. package/lib/cjs/upload/utils.js +14 -33
  447. package/lib/cjs/utils/Event.js +1 -21
  448. package/lib/cjs/utils/FocusHandle.d.ts +1 -1
  449. package/lib/cjs/utils/FocusHandle.js +6 -35
  450. package/lib/cjs/utils/Logger.js +0 -21
  451. package/lib/cjs/utils/Store.js +0 -10
  452. package/lib/cjs/utils/a11y.js +18 -43
  453. package/lib/cjs/utils/array.d.ts +2 -2
  454. package/lib/cjs/utils/array.js +2 -9
  455. package/lib/cjs/utils/arrayMove.js +0 -1
  456. package/lib/cjs/utils/classnames.js +0 -12
  457. package/lib/cjs/utils/date-fns-extra.d.ts +28 -17
  458. package/lib/cjs/utils/date-fns-extra.js +82 -51
  459. package/lib/cjs/utils/dom.d.ts +1 -1
  460. package/lib/cjs/utils/dom.js +0 -13
  461. package/lib/cjs/utils/function.js +0 -2
  462. package/lib/cjs/utils/getDataAttr.js +1 -3
  463. package/lib/cjs/utils/getHighlight.js +5 -26
  464. package/lib/cjs/utils/getMotionObjFromProps.js +4 -16
  465. package/lib/cjs/utils/index.js +0 -4
  466. package/lib/cjs/utils/isBothNaN.js +0 -2
  467. package/lib/cjs/utils/isElement.js +0 -1
  468. package/lib/cjs/utils/isEnterPress.js +0 -5
  469. package/lib/cjs/utils/isEscPress.js +0 -5
  470. package/lib/cjs/utils/isNullOrUndefined.js +0 -1
  471. package/lib/cjs/utils/isNumber.js +0 -1
  472. package/lib/cjs/utils/isObject.js +0 -1
  473. package/lib/cjs/utils/isPromise.js +0 -3
  474. package/lib/cjs/utils/isString.js +0 -1
  475. package/lib/cjs/utils/keyCode.js +0 -105
  476. package/lib/cjs/utils/log.js +0 -5
  477. package/lib/cjs/utils/number.js +0 -2
  478. package/lib/cjs/utils/object.d.ts +4 -4
  479. package/lib/cjs/utils/object.js +10 -36
  480. package/lib/cjs/utils/set.js +0 -8
  481. package/lib/cjs/utils/shallowEqualObjects.js +0 -7
  482. package/lib/cjs/utils/touchPolyfill.js +1 -8
  483. package/lib/cjs/utils/type.d.ts +3 -3
  484. package/lib/cjs/utils/uuid.js +4 -11
  485. package/lib/cjs/utils/warning.js +1 -2
  486. package/lib/es/anchor/anchor.css +5 -0
  487. package/lib/es/anchor/anchor.scss +6 -0
  488. package/lib/es/anchor/constants.js +1 -1
  489. package/lib/es/anchor/foundation.js +20 -73
  490. package/lib/es/anchor/linkFoundation.js +3 -12
  491. package/lib/es/anchor/variables.scss +4 -0
  492. package/lib/es/autoComplete/autoComplete.css +1 -0
  493. package/lib/es/autoComplete/autoComplete.scss +2 -0
  494. package/lib/es/autoComplete/constants.js +3 -3
  495. package/lib/es/autoComplete/foundation.d.ts +3 -1
  496. package/lib/es/autoComplete/foundation.js +37 -142
  497. package/lib/es/autoComplete/optionFoundation.js +2 -10
  498. package/lib/es/avatar/animation.scss +19 -0
  499. package/lib/es/avatar/avatar.css +261 -0
  500. package/lib/es/avatar/avatar.scss +314 -1
  501. package/lib/es/avatar/constants.js +1 -2
  502. package/lib/es/avatar/foundation.d.ts +3 -0
  503. package/lib/es/avatar/foundation.js +21 -14
  504. package/lib/es/avatar/variables.scss +66 -10
  505. package/lib/es/backtop/constants.js +1 -1
  506. package/lib/es/backtop/foundation.d.ts +2 -2
  507. package/lib/es/backtop/foundation.js +0 -16
  508. package/lib/es/badge/badge.css +10 -0
  509. package/lib/es/badge/badge.scss +13 -0
  510. package/lib/es/badge/constants.js +2 -2
  511. package/lib/es/badge/variables.scss +4 -0
  512. package/lib/es/banner/constants.js +1 -1
  513. package/lib/es/banner/foundation.js +0 -3
  514. package/lib/es/base/constants.js +2 -2
  515. package/lib/es/base/foundation.d.ts +3 -3
  516. package/lib/es/base/foundation.js +11 -44
  517. package/lib/es/breadcrumb/breadcrumb.css +5 -3
  518. package/lib/es/breadcrumb/breadcrumb.scss +10 -4
  519. package/lib/es/breadcrumb/constants.js +1 -1
  520. package/lib/es/breadcrumb/foundation.js +0 -8
  521. package/lib/es/breadcrumb/itemFoundation.js +0 -3
  522. package/lib/es/breadcrumb/variables.scss +4 -0
  523. package/lib/es/button/button.css +32 -5
  524. package/lib/es/button/button.scss +88 -21
  525. package/lib/es/button/constants.js +1 -1
  526. package/lib/es/button/iconButton.css +1 -0
  527. package/lib/es/button/iconButton.scss +1 -0
  528. package/lib/es/button/splitButtonGroup.scss +10 -9
  529. package/lib/es/button/variables.scss +13 -0
  530. package/lib/es/calendar/calendar.css +2 -2
  531. package/lib/es/calendar/calendar.scss +1 -1
  532. package/lib/es/calendar/constants.js +1 -1
  533. package/lib/es/calendar/eventUtil.d.ts +7 -6
  534. package/lib/es/calendar/eventUtil.js +15 -45
  535. package/lib/es/calendar/foundation.d.ts +4 -4
  536. package/lib/es/calendar/foundation.js +32 -122
  537. package/lib/es/card/constants.js +1 -1
  538. package/lib/es/carousel/carousel.css +4 -0
  539. package/lib/es/carousel/carousel.scss +4 -0
  540. package/lib/es/carousel/constants.js +9 -9
  541. package/lib/es/carousel/foundation.d.ts +2 -0
  542. package/lib/es/carousel/foundation.js +7 -47
  543. package/lib/es/cascader/cascader.css +45 -4
  544. package/lib/es/cascader/cascader.scss +66 -23
  545. package/lib/es/cascader/constants.d.ts +3 -0
  546. package/lib/es/cascader/constants.js +7 -5
  547. package/lib/es/cascader/foundation.d.ts +27 -8
  548. package/lib/es/cascader/foundation.js +125 -286
  549. package/lib/es/cascader/util.d.ts +9 -1
  550. package/lib/es/cascader/util.js +65 -24
  551. package/lib/es/cascader/variables.scss +5 -1
  552. package/lib/es/checkbox/checkbox.css +0 -1
  553. package/lib/es/checkbox/checkbox.scss +0 -1
  554. package/lib/es/checkbox/checkboxFoundation.js +1 -34
  555. package/lib/es/checkbox/checkboxGroupFoundation.js +1 -20
  556. package/lib/es/checkbox/constants.js +13 -13
  557. package/lib/es/collapse/constants.js +1 -1
  558. package/lib/es/collapse/foundation.d.ts +2 -1
  559. package/lib/es/collapse/foundation.js +2 -9
  560. package/lib/es/collapsible/constants.js +1 -1
  561. package/lib/es/collapsible/foundation.js +0 -7
  562. package/lib/es/datePicker/_utils/formatter.js +4 -8
  563. package/lib/es/datePicker/_utils/getDayOfWeek.d.ts +1 -1
  564. package/lib/es/datePicker/_utils/getDayOfWeek.js +0 -3
  565. package/lib/es/datePicker/_utils/getDefaultFormatToken.d.ts +1 -0
  566. package/lib/es/datePicker/_utils/getDefaultFormatToken.js +2 -3
  567. package/lib/es/datePicker/_utils/getDefaultPickerDate.d.ts +1 -1
  568. package/lib/es/datePicker/_utils/getDefaultPickerDate.js +0 -10
  569. package/lib/es/datePicker/_utils/getFullDateOffset.js +0 -3
  570. package/lib/es/datePicker/_utils/getInsetInputFormatToken.js +2 -5
  571. package/lib/es/datePicker/_utils/getInsetInputValueFromInsetInputStr.js +1 -5
  572. package/lib/es/datePicker/_utils/getMonthTable.d.ts +1 -1
  573. package/lib/es/datePicker/_utils/getMonthTable.js +8 -18
  574. package/lib/es/datePicker/_utils/getMonthsInYear.js +1 -2
  575. package/lib/es/datePicker/_utils/getYears.d.ts +1 -1
  576. package/lib/es/datePicker/_utils/getYears.js +9 -6
  577. package/lib/es/datePicker/_utils/isBetween.js +0 -1
  578. package/lib/es/datePicker/_utils/isValidTimeZone.d.ts +1 -0
  579. package/lib/es/datePicker/_utils/isValidTimeZone.js +3 -0
  580. package/lib/es/datePicker/_utils/parser.js +0 -8
  581. package/lib/es/datePicker/constants.d.ts +1 -1
  582. package/lib/es/datePicker/constants.js +28 -28
  583. package/lib/es/datePicker/datePicker.css +88 -13
  584. package/lib/es/datePicker/datePicker.scss +170 -21
  585. package/lib/es/datePicker/foundation.d.ts +79 -50
  586. package/lib/es/datePicker/foundation.js +173 -426
  587. package/lib/es/datePicker/inputFoundation.d.ts +15 -6
  588. package/lib/es/datePicker/inputFoundation.js +35 -85
  589. package/lib/es/datePicker/monthFoundation.d.ts +1 -1
  590. package/lib/es/datePicker/monthFoundation.js +3 -22
  591. package/lib/es/datePicker/monthsGridFoundation.d.ts +18 -13
  592. package/lib/es/datePicker/monthsGridFoundation.js +70 -231
  593. package/lib/es/datePicker/variables.scss +13 -4
  594. package/lib/es/datePicker/yearAndMonthFoundation.d.ts +68 -13
  595. package/lib/es/datePicker/yearAndMonthFoundation.js +55 -37
  596. package/lib/es/descriptions/constants.d.ts +1 -0
  597. package/lib/es/descriptions/constants.js +3 -2
  598. package/lib/es/descriptions/descriptions.css +15 -0
  599. package/lib/es/descriptions/descriptions.scss +20 -0
  600. package/lib/es/descriptions/foundation.d.ts +7 -0
  601. package/lib/es/descriptions/foundation.js +37 -0
  602. package/lib/es/descriptions/variables.scss +10 -0
  603. package/lib/es/divider/constants.js +1 -1
  604. package/lib/es/dropdown/constants.js +4 -4
  605. package/lib/es/dropdown/dropdown.css +4 -0
  606. package/lib/es/dropdown/dropdown.scss +5 -0
  607. package/lib/es/dropdown/foundation.js +9 -20
  608. package/lib/es/dropdown/menuFoundation.js +9 -23
  609. package/lib/es/empty/constants.js +1 -1
  610. package/lib/es/form/constants.d.ts +1 -0
  611. package/lib/es/form/constants.js +3 -2
  612. package/lib/es/form/form.css +4 -0
  613. package/lib/es/form/form.scss +5 -2
  614. package/lib/es/form/foundation.d.ts +4 -4
  615. package/lib/es/form/foundation.js +84 -203
  616. package/lib/es/form/interface.d.ts +10 -10
  617. package/lib/es/form/utils.d.ts +10 -1
  618. package/lib/es/form/utils.js +83 -86
  619. package/lib/es/form/variables.scss +3 -0
  620. package/lib/es/grid/constants.js +1 -1
  621. package/lib/es/grid/grid.css +1 -1
  622. package/lib/es/grid/grid.scss +1 -1
  623. package/lib/es/highlight/constants.js +1 -1
  624. package/lib/es/icons/constants.js +1 -1
  625. package/lib/es/image/constants.d.ts +4 -1
  626. package/lib/es/image/constants.js +5 -2
  627. package/lib/es/image/image.css +4 -2
  628. package/lib/es/image/image.scss +9 -5
  629. package/lib/es/image/imageFoundation.js +4 -13
  630. package/lib/es/image/previewFooterFoundation.d.ts +0 -1
  631. package/lib/es/image/previewFooterFoundation.js +0 -10
  632. package/lib/es/image/previewFoundation.js +0 -7
  633. package/lib/es/image/previewImageFoundation.d.ts +9 -24
  634. package/lib/es/image/previewImageFoundation.js +79 -156
  635. package/lib/es/image/previewInnerFoundation.d.ts +19 -15
  636. package/lib/es/image/previewInnerFoundation.js +108 -107
  637. package/lib/es/image/utils.d.ts +1 -1
  638. package/lib/es/image/utils.js +46 -27
  639. package/lib/es/image/variables.scss +1 -1
  640. package/lib/es/input/constants.js +1 -1
  641. package/lib/es/input/foundation.js +19 -96
  642. package/lib/es/input/input.css +45 -1
  643. package/lib/es/input/input.scss +48 -3
  644. package/lib/es/input/textarea.css +20 -0
  645. package/lib/es/input/textarea.scss +34 -0
  646. package/lib/es/input/textareaFoundation.d.ts +1 -1
  647. package/lib/es/input/textareaFoundation.js +58 -91
  648. package/lib/es/input/util/calculateNodeHeight.js +6 -18
  649. package/lib/es/input/util/getSizingData.js +7 -11
  650. package/lib/es/input/variables.scss +7 -0
  651. package/lib/es/inputNumber/foundation.js +28 -188
  652. package/lib/es/inputNumber/inputNumber.css +4 -0
  653. package/lib/es/inputNumber/inputNumber.scss +9 -0
  654. package/lib/es/layout/constants.js +1 -1
  655. package/lib/es/list/constants.js +1 -1
  656. package/lib/es/modal/constants.js +1 -1
  657. package/lib/es/modal/modal.css +8 -0
  658. package/lib/es/modal/modal.scss +10 -1
  659. package/lib/es/modal/modalContentFoundation.js +0 -15
  660. package/lib/es/modal/modalFoundation.d.ts +8 -4
  661. package/lib/es/modal/modalFoundation.js +40 -11
  662. package/lib/es/modal/variables.scss +6 -1
  663. package/lib/es/navigation/NavItem.js +0 -8
  664. package/lib/es/navigation/constants.js +2 -2
  665. package/lib/es/navigation/foundation.js +3 -63
  666. package/lib/es/navigation/itemFoundation.js +3 -19
  667. package/lib/es/navigation/subNavFoundation.js +7 -38
  668. package/lib/es/notification/constants.js +4 -4
  669. package/lib/es/notification/notification.css +18 -0
  670. package/lib/es/notification/notification.scss +21 -1
  671. package/lib/es/notification/notificationFoundation.d.ts +6 -6
  672. package/lib/es/notification/notificationFoundation.js +0 -11
  673. package/lib/es/notification/notificationListFoundation.d.ts +4 -1
  674. package/lib/es/notification/notificationListFoundation.js +15 -14
  675. package/lib/es/overflowList/constants.d.ts +6 -4
  676. package/lib/es/overflowList/constants.js +3 -1
  677. package/lib/es/overflowList/foundation.d.ts +3 -1
  678. package/lib/es/overflowList/foundation.js +59 -64
  679. package/lib/es/pagination/constants.js +1 -1
  680. package/lib/es/pagination/foundation.d.ts +5 -3
  681. package/lib/es/pagination/foundation.js +36 -90
  682. package/lib/es/pagination/pagination.css +23 -0
  683. package/lib/es/pagination/pagination.scss +29 -0
  684. package/lib/es/pagination/variables.scss +1 -0
  685. package/lib/es/popconfirm/constants.js +2 -2
  686. package/lib/es/popconfirm/popconfirm.css +4 -24
  687. package/lib/es/popconfirm/popconfirm.scss +4 -16
  688. package/lib/es/popconfirm/popconfirmFoundation.d.ts +4 -0
  689. package/lib/es/popconfirm/popconfirmFoundation.js +17 -14
  690. package/lib/es/popconfirm/rtl.scss +0 -13
  691. package/lib/es/popconfirm/variables.scss +0 -4
  692. package/lib/es/popover/constants.d.ts +1 -1
  693. package/lib/es/popover/constants.js +3 -3
  694. package/lib/es/popover/popover.css +2 -0
  695. package/lib/es/popover/popover.scss +2 -0
  696. package/lib/es/progress/constants.js +1 -1
  697. package/lib/es/progress/generates.d.ts +2 -2
  698. package/lib/es/progress/generates.js +33 -73
  699. package/lib/es/radio/constants.js +13 -13
  700. package/lib/es/radio/radio.css +3 -0
  701. package/lib/es/radio/radio.scss +6 -3
  702. package/lib/es/radio/radioFoundation.js +0 -9
  703. package/lib/es/radio/radioGroupFoundation.js +3 -19
  704. package/lib/es/radio/radioInnerFoundation.js +1 -15
  705. package/lib/es/radio/variables.scss +4 -0
  706. package/lib/es/rating/constants.js +1 -1
  707. package/lib/es/rating/foundation.js +10 -55
  708. package/lib/es/scrollList/constants.js +2 -2
  709. package/lib/es/scrollList/itemFoundation.js +8 -60
  710. package/lib/es/scrollList/scrollTo.js +2 -4
  711. package/lib/es/select/constants.js +3 -3
  712. package/lib/es/select/foundation.d.ts +8 -6
  713. package/lib/es/select/foundation.js +172 -419
  714. package/lib/es/select/option.scss +1 -1
  715. package/lib/es/select/optionFoundation.js +2 -10
  716. package/lib/es/select/select.css +50 -0
  717. package/lib/es/select/select.scss +74 -5
  718. package/lib/es/select/variables.scss +9 -6
  719. package/lib/es/sideSheet/constants.js +2 -2
  720. package/lib/es/sideSheet/sideSheet.css +30 -0
  721. package/lib/es/sideSheet/sideSheet.scss +38 -0
  722. package/lib/es/sideSheet/sideSheetFoundation.d.ts +1 -0
  723. package/lib/es/sideSheet/sideSheetFoundation.js +0 -12
  724. package/lib/es/sideSheet/variables.scss +7 -0
  725. package/lib/es/skeleton/constants.js +1 -1
  726. package/lib/es/skeleton/skeleton.css +3 -2
  727. package/lib/es/skeleton/skeleton.scss +1 -0
  728. package/lib/es/skeleton/variables.scss +2 -2
  729. package/lib/es/slider/constants.d.ts +1 -0
  730. package/lib/es/slider/constants.js +8 -7
  731. package/lib/es/slider/foundation.d.ts +13 -2
  732. package/lib/es/slider/foundation.js +30 -219
  733. package/lib/es/slider/slider.css +25 -11
  734. package/lib/es/slider/slider.scss +16 -1
  735. package/lib/es/slider/variables.scss +15 -9
  736. package/lib/es/space/constants.js +1 -1
  737. package/lib/es/spin/constants.js +1 -1
  738. package/lib/es/spin/foundation.js +3 -11
  739. package/lib/es/spin/spin.css +3 -0
  740. package/lib/es/spin/spin.scss +3 -0
  741. package/lib/es/steps/bacisSteps.scss +10 -3
  742. package/lib/es/steps/constants.js +2 -2
  743. package/lib/es/steps/fillSteps.scss +7 -7
  744. package/lib/es/steps/steps.css +27 -22
  745. package/lib/es/steps/variables.scss +3 -3
  746. package/lib/es/switch/constants.js +13 -13
  747. package/lib/es/switch/foundation.js +1 -16
  748. package/lib/es/switch/switch.css +10 -0
  749. package/lib/es/switch/switch.scss +13 -2
  750. package/lib/es/table/bodyFoundation.js +1 -25
  751. package/lib/es/table/cellFoundation.js +0 -1
  752. package/lib/es/table/constants.d.ts +0 -1
  753. package/lib/es/table/constants.js +13 -16
  754. package/lib/es/table/foundation.d.ts +26 -16
  755. package/lib/es/table/foundation.js +79 -313
  756. package/lib/es/table/rtl.scss +33 -2
  757. package/lib/es/table/table.css +100 -64
  758. package/lib/es/table/table.scss +66 -8
  759. package/lib/es/table/tableRowFoundation.js +1 -9
  760. package/lib/es/table/tableSelectionCellFoundation.js +0 -2
  761. package/lib/es/table/utils.d.ts +6 -4
  762. package/lib/es/table/utils.js +25 -119
  763. package/lib/es/table/variables.scss +6 -3
  764. package/lib/es/tabs/constants.js +21 -21
  765. package/lib/es/tabs/foundation.js +2 -35
  766. package/lib/es/tabs/tabs.css +207 -7
  767. package/lib/es/tabs/tabs.scss +339 -24
  768. package/lib/es/tag/constants.js +1 -2
  769. package/lib/es/tag/tag.css +34 -1
  770. package/lib/es/tag/tag.scss +43 -4
  771. package/lib/es/tag/variables.scss +5 -0
  772. package/lib/es/tagInput/constants.js +1 -1
  773. package/lib/es/tagInput/foundation.d.ts +7 -4
  774. package/lib/es/tagInput/foundation.js +64 -78
  775. package/lib/es/tagInput/tagInput.css +35 -9
  776. package/lib/es/tagInput/tagInput.scss +41 -12
  777. package/lib/es/tagInput/utils/getSplitedArray.js +0 -7
  778. package/lib/es/tagInput/variables.scss +2 -0
  779. package/lib/es/timePicker/ComboxFoundation.js +6 -32
  780. package/lib/es/timePicker/constants.js +3 -3
  781. package/lib/es/timePicker/foundation.d.ts +2 -2
  782. package/lib/es/timePicker/foundation.js +30 -101
  783. package/lib/es/timePicker/inputFoundation.js +4 -22
  784. package/lib/es/timePicker/timePicker.css +15 -0
  785. package/lib/es/timePicker/timePicker.scss +22 -1
  786. package/lib/es/timePicker/utils/index.js +12 -30
  787. package/lib/es/timePicker/utils/localeDate.js +0 -8
  788. package/lib/es/timeline/constants.js +2 -2
  789. package/lib/es/toast/animation.scss +3 -0
  790. package/lib/es/toast/constants.js +4 -4
  791. package/lib/es/toast/toast.css +35 -3
  792. package/lib/es/toast/toast.scss +43 -3
  793. package/lib/es/toast/toastFoundation.d.ts +5 -4
  794. package/lib/es/toast/toastFoundation.js +0 -9
  795. package/lib/es/toast/toastListFoundation.d.ts +5 -0
  796. package/lib/es/toast/toastListFoundation.js +10 -18
  797. package/lib/es/toast/variables.scss +14 -0
  798. package/lib/es/tooltip/constants.d.ts +1 -1
  799. package/lib/es/tooltip/constants.js +2 -2
  800. package/lib/es/tooltip/foundation.d.ts +5 -2
  801. package/lib/es/tooltip/foundation.js +143 -332
  802. package/lib/es/tooltip/tooltip.css +7 -0
  803. package/lib/es/tooltip/tooltip.scss +9 -0
  804. package/lib/es/transfer/constants.js +1 -1
  805. package/lib/es/transfer/foundation.d.ts +1 -1
  806. package/lib/es/transfer/foundation.js +5 -62
  807. package/lib/es/transfer/transfer.css +4 -0
  808. package/lib/es/transfer/transfer.scss +7 -0
  809. package/lib/es/transfer/transferUtils.js +5 -21
  810. package/lib/es/tree/constants.js +2 -2
  811. package/lib/es/tree/foundation.d.ts +14 -9
  812. package/lib/es/tree/foundation.js +60 -176
  813. package/lib/es/tree/rtl.scss +19 -11
  814. package/lib/es/tree/tree.css +147 -65
  815. package/lib/es/tree/tree.scss +112 -17
  816. package/lib/es/tree/treeUtil.d.ts +17 -8
  817. package/lib/es/tree/treeUtil.js +102 -161
  818. package/lib/es/tree/variables.scss +3 -2
  819. package/lib/es/treeSelect/constants.js +3 -3
  820. package/lib/es/treeSelect/foundation.d.ts +26 -13
  821. package/lib/es/treeSelect/foundation.js +155 -235
  822. package/lib/es/treeSelect/treeSelect.css +55 -10
  823. package/lib/es/treeSelect/treeSelect.scss +76 -20
  824. package/lib/es/treeSelect/variables.scss +4 -2
  825. package/lib/es/typography/constants.d.ts +1 -0
  826. package/lib/es/typography/constants.js +2 -1
  827. package/lib/es/typography/formatNumeral.d.ts +3 -3
  828. package/lib/es/typography/formatNumeral.js +22 -40
  829. package/lib/es/typography/typography.css +135 -2
  830. package/lib/es/typography/typography.scss +151 -8
  831. package/lib/es/typography/variables.scss +52 -0
  832. package/lib/es/upload/constants.js +2 -2
  833. package/lib/es/upload/fileCardFoundation.d.ts +9 -0
  834. package/lib/es/upload/fileCardFoundation.js +10 -0
  835. package/lib/es/upload/foundation.d.ts +14 -5
  836. package/lib/es/upload/foundation.js +107 -240
  837. package/lib/es/upload/upload.css +9 -0
  838. package/lib/es/upload/upload.scss +8 -0
  839. package/lib/es/upload/utils.js +14 -28
  840. package/lib/es/utils/Event.js +1 -17
  841. package/lib/es/utils/FocusHandle.d.ts +1 -1
  842. package/lib/es/utils/FocusHandle.js +6 -32
  843. package/lib/es/utils/Logger.js +0 -20
  844. package/lib/es/utils/Store.js +0 -9
  845. package/lib/es/utils/a11y.js +18 -31
  846. package/lib/es/utils/array.d.ts +2 -2
  847. package/lib/es/utils/array.js +2 -7
  848. package/lib/es/utils/classnames.js +0 -10
  849. package/lib/es/utils/date-fns-extra.d.ts +28 -17
  850. package/lib/es/utils/date-fns-extra.js +78 -40
  851. package/lib/es/utils/dom.d.ts +1 -1
  852. package/lib/es/utils/dom.js +0 -9
  853. package/lib/es/utils/function.js +0 -1
  854. package/lib/es/utils/getDataAttr.js +1 -2
  855. package/lib/es/utils/getHighlight.js +5 -26
  856. package/lib/es/utils/getMotionObjFromProps.js +4 -12
  857. package/lib/es/utils/isBothNaN.js +0 -1
  858. package/lib/es/utils/isEnterPress.js +0 -2
  859. package/lib/es/utils/isEscPress.js +0 -2
  860. package/lib/es/utils/keyCode.js +0 -104
  861. package/lib/es/utils/log.js +0 -3
  862. package/lib/es/utils/object.d.ts +4 -4
  863. package/lib/es/utils/object.js +10 -29
  864. package/lib/es/utils/set.js +0 -5
  865. package/lib/es/utils/shallowEqualObjects.js +0 -6
  866. package/lib/es/utils/touchPolyfill.js +1 -6
  867. package/lib/es/utils/type.d.ts +3 -3
  868. package/lib/es/utils/uuid.js +4 -10
  869. package/lib/es/utils/warning.js +1 -1
  870. package/modal/modal.scss +10 -1
  871. package/modal/modalContentFoundation.ts +3 -3
  872. package/modal/modalFoundation.ts +32 -7
  873. package/modal/variables.scss +6 -1
  874. package/navigation/NavItem.ts +0 -2
  875. package/navigation/foundation.ts +1 -3
  876. package/navigation/itemFoundation.ts +0 -1
  877. package/navigation/subNavFoundation.ts +3 -2
  878. package/notification/notification.scss +21 -1
  879. package/notification/notificationFoundation.ts +3 -3
  880. package/notification/notificationListFoundation.ts +14 -4
  881. package/overflowList/constants.ts +4 -2
  882. package/overflowList/foundation.ts +51 -33
  883. package/package.json +6 -5
  884. package/pagination/foundation.ts +13 -3
  885. package/pagination/pagination.scss +29 -0
  886. package/pagination/variables.scss +1 -0
  887. package/popconfirm/popconfirm.scss +4 -16
  888. package/popconfirm/popconfirmFoundation.ts +20 -2
  889. package/popconfirm/rtl.scss +0 -13
  890. package/popconfirm/variables.scss +0 -4
  891. package/popover/constants.ts +1 -1
  892. package/popover/popover.scss +2 -0
  893. package/radio/radio.scss +6 -3
  894. package/radio/radioFoundation.ts +1 -1
  895. package/radio/radioGroupFoundation.ts +0 -1
  896. package/radio/radioInnerFoundation.ts +0 -1
  897. package/radio/variables.scss +4 -0
  898. package/rating/foundation.ts +0 -1
  899. package/select/foundation.ts +68 -31
  900. package/select/option.scss +1 -1
  901. package/select/optionFoundation.ts +0 -2
  902. package/select/select.scss +74 -5
  903. package/select/variables.scss +9 -6
  904. package/sideSheet/sideSheet.scss +38 -0
  905. package/sideSheet/sideSheetFoundation.ts +3 -2
  906. package/sideSheet/variables.scss +7 -0
  907. package/skeleton/skeleton.scss +1 -0
  908. package/skeleton/variables.scss +2 -2
  909. package/slider/constants.ts +1 -0
  910. package/slider/foundation.ts +25 -29
  911. package/slider/slider.scss +16 -1
  912. package/slider/variables.scss +15 -9
  913. package/spin/spin.scss +3 -0
  914. package/steps/bacisSteps.scss +10 -3
  915. package/steps/fillSteps.scss +7 -7
  916. package/steps/variables.scss +3 -3
  917. package/switch/foundation.ts +2 -4
  918. package/switch/switch.scss +13 -2
  919. package/table/bodyFoundation.ts +0 -1
  920. package/table/constants.ts +0 -3
  921. package/table/foundation.ts +33 -31
  922. package/table/rtl.scss +33 -2
  923. package/table/table.scss +66 -8
  924. package/table/tableRowFoundation.ts +0 -1
  925. package/table/utils.ts +23 -43
  926. package/table/variables.scss +6 -3
  927. package/tabs/foundation.ts +2 -2
  928. package/tabs/tabs.scss +339 -24
  929. package/tag/constants.ts +19 -2
  930. package/tag/tag.scss +43 -4
  931. package/tag/variables.scss +5 -0
  932. package/tagInput/foundation.ts +57 -3
  933. package/tagInput/tagInput.scss +41 -12
  934. package/tagInput/variables.scss +2 -0
  935. package/timePicker/foundation.ts +27 -18
  936. package/timePicker/inputFoundation.ts +0 -2
  937. package/timePicker/timePicker.scss +22 -1
  938. package/timePicker/utils/index.ts +3 -2
  939. package/toast/animation.scss +3 -0
  940. package/toast/toast.scss +43 -3
  941. package/toast/toastFoundation.ts +4 -6
  942. package/toast/toastListFoundation.ts +13 -3
  943. package/toast/variables.scss +14 -0
  944. package/tooltip/constants.ts +1 -1
  945. package/tooltip/foundation.ts +96 -58
  946. package/tooltip/tooltip.scss +9 -0
  947. package/transfer/foundation.ts +0 -1
  948. package/transfer/transfer.scss +7 -0
  949. package/tree/foundation.ts +38 -33
  950. package/tree/rtl.scss +19 -11
  951. package/tree/tree.scss +112 -17
  952. package/tree/treeUtil.ts +64 -32
  953. package/tree/variables.scss +3 -2
  954. package/treeSelect/foundation.ts +132 -70
  955. package/treeSelect/treeSelect.scss +76 -20
  956. package/treeSelect/variables.scss +4 -2
  957. package/typography/constants.ts +1 -0
  958. package/typography/formatNumeral.ts +2 -5
  959. package/typography/typography.scss +151 -8
  960. package/typography/variables.scss +52 -0
  961. package/upload/fileCardFoundation.ts +17 -0
  962. package/upload/foundation.ts +85 -10
  963. package/upload/upload.scss +8 -0
  964. package/utils/Event.ts +0 -1
  965. package/utils/a11y.ts +6 -6
  966. package/utils/array.ts +4 -4
  967. package/utils/date-fns-extra.ts +83 -22
  968. package/utils/function.ts +0 -1
  969. package/utils/getDataAttr.ts +1 -1
  970. package/utils/getMotionObjFromProps.ts +3 -2
  971. package/utils/object.ts +0 -3
@@ -3,10 +3,6 @@ import _isEqual from "lodash/isEqual";
3
3
  import _isString from "lodash/isString";
4
4
  import _isObject from "lodash/isObject";
5
5
  import _get from "lodash/get";
6
-
7
- /* eslint-disable no-nested-ternary */
8
-
9
- /* eslint-disable max-len, max-depth, */
10
6
  import { format, isValid, isSameSecond, isEqual as isDateEqual, isDate } from 'date-fns';
11
7
  import BaseFoundation from '../base/foundation';
12
8
  import { isValidDate, isTimestamp } from './_utils/index';
@@ -18,12 +14,13 @@ import { strings } from './constants';
18
14
  import { strings as inputStrings } from '../input/constants';
19
15
  import getInsetInputFormatToken from './_utils/getInsetInputFormatToken';
20
16
  import getInsetInputValueFromInsetInputStr from './_utils/getInsetInputValueFromInsetInputStr';
17
+ import isValidTimeZone from './_utils/isValidTimeZone';
18
+ import warning from '../utils/warning';
21
19
  /**
22
20
  * The datePicker foundation.js is responsible for maintaining the date value and the input box value, as well as the callback of both
23
21
  * task 1. Accept the selected date change, update the date value, and update the input box value according to the date = > Notify the change
24
22
  * task 2. When the input box changes, update the date value = > Notify the change
25
23
  */
26
-
27
24
  export default class DatePickerFoundation extends BaseFoundation {
28
25
  constructor(adapter) {
29
26
  super(Object.assign({}, adapter));
@@ -31,41 +28,31 @@ export default class DatePickerFoundation extends BaseFoundation {
31
28
  * clear range input focus when open is controlled
32
29
  * fixed github 1375
33
30
  */
34
-
35
31
  this.clearRangeInputFocus = () => {
36
32
  const {
37
33
  type
38
34
  } = this._adapter.getProps();
39
-
40
35
  const {
41
36
  rangeInputFocus
42
37
  } = this._adapter.getStates();
43
-
44
38
  if (type === 'dateTimeRange' && rangeInputFocus) {
45
39
  this._adapter.setRangeInputFocus(false);
46
40
  }
47
41
  };
48
-
49
42
  this._isRangeType = () => {
50
43
  const type = this._adapter.getProp('type');
51
-
52
44
  return /range/i.test(type);
53
45
  };
54
-
55
46
  this._isRangeValueComplete = value => {
56
47
  let result = false;
57
-
58
48
  if (Array.isArray(value)) {
59
49
  result = !value.some(date => isNullOrUndefined(date));
60
50
  }
61
-
62
51
  return result;
63
52
  };
64
53
  }
65
-
66
54
  init() {
67
55
  const timeZone = this.getProp('timeZone');
68
-
69
56
  if (this._isControlledComponent()) {
70
57
  this.initFromProps({
71
58
  timeZone,
@@ -77,38 +64,22 @@ export default class DatePickerFoundation extends BaseFoundation {
77
64
  value: this.getProp('defaultValue')
78
65
  });
79
66
  }
80
-
81
67
  this.initPanelOpenStatus(this.getProp('defaultOpen'));
82
68
  }
83
-
84
- isValidTimeZone(timeZone) {
85
- const propTimeZone = this.getProp('timeZone');
86
-
87
- const _timeZone = isNullOrUndefined(timeZone) ? propTimeZone : timeZone;
88
-
89
- return ['string', 'number'].includes(typeof _timeZone) && _timeZone !== '';
90
- }
91
-
92
69
  initFromProps(_ref) {
93
70
  let {
94
71
  value,
95
72
  timeZone,
96
73
  prevTimeZone
97
74
  } = _ref;
98
-
99
75
  const _value = (Array.isArray(value) ? [...value] : (value || value === 0) && [value]) || [];
100
-
101
76
  const result = this.parseWithTimezone(_value, timeZone, prevTimeZone);
102
-
103
77
  this._adapter.updatePrevTimezone(prevTimeZone);
104
-
105
- this._adapter.updateInputValue(null);
106
-
78
+ // reset input value when value update
79
+ this.clearInputValue();
107
80
  this._adapter.updateValue(result);
108
-
109
81
  this.resetCachedSelectedValue(result);
110
82
  this.initRangeInputFocus(result);
111
-
112
83
  if (this._adapter.needConfirm()) {
113
84
  this._adapter.updateCachedSelectedValue(result);
114
85
  }
@@ -118,38 +89,43 @@ export default class DatePickerFoundation extends BaseFoundation {
118
89
  *
119
90
  * If the user passes an empty value, you need to set the range input focus to rangeStart, so that the user can continue to select from the beginning after clearing
120
91
  */
121
-
122
-
123
92
  initRangeInputFocus(result) {
124
93
  const {
125
94
  triggerRender
126
95
  } = this.getProps();
127
-
128
96
  if (this._isRangeType() && _isFunction(triggerRender) && result.length === 0) {
129
97
  this._adapter.setRangeInputFocus('rangeStart');
130
98
  }
131
99
  }
132
-
100
+ /**
101
+ * value 可能是 UTC value 也可能是 zoned value
102
+ *
103
+ * UTC value -> 受控传入的 value
104
+ *
105
+ * zoned value -> statue.value,保存的是当前计算机时区下选择的日期
106
+ *
107
+ * 如果是时区变化,则需要将旧 zoned value 转为新时区下的 zoned value
108
+ *
109
+ * 如果是 value 变化,则不需要传入之前的时区,将 UTC value 转为 zoned value 即可
110
+ *
111
+ */
133
112
  parseWithTimezone(value, timeZone, prevTimeZone) {
134
113
  const result = [];
135
-
136
114
  if (Array.isArray(value) && value.length) {
137
115
  for (const v of value) {
138
116
  let parsedV = (v || v === 0) && this._parseValue(v);
139
-
140
117
  if (parsedV) {
141
- if (this.isValidTimeZone(prevTimeZone)) {
118
+ if (isValidTimeZone(prevTimeZone)) {
142
119
  parsedV = zonedTimeToUtc(parsedV, prevTimeZone);
143
120
  }
144
-
145
- result.push(this.isValidTimeZone(timeZone) ? utcToZonedTime(parsedV, timeZone) : parsedV);
121
+ result.push(isValidTimeZone(timeZone) ? utcToZonedTime(parsedV, timeZone) : parsedV);
122
+ } else {
123
+ warning(true, `[Semi DatePicker] value cannot be parsed, value: ${String(v)}`);
146
124
  }
147
125
  }
148
126
  }
149
-
150
127
  return result;
151
128
  }
152
-
153
129
  _isMultiple() {
154
130
  return Boolean(this.getProp('multiple'));
155
131
  }
@@ -163,17 +139,12 @@ export default class DatePickerFoundation extends BaseFoundation {
163
139
  Unified here to format the incoming value and output it as a Date object
164
140
  *
165
141
  */
166
-
167
-
168
142
  _parseValue(value) {
169
143
  const dateFnsLocale = this._adapter.getProp('dateFnsLocale');
170
-
171
144
  let dateObj;
172
-
173
145
  if (!value && value !== 0) {
174
146
  return new Date();
175
147
  }
176
-
177
148
  if (isValidDate(value)) {
178
149
  dateObj = value;
179
150
  } else if (_isString(value)) {
@@ -183,87 +154,37 @@ export default class DatePickerFoundation extends BaseFoundation {
183
154
  } else {
184
155
  throw new TypeError('defaultValue should be valid Date object/timestamp or string');
185
156
  }
186
-
187
157
  return dateObj;
188
158
  }
189
-
190
159
  destroy() {
191
160
  // Ensure that event listeners will be uninstalled and users may not trigger closePanel
192
- // this._adapter.togglePanel(false);
161
+ this._adapter.togglePanel(false);
193
162
  this._adapter.unregisterClickOutSide();
194
163
  }
195
-
196
164
  initPanelOpenStatus(defaultOpen) {
197
165
  if ((this.getProp('open') || defaultOpen) && !this.getProp('disabled')) {
198
166
  this._adapter.togglePanel(true);
199
-
200
167
  this._adapter.registerClickOutSide();
201
168
  } else {
202
169
  this._adapter.togglePanel(false);
203
-
204
170
  this._adapter.unregisterClickOutSide();
205
171
  }
206
172
  }
207
-
208
173
  openPanel() {
209
174
  if (!this.getProp('disabled')) {
210
175
  if (!this._isControlledComponent('open')) {
211
- this._adapter.togglePanel(true);
212
-
213
- this._adapter.registerClickOutSide();
176
+ this.open();
214
177
  }
215
-
216
178
  this._adapter.notifyOpenChange(true);
217
179
  }
218
180
  }
219
- /**
220
- * do these side effects when type is dateRange or dateTimeRange
221
- * 1. trigger input blur, if input value is invalid, set input value and state value to previous status
222
- * 2. set cachedSelectedValue using given dates(in needConfirm mode)
223
- * - directly closePanel without click confirm will set cachedSelectedValue to state value
224
- * - select one date(which means that the selection value is incomplete) and click confirm also set cachedSelectedValue to state value
225
- */
226
-
227
-
228
- rangeTypeSideEffectsWhenClosePanel(inputValue, willUpdateDates) {
229
- if (this._isRangeType()) {
230
- this._adapter.setRangeInputFocus(false);
231
- /**
232
- * inputValue is string when it is not disabled or can't parsed
233
- * when inputValue is null, picker value will back to last selected value
234
- */
235
-
236
-
237
- this.handleInputBlur(inputValue);
238
- this.resetCachedSelectedValue(willUpdateDates);
239
- }
240
- }
241
- /**
242
- * clear input value when selected date is not confirmed
243
- */
244
-
245
-
246
- needConfirmSideEffectsWhenClosePanel(willUpdateDates) {
247
- if (this._adapter.needConfirm() && !this._isRangeType()) {
248
- /**
249
- * if `null` input element will show `cachedSelectedValue` formatted value(format in DateInput render)
250
- * if `` input element will show `` directly
251
- */
252
- this._adapter.updateInputValue(null);
253
-
254
- this.resetCachedSelectedValue(willUpdateDates);
255
- }
256
- }
257
181
  /**
258
182
  * clear inset input value when close panel
259
183
  */
260
-
261
-
262
184
  clearInsetInputValue() {
263
185
  const {
264
186
  insetInput
265
187
  } = this._adapter.getProps();
266
-
267
188
  if (insetInput) {
268
189
  this._adapter.updateInsetInputValue(null);
269
190
  }
@@ -271,16 +192,12 @@ export default class DatePickerFoundation extends BaseFoundation {
271
192
  /**
272
193
  * call it when change state value or input value
273
194
  */
274
-
275
-
276
195
  resetCachedSelectedValue(willUpdateDates) {
277
196
  const {
278
197
  value,
279
198
  cachedSelectedValue
280
199
  } = this._adapter.getStates();
281
-
282
200
  const newCachedSelectedValue = Array.isArray(willUpdateDates) ? willUpdateDates : value;
283
-
284
201
  if (!_isEqual(newCachedSelectedValue, cachedSelectedValue)) {
285
202
  this._adapter.updateCachedSelectedValue(newCachedSelectedValue);
286
203
  }
@@ -297,64 +214,117 @@ export default class DatePickerFoundation extends BaseFoundation {
297
214
  * @param {String} inputValue
298
215
  * @param {Date[]} dates
299
216
  */
300
-
301
-
302
217
  closePanel(e) {
303
218
  let inputValue = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
304
219
  let dates = arguments.length > 2 ? arguments[2] : undefined;
305
-
306
220
  const {
307
221
  value
308
222
  } = this._adapter.getStates();
309
-
310
223
  const willUpdateDates = isNullOrUndefined(dates) ? value : dates;
311
-
312
224
  if (!this._isControlledComponent('open')) {
313
- this._adapter.togglePanel(false);
314
-
315
- this._adapter.unregisterClickOutSide();
316
- } // range type picker, closing panel requires the following side effects
317
-
318
-
319
- this.rangeTypeSideEffectsWhenClosePanel(inputValue, willUpdateDates);
320
- this.needConfirmSideEffectsWhenClosePanel(willUpdateDates);
321
- this.clearInsetInputValue();
322
-
225
+ this.close();
226
+ } else {
227
+ this.resetInnerSelectedStates(willUpdateDates);
228
+ }
323
229
  this._adapter.notifyOpenChange(false);
324
-
230
+ }
231
+ open() {
232
+ this._adapter.togglePanel(true);
233
+ this._adapter.registerClickOutSide();
234
+ }
235
+ close() {
236
+ this._adapter.togglePanel(false, () => this.resetInnerSelectedStates());
237
+ this._adapter.unregisterClickOutSide();
238
+ }
239
+ focus(focusType) {
240
+ if (this._isRangeType()) {
241
+ const rangeInputFocus = focusType !== null && focusType !== void 0 ? focusType : 'rangeStart';
242
+ this._adapter.setRangeInputFocus(rangeInputFocus);
243
+ } else {
244
+ this._adapter.setInputFocus();
245
+ }
246
+ }
247
+ blur() {
248
+ if (this._isRangeType()) {
249
+ this._adapter.setRangeInputBlur();
250
+ } else {
251
+ this._adapter.setInputBlur();
252
+ }
253
+ }
254
+ /**
255
+ * reset cachedSelectedValue, inputValue when close panel
256
+ */
257
+ resetInnerSelectedStates(willUpdateDates) {
258
+ const {
259
+ value
260
+ } = this._adapter.getStates();
261
+ const needResetCachedSelectedValue = !this.isCachedSelectedValueValid(willUpdateDates) || this._adapter.needConfirm() && !this.clickConfirmButton;
262
+ if (needResetCachedSelectedValue) {
263
+ this.resetCachedSelectedValue(value);
264
+ }
265
+ this.resetFocus();
266
+ this.clearInputValue();
267
+ this.clickConfirmButton = false;
268
+ }
269
+ resetFocus(e) {
270
+ this._adapter.setRangeInputFocus(false);
325
271
  this._adapter.notifyBlur(e);
326
272
  }
273
+ /**
274
+ * cachedSelectedValue can be `(Date|null)[]` or `null`
275
+ */
276
+ isCachedSelectedValueValid(dates) {
277
+ const cachedSelectedValue = dates || this._adapter.getState('cachedSelectedValue');
278
+ const {
279
+ type
280
+ } = this._adapter.getProps();
281
+ let isValid = true;
282
+ switch (true) {
283
+ case type === 'dateRange':
284
+ case type === 'dateTimeRange':
285
+ if (!this._isRangeValueComplete(cachedSelectedValue)) {
286
+ isValid = false;
287
+ }
288
+ break;
289
+ default:
290
+ const value = cachedSelectedValue === null || cachedSelectedValue === void 0 ? void 0 : cachedSelectedValue.filter(item => item);
291
+ if (!(Array.isArray(value) && value.length)) {
292
+ isValid = false;
293
+ }
294
+ break;
295
+ }
296
+ return isValid;
297
+ }
298
+ /**
299
+ * 将输入框内容置空
300
+ */
301
+ clearInputValue() {
302
+ this._adapter.updateInputValue(null);
303
+ this._adapter.updateInsetInputValue(null);
304
+ }
327
305
  /**
328
306
  * Callback when the content of the input box changes
329
307
  * Update the date panel if the changed value is a legal date, otherwise only update the input box
330
308
  * @param {String} input The value of the input box after the change
331
309
  * @param {Event} e
332
310
  */
333
-
334
-
335
311
  handleInputChange(input, e) {
336
312
  const result = this._isMultiple() ? this.parseMultipleInput(input) : this.parseInput(input);
337
313
  const {
338
314
  value: stateValue
339
315
  } = this.getStates();
340
-
341
- this._updateCachedSelectedValueFromInput(input); // Enter a valid date or empty
342
-
343
-
316
+ this._updateCachedSelectedValueFromInput(input);
317
+ // Enter a valid date or empty
344
318
  if (result && result.length || input === '') {
345
319
  // If you click the clear button
346
320
  if (_get(e, inputStrings.CLEARBTN_CLICKED_EVENT_FLAG) && this._isControlledComponent('value')) {
347
321
  this._notifyChange(result);
348
-
349
322
  return;
350
323
  }
351
-
352
- this._updateValueAndInput(result, input === '', input); // Updates the selected value when entering a valid date
353
-
354
-
324
+ this._updateValueAndInput(result, input === '', input);
325
+ // Updates the selected value when entering a valid date
355
326
  const changedDates = this._getChangedDates(result);
356
-
357
- if (!this._someDateDisabled(changedDates)) {
327
+ if (!this._someDateDisabled(changedDates, result)) {
358
328
  if (!_isEqual(result, stateValue)) {
359
329
  this._notifyChange(result);
360
330
  }
@@ -369,55 +339,40 @@ export default class DatePickerFoundation extends BaseFoundation {
369
339
  * - inputValue(可以解析为合法日期时)
370
340
  * - value(可以解析为合法日期时)
371
341
  */
372
-
373
-
374
342
  handleInsetInputChange(options) {
375
343
  const {
376
344
  insetInputStr,
377
345
  format,
378
346
  insetInputValue
379
347
  } = options;
380
-
381
348
  const _isMultiple = this._isMultiple();
382
-
383
349
  const result = _isMultiple ? this.parseMultipleInput(insetInputStr, format) : this.parseInput(insetInputStr, format);
384
350
  const {
385
351
  value: stateValue
386
352
  } = this.getStates();
387
-
388
353
  this._updateCachedSelectedValueFromInput(insetInputStr);
389
-
390
354
  if (result && result.length) {
391
355
  const changedDates = this._getChangedDates(result);
392
-
393
- if (!this._someDateDisabled(changedDates)) {
356
+ if (!this._someDateDisabled(changedDates, result)) {
394
357
  if (!_isEqual(result, stateValue)) {
395
358
  if (!this._isControlledComponent() && !this._adapter.needConfirm()) {
396
359
  this._adapter.updateValue(result);
397
360
  }
398
-
399
361
  this._notifyChange(result);
400
362
  }
401
-
402
363
  const triggerInput = _isMultiple ? this.formatMultipleDates(result) : this.formatDates(result);
403
-
404
364
  this._adapter.updateInputValue(triggerInput);
405
365
  }
406
366
  }
407
-
408
367
  this._adapter.updateInsetInputValue(insetInputValue);
409
368
  }
410
369
  /**
411
370
  * when input change we reset cached selected value
412
371
  */
413
-
414
-
415
372
  _updateCachedSelectedValueFromInput(input) {
416
373
  const looseResult = this.getLooseDateFromInput(input);
417
-
418
374
  const changedLooseResult = this._getChangedDates(looseResult);
419
-
420
- if (!this._someDateDisabled(changedLooseResult)) {
375
+ if (!this._someDateDisabled(changedLooseResult, looseResult)) {
421
376
  this.resetCachedSelectedValue(looseResult);
422
377
  }
423
378
  }
@@ -426,43 +381,14 @@ export default class DatePickerFoundation extends BaseFoundation {
426
381
  * @param {String} input
427
382
  * @param {Event} e
428
383
  */
429
-
430
-
431
384
  handleInputBlur() {
432
385
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
433
386
  let e = arguments.length > 1 ? arguments[1] : undefined;
434
- const parsedResult = input ? this._isMultiple() ? this.parseMultipleInput(input, ',', true) : this.parseInput(input) : [];
435
- const stateValue = this.getState('value'); // console.log(input, parsedResult);
436
-
437
- if (parsedResult && parsedResult.length) {
438
- this._updateValueAndInput(parsedResult, input === '');
439
- } else if (input === '') {
440
- // if clear input, set input to `''`
441
- this._updateValueAndInput('', true, '');
442
- } else {
443
- this._updateValueAndInput(stateValue);
444
- }
445
- /**
446
- * 当不是范围类型且不需要确认时,使用 stateValue 重置 cachedSelectedValue
447
- * 这样做的目的是,在输入非法值时,使用上次选中的值作为已选值
448
- * needConfirm 或者 range type 时,我们在 close panel 时调用 resetCachedSelectedValue,这里不用重复调用
449
- *
450
- * Use stateValue to reset cachedSelectedValue when it is not a range type and does not require confirmation
451
- * The purpose of this is to use the last selected value as the selected value when an invalid value is entered
452
- * When needConfirm or range type, we call resetCachedSelectedValue when close panel, no need to call repeatedly here
453
- */
454
-
455
-
456
- if (!this._adapter.needConfirm() && !this._isRangeType()) {
457
- this.resetCachedSelectedValue(stateValue);
458
- }
459
387
  }
460
388
  /**
461
389
  * called when range type rangeEnd input tab press
462
390
  * @param {Event} e
463
391
  */
464
-
465
-
466
392
  handleRangeEndTabPress(e) {
467
393
  this._adapter.setRangeInputFocus(false);
468
394
  }
@@ -471,26 +397,20 @@ export default class DatePickerFoundation extends BaseFoundation {
471
397
  * @param {Event} e input focus event
472
398
  * @param {String} range 'rangeStart' or 'rangeEnd', use when type is range
473
399
  */
474
-
475
-
476
400
  handleInputFocus(e, range) {
477
401
  const rangeInputFocus = this._adapter.getState('rangeInputFocus');
478
-
479
402
  range && this._adapter.setRangeInputFocus(range);
480
403
  /**
481
404
  * rangeType: only notify when range is false
482
405
  * not rangeType: notify when focus
483
406
  */
484
-
485
407
  if (!range || !['rangeStart', 'rangeEnd'].includes(rangeInputFocus)) {
486
408
  this._adapter.notifyFocus(e, range);
487
409
  }
488
410
  }
489
-
490
411
  handleSetRangeFocus(rangeInputFocus) {
491
412
  this._adapter.setRangeInputFocus(rangeInputFocus);
492
413
  }
493
-
494
414
  handleInputClear(e) {
495
415
  this._adapter.notifyClear(e);
496
416
  }
@@ -501,52 +421,40 @@ export default class DatePickerFoundation extends BaseFoundation {
501
421
  * callback of range input clear button
502
422
  * Since the clear button is not integrated in Input, you need to manually clear value, inputValue, cachedValue
503
423
  */
504
-
505
-
506
424
  handleRangeInputClear(e) {
507
425
  const value = [];
508
426
  const inputValue = '';
509
-
510
427
  if (!this._isControlledComponent('value')) {
511
428
  this._updateValueAndInput(value, true, inputValue);
512
-
429
+ this._adapter.updateInsetInputValue(null);
513
430
  this.resetCachedSelectedValue(value);
514
431
  }
515
-
516
432
  this._notifyChange(value);
517
-
433
+ this._adapter.setRangeInputFocus(false);
518
434
  this._adapter.notifyClear(e);
519
- } // eslint-disable-next-line @typescript-eslint/no-empty-function
520
-
521
-
522
- handleRangeInputBlur(value, e) {} // Parses input only after user returns
523
-
524
-
435
+ }
436
+ handleRangeInputBlur(value, e) {}
437
+ // Parses input only after user returns
525
438
  handleInputComplete() {
526
439
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
527
440
  // console.log(input);
528
441
  let parsedResult = input ? this._isMultiple() ? this.parseMultipleInput(input, ',', true) : this.parseInput(input) : [];
529
- parsedResult = parsedResult && parsedResult.length ? parsedResult : this.getState('value'); // Use the current date as the value when the current input is empty and the last input is also empty
530
-
442
+ parsedResult = parsedResult && parsedResult.length ? parsedResult : this.getState('value');
443
+ // Use the current date as the value when the current input is empty and the last input is also empty
531
444
  if (!parsedResult || !parsedResult.length) {
532
445
  const nowDate = new Date();
533
-
534
446
  if (this._isRangeType()) {
535
447
  parsedResult = [nowDate, nowDate];
536
448
  } else {
537
449
  parsedResult = [nowDate];
538
450
  }
539
451
  }
540
-
541
452
  this._updateValueAndInput(parsedResult);
542
-
543
453
  const {
544
454
  value: stateValue
545
455
  } = this.getStates();
546
-
547
456
  const changedDates = this._getChangedDates(parsedResult);
548
-
549
- if (!this._someDateDisabled(changedDates) && !_isEqual(parsedResult, stateValue)) {
457
+ if (!this._someDateDisabled(changedDates, parsedResult) && !_isEqual(parsedResult, stateValue)) {
550
458
  this._notifyChange(parsedResult);
551
459
  }
552
460
  }
@@ -557,39 +465,33 @@ export default class DatePickerFoundation extends BaseFoundation {
557
465
  * @param {string} input
558
466
  * @returns {Date [] | '}
559
467
  */
560
-
561
-
562
468
  parseInput() {
563
469
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
564
470
  let format = arguments.length > 1 ? arguments[1] : undefined;
565
- let result = []; // console.log(input);
566
-
471
+ let result = [];
472
+ // console.log(input);
567
473
  const {
568
474
  dateFnsLocale,
569
475
  rangeSeparator
570
476
  } = this.getProps();
571
-
572
477
  if (input && input.length) {
573
478
  const type = this.getProp('type');
574
479
  const formatToken = format || this.getProp('format') || getDefaultFormatTokenByType(type);
575
480
  let parsedResult, formatedInput;
576
481
  const nowDate = new Date();
577
-
578
482
  switch (type) {
579
483
  case 'date':
580
484
  case 'dateTime':
581
485
  case 'month':
582
486
  parsedResult = input ? compatibleParse(input, formatToken, nowDate, dateFnsLocale) : '';
583
487
  formatedInput = parsedResult && isValid(parsedResult) && this.localeFormat(parsedResult, formatToken);
584
-
585
488
  if (parsedResult && formatedInput === input) {
586
489
  result = [parsedResult];
587
490
  }
588
-
589
491
  break;
590
-
591
492
  case 'dateRange':
592
493
  case 'dateTimeRange':
494
+ case 'monthRange':
593
495
  const separator = rangeSeparator;
594
496
  const values = input.split(separator);
595
497
  parsedResult = values && values.reduce((arr, cur) => {
@@ -598,26 +500,20 @@ export default class DatePickerFoundation extends BaseFoundation {
598
500
  return arr;
599
501
  }, []);
600
502
  formatedInput = parsedResult && parsedResult.map(v => v && isValid(v) && this.localeFormat(v, formatToken)).join(separator);
601
-
602
503
  if (parsedResult && formatedInput === input) {
603
504
  parsedResult.sort((d1, d2) => d1.getTime() - d2.getTime());
604
505
  result = parsedResult;
605
506
  }
606
-
607
507
  break;
608
-
609
508
  default:
610
509
  break;
611
510
  }
612
511
  }
613
-
614
512
  return result;
615
513
  }
616
514
  /**
617
515
  * get date which may include null from input
618
516
  */
619
-
620
-
621
517
  getLooseDateFromInput(input) {
622
518
  const value = this._isMultiple() ? this.parseMultipleInputLoose(input) : this.parseInputLoose(input);
623
519
  return value;
@@ -633,8 +529,6 @@ export default class DatePickerFoundation extends BaseFoundation {
633
529
  * parseInputLoose('2022-03- ~ 2022-0'); // [null, null]
634
530
  * ```
635
531
  */
636
-
637
-
638
532
  parseInputLoose() {
639
533
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
640
534
  let result = [];
@@ -644,64 +538,50 @@ export default class DatePickerFoundation extends BaseFoundation {
644
538
  type,
645
539
  format
646
540
  } = this.getProps();
647
-
648
541
  if (input && input.length) {
649
542
  const formatToken = format || getDefaultFormatTokenByType(type);
650
543
  let parsedResult, formatedInput;
651
544
  const nowDate = new Date();
652
-
653
545
  switch (type) {
654
546
  case 'date':
655
547
  case 'dateTime':
656
548
  case 'month':
657
549
  const _parsedResult = compatibleParse(input, formatToken, nowDate, dateFnsLocale);
658
-
659
550
  if (isValidDate(_parsedResult)) {
660
551
  formatedInput = this.localeFormat(_parsedResult, formatToken);
661
-
662
552
  if (formatedInput === input) {
663
553
  parsedResult = _parsedResult;
664
554
  }
665
555
  } else {
666
556
  parsedResult = null;
667
557
  }
668
-
669
558
  result = [parsedResult];
670
559
  break;
671
-
672
560
  case 'dateRange':
673
561
  case 'dateTimeRange':
674
562
  const separator = rangeSeparator;
675
563
  const values = input.split(separator);
676
564
  parsedResult = values && values.reduce((arr, cur) => {
677
565
  let parsedVal = null;
678
-
679
566
  const _parsedResult = compatibleParse(cur, formatToken, nowDate, dateFnsLocale);
680
-
681
567
  if (isValidDate(_parsedResult)) {
682
568
  formatedInput = this.localeFormat(_parsedResult, formatToken);
683
-
684
569
  if (formatedInput === cur) {
685
570
  parsedVal = _parsedResult;
686
571
  }
687
572
  }
688
-
689
573
  arr.push(parsedVal);
690
574
  return arr;
691
575
  }, []);
692
-
693
576
  if (Array.isArray(parsedResult) && parsedResult.every(item => isValid(item))) {
694
577
  parsedResult.sort((d1, d2) => d1.getTime() - d2.getTime());
695
578
  }
696
-
697
579
  result = parsedResult;
698
580
  break;
699
-
700
581
  default:
701
582
  break;
702
583
  }
703
584
  }
704
-
705
585
  return result;
706
586
  }
707
587
  /**
@@ -714,8 +594,6 @@ export default class DatePickerFoundation extends BaseFoundation {
714
594
  * parseMultipleInputLoose(''); // [];
715
595
  * ```
716
596
  */
717
-
718
-
719
597
  parseMultipleInputLoose() {
720
598
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
721
599
  let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : strings.DEFAULT_SEPARATOR_MULTIPLE;
@@ -723,11 +601,9 @@ export default class DatePickerFoundation extends BaseFoundation {
723
601
  const max = this.getProp('max');
724
602
  const inputArr = input.split(separator);
725
603
  const result = [];
726
-
727
604
  for (const curInput of inputArr) {
728
605
  let tmpParsed = curInput && this.parseInputLoose(curInput);
729
606
  tmpParsed = Array.isArray(tmpParsed) ? tmpParsed : tmpParsed && [tmpParsed];
730
-
731
607
  if (tmpParsed && tmpParsed.length) {
732
608
  if (needDedupe) {
733
609
  !result.filter(r => Boolean(tmpParsed.find(tp => isSameSecond(r, tp)))) && result.push(...tmpParsed);
@@ -737,12 +613,10 @@ export default class DatePickerFoundation extends BaseFoundation {
737
613
  } else {
738
614
  return [];
739
615
  }
740
-
741
616
  if (max && max > 0 && result.length > max) {
742
617
  return [];
743
618
  }
744
619
  }
745
-
746
620
  return result;
747
621
  }
748
622
  /**
@@ -754,8 +628,6 @@ export default class DatePickerFoundation extends BaseFoundation {
754
628
  * @param {boolean} [needDedupe=false]
755
629
  * @returns {Date[]}
756
630
  */
757
-
758
-
759
631
  parseMultipleInput() {
760
632
  let input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
761
633
  let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : strings.DEFAULT_SEPARATOR_MULTIPLE;
@@ -763,11 +635,9 @@ export default class DatePickerFoundation extends BaseFoundation {
763
635
  const max = this.getProp('max');
764
636
  const inputArr = input.split(separator);
765
637
  const result = [];
766
-
767
638
  for (const curInput of inputArr) {
768
639
  let tmpParsed = curInput && this.parseInput(curInput);
769
640
  tmpParsed = Array.isArray(tmpParsed) ? tmpParsed : tmpParsed && [tmpParsed];
770
-
771
641
  if (tmpParsed && tmpParsed.length) {
772
642
  if (needDedupe) {
773
643
  // 20190519 TODO: needs to determine the case where multiple is true and range
@@ -778,12 +648,10 @@ export default class DatePickerFoundation extends BaseFoundation {
778
648
  } else {
779
649
  return [];
780
650
  }
781
-
782
651
  if (max && max > 0 && result.length > max) {
783
652
  return [];
784
653
  }
785
654
  }
786
-
787
655
  return result;
788
656
  }
789
657
  /**
@@ -792,47 +660,39 @@ export default class DatePickerFoundation extends BaseFoundation {
792
660
  * @param {Date[]} dates
793
661
  * @returns {string}
794
662
  */
795
-
796
-
797
663
  formatDates() {
798
664
  let dates = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
799
665
  let customFormat = arguments.length > 1 ? arguments[1] : undefined;
800
666
  let str = '';
801
667
  const rangeSeparator = this.getProp('rangeSeparator');
802
-
803
668
  if (Array.isArray(dates) && dates.length) {
804
669
  const type = this.getProp('type');
805
670
  const formatToken = customFormat || this.getProp('format') || getDefaultFormatTokenByType(type);
806
-
807
671
  switch (type) {
808
672
  case 'date':
809
673
  case 'dateTime':
810
674
  case 'month':
811
675
  str = this.localeFormat(dates[0], formatToken);
812
676
  break;
813
-
814
677
  case 'dateRange':
815
678
  case 'dateTimeRange':
679
+ case 'monthRange':
816
680
  const startIsTruthy = !isNullOrUndefined(dates[0]);
817
681
  const endIsTruthy = !isNullOrUndefined(dates[1]);
818
-
819
682
  if (startIsTruthy && endIsTruthy) {
820
- str = "".concat(this.localeFormat(dates[0], formatToken)).concat(rangeSeparator).concat(this.localeFormat(dates[1], formatToken));
683
+ str = `${this.localeFormat(dates[0], formatToken)}${rangeSeparator}${this.localeFormat(dates[1], formatToken)}`;
821
684
  } else {
822
685
  if (startIsTruthy) {
823
- str = "".concat(this.localeFormat(dates[0], formatToken)).concat(rangeSeparator);
686
+ str = `${this.localeFormat(dates[0], formatToken)}${rangeSeparator}`;
824
687
  } else if (endIsTruthy) {
825
- str = "".concat(rangeSeparator).concat(this.localeFormat(dates[1], formatToken));
688
+ str = `${rangeSeparator}${this.localeFormat(dates[1], formatToken)}`;
826
689
  }
827
690
  }
828
-
829
691
  break;
830
-
831
692
  default:
832
693
  break;
833
694
  }
834
695
  }
835
-
836
696
  return str;
837
697
  }
838
698
  /**
@@ -841,37 +701,30 @@ export default class DatePickerFoundation extends BaseFoundation {
841
701
  * @param {Date[]} dates
842
702
  * @returns {string}
843
703
  */
844
-
845
-
846
704
  formatMultipleDates() {
847
705
  let dates = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
848
706
  let separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : strings.DEFAULT_SEPARATOR_MULTIPLE;
849
707
  let customFormat = arguments.length > 2 ? arguments[2] : undefined;
850
708
  const strs = [];
851
-
852
709
  if (Array.isArray(dates) && dates.length) {
853
710
  const type = this.getProp('type');
854
-
855
711
  switch (type) {
856
712
  case 'date':
857
713
  case 'dateTime':
858
714
  case 'month':
859
715
  dates.forEach(date => strs.push(this.formatDates([date], customFormat)));
860
716
  break;
861
-
862
717
  case 'dateRange':
863
718
  case 'dateTimeRange':
719
+ case 'monthRange':
864
720
  for (let i = 0; i < dates.length; i += 2) {
865
721
  strs.push(this.formatDates(dates.slice(i, i + 2), customFormat));
866
722
  }
867
-
868
723
  break;
869
-
870
724
  default:
871
725
  break;
872
726
  }
873
727
  }
874
-
875
728
  return strs.join(separator);
876
729
  }
877
730
  /**
@@ -882,26 +735,20 @@ export default class DatePickerFoundation extends BaseFoundation {
882
735
  * @param {Boolean} forceUpdateValue
883
736
  * @param {String} input
884
737
  */
885
-
886
-
887
738
  _updateValueAndInput(value, forceUpdateValue, input) {
888
739
  let _value;
889
-
890
740
  if (forceUpdateValue || value) {
891
741
  if (!Array.isArray(value)) {
892
742
  _value = value ? [value] : [];
893
743
  } else {
894
744
  _value = value;
895
745
  }
896
-
897
- const changedDates = this._getChangedDates(_value); // You cannot update the value directly when needConfirm, you can only change the value through handleConfirm
898
-
899
-
900
- if (!this._isControlledComponent() && !this._someDateDisabled(changedDates) && !this._adapter.needConfirm()) {
746
+ const changedDates = this._getChangedDates(_value);
747
+ // You cannot update the value directly when needConfirm, you can only change the value through handleConfirm
748
+ if (!this._isControlledComponent() && !this._someDateDisabled(changedDates, _value) && !this._adapter.needConfirm()) {
901
749
  this._adapter.updateValue(_value);
902
750
  }
903
751
  }
904
-
905
752
  this._adapter.updateInputValue(input);
906
753
  }
907
754
  /**
@@ -909,8 +756,6 @@ export default class DatePickerFoundation extends BaseFoundation {
909
756
  * @param {*} value
910
757
  * @param {*} options
911
758
  */
912
-
913
-
914
759
  handleSelectedChange(value, options) {
915
760
  const {
916
761
  type,
@@ -918,35 +763,24 @@ export default class DatePickerFoundation extends BaseFoundation {
918
763
  rangeSeparator,
919
764
  insetInput
920
765
  } = this._adapter.getProps();
921
-
922
766
  const {
923
767
  value: stateValue
924
768
  } = this.getStates();
925
-
926
769
  const controlled = this._isControlledComponent();
927
-
928
770
  const fromPreset = _isObject(options) ? options.fromPreset : options;
929
-
930
771
  const closePanel = _get(options, 'closePanel', true);
931
772
  /**
932
773
  * It is used to determine whether the panel can be stowed. In a Range type component, it is necessary to select both starting Time and endTime before stowing.
933
774
  * To determine whether both starting Time and endTime have been selected, it is used to judge whether the two inputs have been Focused.
934
775
  * This variable is used to indicate whether such a judgment is required. In the scene with shortcut operations, it is not required.
935
776
  */
936
-
937
-
938
777
  const needCheckFocusRecord = _get(options, 'needCheckFocusRecord', true);
939
-
940
778
  const dates = Array.isArray(value) ? [...value] : value ? [value] : [];
941
-
942
779
  const changedDates = this._getChangedDates(dates);
943
-
944
780
  let inputValue, insetInputValue;
945
-
946
- if (!this._someDateDisabled(changedDates)) {
781
+ if (!this._someDateDisabled(changedDates, dates)) {
947
782
  this.resetCachedSelectedValue(dates);
948
783
  inputValue = this._isMultiple() ? this.formatMultipleDates(dates) : this.formatDates(dates);
949
-
950
784
  if (insetInput) {
951
785
  const insetInputFormatToken = getInsetInputFormatToken({
952
786
  format,
@@ -959,7 +793,6 @@ export default class DatePickerFoundation extends BaseFoundation {
959
793
  rangeSeparator
960
794
  });
961
795
  }
962
-
963
796
  const isRangeTypeAndInputIncomplete = this._isRangeType() && !this._isRangeValueComplete(dates);
964
797
  /**
965
798
  * If the input is incomplete when under control, the notifyChange is not triggered because
@@ -968,53 +801,30 @@ export default class DatePickerFoundation extends BaseFoundation {
968
801
  * 受控时如果输入不完整,由于没有触发 notifyChange
969
802
  * 需要组件内更新一下输入框的值,否则会出现选了一个日期但是输入框没有回显日期的问题 #1357
970
803
  */
971
-
972
- if (!this._adapter.needConfirm() || fromPreset) {
973
- if (isRangeTypeAndInputIncomplete) {
974
- // do not change value when selected value is incomplete
975
- this._adapter.updateInputValue(inputValue);
976
-
977
- this._adapter.updateInsetInputValue(insetInputValue);
978
-
979
- return;
980
- } else {
981
- if (!controlled || fromPreset) {
982
- this._updateValueAndInput(dates, true, inputValue);
983
-
984
- this._adapter.updateInsetInputValue(insetInputValue);
985
- }
986
- }
987
- }
988
-
989
- if (!controlled && this._adapter.needConfirm()) {
990
- // select date only change inputValue when needConfirm is true
804
+ if (isRangeTypeAndInputIncomplete) {
805
+ // do not change value when selected value is incomplete
991
806
  this._adapter.updateInputValue(inputValue);
992
-
993
- this._adapter.updateInsetInputValue(insetInputValue); // if inputValue is not complete, don't notifyChange
994
-
995
-
996
- if (isRangeTypeAndInputIncomplete) {
997
- return;
807
+ this._adapter.updateInsetInputValue(insetInputValue);
808
+ return;
809
+ } else {
810
+ if (!controlled || fromPreset) {
811
+ this._updateValueAndInput(dates, true, inputValue);
812
+ this._adapter.updateInsetInputValue(insetInputValue);
998
813
  }
999
814
  }
1000
-
1001
815
  if (!_isEqual(value, stateValue)) {
1002
816
  this._notifyChange(value);
1003
817
  }
1004
818
  }
1005
-
1006
819
  const focusRecordChecked = !needCheckFocusRecord || needCheckFocusRecord && this._adapter.couldPanelClosed();
1007
-
1008
820
  if (type === 'date' && !this._isMultiple() && closePanel || type === 'dateRange' && this._isRangeValueComplete(dates) && closePanel && focusRecordChecked) {
1009
821
  this.closePanel(undefined, inputValue, dates);
1010
822
  }
1011
823
  }
1012
824
  /**
1013
- * when changing the year and month through the panel when the type is year or month
825
+ * when changing the year and month through the panel when the type is year or month or monthRange
1014
826
  * @param {*} item
1015
827
  */
1016
-
1017
-
1018
828
  handleYMSelectedChange() {
1019
829
  let item = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1020
830
  // console.log(item);
@@ -1022,41 +832,39 @@ export default class DatePickerFoundation extends BaseFoundation {
1022
832
  currentMonth,
1023
833
  currentYear
1024
834
  } = item;
1025
-
1026
- if (typeof currentMonth === 'number' && typeof currentYear === 'number') {
1027
- // Strings with only dates (e.g. "1970-01-01") will be treated as UTC instead of local time #1460
1028
- const date = new Date(currentYear, currentMonth - 1);
835
+ const {
836
+ type
837
+ } = this.getProps();
838
+ if (type === 'month') {
839
+ const date = new Date(currentYear['left'], currentMonth['left'] - 1);
1029
840
  this.handleSelectedChange([date]);
841
+ } else {
842
+ const dateLeft = new Date(currentYear['left'], currentMonth['left'] - 1);
843
+ const dateRight = new Date(currentYear['right'], currentMonth['right'] - 1);
844
+ this.handleSelectedChange([dateLeft, dateRight]);
1030
845
  }
1031
846
  }
1032
-
1033
847
  handleConfirm() {
848
+ this.clickConfirmButton = true;
1034
849
  const {
1035
850
  cachedSelectedValue,
1036
851
  value
1037
852
  } = this._adapter.getStates();
1038
-
1039
853
  const isRangeValueComplete = this._isRangeValueComplete(cachedSelectedValue);
1040
-
1041
854
  const newValue = isRangeValueComplete ? cachedSelectedValue : value;
1042
-
1043
855
  if (this._adapter.needConfirm() && !this._isControlledComponent()) {
1044
856
  this._adapter.updateValue(newValue);
1045
- } // If the input is incomplete, the legal date of the last input is used
1046
-
1047
-
857
+ }
858
+ // If the input is incomplete, the legal date of the last input is used
1048
859
  this.closePanel(undefined, undefined, newValue);
1049
-
1050
860
  if (isRangeValueComplete) {
1051
861
  const {
1052
862
  notifyValue,
1053
863
  notifyDate
1054
864
  } = this.disposeCallbackArgs(cachedSelectedValue);
1055
-
1056
865
  this._adapter.notifyConfirm(notifyDate, notifyValue);
1057
866
  }
1058
867
  }
1059
-
1060
868
  handleCancel() {
1061
869
  this.closePanel();
1062
870
  const value = this.getState('value');
@@ -1064,38 +872,34 @@ export default class DatePickerFoundation extends BaseFoundation {
1064
872
  notifyValue,
1065
873
  notifyDate
1066
874
  } = this.disposeCallbackArgs(value);
1067
-
1068
875
  this._adapter.notifyCancel(notifyDate, notifyValue);
1069
876
  }
1070
-
1071
877
  handlePresetClick(item, e) {
1072
878
  const {
1073
879
  type,
1074
880
  timeZone
1075
881
  } = this.getProps();
1076
882
  const prevTimeZone = this.getState('prevTimezone');
883
+ const start = typeof item.start === 'function' ? item.start() : item.start;
884
+ const end = typeof item.end === 'function' ? item.end() : item.end;
1077
885
  let value;
1078
-
1079
886
  switch (type) {
1080
887
  case 'month':
1081
888
  case 'dateTime':
1082
889
  case 'date':
1083
- value = this.parseWithTimezone([item.start], timeZone, prevTimeZone);
890
+ value = this.parseWithTimezone([start], timeZone, prevTimeZone);
1084
891
  this.handleSelectedChange(value);
1085
892
  break;
1086
-
1087
893
  case 'dateTimeRange':
1088
894
  case 'dateRange':
1089
- value = this.parseWithTimezone([item.start, item.end], timeZone, prevTimeZone);
895
+ value = this.parseWithTimezone([start, end], timeZone, prevTimeZone);
1090
896
  this.handleSelectedChange(value, {
1091
897
  needCheckFocusRecord: false
1092
898
  });
1093
899
  break;
1094
-
1095
900
  default:
1096
901
  break;
1097
902
  }
1098
-
1099
903
  this._adapter.notifyPresetsClick(item, e);
1100
904
  }
1101
905
  /**
@@ -1126,20 +930,15 @@ export default class DatePickerFoundation extends BaseFoundation {
1126
930
  * @param {Date|Date[]} value
1127
931
  * @return {{ notifyDate: Date|Date[], notifyValue: string|string[]}}
1128
932
  */
1129
-
1130
-
1131
933
  disposeCallbackArgs(value) {
1132
934
  let _value = Array.isArray(value) ? value : value && [value] || [];
1133
-
1134
- if (this.isValidTimeZone()) {
1135
- const timeZone = this.getProp('timeZone');
935
+ const timeZone = this.getProp('timeZone');
936
+ if (isValidTimeZone(timeZone)) {
1136
937
  _value = _value.map(date => zonedTimeToUtc(date, timeZone));
1137
938
  }
1138
-
1139
939
  const type = this.getProp('type');
1140
940
  const formatToken = this.getProp('format') || getDefaultFormatTokenByType(type);
1141
941
  let notifyValue, notifyDate;
1142
-
1143
942
  switch (type) {
1144
943
  case 'date':
1145
944
  case 'dateTime':
@@ -1151,19 +950,16 @@ export default class DatePickerFoundation extends BaseFoundation {
1151
950
  notifyValue = _value.map(v => v && this.localeFormat(v, formatToken));
1152
951
  notifyDate = [..._value];
1153
952
  }
1154
-
1155
953
  break;
1156
-
1157
954
  case 'dateRange':
1158
955
  case 'dateTimeRange':
956
+ case 'monthRange':
1159
957
  notifyValue = _value.map(v => v && this.localeFormat(v, formatToken));
1160
958
  notifyDate = [..._value];
1161
959
  break;
1162
-
1163
960
  default:
1164
961
  break;
1165
962
  }
1166
-
1167
963
  return {
1168
964
  notifyValue,
1169
965
  notifyDate
@@ -1173,13 +969,10 @@ export default class DatePickerFoundation extends BaseFoundation {
1173
969
  * Notice: Check whether the date is the same as the state value before calling
1174
970
  * @param {Date[]} value
1175
971
  */
1176
-
1177
-
1178
972
  _notifyChange(value) {
1179
973
  if (this._isRangeType() && !this._isRangeValueComplete(value)) {
1180
974
  return;
1181
975
  }
1182
-
1183
976
  const {
1184
977
  onChangeWithDateFirst
1185
978
  } = this.getProps();
@@ -1187,7 +980,6 @@ export default class DatePickerFoundation extends BaseFoundation {
1187
980
  notifyValue,
1188
981
  notifyDate
1189
982
  } = this.disposeCallbackArgs(value);
1190
-
1191
983
  if (onChangeWithDateFirst) {
1192
984
  this._adapter.notifyChange(notifyDate, notifyValue);
1193
985
  } else {
@@ -1196,56 +988,42 @@ export default class DatePickerFoundation extends BaseFoundation {
1196
988
  }
1197
989
  /**
1198
990
  * Get the date changed through the date panel or enter
1199
- * @param {Date[]} dates
1200
- * @returns {Date[]}
1201
991
  */
1202
-
1203
-
1204
992
  _getChangedDates(dates) {
1205
993
  const type = this._adapter.getProp('type');
1206
-
1207
- const stateValue = this._adapter.getState('value');
1208
-
994
+ const {
995
+ cachedSelectedValue: lastDate
996
+ } = this._adapter.getStates();
1209
997
  const changedDates = [];
1210
-
1211
998
  switch (type) {
1212
999
  case 'dateRange':
1213
1000
  case 'dateTimeRange':
1214
- const [stateStart, stateEnd] = stateValue;
1001
+ const [lastStart, lastEnd] = lastDate;
1215
1002
  const [start, end] = dates;
1216
-
1217
- if (!isDateEqual(start, stateStart)) {
1003
+ if (!isDateEqual(start, lastStart)) {
1218
1004
  changedDates.push(start);
1219
1005
  }
1220
-
1221
- if (!isDateEqual(end, stateEnd)) {
1006
+ if (!isDateEqual(end, lastEnd)) {
1222
1007
  changedDates.push(end);
1223
1008
  }
1224
-
1225
1009
  break;
1226
-
1227
1010
  default:
1228
- const stateValueSet = new Set();
1229
- stateValue.forEach(value => stateValueSet.add(isDate(value) && value.valueOf()));
1230
-
1011
+ const lastValueSet = new Set();
1012
+ lastDate.forEach(value => lastValueSet.add(isDate(value) && value.valueOf()));
1231
1013
  for (const date of dates) {
1232
- if (!stateValueSet.has(isDate(date) && date.valueOf())) {
1014
+ if (!lastValueSet.has(isDate(date) && date.valueOf())) {
1233
1015
  changedDates.push(date);
1234
1016
  }
1235
1017
  }
1236
-
1237
1018
  }
1238
-
1239
1019
  return changedDates;
1240
1020
  }
1241
1021
  /**
1242
1022
  * Whether a date is disabled
1243
- * @param {Array} value
1023
+ * @param value The date that needs to be judged whether to disable
1024
+ * @param selectedValue Selected date, when selecting a range, pass this date to the second parameter of `disabledDate`
1244
1025
  */
1245
-
1246
-
1247
- _someDateDisabled(value) {
1248
- const stateValue = this.getState('value');
1026
+ _someDateDisabled(value, selectedValue) {
1249
1027
  const {
1250
1028
  rangeInputFocus
1251
1029
  } = this.getStates();
@@ -1253,22 +1031,19 @@ export default class DatePickerFoundation extends BaseFoundation {
1253
1031
  rangeStart: '',
1254
1032
  rangeEnd: '',
1255
1033
  rangeInputFocus
1256
- }; // DisabledDate needs to pass the second parameter
1257
-
1258
- if (this._isRangeType() && Array.isArray(stateValue)) {
1259
- if (isValid(stateValue[0])) {
1260
- const rangeStart = format(stateValue[0], 'yyyy-MM-dd');
1034
+ };
1035
+ // DisabledDate needs to pass the second parameter
1036
+ if (this._isRangeType() && Array.isArray(selectedValue)) {
1037
+ if (isValid(selectedValue[0])) {
1038
+ const rangeStart = format(selectedValue[0], 'yyyy-MM-dd');
1261
1039
  disabledOptions.rangeStart = rangeStart;
1262
1040
  }
1263
-
1264
- if (isValid(stateValue[1])) {
1265
- const rangeEnd = format(stateValue[1], 'yyyy-MM-dd');
1041
+ if (isValid(selectedValue[1])) {
1042
+ const rangeEnd = format(selectedValue[1], 'yyyy-MM-dd');
1266
1043
  disabledOptions.rangeEnd = rangeEnd;
1267
1044
  }
1268
1045
  }
1269
-
1270
1046
  let isSomeDateDisabled = false;
1271
-
1272
1047
  for (const date of value) {
1273
1048
  // skip check if date is null
1274
1049
  if (!isNullOrUndefined(date) && this.disabledDisposeDate(date, disabledOptions)) {
@@ -1276,7 +1051,6 @@ export default class DatePickerFoundation extends BaseFoundation {
1276
1051
  break;
1277
1052
  }
1278
1053
  }
1279
-
1280
1054
  return isSomeDateDisabled;
1281
1055
  }
1282
1056
  /**
@@ -1285,11 +1059,8 @@ export default class DatePickerFoundation extends BaseFoundation {
1285
1059
  * @param {Date} date
1286
1060
  * @param {String} token
1287
1061
  */
1288
-
1289
-
1290
1062
  localeFormat(date, token) {
1291
1063
  const dateFnsLocale = this._adapter.getProp('dateFnsLocale');
1292
-
1293
1064
  return format(date, token, {
1294
1065
  locale: dateFnsLocale
1295
1066
  });
@@ -1303,8 +1074,6 @@ export default class DatePickerFoundation extends BaseFoundation {
1303
1074
  * @param {Date|Date[]} date
1304
1075
  * @returns {Boolean}
1305
1076
  */
1306
-
1307
-
1308
1077
  disposeDateFn(fn, date) {
1309
1078
  const {
1310
1079
  notifyDate
@@ -1312,17 +1081,14 @@ export default class DatePickerFoundation extends BaseFoundation {
1312
1081
  const dateIsArray = Array.isArray(date);
1313
1082
  const notifyDateIsArray = Array.isArray(notifyDate);
1314
1083
  let disposeDate;
1315
-
1316
1084
  if (dateIsArray === notifyDateIsArray) {
1317
1085
  disposeDate = notifyDate;
1318
1086
  } else {
1319
1087
  disposeDate = dateIsArray ? [notifyDate] : notifyDate[0];
1320
1088
  }
1321
-
1322
1089
  for (var _len = arguments.length, rest = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
1323
1090
  rest[_key - 2] = arguments[_key];
1324
1091
  }
1325
-
1326
1092
  return fn(disposeDate, ...rest);
1327
1093
  }
1328
1094
  /**
@@ -1331,17 +1097,13 @@ export default class DatePickerFoundation extends BaseFoundation {
1331
1097
  * @param {Date} date
1332
1098
  * @returns {Boolean}
1333
1099
  */
1334
-
1335
-
1336
1100
  disabledDisposeDate(date) {
1337
1101
  const {
1338
1102
  disabledDate
1339
1103
  } = this.getProps();
1340
-
1341
1104
  for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
1342
1105
  rest[_key2 - 1] = arguments[_key2];
1343
1106
  }
1344
-
1345
1107
  return this.disposeDateFn(disabledDate, date, ...rest);
1346
1108
  }
1347
1109
  /**
@@ -1350,17 +1112,13 @@ export default class DatePickerFoundation extends BaseFoundation {
1350
1112
  * @param {Date|Date[]} date
1351
1113
  * @returns {Object}
1352
1114
  */
1353
-
1354
-
1355
1115
  disabledDisposeTime(date) {
1356
1116
  const {
1357
1117
  disabledTime
1358
1118
  } = this.getProps();
1359
-
1360
1119
  for (var _len3 = arguments.length, rest = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {
1361
1120
  rest[_key3 - 1] = arguments[_key3];
1362
1121
  }
1363
-
1364
1122
  return this.disposeDateFn(disabledTime, date, ...rest);
1365
1123
  }
1366
1124
  /**
@@ -1371,18 +1129,14 @@ export default class DatePickerFoundation extends BaseFoundation {
1371
1129
  * @param {Event} e
1372
1130
  * @returns
1373
1131
  */
1374
-
1375
-
1376
1132
  handleTriggerWrapperClick(e) {
1377
1133
  const {
1378
1134
  disabled,
1379
1135
  triggerRender
1380
1136
  } = this._adapter.getProps();
1381
-
1382
1137
  const {
1383
1138
  rangeInputFocus
1384
1139
  } = this._adapter.getStates();
1385
-
1386
1140
  if (disabled) {
1387
1141
  return;
1388
1142
  }
@@ -1393,8 +1147,6 @@ export default class DatePickerFoundation extends BaseFoundation {
1393
1147
  * - When type is not range type, Input component will automatically focus in the same case
1394
1148
  * - isEventTarget is used to judge whether the event is a bubbling event
1395
1149
  */
1396
-
1397
-
1398
1150
  if (this._isRangeType() && !rangeInputFocus) {
1399
1151
  if (this._adapter.isEventTarget(e)) {
1400
1152
  setTimeout(() => {
@@ -1406,13 +1158,11 @@ export default class DatePickerFoundation extends BaseFoundation {
1406
1158
  // If it is a triggerRender scene, because there is no input, the default focus is rangeStart when the panel is opened
1407
1159
  this._adapter.setRangeInputFocus('rangeStart');
1408
1160
  }
1409
-
1410
1161
  this.openPanel();
1411
1162
  } else {
1412
1163
  this.openPanel();
1413
1164
  }
1414
1165
  }
1415
-
1416
1166
  handlePanelVisibleChange(visible) {
1417
1167
  if (visible) {
1418
1168
  this._adapter.setInsetInputFocus();
@@ -1420,8 +1170,6 @@ export default class DatePickerFoundation extends BaseFoundation {
1420
1170
  * After the panel is closed, the trigger input is disabled
1421
1171
  * 面板关闭后,trigger input 禁用
1422
1172
  */
1423
-
1424
-
1425
1173
  setTimeout(() => {
1426
1174
  this._adapter.setTriggerDisabled(true);
1427
1175
  }, 0);
@@ -1429,5 +1177,4 @@ export default class DatePickerFoundation extends BaseFoundation {
1429
1177
  this._adapter.setTriggerDisabled(false);
1430
1178
  }
1431
1179
  }
1432
-
1433
1180
  }