optionGroup.tsx 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import React from 'react';
  2. import PropTypes from 'prop-types';
  3. import cls from 'classnames';
  4. import { cssClasses } from '@douyinfe/semi-foundation/select/constants';
  5. import BaseComponent from '../_base/baseComponent';
  6. export interface OptionGroupProps {
  7. children?: React.ReactNode;
  8. label?: React.ReactNode;
  9. className?: string;
  10. style?: React.CSSProperties;
  11. }
  12. const prefixCls = cssClasses.PREFIX_GROUP;
  13. class OptionGroup extends BaseComponent<OptionGroupProps> {
  14. static isSelectOptionGroup = true;
  15. static propTypes = {
  16. children: PropTypes.oneOfType([PropTypes.array, PropTypes.node]),
  17. label: PropTypes.node,
  18. className: PropTypes.string,
  19. style: PropTypes.object,
  20. };
  21. render() {
  22. const { label, className, style } = this.props;
  23. const groupCls = cls(className, {
  24. [prefixCls]: true,
  25. });
  26. if (!label && typeof label !== 'number') {
  27. return null;
  28. }
  29. return (
  30. <div className={groupCls} style={style}>
  31. {label}
  32. </div>
  33. );
  34. }
  35. }
  36. export default OptionGroup;