@vtex/styleguide
Version:
> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))
109 lines (86 loc) • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _react = require("react");
var _react2 = _interopRequireDefault(_react);
var _index = require("../../Toggle/index");
var _index2 = _interopRequireDefault(_index);
var _index3 = require("../../icon/Columns/index");
var _index4 = _interopRequireDefault(_index3);
var _PopoverMenu = require("./PopoverMenu");
var _PopoverMenu2 = _interopRequireDefault(_PopoverMenu);
var _Button = require("./Button");
var _Button2 = _interopRequireDefault(_Button);
var _constants = require("../constants");
var _context = require("./context");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
var COLUMNS_BOX = {
MAX_HEIGHT: 192,
WIDTH: 292,
ITEM_HEIGHT: 36
};
var ButtonColumns = function ButtonColumns(_ref) {
var label = _ref.label,
showAllLabel = _ref.showAllLabel,
hideAllLabel = _ref.hideAllLabel,
alignMenu = _ref.alignMenu,
disabled = _ref.disabled,
visibility = _ref.visibility;
var _usePopoverMenu = (0, _PopoverMenu2.default)(),
buttonRef = _usePopoverMenu.buttonRef,
boxVisible = _usePopoverMenu.boxVisible,
toggleBox = _usePopoverMenu.toggleBox;
var _useButtonGroupContex = (0, _context.useButtonGroupContext)(),
testId = _useButtonGroupContex.testId;
var columnsTestId = testId + "__columns";
var hiddenColumns = visibility.hiddenColumns,
hideAllColumns = visibility.hideAllColumns,
showAllColumns = visibility.showAllColumns,
toggleColumn = visibility.toggleColumn,
columns = visibility.columns;
var height = Math.min(columns.length * COLUMNS_BOX.ITEM_HEIGHT, COLUMNS_BOX.MAX_HEIGHT);
var boxProps = {
height: height,
alignMenu: alignMenu,
width: COLUMNS_BOX.WIDTH,
groupActions: [{
id: 1,
label: showAllLabel,
onClick: showAllColumns
}, {
id: 2,
label: hideAllLabel,
onClick: hideAllColumns
}]
};
return _react2.default.createElement(_Button2.default, {
id: _constants.NAMESPACES.TOOLBAR.BUTTON_COLUMNS,
testId: columnsTestId,
title: label,
ref: buttonRef,
onClick: toggleBox,
icon: _react2.default.createElement(_index4.default, {
size: _Button.IconSize.Medium
}),
disabled: disabled
}, boxVisible && _react2.default.createElement(_PopoverMenu.Box, _extends({}, boxProps, {
testId: columnsTestId
}), columns.map(function (column, index) {
var id = column.id,
title = column.title;
var togglerFn = function togglerFn() {
return toggleColumn(id);
};
var isVisible = !hiddenColumns.includes(id);
return _react2.default.createElement(_PopoverMenu.Item, {
key: index,
onClick: togglerFn
}, title, _react2.default.createElement(_index2.default, {
checked: isVisible,
onChange: togglerFn
}));
})));
};
exports.default = ButtonColumns;