modules_Cards_AddCard_index.js
import { React, PropTypes, classnames } from '@gravityforms/libraries';
import Button from '../../../elements/Button';
import Card from '../Card';
const { forwardRef } = React;
/**
* @module AddCard
* @description The add card component. used to display icons with a measurement of some kind.
*
* @since 5.8.1
*
* @param {object} props Component props.
* @param {object} props.buttonAttributes Attributes for the button.
* @param {Array} props.buttonClasses Classes for the button.
* @param {object} props.customAttributes Custom attributes for the component.
* @param {string|Array|object} props.customClasses Custom classes for the component.
* @param {string} props.label The label for the button.
* @param {function} props.onClick The function to call when the button is clicked.
* @param {object|null} ref Ref to the component.
*
* @return {JSX.Element} The add card component.
*
* @example
* import AddCard from '@gravityforms/components/react/admin/modules/Cards/AddCard';
*
* return (
* <AddCard />
* );
*
*/
const AddCard = forwardRef( ( {
buttonAttributes = {},
buttonClasses = [],
customAttributes = {},
customClasses = [],
label = '',
onClick = () => {},
}, ref ) => {
const componentProps = {
customClasses: classnames( {
'gform-card--add': true,
}, customClasses ),
...customAttributes,
baseClass: false,
ref,
};
const buttonProps = {
customClasses: classnames( 'gform-card-add__button', buttonClasses ),
icon: 'plus-regular',
iconPosition: 'leading',
iconPrefix: 'gravity-component-icon',
label,
onClick,
size: 'size-height-xl',
type: 'icon-white',
...buttonAttributes,
};
return (
<Card { ...componentProps }>
<Button { ...buttonProps } />
</Card>
);
} );
AddCard.propTypes = {
buttonAttributes: PropTypes.object,
buttonClasses: PropTypes.oneOfType( [
PropTypes.array,
PropTypes.object,
PropTypes.string,
] ),
customAttributes: PropTypes.object,
customClasses: PropTypes.oneOfType( [
PropTypes.array,
PropTypes.object,
PropTypes.string,
] ),
label: PropTypes.string,
onClick: PropTypes.func,
};
AddCard.displayName = 'Cards/AddCard';
export default AddCard;