UNPKG

@vtex/styleguide

Version:

> VTEX Styleguide React components ([Docs](https://vtex.github.io/styleguide))

109 lines (86 loc) 3.27 kB
"use strict"; 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;