@douyinfe/semi-ui 2.27.0 → 2.27.1-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (339) hide show
  1. package/dist/css/semi.css +72 -0
  2. package/dist/css/semi.min.css +1 -1
  3. package/dist/umd/semi-ui.js +2055 -1986
  4. package/dist/umd/semi-ui.js.map +1 -1
  5. package/dist/umd/semi-ui.min.js +1 -1
  6. package/dist/umd/semi-ui.min.js.map +1 -1
  7. package/lib/cjs/_portal/index.js +2 -2
  8. package/lib/cjs/_utils/index.js +3 -1
  9. package/lib/cjs/anchor/index.js +9 -9
  10. package/lib/cjs/anchor/link.js +8 -8
  11. package/lib/cjs/autoComplete/index.js +8 -4
  12. package/lib/cjs/autoComplete/option.js +7 -7
  13. package/lib/cjs/avatar/avatarGroup.js +7 -7
  14. package/lib/cjs/avatar/index.js +12 -12
  15. package/lib/cjs/badge/index.js +8 -8
  16. package/lib/cjs/banner/index.js +12 -12
  17. package/lib/cjs/breadcrumb/index.js +12 -12
  18. package/lib/cjs/breadcrumb/item.js +8 -8
  19. package/lib/cjs/button/Button.js +9 -9
  20. package/lib/cjs/button/buttonGroup.js +5 -5
  21. package/lib/cjs/button/splitButtonGroup.js +1 -1
  22. package/lib/cjs/calendar/dayCalendar.js +13 -13
  23. package/lib/cjs/calendar/dayCol.js +17 -17
  24. package/lib/cjs/calendar/monthCalendar.js +38 -38
  25. package/lib/cjs/calendar/rangeCalendar.js +27 -27
  26. package/lib/cjs/calendar/timeCol.js +6 -6
  27. package/lib/cjs/calendar/weekCalendar.js +27 -27
  28. package/lib/cjs/card/cardGroup.js +2 -2
  29. package/lib/cjs/card/index.js +16 -16
  30. package/lib/cjs/card/meta.js +5 -5
  31. package/lib/cjs/carousel/CarouselArrow.js +6 -6
  32. package/lib/cjs/carousel/CarouselIndicator.js +6 -6
  33. package/lib/cjs/carousel/index.js +12 -12
  34. package/lib/cjs/cascader/index.js +36 -36
  35. package/lib/cjs/cascader/item.js +25 -25
  36. package/lib/cjs/checkbox/checkbox.js +14 -14
  37. package/lib/cjs/checkbox/checkboxGroup.js +4 -4
  38. package/lib/cjs/checkbox/checkboxInner.js +6 -6
  39. package/lib/cjs/collapse/item.js +9 -9
  40. package/lib/cjs/collapsible/index.js +3 -3
  41. package/lib/cjs/configProvider/index.js +1 -1
  42. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  43. package/lib/cjs/datePicker/dateInput.js +16 -16
  44. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  45. package/lib/cjs/datePicker/datePicker.js +9 -9
  46. package/lib/cjs/datePicker/footer.js +1 -1
  47. package/lib/cjs/datePicker/index.js +1 -1
  48. package/lib/cjs/datePicker/month.js +2 -2
  49. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  50. package/lib/cjs/datePicker/monthsGrid.js +27 -27
  51. package/lib/cjs/datePicker/navigation.js +1 -1
  52. package/lib/cjs/datePicker/quickControl.js +14 -14
  53. package/lib/cjs/datePicker/yearAndMonth.js +4 -4
  54. package/lib/cjs/descriptions/index.js +3 -3
  55. package/lib/cjs/descriptions/item.js +5 -5
  56. package/lib/cjs/divider/index.js +7 -7
  57. package/lib/cjs/dropdown/dropdownDivider.js +1 -1
  58. package/lib/cjs/dropdown/dropdownItem.d.ts +4 -0
  59. package/lib/cjs/dropdown/dropdownItem.js +12 -8
  60. package/lib/cjs/dropdown/dropdownMenu.js +1 -1
  61. package/lib/cjs/dropdown/dropdownTitle.js +2 -2
  62. package/lib/cjs/dropdown/index.js +3 -3
  63. package/lib/cjs/empty/index.js +7 -7
  64. package/lib/cjs/form/arrayField.js +1 -1
  65. package/lib/cjs/form/baseForm.js +2 -2
  66. package/lib/cjs/form/errorMessage.js +1 -1
  67. package/lib/cjs/form/group.js +2 -2
  68. package/lib/cjs/form/hoc/withField.js +67 -47
  69. package/lib/cjs/form/label.js +9 -9
  70. package/lib/cjs/form/slot.js +5 -5
  71. package/lib/cjs/grid/col.js +11 -11
  72. package/lib/cjs/grid/row.js +4 -4
  73. package/lib/cjs/highlight/index.js +1 -1
  74. package/lib/cjs/iconButton/index.js +5 -5
  75. package/lib/cjs/image/image.js +10 -10
  76. package/lib/cjs/image/preview.js +3 -3
  77. package/lib/cjs/image/previewFooter.js +12 -12
  78. package/lib/cjs/image/previewHeader.js +3 -3
  79. package/lib/cjs/image/previewImage.js +7 -7
  80. package/lib/cjs/image/previewInner.js +7 -7
  81. package/lib/cjs/input/index.js +38 -38
  82. package/lib/cjs/input/inputGroup.js +7 -7
  83. package/lib/cjs/input/textarea.js +14 -14
  84. package/lib/cjs/inputNumber/index.js +11 -11
  85. package/lib/cjs/layout/Sider.js +3 -3
  86. package/lib/cjs/layout/index.js +2 -2
  87. package/lib/cjs/list/index.js +11 -11
  88. package/lib/cjs/list/item.js +6 -6
  89. package/lib/cjs/modal/ConfirmModal.js +7 -7
  90. package/lib/cjs/modal/Modal.js +4 -4
  91. package/lib/cjs/modal/ModalContent.js +24 -24
  92. package/lib/cjs/modal/useModal/index.js +1 -1
  93. package/lib/cjs/navigation/CollapseButton.js +1 -1
  94. package/lib/cjs/navigation/Footer.js +2 -2
  95. package/lib/cjs/navigation/Header.js +5 -5
  96. package/lib/cjs/navigation/Item.d.ts +3 -0
  97. package/lib/cjs/navigation/Item.js +35 -21
  98. package/lib/cjs/navigation/SubNav.d.ts +4 -0
  99. package/lib/cjs/navigation/SubNav.js +58 -34
  100. package/lib/cjs/navigation/index.js +8 -8
  101. package/lib/cjs/notification/index.js +3 -3
  102. package/lib/cjs/notification/notice.js +12 -12
  103. package/lib/cjs/overflowList/index.js +6 -6
  104. package/lib/cjs/pagination/index.js +26 -26
  105. package/lib/cjs/popconfirm/index.js +9 -9
  106. package/lib/cjs/popover/index.js +2 -2
  107. package/lib/cjs/progress/index.js +14 -14
  108. package/lib/cjs/radio/radio.js +22 -22
  109. package/lib/cjs/radio/radioGroup.js +5 -5
  110. package/lib/cjs/radio/radioInner.js +7 -7
  111. package/lib/cjs/rating/index.js +5 -5
  112. package/lib/cjs/rating/item.js +11 -11
  113. package/lib/cjs/scrollList/index.js +5 -5
  114. package/lib/cjs/scrollList/scrollItem.js +13 -13
  115. package/lib/cjs/select/index.js +57 -57
  116. package/lib/cjs/select/option.js +7 -7
  117. package/lib/cjs/sideSheet/SideSheetContent.js +10 -10
  118. package/lib/cjs/sideSheet/index.js +7 -7
  119. package/lib/cjs/skeleton/index.js +1 -1
  120. package/lib/cjs/skeleton/item.js +4 -4
  121. package/lib/cjs/slider/index.js +28 -28
  122. package/lib/cjs/space/index.js +12 -12
  123. package/lib/cjs/spin/icon.js +2 -2
  124. package/lib/cjs/spin/index.js +6 -6
  125. package/lib/cjs/steps/basicStep.js +14 -14
  126. package/lib/cjs/steps/basicSteps.js +6 -6
  127. package/lib/cjs/steps/fillStep.js +10 -10
  128. package/lib/cjs/steps/fillSteps.js +4 -4
  129. package/lib/cjs/steps/navStep.js +5 -5
  130. package/lib/cjs/steps/navSteps.js +2 -2
  131. package/lib/cjs/table/Body/BaseRow.js +5 -5
  132. package/lib/cjs/table/Body/ExpandedRow.js +3 -3
  133. package/lib/cjs/table/Body/SectionRow.js +1 -1
  134. package/lib/cjs/table/Body/index.js +8 -8
  135. package/lib/cjs/table/ColGroup.js +2 -2
  136. package/lib/cjs/table/ColumnFilter.js +3 -3
  137. package/lib/cjs/table/ColumnSelection.js +2 -2
  138. package/lib/cjs/table/ColumnSorter.js +7 -7
  139. package/lib/cjs/table/CustomExpandIcon.js +2 -2
  140. package/lib/cjs/table/HeadTable.js +3 -3
  141. package/lib/cjs/table/Table.js +20 -20
  142. package/lib/cjs/table/TableCell.js +8 -8
  143. package/lib/cjs/table/TableHeader.js +1 -1
  144. package/lib/cjs/table/TableHeaderRow.js +8 -8
  145. package/lib/cjs/table/TablePagination.js +3 -3
  146. package/lib/cjs/tabs/TabBar.js +18 -18
  147. package/lib/cjs/tabs/TabPane.js +3 -3
  148. package/lib/cjs/tabs/index.js +2 -2
  149. package/lib/cjs/tag/group.js +5 -5
  150. package/lib/cjs/tag/index.js +13 -13
  151. package/lib/cjs/tagInput/index.js +33 -33
  152. package/lib/cjs/timePicker/Combobox.js +4 -4
  153. package/lib/cjs/timePicker/TimeInput.js +4 -4
  154. package/lib/cjs/timePicker/TimePicker.js +8 -8
  155. package/lib/cjs/timeline/index.js +8 -8
  156. package/lib/cjs/timeline/item.js +7 -7
  157. package/lib/cjs/toast/index.js +5 -5
  158. package/lib/cjs/toast/toast.js +9 -9
  159. package/lib/cjs/tooltip/index.js +7 -7
  160. package/lib/cjs/transfer/index.js +31 -31
  161. package/lib/cjs/tree/autoSizer.js +1 -1
  162. package/lib/cjs/tree/index.js +6 -6
  163. package/lib/cjs/tree/nodeList.js +1 -1
  164. package/lib/cjs/tree/treeNode.js +26 -26
  165. package/lib/cjs/treeSelect/index.js +41 -41
  166. package/lib/cjs/typography/base.js +14 -14
  167. package/lib/cjs/typography/copyable.js +3 -3
  168. package/lib/cjs/typography/paragraph.js +1 -1
  169. package/lib/cjs/typography/title.js +1 -1
  170. package/lib/cjs/typography/util.js +1 -1
  171. package/lib/cjs/upload/fileCard.js +32 -32
  172. package/lib/cjs/upload/index.js +37 -37
  173. package/lib/es/_portal/index.js +2 -2
  174. package/lib/es/_utils/index.js +3 -1
  175. package/lib/es/anchor/index.js +9 -9
  176. package/lib/es/anchor/link.js +8 -8
  177. package/lib/es/autoComplete/index.js +8 -4
  178. package/lib/es/autoComplete/option.js +7 -7
  179. package/lib/es/avatar/avatarGroup.js +7 -7
  180. package/lib/es/avatar/index.js +12 -12
  181. package/lib/es/badge/index.js +8 -8
  182. package/lib/es/banner/index.js +12 -12
  183. package/lib/es/breadcrumb/index.js +12 -12
  184. package/lib/es/breadcrumb/item.js +8 -8
  185. package/lib/es/button/Button.js +9 -9
  186. package/lib/es/button/buttonGroup.js +5 -5
  187. package/lib/es/button/splitButtonGroup.js +1 -1
  188. package/lib/es/calendar/dayCalendar.js +13 -13
  189. package/lib/es/calendar/dayCol.js +17 -17
  190. package/lib/es/calendar/monthCalendar.js +38 -38
  191. package/lib/es/calendar/rangeCalendar.js +27 -27
  192. package/lib/es/calendar/timeCol.js +6 -6
  193. package/lib/es/calendar/weekCalendar.js +27 -27
  194. package/lib/es/card/cardGroup.js +2 -2
  195. package/lib/es/card/index.js +16 -16
  196. package/lib/es/card/meta.js +5 -5
  197. package/lib/es/carousel/CarouselArrow.js +6 -6
  198. package/lib/es/carousel/CarouselIndicator.js +6 -6
  199. package/lib/es/carousel/index.js +12 -12
  200. package/lib/es/cascader/index.js +36 -36
  201. package/lib/es/cascader/item.js +25 -25
  202. package/lib/es/checkbox/checkbox.js +14 -14
  203. package/lib/es/checkbox/checkboxGroup.js +4 -4
  204. package/lib/es/checkbox/checkboxInner.js +6 -6
  205. package/lib/es/collapse/item.js +9 -9
  206. package/lib/es/collapsible/index.js +3 -3
  207. package/lib/es/configProvider/index.js +1 -1
  208. package/lib/es/datePicker/dateInput.d.ts +1 -1
  209. package/lib/es/datePicker/dateInput.js +16 -16
  210. package/lib/es/datePicker/datePicker.d.ts +1 -1
  211. package/lib/es/datePicker/datePicker.js +9 -9
  212. package/lib/es/datePicker/footer.js +1 -1
  213. package/lib/es/datePicker/index.js +1 -1
  214. package/lib/es/datePicker/month.js +2 -2
  215. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  216. package/lib/es/datePicker/monthsGrid.js +27 -27
  217. package/lib/es/datePicker/navigation.js +1 -1
  218. package/lib/es/datePicker/quickControl.js +14 -14
  219. package/lib/es/datePicker/yearAndMonth.js +4 -4
  220. package/lib/es/descriptions/index.js +3 -3
  221. package/lib/es/descriptions/item.js +5 -5
  222. package/lib/es/divider/index.js +7 -7
  223. package/lib/es/dropdown/dropdownDivider.js +1 -1
  224. package/lib/es/dropdown/dropdownItem.d.ts +4 -0
  225. package/lib/es/dropdown/dropdownItem.js +12 -8
  226. package/lib/es/dropdown/dropdownMenu.js +1 -1
  227. package/lib/es/dropdown/dropdownTitle.js +2 -2
  228. package/lib/es/dropdown/index.js +3 -3
  229. package/lib/es/empty/index.js +7 -7
  230. package/lib/es/form/arrayField.js +1 -1
  231. package/lib/es/form/baseForm.js +2 -2
  232. package/lib/es/form/errorMessage.js +1 -1
  233. package/lib/es/form/group.js +2 -2
  234. package/lib/es/form/hoc/withField.js +67 -47
  235. package/lib/es/form/label.js +9 -9
  236. package/lib/es/form/slot.js +5 -5
  237. package/lib/es/grid/col.js +11 -11
  238. package/lib/es/grid/row.js +4 -4
  239. package/lib/es/highlight/index.js +1 -1
  240. package/lib/es/iconButton/index.js +5 -5
  241. package/lib/es/image/image.js +10 -10
  242. package/lib/es/image/preview.js +3 -3
  243. package/lib/es/image/previewFooter.js +12 -12
  244. package/lib/es/image/previewHeader.js +3 -3
  245. package/lib/es/image/previewImage.js +7 -7
  246. package/lib/es/image/previewInner.js +7 -7
  247. package/lib/es/input/index.js +38 -38
  248. package/lib/es/input/inputGroup.js +7 -7
  249. package/lib/es/input/textarea.js +14 -14
  250. package/lib/es/inputNumber/index.js +11 -11
  251. package/lib/es/layout/Sider.js +3 -3
  252. package/lib/es/layout/index.js +2 -2
  253. package/lib/es/list/index.js +11 -11
  254. package/lib/es/list/item.js +6 -6
  255. package/lib/es/modal/ConfirmModal.js +7 -7
  256. package/lib/es/modal/Modal.js +4 -4
  257. package/lib/es/modal/ModalContent.js +24 -24
  258. package/lib/es/modal/useModal/index.js +1 -1
  259. package/lib/es/navigation/CollapseButton.js +1 -1
  260. package/lib/es/navigation/Footer.js +2 -2
  261. package/lib/es/navigation/Header.js +5 -5
  262. package/lib/es/navigation/Item.d.ts +3 -0
  263. package/lib/es/navigation/Item.js +35 -21
  264. package/lib/es/navigation/SubNav.d.ts +4 -0
  265. package/lib/es/navigation/SubNav.js +58 -34
  266. package/lib/es/navigation/index.js +8 -8
  267. package/lib/es/notification/index.js +3 -3
  268. package/lib/es/notification/notice.js +12 -12
  269. package/lib/es/overflowList/index.js +6 -6
  270. package/lib/es/pagination/index.js +26 -26
  271. package/lib/es/popconfirm/index.js +9 -9
  272. package/lib/es/popover/index.js +2 -2
  273. package/lib/es/progress/index.js +14 -14
  274. package/lib/es/radio/radio.js +22 -22
  275. package/lib/es/radio/radioGroup.js +5 -5
  276. package/lib/es/radio/radioInner.js +7 -7
  277. package/lib/es/rating/index.js +5 -5
  278. package/lib/es/rating/item.js +11 -11
  279. package/lib/es/scrollList/index.js +5 -5
  280. package/lib/es/scrollList/scrollItem.js +13 -13
  281. package/lib/es/select/index.js +57 -57
  282. package/lib/es/select/option.js +7 -7
  283. package/lib/es/sideSheet/SideSheetContent.js +10 -10
  284. package/lib/es/sideSheet/index.js +7 -7
  285. package/lib/es/skeleton/index.js +1 -1
  286. package/lib/es/skeleton/item.js +4 -4
  287. package/lib/es/slider/index.js +28 -28
  288. package/lib/es/space/index.js +12 -12
  289. package/lib/es/spin/icon.js +2 -2
  290. package/lib/es/spin/index.js +6 -6
  291. package/lib/es/steps/basicStep.js +14 -14
  292. package/lib/es/steps/basicSteps.js +6 -6
  293. package/lib/es/steps/fillStep.js +10 -10
  294. package/lib/es/steps/fillSteps.js +4 -4
  295. package/lib/es/steps/navStep.js +5 -5
  296. package/lib/es/steps/navSteps.js +2 -2
  297. package/lib/es/table/Body/BaseRow.js +5 -5
  298. package/lib/es/table/Body/ExpandedRow.js +3 -3
  299. package/lib/es/table/Body/SectionRow.js +1 -1
  300. package/lib/es/table/Body/index.js +8 -8
  301. package/lib/es/table/ColGroup.js +2 -2
  302. package/lib/es/table/ColumnFilter.js +3 -3
  303. package/lib/es/table/ColumnSelection.js +2 -2
  304. package/lib/es/table/ColumnSorter.js +7 -7
  305. package/lib/es/table/CustomExpandIcon.js +2 -2
  306. package/lib/es/table/HeadTable.js +3 -3
  307. package/lib/es/table/Table.js +20 -20
  308. package/lib/es/table/TableCell.js +8 -8
  309. package/lib/es/table/TableHeader.js +1 -1
  310. package/lib/es/table/TableHeaderRow.js +8 -8
  311. package/lib/es/table/TablePagination.js +3 -3
  312. package/lib/es/tabs/TabBar.js +18 -18
  313. package/lib/es/tabs/TabPane.js +3 -3
  314. package/lib/es/tabs/index.js +2 -2
  315. package/lib/es/tag/group.js +5 -5
  316. package/lib/es/tag/index.js +13 -13
  317. package/lib/es/tagInput/index.js +33 -33
  318. package/lib/es/timePicker/Combobox.js +4 -4
  319. package/lib/es/timePicker/TimeInput.js +4 -4
  320. package/lib/es/timePicker/TimePicker.js +8 -8
  321. package/lib/es/timeline/index.js +8 -8
  322. package/lib/es/timeline/item.js +7 -7
  323. package/lib/es/toast/index.js +5 -5
  324. package/lib/es/toast/toast.js +9 -9
  325. package/lib/es/tooltip/index.js +7 -7
  326. package/lib/es/transfer/index.js +31 -31
  327. package/lib/es/tree/autoSizer.js +1 -1
  328. package/lib/es/tree/index.js +6 -6
  329. package/lib/es/tree/nodeList.js +1 -1
  330. package/lib/es/tree/treeNode.js +26 -26
  331. package/lib/es/treeSelect/index.js +41 -41
  332. package/lib/es/typography/base.js +14 -14
  333. package/lib/es/typography/copyable.js +3 -3
  334. package/lib/es/typography/paragraph.js +1 -1
  335. package/lib/es/typography/title.js +1 -1
  336. package/lib/es/typography/util.js +1 -1
  337. package/lib/es/upload/fileCard.js +32 -32
  338. package/lib/es/upload/index.js +37 -37
  339. package/package.json +8 -8
@@ -69,20 +69,20 @@ const ConfirmModal = props => {
69
69
  setVisible(false);
70
70
  }
71
71
  }, [onCancel]);
72
- const confirmCls = "".concat(cssClasses.DIALOG, "-confirm");
72
+ const confirmCls = `${cssClasses.DIALOG}-confirm`;
73
73
  const wrapperCls = cls(className, confirmCls, {
74
- ["".concat(confirmCls, "-rtl")]: direction === 'rtl'
74
+ [`${confirmCls}-rtl`]: direction === 'rtl'
75
75
  });
76
- const typeCls = cls("".concat(cssClasses.DIALOG, "-").concat(type));
76
+ const typeCls = cls(`${cssClasses.DIALOG}-${type}`);
77
77
  const iconNode = isSemiIcon(icon) ? /*#__PURE__*/React.cloneElement(icon, {
78
- className: "".concat(confirmCls, "-icon ").concat(typeCls, "-icon"),
78
+ className: `${confirmCls}-icon ${typeCls}-icon`,
79
79
  size: 'extra-large'
80
80
  }) : icon;
81
81
  const titleNode = title == null ? null : /*#__PURE__*/React.createElement("span", {
82
- className: "".concat(confirmCls, "-title-text")
82
+ className: `${confirmCls}-title-text`
83
83
  }, title);
84
- const contentCls = cls("".concat(confirmCls, "-content"), {
85
- ["".concat(confirmCls, "-content-withIcon")]: props.icon
84
+ const contentCls = cls(`${confirmCls}-content`, {
85
+ [`${confirmCls}-content-withIcon`]: props.icon
86
86
  });
87
87
  return /*#__PURE__*/React.createElement(Modal, Object.assign({
88
88
  className: wrapperCls,
@@ -125,7 +125,7 @@ class Modal extends BaseComponent {
125
125
  }
126
126
 
127
127
  const classList = cls(className, {
128
- ["".concat(cssClasses.DIALOG, "-displayNone")]: keepDOM && this.state.displayNone
128
+ [`${cssClasses.DIALOG}-displayNone`]: keepDOM && this.state.displayNone
129
129
  });
130
130
  const shouldRender = this.props.visible || this.props.keepDOM && (!this.props.lazyRender || this._haveRendered) || this.props.motion && !this.state.displayNone
131
131
  /* When there is animation, we use displayNone to judge whether animation is ended and judge whether to unmount content */
@@ -141,7 +141,7 @@ class Modal extends BaseComponent {
141
141
  }, /*#__PURE__*/React.createElement(CSSAnimation, {
142
142
  motion: this.props.motion,
143
143
  animationState: visible ? 'enter' : 'leave',
144
- startClassName: visible ? "".concat(cssClasses.DIALOG, "-content-animate-show") : "".concat(cssClasses.DIALOG, "-content-animate-hide"),
144
+ startClassName: visible ? `${cssClasses.DIALOG}-content-animate-show` : `${cssClasses.DIALOG}-content-animate-hide`,
145
145
  onAnimationEnd: () => {
146
146
  this.updateState();
147
147
  }
@@ -153,7 +153,7 @@ class Modal extends BaseComponent {
153
153
  return /*#__PURE__*/React.createElement(CSSAnimation, {
154
154
  motion: this.props.motion,
155
155
  animationState: visible ? 'enter' : 'leave',
156
- startClassName: visible ? "".concat(cssClasses.DIALOG, "-mask-animate-show") : "".concat(cssClasses.DIALOG, "-mask-animate-hide"),
156
+ startClassName: visible ? `${cssClasses.DIALOG}-mask-animate-show` : `${cssClasses.DIALOG}-mask-animate-hide`,
157
157
  onAnimationEnd: () => {
158
158
  this.updateState();
159
159
  }
@@ -202,7 +202,7 @@ class Modal extends BaseComponent {
202
202
 
203
203
  if (!getPopupContainer && this.bodyOverflow !== 'hidden') {
204
204
  document.body.style.overflow = 'hidden';
205
- document.body.style.width = "calc(".concat(this.originBodyWidth || '100%', " - ").concat(this.scrollBarWidth, "px)");
205
+ document.body.style.width = `calc(${this.originBodyWidth || '100%'} - ${this.scrollBarWidth}px)`;
206
206
  }
207
207
  },
208
208
  enabledBodyScroll: () => {
@@ -64,7 +64,7 @@ export default class ModalContent extends BaseComponent {
64
64
  } = props;
65
65
 
66
66
  if (mask) {
67
- const className = cls("".concat(cssClasses.DIALOG, "-mask"), {// [`${cssClasses.DIALOG}-mask-hidden`]: !props.visible,
67
+ const className = cls(`${cssClasses.DIALOG}-mask`, {// [`${cssClasses.DIALOG}-mask-hidden`]: !props.visible,
68
68
  });
69
69
  return /*#__PURE__*/React.createElement("div", Object.assign({
70
70
  key: "mask"
@@ -90,7 +90,7 @@ export default class ModalContent extends BaseComponent {
90
90
  });
91
91
  closer = /*#__PURE__*/React.createElement(Button, {
92
92
  "aria-label": "close",
93
- className: "".concat(cssClasses.DIALOG, "-close"),
93
+ className: `${cssClasses.DIALOG}-close`,
94
94
  key: "close-btn",
95
95
  onClick: this.close,
96
96
  type: "tertiary",
@@ -108,7 +108,7 @@ export default class ModalContent extends BaseComponent {
108
108
  icon
109
109
  } = this.props;
110
110
  return icon ? /*#__PURE__*/React.createElement("span", {
111
- className: "".concat(cssClasses.DIALOG, "-icon-wrapper"),
111
+ className: `${cssClasses.DIALOG}-icon-wrapper`,
112
112
  "x-semi-prop": "icon"
113
113
  }, icon) : null;
114
114
  };
@@ -124,11 +124,11 @@ export default class ModalContent extends BaseComponent {
124
124
  const closer = this.renderCloseBtn();
125
125
  const icon = this.renderIcon();
126
126
  return title === null || title === undefined ? null : /*#__PURE__*/React.createElement("div", {
127
- className: "".concat(cssClasses.DIALOG, "-header")
127
+ className: `${cssClasses.DIALOG}-header`
128
128
  }, icon, /*#__PURE__*/React.createElement(Typography.Title, {
129
129
  heading: 5,
130
- className: "".concat(cssClasses.DIALOG, "-title"),
131
- id: "".concat(cssClasses.DIALOG, "-title"),
130
+ className: `${cssClasses.DIALOG}-title`,
131
+ id: `${cssClasses.DIALOG}-title`,
132
132
  "x-semi-prop": "title"
133
133
  }, title), closer);
134
134
  };
@@ -139,19 +139,19 @@ export default class ModalContent extends BaseComponent {
139
139
  children,
140
140
  title
141
141
  } = this.props;
142
- const bodyCls = cls("".concat(cssClasses.DIALOG, "-body"), {
143
- ["".concat(cssClasses.DIALOG, "-withIcon")]: this.props.icon
142
+ const bodyCls = cls(`${cssClasses.DIALOG}-body`, {
143
+ [`${cssClasses.DIALOG}-withIcon`]: this.props.icon
144
144
  });
145
145
  const closer = this.renderCloseBtn();
146
146
  const icon = this.renderIcon();
147
147
  const hasHeader = title !== null && title !== undefined || 'header' in this.props;
148
148
  return hasHeader ? /*#__PURE__*/React.createElement("div", {
149
149
  className: bodyCls,
150
- id: "".concat(cssClasses.DIALOG, "-body"),
150
+ id: `${cssClasses.DIALOG}-body`,
151
151
  style: bodyStyle,
152
152
  "x-semi-prop": "children"
153
153
  }, children) : /*#__PURE__*/React.createElement("div", {
154
- className: "".concat(cssClasses.DIALOG, "-body-wrapper")
154
+ className: `${cssClasses.DIALOG}-body-wrapper`
155
155
  }, icon, /*#__PURE__*/React.createElement("div", {
156
156
  className: bodyCls,
157
157
  style: bodyStyle,
@@ -163,9 +163,9 @@ export default class ModalContent extends BaseComponent {
163
163
  const props = __rest(this.props, []);
164
164
 
165
165
  const style = {};
166
- const digCls = cls("".concat(cssClasses.DIALOG), {
167
- ["".concat(cssClasses.DIALOG, "-centered")]: props.centered,
168
- ["".concat(cssClasses.DIALOG, "-").concat(props.size)]: props.size
166
+ const digCls = cls(`${cssClasses.DIALOG}`, {
167
+ [`${cssClasses.DIALOG}-centered`]: props.centered,
168
+ [`${cssClasses.DIALOG}-${props.size}`]: props.size
169
169
  });
170
170
 
171
171
  if (props.width) {
@@ -185,7 +185,7 @@ export default class ModalContent extends BaseComponent {
185
185
  const body = this.renderBody();
186
186
  const header = this.renderHeader();
187
187
  const footer = props.footer ? /*#__PURE__*/React.createElement("div", {
188
- className: "".concat(cssClasses.DIALOG, "-footer"),
188
+ className: `${cssClasses.DIALOG}-footer`,
189
189
  "x-semi-prop": "footer"
190
190
  }, props.footer) : null;
191
191
  const dialogElement =
@@ -201,11 +201,11 @@ export default class ModalContent extends BaseComponent {
201
201
  role: "dialog",
202
202
  ref: this.modalDialogRef,
203
203
  "aria-modal": "true",
204
- "aria-labelledby": "".concat(cssClasses.DIALOG, "-title"),
205
- "aria-describedby": "".concat(cssClasses.DIALOG, "-body"),
204
+ "aria-labelledby": `${cssClasses.DIALOG}-title`,
205
+ "aria-describedby": `${cssClasses.DIALOG}-body`,
206
206
  onAnimationEnd: props.onAnimationEnd,
207
- className: cls(["".concat(cssClasses.DIALOG, "-content"), props.contentClassName, {
208
- ["".concat(cssClasses.DIALOG, "-content-fullScreen")]: props.isFullScreen
207
+ className: cls([`${cssClasses.DIALOG}-content`, props.contentClassName, {
208
+ [`${cssClasses.DIALOG}-content-fullScreen`]: props.isFullScreen
209
209
  }])
210
210
  }, header, body, footer)); // return props.visible ? dialogElement : null;
211
211
 
@@ -217,7 +217,7 @@ export default class ModalContent extends BaseComponent {
217
217
  prevFocusElement: FocusTrapHandle.getActiveElement()
218
218
  };
219
219
  this.foundation = new ModalContentFoundation(this.adapter);
220
- this.dialogId = "dialog-".concat(uuid++);
220
+ this.dialogId = `dialog-${uuid++}`;
221
221
  this.modalDialogRef = /*#__PURE__*/React.createRef();
222
222
  }
223
223
 
@@ -328,9 +328,9 @@ export default class ModalContent extends BaseComponent {
328
328
  direction
329
329
  } = this.context;
330
330
  const classList = cls(className, {
331
- ["".concat(cssClasses.DIALOG, "-popup")]: getPopupContainer && !maskFixed,
332
- ["".concat(cssClasses.DIALOG, "-fixed")]: maskFixed,
333
- ["".concat(cssClasses.DIALOG, "-rtl")]: direction === 'rtl'
331
+ [`${cssClasses.DIALOG}-popup`]: getPopupContainer && !maskFixed,
332
+ [`${cssClasses.DIALOG}-fixed`]: maskFixed,
333
+ [`${cssClasses.DIALOG}-rtl`]: direction === 'rtl'
334
334
  });
335
335
  const containerContext = getContainerContext();
336
336
  const elem = /*#__PURE__*/React.createElement("div", {
@@ -338,8 +338,8 @@ export default class ModalContent extends BaseComponent {
338
338
  }, this.getMaskElement(), /*#__PURE__*/React.createElement("div", Object.assign({
339
339
  role: "none",
340
340
  className: cls({
341
- ["".concat(cssClasses.DIALOG, "-wrap")]: true,
342
- ["".concat(cssClasses.DIALOG, "-wrap-center")]: this.props.centered
341
+ [`${cssClasses.DIALOG}-wrap`]: true,
342
+ [`${cssClasses.DIALOG}-wrap-center`]: this.props.centered
343
343
  }),
344
344
  onClick: maskClosable ? this.onMaskClick : null,
345
345
  onMouseUp: maskClosable ? this.onMaskMouseUp : null
@@ -26,7 +26,7 @@ export default function useModal() {
26
26
 
27
27
  let closeFunc;
28
28
  const modal = /*#__PURE__*/React.createElement(HookModal, {
29
- key: "semi-modal-".concat(uuid),
29
+ key: `semi-modal-${uuid}`,
30
30
  config: withFunc(config),
31
31
  ref: modalRef,
32
32
  afterClose: () => {
@@ -31,7 +31,7 @@ export default function CollapseButton(_ref) {
31
31
  }
32
32
 
33
33
  return /*#__PURE__*/React.createElement("div", {
34
- className: "".concat(prefixCls, "-collapse-btn")
34
+ className: `${prefixCls}-collapse-btn`
35
35
  }, isCollapsed ? /*#__PURE__*/React.createElement(Tooltip, {
36
36
  content: finalCollapseText,
37
37
  position: "right"
@@ -53,8 +53,8 @@ export default class NavFooter extends PureComponent {
53
53
  children = this.renderCollapseButton();
54
54
  }
55
55
 
56
- const wrapCls = cls(className, "".concat(cssClasses.PREFIX, "-footer"), {
57
- ["".concat(cssClasses.PREFIX, "-footer-collapsed")]: isCollapsed
56
+ const wrapCls = cls(className, `${cssClasses.PREFIX}-footer`, {
57
+ [`${cssClasses.PREFIX}-footer-collapsed`]: isCollapsed
58
58
  });
59
59
  return /*#__PURE__*/React.createElement("div", {
60
60
  className: wrapCls,
@@ -28,18 +28,18 @@ export default class NavHeader extends PureComponent {
28
28
  const {
29
29
  isCollapsed
30
30
  } = this.context;
31
- const wrapCls = cls(className, "".concat(cssClasses.PREFIX, "-header"), {
32
- ["".concat(cssClasses.PREFIX, "-header-collapsed")]: isCollapsed
31
+ const wrapCls = cls(className, `${cssClasses.PREFIX}-header`, {
32
+ [`${cssClasses.PREFIX}-header-collapsed`]: isCollapsed
33
33
  });
34
34
  let wrappedChildren = /*#__PURE__*/React.createElement(React.Fragment, null, logo ? /*#__PURE__*/React.createElement("i", {
35
- className: "".concat(cssClasses.PREFIX, "-header-logo")
35
+ className: `${cssClasses.PREFIX}-header-logo`
36
36
  }, this.renderLogo(logo)) : null, !isNullOrUndefined(text) && !isCollapsed ? /*#__PURE__*/React.createElement("span", {
37
- className: "".concat(cssClasses.PREFIX, "-header-text")
37
+ className: `${cssClasses.PREFIX}-header-text`
38
38
  }, text) : null, children);
39
39
 
40
40
  if (typeof link === 'string') {
41
41
  wrappedChildren = /*#__PURE__*/React.createElement("a", Object.assign({
42
- className: "".concat(prefixCls, "-header-link"),
42
+ className: `${prefixCls}-header-link`,
43
43
  href: link
44
44
  }, linkOptions), wrappedChildren);
45
45
  }
@@ -19,6 +19,9 @@ export interface NavItemProps extends ItemProps, BaseProps {
19
19
  onClick?(clickItems: SelectedData): void;
20
20
  onMouseEnter?: React.MouseEventHandler<HTMLLIElement>;
21
21
  onMouseLeave?: React.MouseEventHandler<HTMLLIElement>;
22
+ selected?: boolean;
23
+ mode?: string;
24
+ isInSubNav?: boolean;
22
25
  }
23
26
  export interface SelectedData extends SelectedItemProps<NavItemProps> {
24
27
  text?: React.ReactNode;
@@ -1,3 +1,4 @@
1
+ import _isUndefined from "lodash/isUndefined";
1
2
  import _times from "lodash/times";
2
3
  import _noop from "lodash/noop";
3
4
 
@@ -15,7 +16,7 @@ import { cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/navigation
15
16
  import Tooltip from '../tooltip';
16
17
  import NavContext from './nav-context';
17
18
  import Dropdown from '../dropdown';
18
- const clsPrefix = "".concat(cssClasses.PREFIX, "-item");
19
+ const clsPrefix = `${cssClasses.PREFIX}-item`;
19
20
  export default class NavItem extends BaseComponent {
20
21
  constructor(props) {
21
22
  super(props);
@@ -107,11 +108,15 @@ export default class NavItem extends BaseComponent {
107
108
  let isToggleIcon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
108
109
  let key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
109
110
 
111
+ var _a;
112
+
113
+ const mode = (_a = this.props.mode) !== null && _a !== void 0 ? _a : this.context.mode;
114
+
110
115
  if (this.props.isSubNav) {
111
116
  return null;
112
117
  }
113
118
 
114
- if (!icon && this.context.mode === strings.MODE_HORIZONTAL) {
119
+ if (!icon && mode === strings.MODE_HORIZONTAL) {
115
120
  return null;
116
121
  }
117
122
 
@@ -121,9 +126,9 @@ export default class NavItem extends BaseComponent {
121
126
  iconSize = 'default';
122
127
  }
123
128
 
124
- const className = cls("".concat(clsPrefix, "-icon"), {
125
- ["".concat(clsPrefix, "-icon-toggle-").concat(this.context.toggleIconPosition)]: isToggleIcon,
126
- ["".concat(clsPrefix, "-icon-info")]: !isToggleIcon
129
+ const className = cls(`${clsPrefix}-icon`, {
130
+ [`${clsPrefix}-icon-toggle-${this.context.toggleIconPosition}`]: isToggleIcon,
131
+ [`${clsPrefix}-icon-info`]: !isToggleIcon
127
132
  });
128
133
  return /*#__PURE__*/React.createElement("i", {
129
134
  className: className,
@@ -149,16 +154,21 @@ export default class NavItem extends BaseComponent {
149
154
  linkOptions,
150
155
  disabled,
151
156
  level = 0,
152
- tabIndex
157
+ tabIndex,
158
+ selected: selectedInProps,
159
+ isInSubNav: isInSubNavInProps,
160
+ mode: modeInProps
153
161
  } = this.props;
154
162
  const {
155
- mode,
156
- isInSubNav,
163
+ mode: modeInContext,
164
+ isInSubNav: isInSubNavInContext,
157
165
  prefixCls,
158
166
  limitIndent
159
167
  } = this.context;
160
168
  const isCollapsed = this.adapter.getIsCollapsed();
161
- const selected = this.adapter.getSelected();
169
+ const selected = selectedInProps !== null && selectedInProps !== void 0 ? selectedInProps : this.adapter.getSelected();
170
+ const isInSubNav = isInSubNavInProps !== null && isInSubNavInProps !== void 0 ? isInSubNavInProps : isInSubNavInContext;
171
+ const mode = modeInProps !== null && modeInProps !== void 0 ? modeInProps : modeInContext;
162
172
  let itemChildren = null;
163
173
 
164
174
  if (!isNullOrUndefined(children)) {
@@ -172,13 +182,13 @@ export default class NavItem extends BaseComponent {
172
182
  }
173
183
 
174
184
  itemChildren = /*#__PURE__*/React.createElement(React.Fragment, null, placeholderIcons, this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIcon, strings.ICON_POS_RIGHT, true, 'key-toggle-pos-right'), icon || indent || isInSubNav ? this.renderIcon(icon, strings.ICON_POS_LEFT, false, 'key-position-left') : null, !isNullOrUndefined(text) ? /*#__PURE__*/React.createElement("span", {
175
- className: "".concat(cssClasses.PREFIX, "-item-text")
185
+ className: `${cssClasses.PREFIX}-item-text`
176
186
  }, text) : '', this.context.toggleIconPosition === strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIcon, strings.ICON_POS_RIGHT, true, 'key-toggle-pos-right'));
177
187
  }
178
188
 
179
189
  if (typeof link === 'string') {
180
190
  itemChildren = /*#__PURE__*/React.createElement("a", Object.assign({
181
- className: "".concat(prefixCls, "-item-link"),
191
+ className: `${prefixCls}-item-link`,
182
192
  href: link,
183
193
  tabIndex: -1
184
194
  }, linkOptions), itemChildren);
@@ -189,10 +199,10 @@ export default class NavItem extends BaseComponent {
189
199
  if (isInSubNav && (isCollapsed || mode === strings.MODE_HORIZONTAL)) {
190
200
  const popoverItemCls = cls({
191
201
  [clsPrefix]: true,
192
- ["".concat(clsPrefix, "-sub")]: isSubNav,
193
- ["".concat(clsPrefix, "-selected")]: selected,
194
- ["".concat(clsPrefix, "-collapsed")]: isCollapsed,
195
- ["".concat(clsPrefix, "-disabled")]: disabled
202
+ [`${clsPrefix}-sub`]: isSubNav,
203
+ [`${clsPrefix}-selected`]: selected,
204
+ [`${clsPrefix}-collapsed`]: isCollapsed,
205
+ [`${clsPrefix}-disabled`]: disabled
196
206
  });
197
207
  itemDom = /*#__PURE__*/React.createElement(Dropdown.Item, {
198
208
  selected: selected,
@@ -207,13 +217,17 @@ export default class NavItem extends BaseComponent {
207
217
  }, itemChildren);
208
218
  } else {
209
219
  // Items are divided into normal and sub-wrap
210
- const popoverItemCls = cls("".concat(className || "".concat(clsPrefix, "-normal")), {
220
+ const isFirstLayer = !_isUndefined(isInSubNavInProps) && !isInSubNavInProps || _isUndefined(isInSubNavInProps) && _isUndefined(isInSubNavInContext);
221
+
222
+ const popoverItemCls = cls(`${className || `${clsPrefix}-normal`}`, {
211
223
  [clsPrefix]: true,
212
- ["".concat(clsPrefix, "-sub")]: isSubNav,
213
- ["".concat(clsPrefix, "-selected")]: selected && !isSubNav,
214
- ["".concat(clsPrefix, "-collapsed")]: isCollapsed,
215
- ["".concat(clsPrefix, "-disabled")]: disabled,
216
- ["".concat(clsPrefix, "-has-link")]: typeof link === 'string'
224
+ [`${clsPrefix}-sub`]: isSubNav,
225
+ [`${clsPrefix}-selected`]: selected && !isSubNav,
226
+ [`${clsPrefix}-collapsed`]: isCollapsed,
227
+ [`${clsPrefix}-disabled`]: disabled,
228
+ [`${clsPrefix}-has-link`]: typeof link === 'string',
229
+ [`${cssClasses.PREFIX}-first-layer`]: isFirstLayer,
230
+ [`${clsPrefix}-horizontal`]: modeInProps === strings.MODE_HORIZONTAL
217
231
  });
218
232
  const ariaProps = {
219
233
  'aria-disabled': disabled
@@ -22,6 +22,8 @@ export interface SubNavProps extends BaseProps {
22
22
  onMouseLeave?: React.MouseEventHandler<HTMLLIElement>;
23
23
  text?: React.ReactNode;
24
24
  toggleIcon?: ToggleIcon;
25
+ active?: boolean;
26
+ mode?: string;
25
27
  }
26
28
  export interface SubNavState {
27
29
  isHovered: boolean;
@@ -70,6 +72,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
70
72
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
71
73
  disabled: PropTypes.Requireable<boolean>;
72
74
  level: PropTypes.Requireable<number>;
75
+ active: PropTypes.Requireable<boolean>;
73
76
  };
74
77
  static defaultProps: {
75
78
  level: number;
@@ -82,6 +85,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
82
85
  closed: JSX.Element;
83
86
  };
84
87
  disabled: boolean;
88
+ active: boolean;
85
89
  };
86
90
  titleRef: React.RefObject<HTMLDivElement>;
87
91
  itemRef: React.RefObject<HTMLLIElement>;
@@ -113,23 +113,30 @@ export default class SubNav extends BaseComponent {
113
113
  renderIcon(icon, pos, withTransition) {
114
114
  let isToggleIcon = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
115
115
  let key = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
116
+
117
+ var _a;
118
+
116
119
  const {
117
- prefixCls
120
+ prefixCls = cssClasses.PREFIX
118
121
  } = this.context;
122
+ const {
123
+ isOpen: isOpenInProps
124
+ } = this.props;
119
125
  let iconSize = 'large';
120
126
 
121
127
  if (pos === strings.ICON_POS_RIGHT) {
122
128
  iconSize = 'default';
123
129
  }
124
130
 
125
- const className = cls("".concat(prefixCls, "-item-icon"), {
126
- ["".concat(prefixCls, "-item-icon-toggle-").concat(this.context.toggleIconPosition)]: isToggleIcon,
127
- ["".concat(prefixCls, "-item-icon-info")]: !isToggleIcon
131
+ const isOpen = isOpenInProps ? isOpenInProps : this.adapter.getIsOpen();
132
+ const className = cls(`${prefixCls}-item-icon`, {
133
+ [`${prefixCls}-item-icon-toggle-${(_a = this.context.toggleIconPosition) !== null && _a !== void 0 ? _a : 'right'}`]: isToggleIcon,
134
+ [`${prefixCls}-item-icon-info`]: !isToggleIcon,
135
+ [`${prefixCls}-icon-rotate-${isOpen ? "180" : "0"}-no-transition`]: !withTransition && isToggleIcon
128
136
  });
129
- const isOpen = this.adapter.getIsOpen();
130
137
  const iconElem = /*#__PURE__*/React.isValidElement(icon) ? withTransition ? /*#__PURE__*/React.createElement(CSSAnimation, {
131
138
  animationState: isOpen ? "enter" : "leave",
132
- startClassName: "".concat(cssClasses.PREFIX, "-icon-rotate-").concat(isOpen ? "180" : "0")
139
+ startClassName: `${prefixCls}-icon-rotate-${isOpen ? "180" : "0"}`
133
140
  }, _ref => {
134
141
  let {
135
142
  animationClassName
@@ -156,20 +163,25 @@ export default class SubNav extends BaseComponent {
156
163
  itemKey,
157
164
  indent,
158
165
  disabled,
159
- level
166
+ level,
167
+ active,
168
+ mode: modeInProps
160
169
  } = this.props;
161
170
  const {
162
- mode,
171
+ mode: modeInContext,
163
172
  isInSubNav,
164
173
  isCollapsed,
165
- prefixCls,
174
+ prefixCls = cssClasses.PREFIX,
166
175
  subNavMotion,
167
176
  limitIndent
168
177
  } = this.context;
178
+ const mode = modeInProps !== null && modeInProps !== void 0 ? modeInProps : modeInContext;
169
179
  const isOpen = this.adapter.getIsOpen();
170
- const titleCls = cls("".concat(prefixCls, "-sub-title"), {
171
- ["".concat(prefixCls, "-sub-title-selected")]: this.adapter.getIsSelected(itemKey),
172
- ["".concat(prefixCls, "-sub-title-disabled")]: disabled
180
+ const titleCls = cls(`${prefixCls}-sub-title`, {
181
+ [`${prefixCls}-sub-title-selected`]: active ? active : this.adapter.getIsSelected(itemKey),
182
+ [`${prefixCls}-sub-title-disabled`]: disabled,
183
+ [`${prefixCls}-first-layer`]: !isInSubNav,
184
+ [`${prefixCls}-sub-title-horizontal`]: mode === strings.MODE_HORIZONTAL
173
185
  });
174
186
  let withTransition = false;
175
187
  let toggleIconType = '';
@@ -210,6 +222,7 @@ export default class SubNav extends BaseComponent {
210
222
  }
211
223
 
212
224
  const isIconChevronRightShow = !isCollapsed && isInSubNav && mode === strings.MODE_HORIZONTAL || isCollapsed && isInSubNav;
225
+ const toggleIconPositionLeft = this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT;
213
226
  const titleDiv = /*#__PURE__*/React.createElement("div", {
214
227
  role: "menuitem",
215
228
  // to avoid nested horizontal navigation be focused
@@ -220,29 +233,32 @@ export default class SubNav extends BaseComponent {
220
233
  onKeyPress: this.handleKeyPress,
221
234
  "aria-expanded": isOpen ? 'true' : 'false'
222
235
  }, /*#__PURE__*/React.createElement("div", {
223
- className: "".concat(prefixCls, "-item-inner")
224
- }, placeholderIcons, this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== strings.MODE_HORIZONTAL ? this.renderIcon(icon, strings.ICON_POS_LEFT, false, false, 'key-inSubNav-position-left') : null, /*#__PURE__*/React.createElement("span", {
225
- className: "".concat(prefixCls, "-item-text")
226
- }, text), this.context.toggleIconPosition === strings.TOGGLE_ICON_RIGHT && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-right')));
236
+ className: `${prefixCls}-item-inner`
237
+ }, placeholderIcons, toggleIconPositionLeft && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== strings.MODE_HORIZONTAL ? this.renderIcon(icon, strings.ICON_POS_LEFT, false, false, 'key-inSubNav-position-left') : null, /*#__PURE__*/React.createElement("span", {
238
+ className: `${prefixCls}-item-text`
239
+ }, text), !toggleIconPositionLeft && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-right')));
227
240
  return titleDiv;
228
241
  }
229
242
 
230
243
  renderSubUl() {
231
244
  const {
232
245
  children,
233
- maxHeight
246
+ maxHeight,
247
+ isOpen: isOpenInProps,
248
+ mode: modeInProps
234
249
  } = this.props;
235
250
  const {
236
251
  isCollapsed,
237
- mode,
252
+ mode: modeInContext,
238
253
  subNavMotion,
239
- prefixCls
254
+ prefixCls = cssClasses.PREFIX
240
255
  } = this.context;
241
- const isOpen = this.adapter.getIsOpen();
256
+ const isOpen = isOpenInProps ? isOpenInProps : this.adapter.getIsOpen();
257
+ const mode = modeInProps !== null && modeInProps !== void 0 ? modeInProps : modeInContext;
242
258
  const isHorizontal = mode === strings.MODE_HORIZONTAL;
243
- const subNavCls = cls("".concat(prefixCls, "-sub"), {
244
- ["".concat(prefixCls, "-sub-open")]: isOpen,
245
- ["".concat(prefixCls, "-sub-popover")]: isCollapsed || isHorizontal
259
+ const subNavCls = cls(`${prefixCls}-sub`, {
260
+ [`${prefixCls}-sub-open`]: isOpen,
261
+ [`${prefixCls}-sub-popover`]: isCollapsed || isHorizontal
246
262
  });
247
263
  const ulWithMotion = /*#__PURE__*/React.createElement(Collapsible, {
248
264
  motion: subNavMotion,
@@ -264,21 +280,23 @@ export default class SubNav extends BaseComponent {
264
280
  const {
265
281
  children,
266
282
  dropdownStyle,
267
- disabled
283
+ disabled,
284
+ mode: modeInProps
268
285
  } = this.props;
269
286
  const {
270
- mode,
287
+ mode: modeInContext,
271
288
  isInSubNav,
272
289
  isCollapsed,
273
290
  subNavCloseDelay,
274
291
  subNavOpenDelay,
275
- prefixCls,
292
+ prefixCls = cssClasses.PREFIX,
276
293
  getPopupContainer
277
294
  } = this.context;
295
+ const mode = modeInProps !== null && modeInProps !== void 0 ? modeInProps : modeInContext;
278
296
  const isOpen = this.adapter.getIsOpen();
279
297
  const openKeysIsControlled = this.adapter.getOpenKeysIsControlled();
280
298
  const subNavCls = cls({
281
- ["".concat(prefixCls, "-popover")]: isCollapsed
299
+ [`${prefixCls}-popover`]: isCollapsed
282
300
  });
283
301
  const dropdownProps = {
284
302
  trigger: 'hover',
@@ -316,13 +334,15 @@ export default class SubNav extends BaseComponent {
316
334
  onMouseEnter,
317
335
  onMouseLeave,
318
336
  disabled,
319
- text
337
+ text,
338
+ mode: modeInProps
320
339
  } = this.props;
321
340
  const {
322
- mode,
341
+ mode: modeInContext,
323
342
  isCollapsed,
324
- prefixCls
343
+ prefixCls = cssClasses.PREFIX
325
344
  } = this.context;
345
+ const mode = modeInProps !== null && modeInProps !== void 0 ? modeInProps : modeInContext;
326
346
  let titleDiv = this.renderTitleDiv();
327
347
  const subUl = this.renderSubUl(); // When mode=horizontal, it is displayed in Dropdown
328
348
 
@@ -336,13 +356,15 @@ export default class SubNav extends BaseComponent {
336
356
  itemKey: itemKey,
337
357
  forwardRef: this.setItemRef,
338
358
  isCollapsed: isCollapsed,
339
- className: "".concat(prefixCls, "-sub-wrap"),
359
+ className: `${prefixCls}-sub-wrap`,
340
360
  onMouseEnter: onMouseEnter,
341
361
  onMouseLeave: onMouseLeave,
342
362
  disabled: disabled,
343
- text: text
363
+ text: text,
364
+ mode: mode
344
365
  }, /*#__PURE__*/React.createElement(NavContext.Provider, {
345
366
  value: Object.assign(Object.assign({}, this.context), {
367
+ mode: mode,
346
368
  isInSubNav: true
347
369
  })
348
370
  }, titleDiv, subUl));
@@ -403,7 +425,8 @@ SubNav.propTypes = {
403
425
  onMouseLeave: PropTypes.func,
404
426
  // Is it disabled
405
427
  disabled: PropTypes.bool,
406
- level: PropTypes.number
428
+ level: PropTypes.number,
429
+ active: PropTypes.bool
407
430
  };
408
431
  SubNav.defaultProps = {
409
432
  level: 0,
@@ -419,5 +442,6 @@ SubNav.defaultProps = {
419
442
  "aria-hidden": true
420
443
  })
421
444
  },
422
- disabled: false
445
+ disabled: false,
446
+ active: false
423
447
  };