|
@@ -1,38 +1,52 @@
|
|
|
import React, { useState } from 'react';
|
|
import React, { useState } from 'react';
|
|
|
import PropTypes from 'prop-types';
|
|
import PropTypes from 'prop-types';
|
|
|
|
|
|
|
|
-import CustomNav from './CustomNav';
|
|
|
|
|
|
|
+import CustomNav, { CustomNavTab, CustomNavDropdown } from './CustomNav';
|
|
|
import CustomTabContent from './CustomTabContent';
|
|
import CustomTabContent from './CustomTabContent';
|
|
|
|
|
|
|
|
-const CustomNavigation = (props) => {
|
|
|
|
|
|
|
+
|
|
|
|
|
+const CustomNavAndContents = (props) => {
|
|
|
const {
|
|
const {
|
|
|
- navTabMapping, defaultTabIndex, tabContentClasses, breakpointToHideInactiveTabsDown,
|
|
|
|
|
|
|
+ navTabMapping, defaultTabIndex, navigationMode, tabContentClasses, breakpointToHideInactiveTabsDown,
|
|
|
} = props;
|
|
} = props;
|
|
|
const [activeTab, setActiveTab] = useState(Object.keys(props.navTabMapping)[defaultTabIndex || 0]);
|
|
const [activeTab, setActiveTab] = useState(Object.keys(props.navTabMapping)[defaultTabIndex || 0]);
|
|
|
|
|
|
|
|
- return (
|
|
|
|
|
- <React.Fragment>
|
|
|
|
|
|
|
+ let SelectedNav;
|
|
|
|
|
+ switch (navigationMode) {
|
|
|
|
|
+ case 'tab':
|
|
|
|
|
+ SelectedNav = CustomNavTab;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'dropdown':
|
|
|
|
|
+ SelectedNav = CustomNavDropdown;
|
|
|
|
|
+ break;
|
|
|
|
|
+ case 'both':
|
|
|
|
|
+ SelectedNav = CustomNav;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- <CustomNav
|
|
|
|
|
|
|
+ return (
|
|
|
|
|
+ <>
|
|
|
|
|
+ <SelectedNav
|
|
|
activeTab={activeTab}
|
|
activeTab={activeTab}
|
|
|
navTabMapping={navTabMapping}
|
|
navTabMapping={navTabMapping}
|
|
|
onNavSelected={setActiveTab}
|
|
onNavSelected={setActiveTab}
|
|
|
breakpointToHideInactiveTabsDown={breakpointToHideInactiveTabsDown}
|
|
breakpointToHideInactiveTabsDown={breakpointToHideInactiveTabsDown}
|
|
|
/>
|
|
/>
|
|
|
<CustomTabContent activeTab={activeTab} navTabMapping={navTabMapping} additionalClassNames={tabContentClasses} />
|
|
<CustomTabContent activeTab={activeTab} navTabMapping={navTabMapping} additionalClassNames={tabContentClasses} />
|
|
|
-
|
|
|
|
|
- </React.Fragment>
|
|
|
|
|
|
|
+ </>
|
|
|
);
|
|
);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-CustomNavigation.propTypes = {
|
|
|
|
|
|
|
+CustomNavAndContents.propTypes = {
|
|
|
navTabMapping: PropTypes.object.isRequired,
|
|
navTabMapping: PropTypes.object.isRequired,
|
|
|
defaultTabIndex: PropTypes.number,
|
|
defaultTabIndex: PropTypes.number,
|
|
|
|
|
+ navigationMode: PropTypes.oneOf(['both', 'tab', 'dropdown']),
|
|
|
tabContentClasses: PropTypes.arrayOf(PropTypes.string),
|
|
tabContentClasses: PropTypes.arrayOf(PropTypes.string),
|
|
|
breakpointToHideInactiveTabsDown: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
|
|
breakpointToHideInactiveTabsDown: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl']),
|
|
|
};
|
|
};
|
|
|
-CustomNavigation.defaultProps = {
|
|
|
|
|
|
|
+CustomNavAndContents.defaultProps = {
|
|
|
|
|
+ navigationMode: 'tab',
|
|
|
tabContentClasses: ['p-4'],
|
|
tabContentClasses: ['p-4'],
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
-export default CustomNavigation;
|
|
|
|
|
|
|
+export default CustomNavAndContents;
|