Dashboard sipadu mbip
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

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