|
@@ -15,6 +15,7 @@ import NavContext from './nav-context';
|
|
import LocaleConsumer from '../locale/localeConsumer';
|
|
import LocaleConsumer from '../locale/localeConsumer';
|
|
import '@douyinfe/semi-foundation/navigation/navigation.scss';
|
|
import '@douyinfe/semi-foundation/navigation/navigation.scss';
|
|
import { getDefaultPropsFromGlobalConfig } from "../_utils";
|
|
import { getDefaultPropsFromGlobalConfig } from "../_utils";
|
|
|
|
+import { DropdownProps } from '../dropdown';
|
|
|
|
|
|
export type { CollapseButtonProps } from './CollapseButton';
|
|
export type { CollapseButtonProps } from './CollapseButton';
|
|
export type { NavFooterProps } from './Footer';
|
|
export type { NavFooterProps } from './Footer';
|
|
@@ -43,10 +44,11 @@ export type NavItems = (string | SubNavPropsWithItems | NavItemPropsWithItems)[]
|
|
export interface NavProps extends BaseProps {
|
|
export interface NavProps extends BaseProps {
|
|
bodyStyle?: React.CSSProperties;
|
|
bodyStyle?: React.CSSProperties;
|
|
children?: React.ReactNode;
|
|
children?: React.ReactNode;
|
|
-
|
|
|
|
|
|
+
|
|
defaultIsCollapsed?: boolean;
|
|
defaultIsCollapsed?: boolean;
|
|
defaultOpenKeys?: React.ReactText[];
|
|
defaultOpenKeys?: React.ReactText[];
|
|
defaultSelectedKeys?: React.ReactText[];
|
|
defaultSelectedKeys?: React.ReactText[];
|
|
|
|
+ subDropdownProps?: DropdownProps;
|
|
expandIcon?: React.ReactNode;
|
|
expandIcon?: React.ReactNode;
|
|
footer?: React.ReactNode | NavFooterProps;
|
|
footer?: React.ReactNode | NavFooterProps;
|
|
header?: React.ReactNode | NavHeaderProps;
|
|
header?: React.ReactNode | NavHeaderProps;
|
|
@@ -70,7 +72,7 @@ export interface NavProps extends BaseProps {
|
|
onDeselect?: (data?: any) => void;
|
|
onDeselect?: (data?: any) => void;
|
|
onOpenChange?: (data: { itemKey?: ItemKey; openKeys?: ItemKey[]; domEvent?: MouseEvent; isOpen?: boolean }) => void;
|
|
onOpenChange?: (data: { itemKey?: ItemKey; openKeys?: ItemKey[]; domEvent?: MouseEvent; isOpen?: boolean }) => void;
|
|
onSelect?: (data: OnSelectedData) => void;
|
|
onSelect?: (data: OnSelectedData) => void;
|
|
- renderWrapper?: ({ itemElement, isSubNav, isInSubNav, props }: { itemElement: ReactElement;isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps }) => ReactNode
|
|
|
|
|
|
+ renderWrapper?: ({ itemElement, isSubNav, isInSubNav, props }: { itemElement: ReactElement; isInSubNav: boolean; isSubNav: boolean; props: NavItemProps | SubNavProps }) => ReactNode
|
|
}
|
|
}
|
|
|
|
|
|
export interface NavState {
|
|
export interface NavState {
|
|
@@ -270,7 +272,7 @@ class Nav extends BaseComponent<NavProps, NavState> {
|
|
* @returns {JSX.Element}
|
|
* @returns {JSX.Element}
|
|
*/
|
|
*/
|
|
renderItems(items: (SubNavPropsWithItems | NavItemPropsWithItems)[] = [], level = 0) {
|
|
renderItems(items: (SubNavPropsWithItems | NavItemPropsWithItems)[] = [], level = 0) {
|
|
- const { expandIcon } = this.props;
|
|
|
|
|
|
+ const { expandIcon, subDropdownProps } = this.props;
|
|
const finalDom = (
|
|
const finalDom = (
|
|
<>
|
|
<>
|
|
{items.map((item, idx) => {
|
|
{items.map((item, idx) => {
|
|
@@ -281,6 +283,7 @@ class Nav extends BaseComponent<NavProps, NavState> {
|
|
{...item as SubNavPropsWithItems}
|
|
{...item as SubNavPropsWithItems}
|
|
level={level}
|
|
level={level}
|
|
expandIcon={expandIcon}
|
|
expandIcon={expandIcon}
|
|
|
|
+ subDropdownProps={subDropdownProps}
|
|
>
|
|
>
|
|
{this.renderItems(item.items as (SubNavPropsWithItems | NavItemPropsWithItems)[], level + 1)}
|
|
{this.renderItems(item.items as (SubNavPropsWithItems | NavItemPropsWithItems)[], level + 1)}
|
|
</SubNav>
|
|
</SubNav>
|