@carbon/ibm-security
Version:
Carbon for Cloud & Cognitive IBM Security UI components
54 lines (52 loc) • 2.64 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
var _excluded = ["children", "className", "isSelected", "onRemove", "removable", "removeBtnLabel"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/**
* @file Interactive tag.
* @copyright IBM Security 2019 - 2021
*/
import classnames from 'classnames';
import { bool, func, string } from 'prop-types';
import React from 'react';
import { getComponentNamespace } from '../../globals/namespace/index';
import Tag from '../Tag';
export var namespace = getComponentNamespace('tag--interactive');
/**
* Interactive tag component.
*/
var InteractiveTag = function InteractiveTag(_ref) {
var children = _ref.children,
className = _ref.className,
isSelected = _ref.isSelected,
onRemove = _ref.onRemove,
removable = _ref.removable,
removeBtnLabel = _ref.removeBtnLabel,
other = _objectWithoutProperties(_ref, _excluded);
return /*#__PURE__*/React.createElement(Tag, _extends({
className: classnames(namespace, className, _defineProperty(_defineProperty({}, "".concat(namespace, "--default"), !isSelected), "".concat(namespace, "--selected"), isSelected)),
filter: removable,
onClose: onRemove,
title: removeBtnLabel
}, other), children);
};
InteractiveTag.defaultProps = {
isSelected: false,
onRemove: null,
removable: false,
removeBtnLabel: 'Remove',
type: 'gray'
};
InteractiveTag.propTypes = _objectSpread(_objectSpread({}, Tag.propTypes), {}, {
/** @type {boolean} Determines if the tag is selected. */
isSelected: bool,
/** @type {Function} Callback function to remove the tag. */
onRemove: func,
/** @type {boolean} Set whether the tag is removable or not. */
removable: bool,
/** @type {string} Label for the button used to remove the tag. */
removeBtnLabel: string
});
export default InteractiveTag;