Dashboard sipadu mbip
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

ToggleButtonGroup.js 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. "use strict";
  2. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
  3. exports.__esModule = true;
  4. exports.default = void 0;
  5. var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
  6. var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
  7. var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
  8. var _react = _interopRequireDefault(require("react"));
  9. var _invariant = _interopRequireDefault(require("invariant"));
  10. var _uncontrollable = require("uncontrollable");
  11. var _createChainedFunction = _interopRequireDefault(require("./utils/createChainedFunction"));
  12. var _ElementChildren = require("./utils/ElementChildren");
  13. var _ButtonGroup = _interopRequireDefault(require("./ButtonGroup"));
  14. var _ToggleButton = _interopRequireDefault(require("./ToggleButton"));
  15. var defaultProps = {
  16. type: 'radio'
  17. };
  18. var ToggleButtonGroup =
  19. /*#__PURE__*/
  20. function (_React$Component) {
  21. (0, _inheritsLoose2.default)(ToggleButtonGroup, _React$Component);
  22. function ToggleButtonGroup() {
  23. return _React$Component.apply(this, arguments) || this;
  24. }
  25. var _proto = ToggleButtonGroup.prototype;
  26. _proto.getValues = function getValues() {
  27. var value = this.props.value;
  28. return value == null ? [] : [].concat(value);
  29. };
  30. _proto.handleToggle = function handleToggle(value, event) {
  31. var _this$props = this.props,
  32. type = _this$props.type,
  33. onChange = _this$props.onChange;
  34. var values = this.getValues();
  35. var isActive = values.indexOf(value) !== -1;
  36. if (type === 'radio') {
  37. if (!isActive) onChange(value, event);
  38. return;
  39. }
  40. if (isActive) {
  41. onChange(values.filter(function (n) {
  42. return n !== value;
  43. }), event);
  44. } else {
  45. onChange([].concat(values, [value]), event);
  46. }
  47. };
  48. _proto.render = function render() {
  49. var _this = this;
  50. var _this$props2 = this.props,
  51. children = _this$props2.children,
  52. type = _this$props2.type,
  53. name = _this$props2.name,
  54. props = (0, _objectWithoutPropertiesLoose2.default)(_this$props2, ["children", "type", "name"]);
  55. delete props.onChange;
  56. delete props.value;
  57. var values = this.getValues();
  58. !(type !== 'radio' || !!name) ? process.env.NODE_ENV !== "production" ? (0, _invariant.default)(false, 'A `name` is required to group the toggle buttons when the `type` ' + 'is set to "radio"') : invariant(false) : void 0;
  59. return _react.default.createElement(_ButtonGroup.default, (0, _extends2.default)({}, props, {
  60. toggle: true
  61. }), (0, _ElementChildren.map)(children, function (child) {
  62. var _child$props = child.props,
  63. value = _child$props.value,
  64. onChange = _child$props.onChange;
  65. var handler = function handler(e) {
  66. return _this.handleToggle(value, e);
  67. };
  68. return _react.default.cloneElement(child, {
  69. type: type,
  70. name: child.name || name,
  71. checked: values.indexOf(value) !== -1,
  72. onChange: (0, _createChainedFunction.default)(onChange, handler)
  73. });
  74. }));
  75. };
  76. return ToggleButtonGroup;
  77. }(_react.default.Component);
  78. ToggleButtonGroup.defaultProps = defaultProps;
  79. var UncontrolledToggleButtonGroup = (0, _uncontrollable.uncontrollable)(ToggleButtonGroup, {
  80. value: 'onChange'
  81. });
  82. UncontrolledToggleButtonGroup.Button = _ToggleButton.default;
  83. var _default = UncontrolledToggleButtonGroup;
  84. exports.default = _default;
  85. module.exports = exports["default"];