button-group.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. "use client";
  2. var __rest = this && this.__rest || function (s, e) {
  3. var t = {};
  4. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
  5. if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
  6. if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
  7. }
  8. return t;
  9. };
  10. import * as React from 'react';
  11. import classNames from 'classnames';
  12. import { devUseWarning } from '../_util/warning';
  13. import { ConfigContext } from '../config-provider';
  14. import { useToken } from '../theme/internal';
  15. export const GroupSizeContext = /*#__PURE__*/React.createContext(undefined);
  16. const ButtonGroup = props => {
  17. const {
  18. getPrefixCls,
  19. direction
  20. } = React.useContext(ConfigContext);
  21. const {
  22. prefixCls: customizePrefixCls,
  23. size,
  24. className
  25. } = props,
  26. others = __rest(props, ["prefixCls", "size", "className"]);
  27. const prefixCls = getPrefixCls('btn-group', customizePrefixCls);
  28. const [,, hashId] = useToken();
  29. const sizeCls = React.useMemo(() => {
  30. switch (size) {
  31. case 'large':
  32. return 'lg';
  33. case 'small':
  34. return 'sm';
  35. default:
  36. return '';
  37. }
  38. }, [size]);
  39. if (process.env.NODE_ENV !== 'production') {
  40. const warning = devUseWarning('Button.Group');
  41. warning.deprecated(false, 'Button.Group', 'Space.Compact');
  42. process.env.NODE_ENV !== "production" ? warning(!size || ['large', 'small', 'middle'].includes(size), 'usage', 'Invalid prop `size`.') : void 0;
  43. }
  44. const classes = classNames(prefixCls, {
  45. [`${prefixCls}-${sizeCls}`]: sizeCls,
  46. [`${prefixCls}-rtl`]: direction === 'rtl'
  47. }, className, hashId);
  48. return /*#__PURE__*/React.createElement(GroupSizeContext.Provider, {
  49. value: size
  50. }, /*#__PURE__*/React.createElement("div", Object.assign({}, others, {
  51. className: classes
  52. })));
  53. };
  54. export default ButtonGroup;