17
app/components/ExtendedDropdown/ExtendedDropdown.js
Executable file
17
app/components/ExtendedDropdown/ExtendedDropdown.js
Executable file
@@ -0,0 +1,17 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import classNames from 'classnames';
|
||||
import { DropdownMenu } from 'reactstrap';
|
||||
|
||||
export const ExtendedDropdown = ({ className, ...otherProps }) => {
|
||||
const classes = classNames(
|
||||
className,
|
||||
'extended-dropdown'
|
||||
);
|
||||
return (
|
||||
<DropdownMenu className={ classes } { ...otherProps } />
|
||||
);
|
||||
}
|
||||
ExtendedDropdown.propTypes = {
|
||||
className: PropTypes.string,
|
||||
};
|
23
app/components/ExtendedDropdown/ExtendedDropdownLink.js
Executable file
23
app/components/ExtendedDropdown/ExtendedDropdownLink.js
Executable file
@@ -0,0 +1,23 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { DropdownContext } from 'reactstrap/es/DropdownContext';
|
||||
|
||||
const ExtendedDropdownLink = (props) => {
|
||||
const { children, ...otherProps } = props;
|
||||
|
||||
return (
|
||||
<DropdownContext.Consumer>
|
||||
{
|
||||
({ toggle }) => (
|
||||
<Link { ...otherProps } onClick={ () => { toggle(); } }>
|
||||
{ children }
|
||||
</Link>
|
||||
)
|
||||
}
|
||||
</DropdownContext.Consumer>
|
||||
);
|
||||
};
|
||||
ExtendedDropdownLink.propTypes = { ...Link.propTypes };
|
||||
ExtendedDropdownLink.defaultProps = { ...Link.defaultProps };
|
||||
|
||||
export { ExtendedDropdownLink };
|
30
app/components/ExtendedDropdown/ExtendedDropdownSection.js
Executable file
30
app/components/ExtendedDropdown/ExtendedDropdownSection.js
Executable file
@@ -0,0 +1,30 @@
|
||||
import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import classNames from 'classnames';
|
||||
|
||||
const ExtendedDropdownSection = (props) => {
|
||||
const { children, list, className, tag, ...otherProps } = props;
|
||||
const sectionClass = classNames(
|
||||
"extended-dropdown__section", className, {
|
||||
"extended-dropdown__section--list": list
|
||||
}
|
||||
);
|
||||
const Tag = tag;
|
||||
|
||||
return (
|
||||
<Tag className={ sectionClass } { ...otherProps }>
|
||||
{ children }
|
||||
</Tag>
|
||||
);
|
||||
};
|
||||
ExtendedDropdownSection.propTypes = {
|
||||
children: PropTypes.node,
|
||||
list: PropTypes.bool,
|
||||
className: PropTypes.string,
|
||||
tag: PropTypes.oneOfType([PropTypes.string, PropTypes.func])
|
||||
};
|
||||
ExtendedDropdownSection.defaultProps = {
|
||||
tag: "div"
|
||||
};
|
||||
|
||||
export { ExtendedDropdownSection };
|
8
app/components/ExtendedDropdown/index.js
Executable file
8
app/components/ExtendedDropdown/index.js
Executable file
@@ -0,0 +1,8 @@
|
||||
import { ExtendedDropdown } from './ExtendedDropdown';
|
||||
import { ExtendedDropdownSection } from './ExtendedDropdownSection';
|
||||
import { ExtendedDropdownLink } from './ExtendedDropdownLink';
|
||||
|
||||
ExtendedDropdown.Section = ExtendedDropdownSection;
|
||||
ExtendedDropdown.Link = ExtendedDropdownLink;
|
||||
|
||||
export default ExtendedDropdown;
|
Reference in New Issue
Block a user