wix-style-react
Version:
86 lines (70 loc) • 2.84 kB
JavaScript
"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;