UNPKG

wix-style-react

Version:
86 lines (70 loc) 2.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _react = _interopRequireDefault(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _Checkbox = _interopRequireDefault(require("../../Checkbox")); var _SelectorList = require("../SelectorList.helpers"); var ToggleAllCheckbox = function ToggleAllCheckbox(_ref) { var selectAllText = _ref.selectAllText, deselectAllText = _ref.deselectAllText, enabledItemsAmount = _ref.enabledItemsAmount, selectedEnabledItemsAmount = _ref.selectedEnabledItemsAmount, selectAll = _ref.selectAll, deselectAll = _ref.deselectAll, dataHook = _ref.dataHook; var cases = { select: { text: selectAllText, number: enabledItemsAmount, onChange: selectAll, indeterminate: false, checked: false }, deselect: { text: deselectAllText, number: selectedEnabledItemsAmount, onChange: deselectAll, indeterminate: selectedEnabledItemsAmount < enabledItemsAmount, checked: true } }; var _ref2 = selectedEnabledItemsAmount ? cases.deselect : cases.select, text = _ref2.text, num = _ref2.number, onChange = _ref2.onChange, checked = _ref2.checked, indeterminate = _ref2.indeterminate; return /*#__PURE__*/_react["default"].createElement(_Checkbox["default"], { dataHook: dataHook, checked: checked, onChange: onChange, indeterminate: indeterminate }, " ".concat(text, " (").concat(num, ")")); }; ToggleAllCheckbox.propTypes = { /** string to be displayed in footer when `multiple` prop is used and no items are selected */ selectAllText: _propTypes["default"].string, /** string to be displayed in footer when `multiple` prop is used and some or all items ar selected */ deselectAllText: _propTypes["default"].string, /** the amount of items which are not disabled */ enabledItemsAmount: _propTypes["default"].number.isRequired, /** an array of not disabled items that are marked as selected */ selectedEnabledItemsAmount: _propTypes["default"].number.isRequired, /** a function that selects all non-disabled items */ selectAll: _propTypes["default"].func.isRequired, /** a function that deselects all non-disabled items */ deselectAll: _propTypes["default"].func.isRequired, /** applied as data-hook HTML attribute that can be used to create driver in testing */ dataHook: _propTypes["default"].string }; ToggleAllCheckbox.defaultProps = { selectAllText: 'Select All', deselectAllText: 'Deselect All', dataHook: _SelectorList.dataHooks.toggleAllCheckbox }; var _default = ToggleAllCheckbox; exports["default"] = _default;