@carbon/ibm-products
Version:
Carbon for IBM Products
101 lines (96 loc) • 3.75 kB
JavaScript
/**
* Copyright IBM Corp. 2020, 2025
*
* This source code is licensed under the Apache-2.0 license found in the
* LICENSE file in the root directory of this source tree.
*/
'use strict';
var React = require('react');
var cx = require('classnames');
var react = require('@carbon/react');
var index = require('../../_virtual/index.js');
var settings = require('../../settings.js');
var icons = require('@carbon/react/icons');
var _Error;
const componentName = 'CardFooter';
const defaults = {
actions: Object.freeze([]),
productive: false};
const CardFooter = _ref => {
let {
actions = defaults.actions,
disabled,
footerActionIcon: FooterActionIcon,
hasActions,
hasButton,
onPrimaryButtonClick,
onSecondaryButtonClick,
primaryButtonDisabled,
primaryButtonHref,
primaryButtonIcon,
primaryButtonKind = 'primary',
primaryButtonPlacement,
primaryButtonText,
productive = defaults.productive,
secondaryButtonDisabled,
secondaryButtonHref,
secondaryButtonIcon,
secondaryButtonKind = 'secondary',
secondaryButtonPlacement,
secondaryButtonText
} = _ref;
const blockClass = `${settings.pkg.prefix}--card`;
const footerClass = `${settings.pkg.prefix}--card__footer`;
const footerClasses = cx(footerClass, {
[`${footerClass}-no-button`]: !hasButton
});
return /*#__PURE__*/React.createElement("div", {
className: footerClasses
}, secondaryButtonText && secondaryButtonPlacement === 'bottom' && /*#__PURE__*/React.createElement(react.Button, {
kind: productive ? 'ghost' : secondaryButtonKind,
onClick: onSecondaryButtonClick,
size: "md",
renderIcon: secondaryButtonIcon,
href: secondaryButtonHref,
disabled: secondaryButtonDisabled
}, secondaryButtonText), primaryButtonText && primaryButtonPlacement === 'bottom' && /*#__PURE__*/React.createElement(react.Button, {
kind: productive ? 'ghost' : primaryButtonKind,
onClick: onPrimaryButtonClick,
size: "md",
renderIcon: primaryButtonIcon,
href: primaryButtonHref,
disabled: primaryButtonDisabled
}, primaryButtonText), hasActions && /*#__PURE__*/React.createElement("div", {
className: `${blockClass}__actions`
}, actions), FooterActionIcon && /*#__PURE__*/React.createElement("div", {
className: `${blockClass}__action-icon`
}, disabled ? _Error || (_Error = /*#__PURE__*/React.createElement(icons.Error, {
size: 16
})) : /*#__PURE__*/React.createElement(FooterActionIcon, null)));
};
/**@ts-ignore */
CardFooter.propTypes = {
actions: index.default.oneOfType([index.default.array, index.default.node]),
disabled: index.default.bool,
footerActionIcon: index.default.oneOfType([index.default.func, index.default.object]),
hasActions: index.default.bool,
hasButton: index.default.bool,
onPrimaryButtonClick: index.default.func,
onSecondaryButtonClick: index.default.func,
primaryButtonDisabled: index.default.bool,
primaryButtonHref: index.default.string,
primaryButtonIcon: index.default.oneOfType([index.default.func, index.default.object]),
primaryButtonKind: index.default.oneOf(['primary', 'ghost']),
primaryButtonPlacement: index.default.oneOf(['top', 'bottom']),
primaryButtonText: index.default.string,
productive: index.default.bool,
secondaryButtonDisabled: index.default.bool,
secondaryButtonHref: index.default.string,
secondaryButtonIcon: index.default.oneOfType([index.default.func, index.default.object]),
secondaryButtonKind: index.default.oneOf(['secondary', 'ghost']),
secondaryButtonPlacement: index.default.oneOf(['top', 'bottom']),
secondaryButtonText: index.default.string
};
/**@ts-ignore */
CardFooter.displayName = componentName;
exports.CardFooter = CardFooter;