| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- /* eslint-disable max-len */
 
- import React from 'react';
 
- import BaseComponent from '../_base/baseComponent';
 
- import classnames from 'classnames';
 
- import PropTypes from 'prop-types';
 
- import { noop } from 'lodash';
 
- import { cssClasses } from '@douyinfe/semi-foundation/table/constants';
 
- import TableSelectionCellFoundation, { TableSelectionCellAdapter, TableSelectionCellEvent } from '@douyinfe/semi-foundation/table/tableSelectionCellFoundation';
 
- import { Checkbox, CheckboxEvent, CheckboxProps } from '../checkbox';
 
- export interface TableSelectionCellProps {
 
-     columnTitle?: string; // TODO: future api
 
-     getCheckboxProps?: () => CheckboxProps;
 
-     type?: string; // TODO: future api
 
-     onChange?: (value: any, e: TableSelectionCellEvent) => void;
 
-     selected?: boolean;
 
-     disabled?: boolean;
 
-     indeterminate?: boolean; // Intermediate state, shown as a solid horizontal line
 
-     prefixCls?: string;
 
-     className?: string;
 
-     'aria-label'?: React.AriaAttributes['aria-label'];
 
- }
 
- /**
 
-  * render selection cell
 
-  */
 
- export default class TableSelectionCell extends BaseComponent<TableSelectionCellProps, Record<string, any>> {
 
-     static propTypes = {
 
-         columnTitle: PropTypes.string,
 
-         getCheckboxProps: PropTypes.func,
 
-         type: PropTypes.string,
 
-         onChange: PropTypes.func,
 
-         selected: PropTypes.bool,
 
-         disabled: PropTypes.bool,
 
-         indeterminate: PropTypes.bool,
 
-         prefixCls: PropTypes.string,
 
-         className: PropTypes.string,
 
-         'aria-label': PropTypes.string,
 
-     };
 
-     static defaultProps = {
 
-         disabled: false,
 
-         onChange: noop,
 
-         prefixCls: cssClasses.PREFIX,
 
-     };
 
-     get adapter(): TableSelectionCellAdapter {
 
-         return {
 
-             ...super.adapter,
 
-             notifyChange: (...args) => this.props.onChange(...args),
 
-         };
 
-     }
 
-     constructor(props: TableSelectionCellProps) {
 
-         super(props);
 
-         this.foundation = new TableSelectionCellFoundation(this.adapter);
 
-     }
 
-     handleChange = (e: CheckboxEvent) => this.foundation.handleChange(e);
 
-     render() {
 
-         const { selected, getCheckboxProps, indeterminate, disabled, prefixCls, className } = this.props;
 
-         const ariaLabel = this.props['aria-label'];
 
-         let checkboxProps = {
 
-             onChange: this.handleChange,
 
-             disabled,
 
-             indeterminate,
 
-             checked: selected,
 
-         };
 
-         if (typeof getCheckboxProps === 'function') {
 
-             checkboxProps = { ...checkboxProps, ...getCheckboxProps() };
 
-         }
 
-         const wrapCls = classnames(
 
-             `${prefixCls}-selection-wrap`,
 
-             {
 
-                 [`${prefixCls}-selection-disabled`]: disabled,
 
-             },
 
-             className
 
-         );
 
-         return (
 
-             <span className={wrapCls}>
 
-                 <Checkbox aria-label={ariaLabel} {...checkboxProps} />
 
-             </span>
 
-         );
 
-     }
 
- }
 
 
  |