UNPKG

@vtex/styleguide

Version:

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

87 lines (65 loc) 2.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var _react = require("react"); var _react2 = _interopRequireDefault(_react); var _index = require("../../icon/Density/index.js"); var _index2 = _interopRequireDefault(_index); var _constants = require("../constants"); var _Button = require("./Button"); var _Button2 = _interopRequireDefault(_Button); var _PopoverMenu = require("./PopoverMenu"); var _PopoverMenu2 = _interopRequireDefault(_PopoverMenu); var _useTableMeasures = require("../hooks/useTableMeasures"); var _context = require("./context"); var _measures = require("../context/measures"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; } var FIELDS_ITEM_HEIGHT = 36; var BOX_HEIGHT = _useTableMeasures.DENSITY_OPTIONS.length * FIELDS_ITEM_HEIGHT; var ButtonDensity = function ButtonDensity(_ref) { var label = _ref.label, handleCallback = _ref.handleCallback, disabled = _ref.disabled, alignMenu = _ref.alignMenu, options = _objectWithoutPropertiesLoose(_ref, ["label", "handleCallback", "disabled", "alignMenu"]); var _useMeasuresContext = (0, _measures.useMeasuresContext)(), density = _useMeasuresContext.density, setDensity = _useMeasuresContext.setDensity; var _usePopoverMenu = (0, _PopoverMenu2.default)(), buttonRef = _usePopoverMenu.buttonRef, toggleBox = _usePopoverMenu.toggleBox, setBoxVisible = _usePopoverMenu.setBoxVisible, boxVisible = _usePopoverMenu.boxVisible; var _useButtonGroupContex = (0, _context.useButtonGroupContext)(), testId = _useButtonGroupContex.testId; var densityTestId = testId + "__density"; return _react2.default.createElement(_Button2.default, { id: _constants.NAMESPACES.TOOLBAR.BUTTON_DENSITY, testId: densityTestId, title: label, ref: buttonRef, onClick: toggleBox, icon: _react2.default.createElement(_index2.default, { size: _Button.IconSize.Medium }), disabled: disabled }, boxVisible && _react2.default.createElement(_PopoverMenu.Box, { testId: densityTestId, height: BOX_HEIGHT, alignMenu: alignMenu }, _useTableMeasures.DENSITY_OPTIONS.map(function (key, index) { var isKeySelected = density === key; return _react2.default.createElement(_PopoverMenu.Item, { key: index, isSelected: isKeySelected, onClick: function onClick() { setDensity(key); setBoxVisible(false); handleCallback && handleCallback(key); } }, options[key + "Label"]); }))); }; exports.default = ButtonDensity;