UNPKG

@carbon/ibm-security

Version:

Carbon for Cloud & Cognitive IBM Security UI components

122 lines (120 loc) 6.36 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.type = exports.default = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); var _classnames = _interopRequireDefault(require("classnames")); var _propTypes = require("prop-types"); var _react = _interopRequireDefault(require("react")); var _index = require("../../globals/namespace/index"); var defaultLabels = _interopRequireWildcard(require("../../globals/nls")); var _defaultItemToString = _interopRequireDefault(require("../__tools__/defaultItemToString")); var _Button = _interopRequireDefault(require("../Button")); var _InteractiveTag = _interopRequireDefault(require("../InteractiveTag")); var _excluded = ["addButtonDisabled", "addLabel", "className", "disable", "items", "itemToString", "label", "onAddButton", "onChange", "labels"]; /** * @file Tag wall. * @copyright IBM Security 2019 - 2021 */ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } 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) { (0, _defineProperty2.default)(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; } var namespace = (0, _index.getComponentNamespace)('tag-wall'); var noop = function noop() {}; var type = exports.type = 'UNSELECT_ITEM'; /** * Tag wall component. */ var TagWall = function TagWall(_ref) { var addButtonDisabled = _ref.addButtonDisabled, addLabel = _ref.addLabel, className = _ref.className, disable = _ref.disable, items = _ref.items, itemToString = _ref.itemToString, label = _ref.label, onAddButton = _ref.onAddButton, onChange = _ref.onChange, labels = _ref.labels, other = (0, _objectWithoutProperties2.default)(_ref, _excluded); var _defaultLabels$labels = _objectSpread(_objectSpread(_objectSpread({}, defaultLabels.labels), defaultLabels.filterFalsey({ TAG_WALL_ADD_BUTTON: addLabel, TAG_WALL_LABEL: label })), labels), TAG_WALL_ADD_BUTTON = _defaultLabels$labels.TAG_WALL_ADD_BUTTON, TAG_WALL_LABEL = _defaultLabels$labels.TAG_WALL_LABEL, TAG_WALL_REMOVE_BUTTON = _defaultLabels$labels.TAG_WALL_REMOVE_BUTTON; return /*#__PURE__*/_react.default.createElement("section", (0, _extends2.default)({ className: (0, _classnames.default)(namespace, className), "aria-label": TAG_WALL_LABEL }, other), TAG_WALL_LABEL && /*#__PURE__*/_react.default.createElement("h2", { className: "".concat(namespace, "__label") }, TAG_WALL_LABEL), items.map(function (item, index) { var key = "tag__".concat(index); return /*#__PURE__*/_react.default.createElement(_InteractiveTag.default, (0, _extends2.default)({ id: item.id, key: key, isSelected: item.isSelected, onRemove: function onRemove(event) { event.stopPropagation(); onChange({ item: item, type: type }); }, removable: !disable, removeBtnLabel: TAG_WALL_REMOVE_BUTTON, type: "gray" }, item.props), itemToString(item)); }), !addButtonDisabled && /*#__PURE__*/_react.default.createElement(_Button.default, { disabled: disable, kind: "ghost", onClick: onAddButton, size: "small" }, TAG_WALL_ADD_BUTTON)); }; TagWall.propTypes = { /** @type {boolean} Determines whether or not the 'add' button is disabled. */ addButtonDisabled: _propTypes.bool, /** @type {string} Label for button that adds tag. */ addLabel: _propTypes.string, /** @type {string} Extra classes to add. */ className: _propTypes.string, /** @type {boolean} Determines whether or not tag management is enabled. */ disable: _propTypes.bool, /** @type {Function} Function that converts object to string. */ itemToString: _propTypes.func, /** @type {Array.<Record<string, boolean>>} List of tags to be consumed. */ items: (0, _propTypes.arrayOf)((0, _propTypes.shape)({ id: _propTypes.string.isRequired, isSelected: _propTypes.bool, label: _propTypes.string.isRequired, props: _propTypes.object })).isRequired, /** @type {string} Description label. */ label: _propTypes.string, /** @type {Record<string, any>} Default translation labels object. */ labels: defaultLabels.propType, /** @type {Function} Handles `onClick` for the 'add' button. */ onAddButton: _propTypes.func, /** @type {Function} Communicates to the consuming component any changes to the tags. */ onChange: _propTypes.func }; TagWall.defaultProps = { addButtonDisabled: false, addLabel: '', className: '', disable: false, itemToString: _defaultItemToString.default, label: null, labels: {}, onAddButton: noop, onChange: noop }; var _default = exports.default = TagWall;