| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import React from 'react';
- import PropTypes from 'prop-types';
- import classNames from 'classnames';
- import { cssClasses } from '@douyinfe/semi-foundation/button/constants';
- import '@douyinfe/semi-foundation/button/button.scss';
- import BaseComponent, { BaseProps } from '../_base/baseComponent';
- const prefixCls = cssClasses.PREFIX;
- export interface SplitButtonGroupProps extends BaseProps {
- 'aria-label'?: React.AriaAttributes['aria-label']
- }
- export default class SplitButtonGroup extends BaseComponent<SplitButtonGroupProps> {
- containerRef: React.RefObject<HTMLDivElement> = React.createRef();
- static propTypes = {
- style: PropTypes.object,
- className: PropTypes.string,
- 'aria-label': PropTypes.string,
- };
- componentDidMount() {
- if (this.containerRef.current) {
- const buttons = this.containerRef.current.querySelectorAll('button');
- const firstButton = buttons[0];
- const lastButton = buttons[buttons.length - 1];
- firstButton?.classList.add(`${prefixCls}-first`);
- lastButton?.classList.add(`${prefixCls}-last`);
- }
- }
- render() {
- const { children, style, className } = this.props;
- const cls = classNames(`${prefixCls}-split`, className);
- return (
- <div ref={this.containerRef} className={cls} style={style} role="group"
- aria-label={this.props['aria-label']}>
- {children}
- </div>
- );
- }
- }
|