From d05509bf04a61c0f582939fecf982ef07955f612 Mon Sep 17 00:00:00 2001 From: Oskar Filipowicz Date: Tue, 26 Jul 2022 14:43:44 +0200 Subject: [PATCH] added customButtonWrapperAttributes prop (#167) * added customButtonWrapperAttributes prop * escape characters in README --- CHANGELOG.md | 4 +++ README.md | 97 +++++++++++++++++++++++++------------------------- src/index.d.ts | 1 + src/index.js | 5 ++- 4 files changed, 58 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d24e8d3..fa6dc18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [next] + +- Added `customButtonWrapperAttributes` prop which allows to add custom attributes to the button wrapper div + ## [[7.5.0]](https://github.com/Mastermindzh/react-cookie-consent/releases/tag/7.5.0) - Added `customDeclineButtonProps` to add custom properties to the decline button diff --git a/README.md b/README.md index 3bd6c05..f56b422 100644 --- a/README.md +++ b/README.md @@ -137,54 +137,55 @@ That option would be interesting if you want to allow user to change their conse ## Props -| Prop | Type | Default value | Description | -| ------------------------- | :-----------------------------------------: | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | -| location | string, "top", "bottom" or "none" | "bottom" | Syntactic sugar to easily enable you to place the bar at the top or the bottom of the browser window. Use "none" to disable. | -| visible | string, "show", "hidden" or "byCookieValue" | "byCookieValue" | Force the consent bar visibility. If "byCookieValue", visibility are defined by cookie consent existence. | -| children | string or React component | | Content to appear inside the bar | -| disableStyles | boolean | false | If enabled the component will have no default style. (you can still supply style through props) | -| hideOnAccept | boolean | true | If disabled the component will not hide it self after the accept button has been clicked. You will need to hide yourself (see onAccept) | -| buttonText | string or React component | "I understand" | Text to appear on the button | -| declineButtonText | string or React component | "I decline" | Text to appear on the decline button | -| cookieName | string | "CookieConsent" | Name of the cookie used to track whether the user has agreed. | -| cookieValue | string or boolean or number | true | Value to be saved under the cookieName. | -| declineCookieValue | string or boolean or number | false | Value to be saved under the cookieName when declined. | -| setDeclineCookie | boolean | true | Whether to set a cookie when the user clicks "decline" | -| onAccept | function | `() => {}` | Function to be called after the accept button has been clicked. | -| onDecline | function | `() => {}` | Function to be called after the decline button has been clicked. | -| debug | boolean | undefined | Bar will be drawn regardless of cookie for debugging purposes. | -| expires | number | 365 | Number of days before the cookie expires. | -| extraCookieOptions | object | `{}` | Extra info (apart from expiry date) to add to the cookie | -| overlay | boolean | false | Whether to show a page obscuring overlay or not. | -| containerClasses | string | "" | CSS classes to apply to the surrounding container | -| buttonClasses | string | "" | CSS classes to apply to the button | -| buttonWrapperClasses | string | "" | CSS classes to apply to the div wrapping the buttons | -| declineButtonClasses | string | "" | CSS classes to apply to the decline button | -| buttonId | string | "" | Id to apply to the button | -| declineButtonId | string | "" | Id to apply to the decline button | -| contentClasses | string | "" | CSS classes to apply to the content | -| overlayClasses | string | "" | CSS classes to apply to the surrounding overlay | -| style | object | [look at source][style] | React styling object for the bar. | -| buttonStyle | object | [look at source][buttonstyle] | React styling object for the button. | -| declineButtonStyle | object | [look at source][declinebuttonstyle] | React styling object for the decline button. | -| contentStyle | object | [look at source][contentstyle] | React styling object for the content. | -| overlayStyle | object | [look at source][overlaystyle] | React styling object for the overlay. | -| disableButtonStyles | boolean | false | If enabled the button will have no default style. (you can still supply style through props) | -| enableDeclineButton | boolean | false | If enabled the decline button will be rendered | -| flipButtons | boolean | false | If enabled the accept and decline buttons will be flipped | -| ButtonComponent | React component | button | React Component to render as a button. | -| sameSite | string, "strict", "lax" or "none" | none | Cookies sameSite attribute value | -| cookieSecurity | boolean ยก | undefined | Cookie security level. Defaults to true unless running on http. | -| ariaAcceptLabel | string | Accept cookies | Aria label to set on the accept button | -| ariaDeclineLabel | string | Decline cookies | Aria label to set on the decline button | -| acceptOnScroll | boolean | false | Defines whether "accept" should be fired after the user scrolls a certain distance (see acceptOnScrollPercentage) | -| acceptOnScrollPercentage | number | 25 | Percentage of the page height the user has to scroll to trigger the accept function if acceptOnScroll is enabled | -| customContentAttributes | object | `{}` | Allows you to set custom (data) attributes on the content div | -| customContainerAttributes | object | `{}` | Allows you to set custom (data) attributes on the container div | -| onOverlayClick | function | `() => {}` | allows you to react to a click on the overlay | -| acceptOnOverlayClick | boolean | false | Determines whether the cookies should be accepted after clicking on the overlay | -| customButtonProps | object | `{}` | Allows you to set custom props on the button component | -| customDeclineButtonProps | object | `{}` | Allows you to set custom props on the decline button component | +| Prop | Type | Default value | Description | +| ----------------------------- | :-----------------------------------------: | ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- | +| location | string, "top", "bottom" or "none" | "bottom" | Syntactic sugar to easily enable you to place the bar at the top or the bottom of the browser window. Use "none" to disable. | +| visible | string, "show", "hidden" or "byCookieValue" | "byCookieValue" | Force the consent bar visibility. If "byCookieValue", visibility are defined by cookie consent existence. | +| children | string or React component | | Content to appear inside the bar | +| disableStyles | boolean | false | If enabled the component will have no default style. (you can still supply style through props) | +| hideOnAccept | boolean | true | If disabled the component will not hide it self after the accept button has been clicked. You will need to hide yourself (see onAccept) | +| buttonText | string or React component | "I understand" | Text to appear on the button | +| declineButtonText | string or React component | "I decline" | Text to appear on the decline button | +| cookieName | string | "CookieConsent" | Name of the cookie used to track whether the user has agreed. | +| cookieValue | string or boolean or number | true | Value to be saved under the cookieName. | +| declineCookieValue | string or boolean or number | false | Value to be saved under the cookieName when declined. | +| setDeclineCookie | boolean | true | Whether to set a cookie when the user clicks "decline" | +| onAccept | function | `() => {}` | Function to be called after the accept button has been clicked. | +| onDecline | function | `() => {}` | Function to be called after the decline button has been clicked. | +| debug | boolean | undefined | Bar will be drawn regardless of cookie for debugging purposes. | +| expires | number | 365 | Number of days before the cookie expires. | +| extraCookieOptions | object | `{}` | Extra info (apart from expiry date) to add to the cookie | +| overlay | boolean | false | Whether to show a page obscuring overlay or not. | +| containerClasses | string | "" | CSS classes to apply to the surrounding container | +| buttonClasses | string | "" | CSS classes to apply to the button | +| buttonWrapperClasses | string | "" | CSS classes to apply to the div wrapping the buttons | +| customButtonWrapperAttributes | `React.HTMLAttributes` | `{}` | Allows you to set custom (data) attributes on the button wrapper div | +| declineButtonClasses | string | "" | CSS classes to apply to the decline button | +| buttonId | string | "" | Id to apply to the button | +| declineButtonId | string | "" | Id to apply to the decline button | +| contentClasses | string | "" | CSS classes to apply to the content | +| overlayClasses | string | "" | CSS classes to apply to the surrounding overlay | +| style | object | [look at source][style] | React styling object for the bar. | +| buttonStyle | object | [look at source][buttonstyle] | React styling object for the button. | +| declineButtonStyle | object | [look at source][declinebuttonstyle] | React styling object for the decline button. | +| contentStyle | object | [look at source][contentstyle] | React styling object for the content. | +| overlayStyle | object | [look at source][overlaystyle] | React styling object for the overlay. | +| disableButtonStyles | boolean | false | If enabled the button will have no default style. (you can still supply style through props) | +| enableDeclineButton | boolean | false | If enabled the decline button will be rendered | +| flipButtons | boolean | false | If enabled the accept and decline buttons will be flipped | +| ButtonComponent | React component | button | React Component to render as a button. | +| sameSite | string, "strict", "lax" or "none" | none | Cookies sameSite attribute value | +| cookieSecurity | boolean | undefined | Cookie security level. Defaults to true unless running on http. | +| ariaAcceptLabel | string | Accept cookies | Aria label to set on the accept button | +| ariaDeclineLabel | string | Decline cookies | Aria label to set on the decline button | +| acceptOnScroll | boolean | false | Defines whether "accept" should be fired after the user scrolls a certain distance (see acceptOnScrollPercentage) | +| acceptOnScrollPercentage | number | 25 | Percentage of the page height the user has to scroll to trigger the accept function if acceptOnScroll is enabled | +| customContentAttributes | object | `{}` | Allows you to set custom (data) attributes on the content div | +| customContainerAttributes | object | `{}` | Allows you to set custom (data) attributes on the container div | +| onOverlayClick | function | `() => {}` | allows you to react to a click on the overlay | +| acceptOnOverlayClick | boolean | false | Determines whether the cookies should be accepted after clicking on the overlay | +| customButtonProps | object | `{}` | Allows you to set custom props on the button component | +| customDeclineButtonProps | object | `{}` | Allows you to set custom props on the decline button component | ## Debugging it diff --git a/src/index.d.ts b/src/index.d.ts index f493a8f..c9505c0 100644 --- a/src/index.d.ts +++ b/src/index.d.ts @@ -49,6 +49,7 @@ export interface CookieConsentProps { customContainerAttributes?: object; customButtonProps?: object; customDeclineButtonProps?: object; + customButtonWrapperAttributes?: React.HTMLAttributes; } export default class CookieConsent extends React.Component {} diff --git a/src/index.js b/src/index.js index 251e022..66a5c73 100644 --- a/src/index.js +++ b/src/index.js @@ -294,6 +294,7 @@ class CookieConsent extends Component { customContentAttributes, customButtonProps, customDeclineButtonProps, + customButtonWrapperAttributes, } = this.props; let myStyle = {}; @@ -399,7 +400,7 @@ class CookieConsent extends Component {
{this.props.children}
-
+
{buttonsToRender.map((button) => { return button; })} @@ -458,6 +459,7 @@ CookieConsent.propTypes = { customContainerAttributes: PropTypes.object, customButtonProps: PropTypes.object, customDeclineButtonProps: PropTypes.object, + customButtonWrapperAttributes: PropTypes.object, }; CookieConsent.defaultProps = { @@ -501,6 +503,7 @@ CookieConsent.defaultProps = { customContainerAttributes: {}, customButtonProps: {}, customDeclineButtonProps: {}, + customButtonWrapperAttributes: {}, }; export default CookieConsent;