@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
@@ -2,22 +2,14 @@ import _omit from "lodash/omit";
2
2
  import _isEqual from "lodash/isEqual";
3
3
  import _isString from "lodash/isString";
4
4
  import _isNumber from "lodash/isNumber";
5
-
6
5
  var __rest = this && this.__rest || function (s, e) {
7
6
  var t = {};
8
-
9
7
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
10
-
11
8
  if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
12
9
  if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
13
10
  }
14
11
  return t;
15
12
  };
16
- /* argus-disable unPkgSensitiveInfo */
17
-
18
- /* eslint-disable max-len */
19
-
20
-
21
13
  import BaseFoundation from '../base/foundation';
22
14
  import KeyCode, { ENTER_KEY } from '../utils/keyCode';
23
15
  import warning from '../utils/warning';
@@ -26,42 +18,29 @@ import isEnterPress from '../utils/isEnterPress';
26
18
  import { handlePrevent } from '../utils/a11y';
27
19
  export default class SelectFoundation extends BaseFoundation {
28
20
  constructor(adapter) {
29
- super(Object.assign({}, adapter)); // keyboard event listner
30
- // eslint-disable-next-line @typescript-eslint/member-ordering
31
-
21
+ super(Object.assign({}, adapter));
22
+ // keyboard event listner
32
23
  this._keydownHandler = null;
33
24
  }
34
-
35
25
  init() {
36
26
  this._setDropdownWidth();
37
-
38
27
  const isDefaultOpen = this.getProp('defaultOpen');
39
28
  const isOpen = this.getProp('open');
40
-
41
29
  const originalOptions = this._collectOptions();
42
-
43
30
  this._setDefaultSelection(originalOptions);
44
-
45
31
  if (isDefaultOpen || isOpen) {
46
32
  this.open(undefined, originalOptions);
47
33
  }
48
-
49
34
  const autoFocus = this.getProp('autoFocus');
50
-
51
35
  if (autoFocus) {
52
36
  this.focus();
53
37
  }
54
38
  }
55
-
56
39
  focus() {
57
40
  const isFilterable = this._isFilterable();
58
-
59
41
  const isMultiple = this._isMultiple();
60
-
61
42
  this._adapter.updateFocusState(true);
62
-
63
43
  this._adapter.setIsFocusInContainer(false);
64
-
65
44
  if (isFilterable && isMultiple) {
66
45
  // when filter and multiple, only focus input
67
46
  this.focusInput();
@@ -72,15 +51,14 @@ export default class SelectFoundation extends BaseFoundation {
72
51
  this._focusTrigger();
73
52
  }
74
53
  }
75
-
76
54
  _focusTrigger() {
77
- this._adapter.focusTrigger(); // this.bindKeyBoardEvent();
78
-
55
+ this._adapter.focusTrigger();
56
+ // this.bindKeyBoardEvent();
79
57
  }
80
58
 
81
59
  destroy() {
82
- this._adapter.unregisterClickOutsideHandler(); // this.unBindKeyBoardEvent();
83
-
60
+ this._adapter.unregisterClickOutsideHandler();
61
+ // this.unBindKeyBoardEvent();
84
62
  }
85
63
 
86
64
  _setDropdownWidth() {
@@ -89,7 +67,6 @@ export default class SelectFoundation extends BaseFoundation {
89
67
  dropdownMatchSelectWidth
90
68
  } = this.getProps();
91
69
  let width;
92
-
93
70
  if (dropdownMatchSelectWidth) {
94
71
  if (style && _isNumber(style.width)) {
95
72
  width = style.width;
@@ -98,22 +75,16 @@ export default class SelectFoundation extends BaseFoundation {
98
75
  } else {
99
76
  width = this._adapter.getTriggerWidth();
100
77
  }
101
-
102
78
  this._adapter.setOptionWrapperWidth(width);
103
79
  }
104
80
  }
105
-
106
81
  _collectOptions() {
107
82
  const originalOptions = this._adapter.getOptionsFromChildren();
108
-
109
- this._adapter.updateOptions(originalOptions); // Reposition the drop-down layer
110
-
111
-
83
+ this._adapter.updateOptions(originalOptions);
84
+ // Reposition the drop-down layer
112
85
  this._adapter.rePositionDropdown();
113
-
114
86
  return originalOptions;
115
87
  }
116
-
117
88
  _setDefaultSelection(originalOptions) {
118
89
  let {
119
90
  value
@@ -121,135 +92,123 @@ export default class SelectFoundation extends BaseFoundation {
121
92
  const {
122
93
  defaultValue
123
94
  } = this.getProps();
124
-
125
- if (this._isControlledComponent()) {// do nothing
95
+ if (this._isControlledComponent()) {
96
+ // do nothing
126
97
  } else {
127
98
  value = defaultValue;
128
99
  }
129
-
130
100
  this._update(value, originalOptions);
131
- } // call when props.optionList change
132
-
133
-
101
+ }
102
+ // call when props.optionList change
134
103
  handleOptionListChange() {
135
104
  const newOptionList = this._collectOptions();
136
-
137
105
  const {
138
106
  selections
139
107
  } = this.getStates();
140
- this.updateOptionsActiveStatus(selections, newOptionList); // reset focusIndex
141
-
108
+ this.updateOptionsActiveStatus(selections, newOptionList);
109
+ // reset focusIndex
142
110
  const {
143
111
  defaultActiveFirstOption
144
112
  } = this.getProps();
145
-
146
113
  if (defaultActiveFirstOption) {
147
114
  this._adapter.updateFocusIndex(0);
148
115
  }
149
- } // In uncontrolled mode, when props.optionList change,
116
+ }
117
+ // In uncontrolled mode, when props.optionList change,
150
118
  // but already had defaultValue or choose some option
151
-
152
-
153
119
  handleOptionListChangeHadDefaultValue() {
154
120
  const selections = this.getState('selections');
155
121
  let value;
156
122
  const {
157
123
  onChangeWithObject
158
124
  } = this.getProps();
159
-
160
125
  const isMultiple = this._isMultiple();
161
-
162
126
  switch (true) {
163
127
  case isMultiple && Boolean(selections.size):
164
128
  try {
165
- value = [...selections].map(item => // At this point item1 is directly the object
129
+ value = [...selections].map(item =>
130
+ // At this point item1 is directly the object
166
131
  onChangeWithObject ? item[1] : item[1].value);
167
132
  } catch (error) {
168
133
  value = [];
169
134
  }
170
-
171
135
  break;
172
-
173
136
  case isMultiple && !selections.size:
174
137
  value = [];
175
138
  break;
176
-
177
139
  case !isMultiple && Boolean(selections.size):
178
140
  try {
179
141
  value = onChangeWithObject ? [...selections][0][1] : [...selections][0][1].value;
180
142
  } catch (error) {}
181
-
182
143
  break;
183
-
184
144
  case !isMultiple && !selections.size:
185
145
  break;
186
-
187
146
  default:
188
147
  break;
189
148
  }
190
-
191
149
  const originalOptions = this._adapter.getOptionsFromChildren();
192
-
193
150
  this._update(value, originalOptions);
194
- } // call when props.value change
195
-
196
-
151
+ }
152
+ // call when props.value change
197
153
  handleValueChange(value) {
198
154
  const {
199
- allowCreate
155
+ allowCreate,
156
+ autoClearSearchValue,
157
+ remote
200
158
  } = this.getProps();
201
- let originalOptions; // AllowCreate and controlled mode, no need to re-collect optionList
202
-
159
+ const {
160
+ inputValue
161
+ } = this.getStates();
162
+ let originalOptions;
163
+ // AllowCreate and controlled mode, no need to re-collect optionList
203
164
  if (allowCreate && this._isControlledComponent()) {
204
165
  originalOptions = this.getState('options');
205
166
  originalOptions.forEach(item => item._show = true);
206
167
  } else {
207
168
  // originalOptions = this.getState('options');
208
- // The options in state cannot be used directly here, because it is possible to update the optionList and props.value at the same time, and the options in state are still old at this time
169
+ // The options in state cannot be used directly here,
170
+ // because it is possible to update the optionList and props.value at the same time, and the options in state are still old at this time
209
171
  originalOptions = this._adapter.getOptionsFromChildren();
210
- } // Multi-selection, controlled mode, you need to reposition the drop-down menu after updating
211
-
212
-
172
+ }
173
+ // Multi-selection, controlled mode, you need to reposition the drop-down menu after updating
213
174
  this._adapter.rePositionDropdown();
214
-
175
+ if (this._isFilterable() && !autoClearSearchValue && inputValue && !remote) {
176
+ originalOptions = this._filterOption(originalOptions, inputValue);
177
+ }
215
178
  this._update(value, originalOptions);
216
- } // Update the selected item in the selection box
217
-
218
-
179
+ }
180
+ // Update the selected item in the selection box
219
181
  _update(propValue, originalOptions) {
220
182
  let selections;
221
-
222
183
  if (!this._isMultiple()) {
223
184
  // Radio
224
185
  selections = this._updateSingle(propValue, originalOptions);
225
186
  } else {
226
187
  selections = this._updateMultiple(propValue, originalOptions);
227
- } // Update the text in the selection box
228
-
229
-
230
- this._adapter.updateSelection(selections); // Update the selected item in the drop-down box
231
-
232
-
188
+ this.updateOverflowItemCount(selections.size);
189
+ }
190
+ // Update the text in the selection box
191
+ this._adapter.updateSelection(selections);
192
+ // Update the selected item in the drop-down box
233
193
  this.updateOptionsActiveStatus(selections, originalOptions);
234
- } // Optionally selected updates (when components are mounted, or after value changes)
235
-
236
-
194
+ }
195
+ // Optionally selected updates (when components are mounted, or after value changes)
237
196
  _updateSingle(propValue, originalOptions) {
238
197
  const selections = new Map();
239
198
  const {
240
199
  onChangeWithObject
241
- } = this.getProps(); // When onChangeWithObject is true, the defaultValue or Value passed by the props should be the object, which corresponds to the result returned by onChange, so the value of the object needs to be taken as a judgment comparison
242
-
200
+ } = this.getProps();
201
+ // When onChangeWithObject is true, the defaultValue or Value passed by the props should be the object, which corresponds to the result returned by onChange, so the value of the object needs to be taken as a judgment comparison
243
202
  const selectedValue = onChangeWithObject && typeof propValue !== 'undefined' ? propValue.value : propValue;
244
203
  const selectedOptions = originalOptions.filter(option => option.value === selectedValue);
245
- const noMatchOptionInList = !selectedOptions.length && typeof selectedValue !== 'undefined'; // If the current value, there is a matching option in the optionList
246
-
204
+ const noMatchOptionInList = !selectedOptions.length && typeof selectedValue !== 'undefined' && selectedValue !== null;
205
+ // If the current value, there is a matching option in the optionList
247
206
  if (selectedOptions.length) {
248
207
  const selectedOption = selectedOptions[0];
249
- const optionExist = Object.assign({}, selectedOption); // if (onChangeWithObject) {
208
+ const optionExist = Object.assign({}, selectedOption);
209
+ // if (onChangeWithObject) {
250
210
  // OptionExist = {... propValue }; // value is the object with the'value 'Key
251
211
  // }
252
-
253
212
  selections.set(optionExist.label, optionExist);
254
213
  } else if (noMatchOptionInList) {
255
214
  // If the current value does not have a corresponding item in the optionList, construct an option and update it to the selection. However, it does not need to be inserted into the list
@@ -259,53 +218,45 @@ export default class SelectFoundation extends BaseFoundation {
259
218
  _notExist: true,
260
219
  _scrollIndex: -1
261
220
  };
262
-
263
221
  if (onChangeWithObject) {
264
222
  optionNotExist = Object.assign(Object.assign({}, propValue), {
265
223
  _notExist: true,
266
224
  _scrollIndex: -1
267
225
  });
268
226
  }
269
-
270
227
  selections.set(optionNotExist.label, optionNotExist);
271
228
  }
272
-
273
229
  return selections;
274
- } // Multi-selected option update (when the component is mounted, or after the value changes)
275
-
276
-
230
+ }
231
+ // Multi-selected option update (when the component is mounted, or after the value changes)
277
232
  _updateMultiple(propValue, originalOptions) {
278
233
  const nowSelections = this.getState('selections');
279
- let selectedOptionList = []; // Multiple selection is to determine whether it is an array to avoid the problem of defaultValue/value incoming string error
280
-
234
+ let selectedOptionList = [];
235
+ // Multiple selection is to determine whether it is an array to avoid the problem of defaultValue/value incoming string error
281
236
  const propValueIsArray = Array.isArray(propValue);
282
- this.checkMultipleProps(); // If N values are currently selected, the corresponding option data is retrieved from the current selections for retrieval. Because these selected options may not exist in the new optionList
283
-
237
+ this.checkMultipleProps();
238
+ // If N values are currently selected, the corresponding option data is retrieved from the current selections for retrieval. Because these selected options may not exist in the new optionList
284
239
  if (nowSelections.size) {
285
240
  selectedOptionList = [...nowSelections].map(item => item[1]);
286
241
  }
287
-
288
242
  const selections = new Map();
289
243
  let selectedValues = propValue;
290
244
  const {
291
245
  onChangeWithObject
292
- } = this.getProps(); // When onChangeWithObject is true
293
-
246
+ } = this.getProps();
247
+ // When onChangeWithObject is true
294
248
  if (onChangeWithObject && propValueIsArray) {
295
249
  selectedValues = propValue.map(item => item.value);
296
250
  }
297
-
298
251
  if (propValueIsArray && selectedValues.length) {
299
252
  selectedValues.forEach((selectedValue, i) => {
300
253
  // The current value exists in the current optionList
301
254
  const index = originalOptions.findIndex(option => option.value === selectedValue);
302
-
303
255
  if (index !== -1) {
304
256
  selections.set(originalOptions[index].label, originalOptions[index]);
305
257
  } else {
306
258
  // The current value exists in the optionList that has been selected before the change, and does not exist in the current optionList, then directly take the corresponding value from the selections, no need to construct a new option
307
259
  const indexInSelectedList = selectedOptionList.findIndex(option => option.value === selectedValue);
308
-
309
260
  if (indexInSelectedList !== -1) {
310
261
  const option = selectedOptionList[indexInSelectedList];
311
262
  selections.set(option.label, option);
@@ -326,18 +277,14 @@ export default class SelectFoundation extends BaseFoundation {
326
277
  }
327
278
  });
328
279
  }
329
-
330
280
  return selections;
331
281
  }
332
-
333
282
  _isMultiple() {
334
283
  return this.getProp('multiple');
335
284
  }
336
-
337
285
  _isDisabled() {
338
286
  return this.getProp('disabled');
339
287
  }
340
-
341
288
  _isFilterable() {
342
289
  return Boolean(this.getProp('filter')); // filter can be boolean or function
343
290
  }
@@ -349,14 +296,11 @@ export default class SelectFoundation extends BaseFoundation {
349
296
  const {
350
297
  isOpen
351
298
  } = this.getStates();
352
-
353
299
  const isDisabled = this._isDisabled();
354
-
355
300
  if (isDisabled) {
356
301
  return;
357
302
  } else if (!isOpen) {
358
303
  this.open();
359
-
360
304
  this._notifyFocus(e);
361
305
  } else if (isOpen && clickToHide) {
362
306
  this.close(e);
@@ -364,41 +308,31 @@ export default class SelectFoundation extends BaseFoundation {
364
308
  this.focusInput();
365
309
  }
366
310
  }
367
-
368
311
  open(acInput, originalOptions) {
369
312
  const isFilterable = this._isFilterable();
370
-
371
- const options = originalOptions || this.getState('options'); // When searchable, when the drop-down box expands
372
-
313
+ const options = originalOptions || this.getState('options');
314
+ // When searchable, when the drop-down box expands
373
315
  if (isFilterable) {
374
316
  // Also clears the options filter to show all candidates
375
317
  // Options created dynamically but not selected are also filtered out
376
318
  const sugInput = '';
377
-
378
319
  const newOptions = this._filterOption(options, sugInput).filter(item => !item._inputCreateOnly);
379
-
380
320
  this._adapter.updateOptions(newOptions);
381
-
382
321
  this.toggle2SearchInput(true);
322
+ } else {
323
+ // whether it is a filter or not, isFocus is guaranteed to be true when open
324
+ this._adapter.updateFocusState(true);
383
325
  }
384
-
385
326
  this._adapter.openMenu();
386
-
387
327
  this._setDropdownWidth();
388
-
389
328
  this._adapter.notifyDropdownVisibleChange(true);
390
-
391
329
  this.bindKeyBoardEvent();
392
-
393
330
  this._adapter.registerClickOutsideHandler(e => {
394
331
  this.close(e);
395
-
396
332
  this._notifyBlur(e);
397
-
398
333
  this._adapter.updateFocusState(false);
399
334
  });
400
335
  }
401
-
402
336
  toggle2SearchInput(isShow) {
403
337
  if (isShow) {
404
338
  this._adapter.toggleInputShow(isShow, () => this.focusInput());
@@ -407,208 +341,164 @@ export default class SelectFoundation extends BaseFoundation {
407
341
  this._adapter.toggleInputShow(isShow, () => undefined);
408
342
  }
409
343
  }
410
-
411
344
  close(e, closeCb) {
412
345
  // to support A11y, closing the panel trigger does not necessarily lose focus
413
346
  this._adapter.closeMenu();
414
-
415
347
  this._adapter.notifyDropdownVisibleChange(false);
416
-
417
- this._adapter.setIsFocusInContainer(false); // this.unBindKeyBoardEvent();
348
+ this._adapter.setIsFocusInContainer(false);
349
+ // this.unBindKeyBoardEvent();
418
350
  // this._notifyBlur(e);
419
-
420
-
421
- this._adapter.unregisterClickOutsideHandler(); // this._adapter.updateFocusState(false);
422
-
423
-
351
+ // this._adapter.updateFocusState(false);
352
+ this._adapter.unregisterClickOutsideHandler();
424
353
  const isFilterable = this._isFilterable();
425
-
426
354
  if (isFilterable) {
427
355
  this.toggle2SearchInput(false);
428
356
  }
429
-
430
357
  this._adapter.once('popoverClose', () => {
431
358
  if (isFilterable) {
432
- this.clearInput();
359
+ this.clearInput(e);
433
360
  }
434
-
435
361
  if (closeCb) {
436
362
  closeCb();
437
363
  }
438
364
  });
439
365
  }
440
-
441
366
  onSelect(option, optionIndex, event) {
442
367
  const isDisabled = this._isDisabled();
443
-
444
368
  if (isDisabled) {
445
369
  return;
446
- } // If the allowCreate dynamically created option is selected, onCreate needs to be triggered
447
-
448
-
370
+ }
371
+ // If the allowCreate dynamically created option is selected, onCreate needs to be triggered
449
372
  if (option._inputCreateOnly) {
450
373
  this._adapter.notifyCreate(option);
451
374
  }
452
-
453
375
  const isMultiple = this._isMultiple();
454
-
455
376
  if (!isMultiple) {
456
377
  this._handleSingleSelect(option, event);
457
-
458
378
  this._focusTrigger();
459
379
  } else {
460
380
  this._handleMultipleSelect(option, event);
461
381
  }
462
-
463
382
  this._adapter.updateFocusIndex(optionIndex);
464
383
  }
465
-
466
384
  _handleSingleSelect(_a, event) {
467
385
  var {
468
- value,
469
- label
470
- } = _a,
471
- rest = __rest(_a, ["value", "label"]);
472
-
386
+ value,
387
+ label
388
+ } = _a,
389
+ rest = __rest(_a, ["value", "label"]);
473
390
  const selections = new Map().set(label, Object.assign({
474
391
  value,
475
392
  label
476
- }, rest)); // First trigger onSelect, then trigger onChange
477
-
393
+ }, rest));
394
+ // First trigger onSelect, then trigger onChange
478
395
  this._notifySelect(value, Object.assign({
479
396
  value,
480
397
  label
481
- }, rest)); // If it is a controlled component, directly notify
398
+ }, rest));
399
+ // If it is a controlled component, directly notify
482
400
  // Make sure that the operations of updating updateOptions are done after the animation ends
483
401
  // otherwise the content will be updated when the popup layer is not collapsed, and it looks like it will flash once when it is closed
484
-
485
-
486
402
  if (this._isControlledComponent()) {
487
403
  this.close(event, () => {
488
404
  this._notifyChange(selections);
489
405
  });
490
406
  } else {
491
- this._adapter.updateSelection(selections); // notify user
492
-
493
-
407
+ this._adapter.updateSelection(selections);
408
+ // notify user
494
409
  this._notifyChange(selections);
495
-
496
410
  this.close(event, () => {
497
411
  // Update the selected item in the drop-down box
498
412
  this.updateOptionsActiveStatus(selections);
499
413
  });
500
414
  }
501
415
  }
502
-
503
416
  _handleMultipleSelect(_a, event) {
504
417
  var {
505
- value,
506
- label
507
- } = _a,
508
- rest = __rest(_a, ["value", "label"]);
509
-
418
+ value,
419
+ label
420
+ } = _a,
421
+ rest = __rest(_a, ["value", "label"]);
510
422
  const maxLimit = this._adapter.getMaxLimit();
511
-
512
423
  const selections = this._adapter.getSelections();
513
-
514
424
  const {
515
425
  autoClearSearchValue
516
426
  } = this.getProps();
517
-
518
427
  if (selections.has(label)) {
519
428
  this._notifyDeselect(value, Object.assign({
520
429
  value,
521
430
  label
522
431
  }, rest));
523
-
524
432
  selections.delete(label);
525
433
  } else if (maxLimit && selections.size === maxLimit) {
526
434
  this._adapter.notifyMaxLimit(Object.assign({
527
435
  value,
528
436
  label
529
437
  }, _omit(rest, '_scrollIndex')));
530
-
531
438
  return;
532
439
  } else {
533
440
  this._notifySelect(value, Object.assign({
534
441
  value,
535
442
  label
536
443
  }, rest));
537
-
538
444
  selections.set(label, Object.assign({
539
445
  value,
540
446
  label
541
447
  }, rest));
542
448
  }
543
-
544
449
  if (this._isControlledComponent()) {
545
450
  // Controlled components, directly notified
546
451
  this._notifyChange(selections);
547
-
548
452
  if (this._isFilterable()) {
549
453
  if (autoClearSearchValue) {
550
- this.clearInput();
454
+ this.clearInput(event);
551
455
  }
552
-
553
456
  this.focusInput();
554
457
  }
555
458
  } else {
556
459
  // Uncontrolled components, update ui
557
- this._adapter.updateSelection(selections); // In multi-select mode, the drop-down pop-up layer is repositioned every time the value is changed, because the height selection of the selection box may have changed
558
-
559
-
460
+ this._adapter.updateSelection(selections);
461
+ this.updateOverflowItemCount(selections.size);
462
+ // In multi-select mode, the drop-down pop-up layer is repositioned every time the value is changed, because the height selection of the selection box may have changed
560
463
  this._adapter.rePositionDropdown();
561
-
562
464
  let {
563
465
  options
564
- } = this.getStates(); // Searchable filtering, when selected, resets Input
565
-
466
+ } = this.getStates();
467
+ // Searchable filtering, when selected, resets Input
566
468
  if (this._isFilterable()) {
567
469
  // When filter active,if autoClearSearchValue is true,reset input after select
568
470
  if (autoClearSearchValue) {
569
- this.clearInput(); // At the same time, the filtering of options is also cleared, in order to show all candidates
570
-
471
+ this.clearInput(event);
472
+ // At the same time, the filtering of options is also cleared, in order to show all candidates
571
473
  const sugInput = '';
572
474
  options = this._filterOption(options, sugInput);
573
475
  }
574
-
575
476
  this.focusInput();
576
477
  }
577
-
578
478
  this.updateOptionsActiveStatus(selections, options);
579
-
580
479
  this._notifyChange(selections);
581
480
  }
582
481
  }
583
-
584
482
  clearSelected() {
585
483
  const selections = new Map();
586
-
587
484
  if (this._isControlledComponent()) {
588
485
  this._notifyChange(selections);
589
-
590
486
  this._adapter.notifyClear();
591
487
  } else {
592
488
  this._adapter.updateSelection(selections);
593
-
594
489
  this.updateOptionsActiveStatus(selections);
595
-
596
490
  this._notifyChange(selections);
597
-
598
491
  this._adapter.notifyClear();
599
- } // when call manually by ref method
600
-
601
-
492
+ }
493
+ // when call manually by ref method
602
494
  const {
603
495
  isOpen
604
496
  } = this.getStates();
605
-
606
497
  if (isOpen) {
607
498
  this._adapter.rePositionDropdown();
608
499
  }
609
- } // Update the selected item in the drop-down box
610
-
611
-
500
+ }
501
+ // Update the selected item in the drop-down box
612
502
  updateOptionsActiveStatus(selections) {
613
503
  let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getState('options');
614
504
  const {
@@ -617,7 +507,6 @@ export default class SelectFoundation extends BaseFoundation {
617
507
  const newOptions = options.map(option => {
618
508
  if (selections.has(option.label)) {
619
509
  option._selected = true;
620
-
621
510
  if (allowCreate) {
622
511
  delete option._inputCreateOnly;
623
512
  }
@@ -625,49 +514,38 @@ export default class SelectFoundation extends BaseFoundation {
625
514
  if (option._inputCreateOnly) {
626
515
  option._show = false;
627
516
  }
628
-
629
517
  option._selected = false;
630
518
  }
631
-
632
519
  return option;
633
520
  });
634
-
635
521
  this._adapter.updateOptions(newOptions);
636
522
  }
637
-
638
523
  removeTag(item) {
639
524
  const selections = this._adapter.getSelections();
640
-
641
525
  selections.delete(item.label);
642
-
643
526
  if (this._isControlledComponent()) {
644
527
  this._notifyDeselect(item.value, item);
645
-
646
528
  this._notifyChange(selections);
647
529
  } else {
648
530
  this._notifyDeselect(item.value, item);
649
-
650
531
  this._adapter.updateSelection(selections);
651
-
652
- this.updateOptionsActiveStatus(selections); // Repostion drop-down layer, because the selection may have changed the number of rows, resulting in a height change
653
-
532
+ this.updateOverflowItemCount(selections.size);
533
+ this.updateOptionsActiveStatus(selections);
534
+ // Repostion drop-down layer, because the selection may have changed the number of rows, resulting in a height change
654
535
  this._adapter.rePositionDropdown();
655
-
656
536
  this._notifyChange(selections);
657
537
  }
658
538
  }
659
-
660
- clearInput() {
539
+ // The reason why event input is optional is that clearInput may be manually called by the user through ref
540
+ clearInput(event) {
661
541
  const {
662
542
  inputValue
663
- } = this.getStates(); // only when input is not null, select should notifySearch and updateOptions
664
-
543
+ } = this.getStates();
544
+ // only when input is not null, select should notifySearch and updateOptions
665
545
  if (inputValue !== '') {
666
546
  this._adapter.updateInputValue('');
667
-
668
- this._adapter.notifySearch(''); // reset options filter
669
-
670
-
547
+ this._adapter.notifySearch('', event);
548
+ // reset options filter
671
549
  const {
672
550
  options
673
551
  } = this.getStates();
@@ -675,27 +553,20 @@ export default class SelectFoundation extends BaseFoundation {
675
553
  remote
676
554
  } = this.getProps();
677
555
  let optionsAfterFilter = options;
678
-
679
556
  if (!remote) {
680
557
  optionsAfterFilter = this._filterOption(options, '');
681
558
  }
682
-
683
559
  this._adapter.updateOptions(optionsAfterFilter);
684
560
  }
685
561
  }
686
-
687
562
  focusInput() {
688
563
  this._adapter.focusInput();
689
-
690
564
  this._adapter.updateFocusState(true);
691
-
692
565
  this._adapter.setIsFocusInContainer(false);
693
566
  }
694
-
695
- handleInputChange(sugInput) {
567
+ handleInputChange(sugInput, event) {
696
568
  // Input is a controlled component, so the value needs to be updated
697
569
  this._adapter.updateInputValue(sugInput);
698
-
699
570
  const {
700
571
  options,
701
572
  isOpen
@@ -705,28 +576,21 @@ export default class SelectFoundation extends BaseFoundation {
705
576
  remote
706
577
  } = this.getProps();
707
578
  let optionsAfterFilter = options;
708
-
709
579
  if (!remote) {
710
580
  // Filter options based on input
711
581
  optionsAfterFilter = this._filterOption(options, sugInput);
712
- } // When allowClear is true, an entry can be created. You need to include the current input as a new Option input
713
-
714
-
582
+ }
583
+ // When allowClear is true, an entry can be created. You need to include the current input as a new Option input
715
584
  optionsAfterFilter = this._createOptionByInput(allowCreate, optionsAfterFilter, sugInput);
716
-
717
585
  this._adapter.updateOptions(optionsAfterFilter);
718
-
719
- this._adapter.notifySearch(sugInput); // In multi-select mode, the drop-down box is repositioned each time you enter, because it may cause a line break as the input changes
720
-
721
-
586
+ this._adapter.notifySearch(sugInput, event);
587
+ // In multi-select mode, the drop-down box is repositioned each time you enter, because it may cause a line break as the input changes
722
588
  if (this._isMultiple()) {
723
589
  this._adapter.rePositionDropdown();
724
590
  }
725
591
  }
726
-
727
592
  _filterOption(originalOptions, sugInput) {
728
593
  const filter = this.getProp('filter');
729
-
730
594
  if (!filter) {
731
595
  // 1. No filtering
732
596
  return originalOptions;
@@ -738,13 +602,11 @@ export default class SelectFoundation extends BaseFoundation {
738
602
  const groupLabel = option._parentGroup && option._parentGroup.label;
739
603
  const matchOption = label.includes(input);
740
604
  const matchGroup = _isString(groupLabel) && groupLabel.toLowerCase().includes(input);
741
-
742
605
  if (matchOption || matchGroup) {
743
606
  option._show = true;
744
607
  } else {
745
608
  option._show = false;
746
609
  }
747
-
748
610
  return option;
749
611
  });
750
612
  } else if (typeof filter === 'function') {
@@ -754,10 +616,8 @@ export default class SelectFoundation extends BaseFoundation {
754
616
  return option;
755
617
  });
756
618
  }
757
-
758
619
  return undefined;
759
620
  }
760
-
761
621
  _createOptionByInput(allowCreate, optionsAfterFilter, sugInput) {
762
622
  if (allowCreate) {
763
623
  if (sugInput) {
@@ -775,13 +635,11 @@ export default class SelectFoundation extends BaseFoundation {
775
635
  optionsAfterFilter.forEach((option, index) => {
776
636
  if (!option._show && !option._inputCreateOnly) {
777
637
  return;
778
- } // The matching algorithm is not necessarily through labels?
779
-
780
-
638
+ }
639
+ // The matching algorithm is not necessarily through labels?
781
640
  if (option.label === sugInput) {
782
641
  matchOptionIndex = index;
783
642
  }
784
-
785
643
  if (option._inputCreateOnly) {
786
644
  createOptionIndex = index;
787
645
  option.value = sugInput;
@@ -789,11 +647,9 @@ export default class SelectFoundation extends BaseFoundation {
789
647
  option._show = true;
790
648
  }
791
649
  });
792
-
793
650
  if (createOptionIndex === -1 && matchOptionIndex === -1) {
794
651
  optionsAfterFilter.push(newOptionByInput);
795
652
  }
796
-
797
653
  if (matchOptionIndex !== -1) {
798
654
  optionsAfterFilter = optionsAfterFilter.filter(item => !item._inputCreateOnly);
799
655
  }
@@ -801,26 +657,21 @@ export default class SelectFoundation extends BaseFoundation {
801
657
  // Delete input unselected items
802
658
  optionsAfterFilter = optionsAfterFilter.filter(item => !item._inputCreateOnly);
803
659
  }
804
- } // TODO Promise supports asynchronous creation
805
-
806
-
660
+ }
661
+ // TODO Promise supports asynchronous creation
807
662
  return optionsAfterFilter;
808
663
  }
809
-
810
664
  bindKeyBoardEvent() {
811
665
  this._keydownHandler = event => {
812
666
  this._handleKeyDown(event);
813
667
  };
814
-
815
668
  this._adapter.registerKeyDown(this._keydownHandler);
816
669
  }
817
-
818
670
  unBindKeyBoardEvent() {
819
671
  if (this._keydownHandler) {
820
672
  this._adapter.unregisterKeyDown();
821
673
  }
822
674
  }
823
-
824
675
  _handleKeyDown(event) {
825
676
  const key = event.keyCode;
826
677
  const {
@@ -832,157 +683,117 @@ export default class SelectFoundation extends BaseFoundation {
832
683
  const {
833
684
  isOpen
834
685
  } = this.getStates();
835
-
836
686
  if (loading || disabled) {
837
687
  return;
838
688
  }
839
-
840
689
  switch (key) {
841
690
  case KeyCode.UP:
842
691
  // Prevent Input's cursor from following
843
692
  // Prevent Input cursor from following
844
693
  event.preventDefault();
845
-
846
694
  this._handleArrowKeyDown(-1);
847
-
848
695
  break;
849
-
850
696
  case KeyCode.DOWN:
851
697
  // Prevent Input's cursor from following
852
698
  // Prevent Input cursor from following
853
699
  event.preventDefault();
854
-
855
700
  this._handleArrowKeyDown(1);
856
-
857
701
  break;
858
-
859
702
  case KeyCode.BACKSPACE:
860
703
  this._handleBackspaceKeyDown();
861
-
862
704
  break;
863
-
864
705
  case KeyCode.ENTER:
865
706
  // internal-issues:302
866
707
  // prevent trigger form’s submit when use in form
867
708
  handlePrevent(event);
868
-
869
709
  this._handleEnterKeyDown(event);
870
-
871
710
  break;
872
-
873
711
  case KeyCode.ESC:
874
712
  isOpen && this.close(event);
875
713
  filter && !multiple && this._focusTrigger();
876
714
  break;
877
-
878
715
  case KeyCode.TAB:
879
716
  // check if slot have focusable element
880
717
  this._handleTabKeyDown(event);
881
-
882
718
  break;
883
-
884
719
  default:
885
720
  break;
886
721
  }
887
722
  }
888
-
889
723
  handleContainerKeyDown(event) {
890
724
  // when focus in contanier, handle the key down
891
725
  const key = event.keyCode;
892
726
  const {
893
727
  isOpen
894
728
  } = this.getStates();
895
-
896
729
  switch (key) {
897
730
  case KeyCode.TAB:
898
731
  isOpen && this._handleTabKeyDown(event);
899
732
  break;
900
-
901
733
  default:
902
734
  break;
903
735
  }
904
736
  }
905
-
906
737
  _getEnableFocusIndex(offset) {
907
738
  const {
908
739
  focusIndex,
909
740
  options
910
741
  } = this.getStates();
911
- const visibleOptions = options.filter(item => item._show); // let visibleOptions = options;
912
-
742
+ const visibleOptions = options.filter(item => item._show);
743
+ // let visibleOptions = options;
913
744
  const optionsLength = visibleOptions.length;
914
745
  let index = focusIndex + offset;
915
-
916
746
  if (index < 0) {
917
747
  index = optionsLength - 1;
918
748
  }
919
-
920
749
  if (index >= optionsLength) {
921
750
  index = 0;
922
- } // avoid newIndex option is disabled
923
-
924
-
751
+ }
752
+ // avoid newIndex option is disabled
925
753
  if (offset > 0) {
926
754
  let nearestActiveOption = -1;
927
-
928
755
  for (let i = 0; i < visibleOptions.length; i++) {
929
756
  const optionIsActive = !visibleOptions[i].disabled;
930
-
931
757
  if (optionIsActive) {
932
758
  nearestActiveOption = i;
933
759
  }
934
-
935
760
  if (nearestActiveOption >= index) {
936
761
  break;
937
762
  }
938
763
  }
939
-
940
764
  index = nearestActiveOption;
941
765
  } else {
942
766
  let nearestActiveOption = visibleOptions.length;
943
-
944
767
  for (let i = optionsLength - 1; i >= 0; i--) {
945
768
  const optionIsActive = !visibleOptions[i].disabled;
946
-
947
769
  if (optionIsActive) {
948
770
  nearestActiveOption = i;
949
771
  }
950
-
951
772
  if (nearestActiveOption <= index) {
952
773
  break;
953
774
  }
954
775
  }
955
-
956
776
  index = nearestActiveOption;
957
- } // console.log('new:' + index);
958
-
959
-
777
+ }
778
+ // console.log('new:' + index);
960
779
  this._adapter.updateFocusIndex(index);
961
-
962
780
  this._adapter.updateScrollTop(index);
963
781
  }
964
-
965
782
  _handleArrowKeyDown(offset) {
966
783
  const {
967
784
  isOpen
968
785
  } = this.getStates();
969
786
  isOpen ? this._getEnableFocusIndex(offset) : this.open();
970
787
  }
971
-
972
788
  _handleTabKeyDown(event) {
973
789
  const {
974
790
  isOpen
975
791
  } = this.getStates();
976
-
977
792
  this._adapter.updateFocusState(false);
978
-
979
793
  if (isOpen) {
980
794
  const container = this._adapter.getContainer();
981
-
982
795
  const focusableElements = this._adapter.getFocusableElements(container);
983
-
984
796
  const focusableNum = focusableElements.length;
985
-
986
797
  if (focusableNum > 0) {
987
798
  // Shift + Tab will move focus backward
988
799
  if (event.shiftKey) {
@@ -992,8 +803,7 @@ export default class SelectFoundation extends BaseFoundation {
992
803
  }
993
804
  } else {
994
805
  // there are no focusable elements inside the container, tab to next element and trigger blur
995
- this.close();
996
-
806
+ this.close(event);
997
807
  this._notifyBlur(event);
998
808
  }
999
809
  } else {
@@ -1001,55 +811,41 @@ export default class SelectFoundation extends BaseFoundation {
1001
811
  this._notifyBlur(event);
1002
812
  }
1003
813
  }
1004
-
1005
814
  _handlePanelOpenTabKeyDown(focusableElements, event) {
1006
815
  const activeElement = this._adapter.getActiveElement();
1007
-
1008
816
  const isFocusInContainer = this._adapter.getIsFocusInContainer();
1009
-
1010
817
  if (!isFocusInContainer) {
1011
818
  // focus in trigger, set next focus to the first element in container
1012
819
  focusableElements[0].focus();
1013
-
1014
820
  this._adapter.setIsFocusInContainer(true);
1015
-
1016
821
  handlePrevent(event);
1017
822
  } else if (activeElement === focusableElements[focusableElements.length - 1]) {
1018
823
  // focus in the last element in container, focus back to trigger and close panel
1019
824
  this._focusTrigger();
1020
-
1021
- this.close();
825
+ this.close(event);
1022
826
  handlePrevent(event);
1023
827
  }
1024
828
  }
1025
-
1026
829
  _handlePanelOpenShiftTabKeyDown(focusableElements, event) {
1027
830
  const activeElement = this._adapter.getActiveElement();
1028
-
1029
831
  const isFocusInContainer = this._adapter.getIsFocusInContainer();
1030
-
1031
832
  if (!isFocusInContainer) {
1032
833
  // focus in trigger, close the panel, shift tab to previe element and trigger blur
1033
- this.close();
1034
-
834
+ this.close(event);
1035
835
  this._notifyBlur(event);
1036
836
  } else if (activeElement === focusableElements[0]) {
1037
837
  // focus in the first element in container, focus back to trigger
1038
838
  this._focusTrigger();
1039
-
1040
839
  this._adapter.setIsFocusInContainer(false);
1041
-
1042
840
  handlePrevent(event);
1043
841
  }
1044
842
  }
1045
-
1046
843
  _handleEnterKeyDown(event) {
1047
844
  const {
1048
845
  isOpen,
1049
846
  options,
1050
847
  focusIndex
1051
848
  } = this.getStates();
1052
-
1053
849
  if (!isOpen) {
1054
850
  this.open();
1055
851
  } else {
@@ -1057,64 +853,54 @@ export default class SelectFoundation extends BaseFoundation {
1057
853
  const visibleOptions = options.filter(item => item._show);
1058
854
  const {
1059
855
  length
1060
- } = visibleOptions; // fix issue 1201
1061
-
856
+ } = visibleOptions;
857
+ // fix issue 1201
1062
858
  if (length <= focusIndex) {
1063
859
  return;
1064
860
  }
1065
-
1066
861
  if (visibleOptions && length) {
1067
862
  const selectedOption = visibleOptions[focusIndex];
1068
-
1069
863
  if (selectedOption.disabled) {
1070
864
  return;
1071
865
  }
1072
-
1073
866
  this.onSelect(selectedOption, focusIndex, event);
1074
867
  }
1075
868
  } else {
1076
- this.close();
869
+ this.close(event);
1077
870
  }
1078
871
  }
1079
872
  }
1080
-
1081
873
  _handleBackspaceKeyDown() {
1082
874
  if (this._isMultiple()) {
1083
875
  const selections = this._adapter.getSelections();
1084
-
1085
876
  const {
1086
877
  inputValue
1087
878
  } = this.getStates();
1088
879
  const length = selections.size;
1089
-
1090
880
  if (length && !inputValue) {
1091
881
  const keys = [...selections.keys()];
1092
882
  let index = length - 1;
1093
883
  let targetLabel = keys[index];
1094
884
  let targetItem = selections.get(targetLabel);
1095
- let isAllDisabled = false; // can skip disabled item when remove trigger by backspace
1096
-
885
+ let isAllDisabled = false;
886
+ // can skip disabled item when remove trigger by backspace
1097
887
  if (targetItem.disabled && index === 0) {
1098
888
  return;
1099
889
  }
1100
-
1101
890
  while (targetItem.disabled && index !== 0) {
1102
891
  index = index - 1;
1103
892
  targetLabel = keys[index];
1104
- targetItem = selections.get(targetLabel); // eslint-disable-next-line
1105
-
893
+ targetItem = selections.get(targetLabel);
1106
894
  if (index == 0 && targetItem.disabled) {
1107
895
  isAllDisabled = true;
1108
896
  }
1109
897
  }
1110
-
1111
898
  if (!isAllDisabled) {
1112
899
  this.removeTag(targetItem);
1113
900
  }
1114
901
  }
1115
902
  }
1116
903
  }
1117
-
1118
904
  _notifyChange(selections) {
1119
905
  const {
1120
906
  onChangeWithObject
@@ -1122,88 +908,65 @@ export default class SelectFoundation extends BaseFoundation {
1122
908
  const stateSelections = this.getState('selections');
1123
909
  let notifyVal;
1124
910
  const selectionsProps = [...selections.values()];
1125
-
1126
911
  const isMultiple = this._isMultiple();
1127
-
1128
912
  const hasChange = this._diffSelections(selections, stateSelections, isMultiple);
1129
-
1130
913
  if (!hasChange) {
1131
914
  return;
1132
915
  }
1133
-
1134
916
  switch (true) {
1135
917
  case onChangeWithObject:
1136
918
  this._notifyChangeWithObject(selections);
1137
-
1138
919
  break;
1139
-
1140
920
  case !onChangeWithObject && !isMultiple:
1141
921
  notifyVal = selectionsProps.length ? selectionsProps[0].value : undefined;
1142
-
1143
922
  this._adapter.notifyChange(notifyVal);
1144
-
1145
923
  break;
1146
-
1147
924
  case !onChangeWithObject && isMultiple:
1148
925
  notifyVal = selectionsProps.length ? selectionsProps.map(props => props.value) : [];
1149
-
1150
926
  this._adapter.notifyChange(notifyVal);
1151
-
1152
927
  break;
1153
-
1154
928
  default:
1155
929
  break;
1156
930
  }
1157
931
  }
1158
-
1159
932
  _removeInternalKey(option) {
1160
- // eslint-disable-next-line
1161
933
  let newOption = Object.assign({}, option);
1162
934
  delete newOption._parentGroup;
1163
935
  delete newOption._show;
1164
936
  delete newOption._selected;
1165
937
  delete newOption._scrollIndex;
1166
-
938
+ delete newOption._keyInJsx;
1167
939
  if ('_keyInOptionList' in newOption) {
1168
940
  newOption.key = newOption._keyInOptionList;
1169
941
  delete newOption._keyInOptionList;
1170
942
  }
1171
-
1172
943
  return newOption;
1173
944
  }
1174
-
1175
945
  _notifySelect(value, option) {
1176
946
  const newOption = this._removeInternalKey(option);
1177
-
1178
947
  this._adapter.notifySelect(value, newOption);
1179
948
  }
1180
-
1181
949
  _notifyDeselect(value, option) {
1182
950
  const newOption = this._removeInternalKey(option);
1183
-
1184
951
  this._adapter.notifyDeselect(value, newOption);
1185
952
  }
1186
-
1187
953
  _diffSelections(selections, oldSelections, isMultiple) {
1188
954
  let diff = true;
1189
-
1190
955
  if (!isMultiple) {
1191
956
  const selectionProps = [...selections.values()];
1192
957
  const oldSelectionProps = [...oldSelections.values()];
1193
958
  const optionLabel = selectionProps[0] ? selectionProps[0].label : selectionProps[0];
1194
959
  const oldOptionLabel = oldSelectionProps[0] ? oldSelectionProps[0].label : oldSelectionProps[0];
1195
960
  diff = !_isEqual(optionLabel, oldOptionLabel);
1196
- } else {// When multiple selection, there is no scene where the value is different between the two operations
961
+ } else {
962
+ // When multiple selection, there is no scene where the value is different between the two operations
1197
963
  }
1198
-
1199
964
  return diff;
1200
- } // When onChangeWithObject is true, the onChange input parameter is not only value, but also label and other parameters
1201
-
1202
-
965
+ }
966
+ // When onChangeWithObject is true, the onChange input parameter is not only value, but also label and other parameters
1203
967
  _notifyChangeWithObject(selections) {
1204
968
  const stateSelections = this.getState('selections');
1205
969
  const values = [];
1206
-
1207
970
  for (const item of selections.entries()) {
1208
971
  let val = Object.assign({
1209
972
  label: item[0]
@@ -1211,87 +974,70 @@ export default class SelectFoundation extends BaseFoundation {
1211
974
  val = this._removeInternalKey(val);
1212
975
  values.push(val);
1213
976
  }
1214
-
1215
977
  if (!this._isMultiple()) {
1216
978
  this._adapter.notifyChange(values[0]);
1217
979
  } else {
1218
980
  this._adapter.notifyChange(values);
1219
981
  }
1220
- } // Scenes that may trigger blur:
982
+ }
983
+ // Scenes that may trigger blur:
1221
984
  // 1、clickOutSide
1222
985
  // 2、 tab to next element/ shift tab to previous element
1223
986
  // 3、[remove when add a11y] click option / press enter, and then select complete(when multiple is false
1224
987
  // 4、[remove when add a11y] press esc when dropdown list open
1225
-
1226
-
1227
988
  _notifyBlur(e) {
1228
989
  this._adapter.notifyBlur(e);
1229
- } // Scenes that may trigger focus:
990
+ }
991
+ // Scenes that may trigger focus:
1230
992
  // 1、click selection
1231
-
1232
-
1233
993
  _notifyFocus(e) {
1234
994
  this._adapter.notifyFocus(e);
1235
995
  }
1236
-
1237
996
  handleMouseEnter(e) {
1238
997
  this._adapter.updateHovering(true);
1239
-
1240
998
  this._adapter.notifyMouseEnter(e);
1241
999
  }
1242
-
1243
1000
  handleMouseLeave(e) {
1244
1001
  this._adapter.updateHovering(false);
1245
-
1246
1002
  this._adapter.notifyMouseLeave(e);
1247
1003
  }
1248
-
1249
1004
  handleClearClick(e) {
1250
1005
  const {
1251
1006
  filter
1252
1007
  } = this.getProps();
1253
-
1254
1008
  if (filter) {
1255
- this.clearInput();
1009
+ this.clearInput(e);
1256
1010
  }
1257
-
1258
- this.clearSelected(); // prevent this click open dropdown
1259
-
1011
+ // after click showClear button, the select need to be focused
1012
+ this.focus();
1013
+ this.clearSelected();
1014
+ // prevent this click open dropdown
1260
1015
  e.stopPropagation();
1261
1016
  }
1262
-
1263
1017
  handleKeyPress(e) {
1264
1018
  if (e && e.key === ENTER_KEY) {
1265
1019
  this.handleClick(e);
1266
1020
  }
1267
1021
  }
1268
1022
  /* istanbul ignore next */
1269
-
1270
-
1271
1023
  handleClearBtnEnterPress(e) {
1272
1024
  if (isEnterPress(e)) {
1273
1025
  this.handleClearClick(e);
1274
1026
  }
1275
1027
  }
1276
-
1277
1028
  handleOptionMouseEnter(optionIndex) {
1278
1029
  this._adapter.updateFocusIndex(optionIndex);
1279
1030
  }
1280
-
1281
1031
  handleListScroll(e) {
1282
1032
  this._adapter.notifyListScroll(e);
1283
1033
  }
1284
-
1285
1034
  handleTriggerFocus(e) {
1286
- this.bindKeyBoardEvent(); // close the tag in multiple select did not trigger select focus, but trigger TriggerFocus, so not need to updateFocusState in this function
1035
+ this.bindKeyBoardEvent();
1036
+ // close the tag in multiple select did not trigger select focus, but trigger TriggerFocus, so not need to updateFocusState in this function
1287
1037
  // this._adapter.updateFocusState(true);
1288
-
1289
1038
  this._adapter.setIsFocusInContainer(false);
1290
1039
  }
1291
-
1292
1040
  handleTriggerBlur(e) {
1293
- this._adapter.updateFocusState(false);
1294
-
1295
1041
  const {
1296
1042
  filter,
1297
1043
  autoFocus
@@ -1299,28 +1045,25 @@ export default class SelectFoundation extends BaseFoundation {
1299
1045
  const {
1300
1046
  isOpen,
1301
1047
  isFocus
1302
- } = this.getStates(); // Under normal circumstances, blur will be accompanied by clickOutsideHandler, so the notify of blur can be called uniformly in clickOutsideHandler
1048
+ } = this.getStates();
1049
+ // Under normal circumstances, blur will be accompanied by clickOutsideHandler, so the notify of blur can be called uniformly in clickOutsideHandler
1303
1050
  // But when autoFocus or the panel is close, because clickOutsideHandler is not register or unregister, you need to listen for the trigger's blur and trigger the notify callback
1304
-
1305
1051
  if (isFocus && !isOpen) {
1306
1052
  this._notifyBlur(e);
1053
+ this._adapter.updateFocusState(false);
1307
1054
  }
1308
1055
  }
1309
-
1310
1056
  handleInputBlur(e) {
1311
1057
  const {
1312
1058
  filter,
1313
1059
  autoFocus
1314
1060
  } = this.getProps();
1315
-
1316
1061
  const isMultiple = this._isMultiple();
1317
-
1318
1062
  if (autoFocus && filter && !isMultiple) {
1319
1063
  // under this condition, when input blur, hide the input
1320
1064
  this.toggle2SearchInput(false);
1321
1065
  }
1322
1066
  }
1323
-
1324
1067
  selectAll() {
1325
1068
  const {
1326
1069
  options
@@ -1329,22 +1072,18 @@ export default class SelectFoundation extends BaseFoundation {
1329
1072
  onChangeWithObject
1330
1073
  } = this.getProps();
1331
1074
  let selectedValues = [];
1332
-
1333
1075
  const isMultiple = this._isMultiple();
1334
-
1335
1076
  if (!isMultiple) {
1336
- console.warn("[Semi Select]: It seems that you have called the selectAll method in the single-selection Select.\n Please note that this is not a legal way to use it");
1077
+ console.warn(`[Semi Select]: It seems that you have called the selectAll method in the single-selection Select.
1078
+ Please note that this is not a legal way to use it`);
1337
1079
  return;
1338
1080
  }
1339
-
1340
1081
  if (onChangeWithObject) {
1341
1082
  selectedValues = options;
1342
1083
  } else {
1343
1084
  selectedValues = options.map(option => option.value);
1344
1085
  }
1345
-
1346
1086
  this.handleValueChange(selectedValues);
1347
-
1348
1087
  this._adapter.notifyChange(selectedValues);
1349
1088
  }
1350
1089
  /**
@@ -1352,8 +1091,6 @@ export default class SelectFoundation extends BaseFoundation {
1352
1091
  * -defaultValue/value in multiple selection mode is array
1353
1092
  * @param {Object} props
1354
1093
  */
1355
-
1356
-
1357
1094
  checkMultipleProps(props) {
1358
1095
  if (this._isMultiple()) {
1359
1096
  const currentProps = props ? props : this.getProps();
@@ -1362,32 +1099,48 @@ export default class SelectFoundation extends BaseFoundation {
1362
1099
  value
1363
1100
  } = currentProps;
1364
1101
  const selectedValues = value || defaultValue;
1365
-
1366
1102
  if (!isNullOrUndefined(selectedValues) && !Array.isArray(selectedValues)) {
1367
1103
  /* istanbul ignore next */
1368
1104
  warning(true, '[Semi Select] defaultValue/value should be array type in multiple mode');
1369
1105
  }
1370
1106
  }
1371
1107
  }
1372
-
1373
1108
  updateScrollTop() {
1374
1109
  this._adapter.updateScrollTop();
1375
1110
  }
1376
-
1111
+ updateOverflowItemCount(selectionLength, overFlowCount) {
1112
+ const {
1113
+ maxTagCount,
1114
+ ellipsisTrigger
1115
+ } = this.getProps();
1116
+ if (!ellipsisTrigger) {
1117
+ return;
1118
+ }
1119
+ if (overFlowCount) {
1120
+ this._adapter.updateOverflowItemCount(overFlowCount);
1121
+ } else if (typeof maxTagCount === 'number') {
1122
+ if (selectionLength - maxTagCount > 0) {
1123
+ this._adapter.updateOverflowItemCount(selectionLength - maxTagCount);
1124
+ } else {
1125
+ this._adapter.updateOverflowItemCount(0);
1126
+ }
1127
+ }
1128
+ }
1377
1129
  updateIsFullTags() {
1378
1130
  const {
1379
1131
  isFullTags
1380
1132
  } = this.getStates();
1381
-
1382
1133
  if (!isFullTags) {
1383
1134
  this._adapter.setState({
1384
1135
  isFullTags: true
1385
1136
  });
1386
1137
  }
1387
1138
  }
1388
-
1389
1139
  handlePopoverClose() {
1390
1140
  this._adapter.emit('popoverClose');
1391
1141
  }
1392
-
1142
+ // need to remove focus style of option when user hover slot
1143
+ handleSlotMouseEnter() {
1144
+ this._adapter.updateFocusIndex(-1);
1145
+ }
1393
1146
  }