Add prop ButtonComponent (#36)

*  Add prop buttonComponent

Allow users to use their own button component

* 🐛 Make it work as expected

* 📝 Add ButtonComponent to the Props table

* ✏️ Capitalize ButtonComponent in index.d.ts
This commit is contained in:
Charles-Henri GUERIN
2019-02-26 13:23:17 +01:00
committed by Rick van Lieshout
parent 0a5e4ea440
commit ee24754fc8
5 changed files with 381 additions and 43 deletions

1
src/index.d.ts vendored
View File

@@ -23,6 +23,7 @@ export interface CookieConsentProps {
acceptOnScrollPercentage?: number;
extraCookieOptions?: object;
disableButtonStyles ?: boolean;
ButtonComponent?: Function | React.ReactElement;
}
export default class CookieConsent extends React.Component<CookieConsentProps, {}> {}

View File

@@ -121,7 +121,8 @@ class CookieConsent extends Component {
contentClasses,
buttonClasses,
buttonId,
disableButtonStyles
disableButtonStyles,
ButtonComponent
} = this.props;
let myStyle = {};
@@ -165,7 +166,7 @@ class CookieConsent extends Component {
<div style={myContentStyle} className={contentClasses}>
{this.props.children}
</div>
<button
<ButtonComponent
style={myButtonStyle}
className={buttonClasses}
id={buttonId}
@@ -174,7 +175,7 @@ class CookieConsent extends Component {
}}
>
{buttonText}
</button>
</ButtonComponent>
</div>
);
}
@@ -209,7 +210,11 @@ CookieConsent.propTypes = {
acceptOnScroll: PropTypes.bool,
acceptOnScrollPercentage: PropTypes.number,
extraCookieOptions: PropTypes.object,
disableButtonStyles: PropTypes.bool
disableButtonStyles: PropTypes.bool,
ButtonComponent: PropTypes.oneOfType([
PropTypes.func,
PropTypes.element
]),
};
CookieConsent.defaultProps = {
@@ -229,7 +234,8 @@ CookieConsent.defaultProps = {
buttonClasses: "",
buttonId: "",
extraCookieOptions: {},
disableButtonStyles: false
disableButtonStyles: false,
ButtonComponent: ({ children, ...props }) => <button {...props}>{children}</button>,
};
export default CookieConsent;