Dashboard sipadu mbip
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

SplitButton.js 2.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. import _extends from "@babel/runtime/helpers/esm/extends";
  2. import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
  3. import React from 'react';
  4. import PropTypes from 'prop-types';
  5. import Button from './Button';
  6. import ButtonGroup from './ButtonGroup';
  7. import Dropdown from './Dropdown';
  8. var propTypes = {
  9. /**
  10. * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.
  11. * @type {string|number}
  12. * @required
  13. */
  14. id: PropTypes.any,
  15. /**
  16. * Accessible label for the toggle; the value of `title` if not specified.
  17. */
  18. toggleLabel: PropTypes.string,
  19. /** An `href` passed to the non-toggle Button */
  20. href: PropTypes.string,
  21. /** An anchor `target` passed to the non-toggle Button */
  22. target: PropTypes.string,
  23. /** An `onClick` handler passed to the non-toggle Button */
  24. onClick: PropTypes.func,
  25. /** The content of the non-toggle Button. */
  26. title: PropTypes.node.isRequired,
  27. /** Disables both Buttons */
  28. disabled: PropTypes.bool,
  29. /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */
  30. menuRole: PropTypes.string,
  31. /**
  32. * Which event when fired outside the component will cause it to be closed.
  33. *
  34. * _see [DropdownMenu](#menu-props) for more details_
  35. */
  36. rootCloseEvent: PropTypes.string,
  37. /** @ignore */
  38. bsPrefix: PropTypes.string,
  39. /** @ignore */
  40. variant: PropTypes.string,
  41. /** @ignore */
  42. size: PropTypes.string
  43. };
  44. var defaultProps = {
  45. toggleLabel: 'Toggle dropdown'
  46. };
  47. var SplitButton = React.forwardRef(function (_ref, ref) {
  48. var id = _ref.id,
  49. bsPrefix = _ref.bsPrefix,
  50. size = _ref.size,
  51. variant = _ref.variant,
  52. title = _ref.title,
  53. toggleLabel = _ref.toggleLabel,
  54. children = _ref.children,
  55. onClick = _ref.onClick,
  56. href = _ref.href,
  57. target = _ref.target,
  58. menuRole = _ref.menuRole,
  59. rootCloseEvent = _ref.rootCloseEvent,
  60. props = _objectWithoutPropertiesLoose(_ref, ["id", "bsPrefix", "size", "variant", "title", "toggleLabel", "children", "onClick", "href", "target", "menuRole", "rootCloseEvent"]);
  61. return React.createElement(Dropdown, _extends({
  62. ref: ref
  63. }, props, {
  64. as: ButtonGroup
  65. }), React.createElement(Button, {
  66. size: size,
  67. variant: variant,
  68. disabled: props.disabled,
  69. bsPrefix: bsPrefix,
  70. href: href,
  71. target: target,
  72. onClick: onClick
  73. }, title), React.createElement(Dropdown.Toggle, {
  74. split: true,
  75. id: id,
  76. size: size,
  77. variant: variant,
  78. disabled: props.disabled,
  79. childBsPrefix: bsPrefix
  80. }, React.createElement("span", {
  81. className: "sr-only"
  82. }, toggleLabel)), React.createElement(Dropdown.Menu, {
  83. role: menuRole,
  84. rootCloseEvent: rootCloseEvent
  85. }, children));
  86. });
  87. SplitButton.propTypes = propTypes;
  88. SplitButton.defaultProps = defaultProps;
  89. SplitButton.displayName = 'SplitButton';
  90. export default SplitButton;