1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-09 10:50:24 +00:00

feat: react warning (#7467)

Co-authored-by: 杨国璇 <ygx@Hello-word.local>
This commit is contained in:
杨国璇
2025-02-17 11:50:29 +08:00
committed by GitHub
parent 91b9a7840f
commit 06410d217d
33 changed files with 105 additions and 154 deletions

View File

@@ -19,7 +19,7 @@
"@seafile/sdoc-editor": "2.0.1",
"@seafile/seafile-calendar": "0.0.28",
"@seafile/seafile-editor": "2.0.0",
"@seafile/sf-metadata-ui-component": "^1.0.0",
"@seafile/sf-metadata-ui-component": "^1.0.1",
"@seafile/stldraw-editor": "1.0.0",
"@uiw/codemirror-extensions-langs": "^4.19.4",
"@uiw/codemirror-themes": "^4.23.5",
@@ -5562,9 +5562,9 @@
}
},
"node_modules/@seafile/sf-metadata-ui-component": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@seafile/sf-metadata-ui-component/-/sf-metadata-ui-component-1.0.0.tgz",
"integrity": "sha512-qMr/KnoX60nSbL29hfxf4mu4q1+v+w8OGmAAiE+1aF+niyVkxYODYUUWc1ifvAZvCbx2COp+J67if6M4nP00NQ==",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@seafile/sf-metadata-ui-component/-/sf-metadata-ui-component-1.0.1.tgz",
"integrity": "sha512-8uIfcVJMXz1pMe3dKcQOjlN5GB3gGX+dreTDgmLBJ8PyJgkLEGV0n3KdiQJMKLoLsHAj4uer8xZpSoKuf3LEiw==",
"dependencies": {
"@seafile/seafile-calendar": "0.0.28",
"@seafile/seafile-editor": "2.0.0",

View File

@@ -14,7 +14,7 @@
"@seafile/sdoc-editor": "2.0.1",
"@seafile/seafile-calendar": "0.0.28",
"@seafile/seafile-editor": "2.0.0",
"@seafile/sf-metadata-ui-component": "^1.0.0",
"@seafile/sf-metadata-ui-component": "^1.0.1",
"@seafile/stldraw-editor": "1.0.0",
"@uiw/codemirror-extensions-langs": "^4.19.4",
"@uiw/codemirror-themes": "^4.23.5",

View File

@@ -4,8 +4,7 @@ import classnames from 'classnames';
import '../../../css/switch.css';
function Switch(props) {
const { onChange, checked, placeholder, disabled, className, size, textPosition, setRef } = props;
function Switch({ onChange, checked, placeholder, disabled, className, size, textPosition = 'left', setRef }) {
return (
<div className={classnames('seahub-switch position-relative', className, size)} ref={setRef}>
<label className="custom-switch">
@@ -40,8 +39,4 @@ Switch.propTypes = {
setRef: PropTypes.func
};
Switch.defaultProps = {
textPosition: 'left',
};
export default Switch;

View File

@@ -7,7 +7,7 @@ import { SYSTEM_FOLDERS } from '../../constants';
import '@seafile/react-image-lightbox/style.css';
const ImageDialog = ({ enableRotate: oldEnableRotate, imageItems, imageIndex, closeImagePopup, moveToPrevImage, moveToNextImage, onDeleteImage, onRotateImage }) => {
const ImageDialog = ({ enableRotate: oldEnableRotate = true, imageItems, imageIndex, closeImagePopup, moveToPrevImage, moveToNextImage, onDeleteImage, onRotateImage }) => {
const { enableOCR, enableMetadata, canModify, onOCR: onOCRAPI, OCRSuccessCallBack } = useMetadataAIOperations();
const downloadImage = useCallback((url) => {
@@ -79,8 +79,4 @@ ImageDialog.propTypes = {
enableRotate: PropTypes.bool,
};
ImageDialog.defaultProps = {
enableRotate: true,
};
export default ImageDialog;

View File

@@ -16,6 +16,7 @@ class UserItem extends React.Component {
this.state = {
isOperationShow: false
};
this.userSelect = React.createRef();
}
onMouseEnter = () => {
@@ -162,7 +163,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
permission: 'rw',
folderPath: '',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
@@ -277,7 +278,7 @@ class LibSubFolderSetUserPermissionDialog extends React.Component {
<tr>
<td>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
placeholder={gettext('Search users')}
onSelectChange={this.handleUserSelectChange}

View File

@@ -22,6 +22,7 @@ class AddOrgAdminDialog extends React.Component {
errMessage: '',
};
this.options = [];
this.userSelect = React.createRef();
}
handleSelectChange = (option) => {
@@ -54,7 +55,7 @@ class AddOrgAdminDialog extends React.Component {
<SeahubModalHeader toggle={this.toggle}>{gettext('Add Admins')}</SeahubModalHeader>
<ModalBody>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={false}
placeholder={gettext('Select a user as admin')}
onSelectChange={this.handleSelectChange}

View File

@@ -21,6 +21,7 @@ class UserItem extends React.Component {
isOperationShow: false,
isUserDetailsPopoverOpen: false
};
this.userSelect = React.createRef();
}
onMouseEnter = () => {
@@ -255,7 +256,7 @@ class ShareToUser extends React.Component {
selectedOption: null,
permission: 'rw',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
if (error.response) {
let message = gettext('Library can not be shared to owner.');
@@ -281,7 +282,7 @@ class ShareToUser extends React.Component {
selectedOption: null,
permission: 'rw',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
if (error.response) {
let message = gettext('Library can not be shared to owner.');
@@ -386,7 +387,7 @@ class ShareToUser extends React.Component {
selectedOption: null,
permission: 'rw',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
if (error.response) {
let message = gettext('Library can not be shared to owner.');
@@ -412,7 +413,7 @@ class ShareToUser extends React.Component {
selectedOption: null,
permission: 'rw',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
if (error.response) {
let message = gettext('Library can not be shared to owner.');
@@ -455,7 +456,7 @@ class ShareToUser extends React.Component {
<td>
<div className='add-members'>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
className={classnames('reviewer-select', { 'user-select-right-btn': showDeptBtn })}
placeholder={gettext('Search users...')}

View File

@@ -18,6 +18,7 @@ class SysAdminGroupAddMemberDialog extends React.Component {
selectedOptions: null,
isSubmitBtnDisabled: true
};
this.userSelect = React.createRef();
}
handleSelectChange = (options) => {
@@ -40,7 +41,7 @@ class SysAdminGroupAddMemberDialog extends React.Component {
<SeahubModalHeader toggle={this.props.toggle}>{gettext('Add Member')}</SeahubModalHeader>
<ModalBody>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
placeholder={gettext('Search users')}
onSelectChange={this.handleSelectChange}

View File

@@ -20,6 +20,7 @@ class SysAdminTransferGroupDialog extends React.Component {
selectedOptions: null,
submitBtnDisabled: true
};
this.userSelect = React.createRef();
}
handleSelectChange = (options) => {
@@ -48,7 +49,7 @@ class SysAdminTransferGroupDialog extends React.Component {
</SeahubModalHeader>
<ModalBody>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={false}
placeholder={gettext('Select a user')}
onSelectChange={this.handleSelectChange}

View File

@@ -18,6 +18,7 @@ class SysAdminRepoTransferDialog extends React.Component {
selectedOption: null,
errorMsg: [],
};
this.userSelect = React.createRef();
}
handleSelectChange = (option) => {
@@ -41,7 +42,7 @@ class SysAdminRepoTransferDialog extends React.Component {
</SeahubModalHeader>
<ModalBody>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={false}
placeholder={gettext('Search users')}
onSelectChange={this.handleSelectChange}

View File

@@ -15,6 +15,7 @@ class UserItem extends React.Component {
this.state = {
isOperationShow: false
};
this.userSelect = React.createRef();
}
onMouseEnter = () => {
@@ -169,7 +170,7 @@ class SysAdminShareToUser extends React.Component {
selectedOption: null,
permission: 'rw',
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
if (error.response) {
let message = gettext('Library can not be shared to owner.');
@@ -235,7 +236,7 @@ class SysAdminShareToUser extends React.Component {
<tr>
<td>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
placeholder={gettext('Search users')}
onSelectChange={this.handleSelectChange}

View File

@@ -40,6 +40,7 @@ class TransferDialog extends React.Component {
activeTab: !this.props.isDepAdminTransfer ? TRANS_USER : TRANS_DEPART
};
this.options = [];
this.userSelect = React.createRef();
}
handleSelectChange = (option) => {
@@ -156,7 +157,7 @@ class TransferDialog extends React.Component {
<TabPane tabId="transUser" role="tabpanel" id="transfer-user-panel">
<Label className='transfer-repo-label'>{gettext('Users')}</Label>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={false}
placeholder={gettext('Select a user')}
onSelectChange={this.handleSelectChange}

View File

@@ -25,6 +25,7 @@ class TransferGroupDialog extends React.Component {
errMessage: '',
};
this.options = [];
this.userSelect = React.createRef();
}
handleSelectChange = (option) => {
@@ -63,7 +64,7 @@ class TransferGroupDialog extends React.Component {
<ModalBody>
<p>{gettext('Transfer group to')}</p>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={false}
placeholder={gettext('Please enter 1 or more character')}
onSelectChange={this.handleSelectChange}

View File

@@ -14,7 +14,7 @@ const propTypes = {
onChangeValue: PropTypes.func,
};
const PasswordInput = ({ value, labelValue, enableCheckStrength, onChangeValue }) => {
const PasswordInput = ({ value, labelValue, enableCheckStrength = true, onChangeValue }) => {
const [passwordValue, setPasswordValue] = useState(value || '');
const [isShowPassword, setIsShowPassword] = useState(false);
const [isShowChecker, setIsShowChecker] = useState(false);
@@ -63,8 +63,4 @@ const PasswordInput = ({ value, labelValue, enableCheckStrength, onChangeValue }
PasswordInput.propTypes = propTypes;
PasswordInput.defaultProps = {
enableCheckStrength: true
};
export default PasswordInput;

View File

@@ -6,7 +6,7 @@ import { CellType, COLUMNS_ICON_CONFIG } from '../../../metadata/constants';
import './index.css';
const DetailItem = ({ readonly, field, className, children }) => {
const DetailItem = ({ readonly = true, field, className, children }) => {
const icon = useMemo(() => {
if (field.type === 'size') return COLUMNS_ICON_CONFIG[CellType.NUMBER];
return COLUMNS_ICON_CONFIG[field.type];
@@ -25,10 +25,6 @@ const DetailItem = ({ readonly, field, className, children }) => {
);
};
DetailItem.defaultProps = {
readonly: true,
};
DetailItem.propTypes = {
readonly: PropTypes.bool,
field: PropTypes.object.isRequired,

View File

@@ -101,6 +101,8 @@ class DirentListItem extends React.Component {
this.tagListTitleID = `tag-list-title-${uuidv4()}`;
this.isGeneratingThumbnail = false;
this.thumbnailCenter = null;
this.dragIconRef = null;
this.emptyContentRef = null;
}
componentDidMount() {
@@ -279,7 +281,7 @@ class DirentListItem extends React.Component {
onItemClick = (e) => {
e.preventDefault();
const dirent = this.state.dirent;
if (this.state.isRenameing) {
if (this.state.isRenaming) {
return;
}
@@ -431,7 +433,7 @@ class DirentListItem extends React.Component {
this.props.onItemRenameToggle(this.state.dirent);
this.setState({
isOperationShow: false,
isRenameing: true,
isRenaming: true,
canDrag: false
});
};
@@ -443,7 +445,7 @@ class DirentListItem extends React.Component {
onRenameCancel = () => {
this.setState({
isRenameing: false,
isRenaming: false,
canDrag: this.canDrag // set it back to the initial value
});
this.unfreezeItem();
@@ -593,7 +595,7 @@ class DirentListItem extends React.Component {
let { selectedDirentList } = this.props;
if (selectedDirentList.length > 0 && selectedDirentList.includes(this.state.dirent)) { // drag items and selectedDirentList include item
this.props.onShowDirentsDraggablePreview();
e.dataTransfer.setDragImage(this.refs.empty_content, 0, 0); // Show an empty content
e.dataTransfer.setDragImage(this.emptyContentRef, 0, 0); // Show an empty content
let selectedList = selectedDirentList.map(item => {
let nodeRootPath = this.getDirentPath(item);
let dragStartItemData = { nodeDirent: item, nodeParentPath: this.props.path, nodeRootPath: nodeRootPath };
@@ -605,7 +607,7 @@ class DirentListItem extends React.Component {
}
if (e.dataTransfer && e.dataTransfer.setDragImage) {
e.dataTransfer.setDragImage(this.refs.drag_icon, 15, 15);
e.dataTransfer.setDragImage(this.dragIconRef, 15, 15);
}
let nodeRootPath = this.getDirentPath(this.state.dirent);
@@ -858,15 +860,15 @@ class DirentListItem extends React.Component {
<td className="pl-2 pr-2">
<div className="dir-icon">
{(this.canPreview && dirent.encoded_thumbnail_src) ?
<img ref='drag_icon' src={`${siteRoot}${dirent.encoded_thumbnail_src}`} className="thumbnail cursor-pointer" onClick={this.onItemClick} alt="" /> :
<img ref='drag_icon' src={iconUrl} width="24" alt='' />
<img ref={ref => this.dragIconRef = ref} src={`${siteRoot}${dirent.encoded_thumbnail_src}`} className="thumbnail cursor-pointer" onClick={this.onItemClick} alt="" /> :
<img ref={ref => this.dragIconRef = ref} src={iconUrl} width="24" alt='' />
}
{dirent.is_locked && <img className="locked" src={lockedImageUrl} alt={lockedMessage} title={lockedInfo}/>}
<div ref="empty_content" className="empty-content"></div>
<div ref={ref => this.emptyContentRef = ref} className="empty-content"></div>
</div>
</td>
<td className="name">
{this.state.isRenameing &&
{this.state.isRenaming &&
<Rename
hasSuffix={dirent.type !== 'dir'}
name={dirent.name}
@@ -874,7 +876,7 @@ class DirentListItem extends React.Component {
onRenameCancel={this.onRenameCancel}
/>
}
{!this.state.isRenameing && (
{!this.state.isRenaming && (
<>
{(!dirent.isDir() && !this.canPreview) ?
<a className="sf-link" onClick={this.onItemClick}>{dirent.name}</a> :
@@ -913,7 +915,7 @@ class DirentListItem extends React.Component {
</div>
</td>
<td onClick={this.onItemClick}>
{this.state.isRenameing &&
{this.state.isRenaming &&
<Rename
hasSuffix={dirent.type !== 'dir'}
name={dirent.name}
@@ -921,7 +923,7 @@ class DirentListItem extends React.Component {
onRenameCancel={this.onRenameCancel}
/>
}
{!this.state.isRenameing && (
{!this.state.isRenaming && (
<>
{(!dirent.isDir() && !this.canPreview) ?
<a className="sf-link">{dirent.name}</a> :

View File

@@ -198,7 +198,7 @@ class ItemDropdownMenu extends React.Component {
<DropdownMenu
style={menuStyle}
className={this.props.menuClassname}
positionFixed
positionFixed={true}
flip={false}
modifiers={[{ name: 'preventOverflow', options: { boundary: document.body } }]}
>
@@ -224,7 +224,7 @@ class ItemDropdownMenu extends React.Component {
<i className="sf3-font-down sf3-font rotate-270"></i>
</DropdownToggle>
<DropdownMenu
positionFixed
positionFixed={true}
flip={false}
modifiers={[{ name: 'preventOverflow', options: { boundary: document.body } }]}
>

View File

@@ -10,7 +10,7 @@ import Loading from '../loading';
const RepoListWrapper = (props) => {
const {
mode, isShowFile, fileSuffixes, currentPath, isCurrentRepoShow, currentRepoInfo, selectedRepo,
mode, isShowFile = true, fileSuffixes = [], currentPath, isCurrentRepoShow, currentRepoInfo, selectedRepo,
selectedPath, isOtherRepoShow, selectedItemInfo, repoList,
searchStatus, searchResults, onSearchedItemClick, onSearchedItemDoubleClick, selectedSearchedRepo, newFolderName, initToShowChildren
} = props;
@@ -188,9 +188,4 @@ RepoListWrapper.propTypes = {
initToShowChildren: PropTypes.bool,
};
RepoListWrapper.defaultProps = {
isShowFile: false,
fileSuffixes: [],
};
export default RepoListWrapper;

View File

@@ -34,6 +34,7 @@ class ManageMembersDialog extends React.Component {
keyword: '',
membersFound: []
};
this.userSelect = React.createRef();
}
componentDidMount() {
@@ -81,7 +82,7 @@ class ManageMembersDialog extends React.Component {
groupMembers: [].concat(newMembers, this.state.groupMembers),
selectedOption: null,
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
if (res.data.failed.length > 0) {
this.setState({
errMessage: res.data.failed
@@ -186,7 +187,7 @@ class ManageMembersDialog extends React.Component {
<UserSelect
placeholder={gettext('Search users')}
onSelectChange={this.onSelectChange}
ref="userSelect"
ref={this.userSelect}
isMulti={true}
className="add-members-select"
/>

View File

@@ -20,7 +20,7 @@ const TagsEditor = ({
record,
value: oldValue,
editorPosition = { left: 0, top: 0 },
canAddTag,
canAddTag = true,
onPressTab,
addNewTag,
selectTag,
@@ -268,8 +268,4 @@ TagsEditor.propTypes = {
deselectTag: PropTypes.func,
};
TagsEditor.defaultProps = {
canAddTag: false,
};
export default TagsEditor;

View File

@@ -10,19 +10,19 @@ const SFTable = ({
table,
visibleColumns,
headerSettings,
recordsIds,
groupbys,
groups,
showSequenceColumn,
isGroupView,
showRecordAsTree,
recordsIds = [],
groupbys = [],
groups = [],
showSequenceColumn = true,
isGroupView = false,
showRecordAsTree = false,
recordsTree,
treeNodeKeyRecordIdMap,
keyTreeNodeFoldedMap,
noRecordsTipsText,
isLoadingMoreRecords,
hasMoreRecords,
showGridFooter,
isLoadingMoreRecords = false,
hasMoreRecords = false,
showGridFooter = true,
onGridKeyDown,
onGridKeyUp,
loadMore,
@@ -160,21 +160,4 @@ SFTable.propTypes = {
loadAll: PropTypes.func,
};
SFTable.defaultProps = {
recordsIds: [],
groupbys: [],
groups: [],
isGroupView: false,
showRecordAsTree: false,
showSequenceColumn: true,
hasMoreRecords: false,
isLoadingMoreRecords: false,
showGridFooter: true,
canModifyRecords: false,
supportCopy: false,
supportCut: false,
supportPaste: false,
supportDragFill: false,
};
export default SFTable;

View File

@@ -24,7 +24,7 @@ const Cell = ({
ColumnDropdownMenu,
column,
columnIndex,
style: propsStyle,
style: propsStyle = null,
draggingColumnKey,
draggingColumnIndex,
dragOverColumnKey,
@@ -233,10 +233,6 @@ const Cell = ({
);
};
Cell.defaultProps = {
style: null,
};
Cell.propTypes = {
groupOffsetLeft: PropTypes.number,
height: PropTypes.number,

View File

@@ -4,7 +4,16 @@ import { UncontrolledTooltip, DropdownItem } from 'reactstrap';
import classnames from 'classnames';
import { Icon } from '@seafile/sf-metadata-ui-component';
const ColumnDropdownItem = ({ disabled, iconName, target, title, tip, className, onChange, onMouseEnter }) => {
const ColumnDropdownItem = ({
disabled = false,
iconName,
target,
title,
tip,
className = '',
onChange = () => {},
onMouseEnter = () => {},
}) => {
const [isShowToolTip, setToolTipShow] = useState(false);
useEffect(() => {
@@ -62,11 +71,4 @@ ColumnDropdownItem.propTypes = {
onMouseEnter: PropTypes.func.isRequired,
};
ColumnDropdownItem.defaultProps = {
onChange: () => {},
onMouseEnter: () => {},
disabled: false,
className: '',
};
export default ColumnDropdownItem;

View File

@@ -21,7 +21,7 @@ const HeaderDropdownMenu = ({ column, ColumnDropdownMenu, customProps }) => {
const renderDropdownMenu = useCallback(() => {
return (
<DropdownMenu
positionFixed
positionFixed={true}
flip={false}
modifiers={[{ name: 'preventOverflow', options: { boundary: document.body } }]}
className="sf-table-dropdown-menu"

View File

@@ -10,7 +10,7 @@ import { NODE_CONTENT_LEFT_INDENT, NODE_ICON_LEFT_INDENT } from '../../../../con
import './index.css';
const Cell = React.memo(({
needBindEvents,
needBindEvents = true,
column,
record,
groupRecordIndex,
@@ -193,10 +193,6 @@ const Cell = React.memo(({
return !cellCompare(props, nextProps);
});
Cell.defaultProps = {
needBindEvents: true
};
Cell.propTypes = {
frozen: PropTypes.bool,
isCellSelected: PropTypes.bool,

View File

@@ -15,6 +15,7 @@ class UserItem extends React.Component {
isHighlighted: false,
isOperationShow: false
};
this.userSelect = React.createRef();
}
onMouseEnter = () => {
@@ -131,7 +132,7 @@ class LinkAuthenticatedUsers extends React.Component {
authUsers: success.concat(authUsers),
selectedOption: null
});
this.refs.userSelect.clearSelect();
this.userSelect.current.clearSelect();
}).catch(error => {
let errMessage = Utils.getErrorMsg(error);
toaster.danger(errMessage);
@@ -192,7 +193,7 @@ class LinkAuthenticatedUsers extends React.Component {
<tr>
<td>
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
placeholder={gettext('Search users')}
onSelectChange={this.handleSelectChange}

View File

@@ -50,6 +50,7 @@ class LinkCreation extends React.Component {
selectedOption: null,
inputEmails: ''
};
this.userSelect = React.createRef();
}
setExpType = (e) => {
@@ -389,7 +390,7 @@ class LinkCreation extends React.Component {
</Label>
{this.state.currentScope === 'specific_users' &&
<UserSelect
ref="userSelect"
ref={this.userSelect}
isMulti={true}
placeholder={gettext('Search users')}
onSelectChange={this.handleSelectChange}

View File

@@ -17,11 +17,11 @@ const FilterSetter = ({
isPre,
collaborators,
filtersClassName,
target,
target = 'sf-metadata-filter-popover',
filterConjunction,
basicFilters,
basicFilters = [],
modifyFilters,
viewType,
viewType = VIEW_TYPE.TABLE,
}) => {
const [isShowSetter, setShowSetter] = useState(false);
@@ -107,10 +107,4 @@ FilterSetter.propTypes = {
viewType: PropTypes.string,
};
FilterSetter.defaultProps = {
target: 'sf-metadata-filter-popover',
basicFilters: [],
viewType: VIEW_TYPE.TABLE,
};
export default FilterSetter;

View File

@@ -8,7 +8,14 @@ import { SUPPORT_GROUP_COLUMN_TYPES } from '../../constants';
import { isEnter, isSpace } from '../../utils/hotkey';
import { getValidGroupbys } from '../../utils/group';
const GroupbySetter = ({ columns: allColumns, readOnly, groupbys: propsGroupbys, wrapperClass, target, modifyGroupbys }) => {
const GroupbySetter = ({
target = 'sf-metadata-groupby-popover',
columns: allColumns,
readOnly,
groupbys: propsGroupbys,
wrapperClass,
modifyGroupbys
}) => {
const [isShowSetter, setShowSetter] = useState(false);
const columns = useMemo(() => {
@@ -72,10 +79,6 @@ const GroupbySetter = ({ columns: allColumns, readOnly, groupbys: propsGroupbys,
};
GroupbySetter.defaultProps = {
target: 'sf-metadata-groupby-popover',
};
GroupbySetter.propTypes = {
readOnly: PropTypes.bool,
wrapperClass: PropTypes.string,

View File

@@ -8,7 +8,7 @@ import { getValidSorts } from '../../utils/sort';
import { EVENT_BUS_TYPE } from '../../constants';
import { isEnter, isSpace } from '../../utils/hotkey';
const SortSetter = ({ target, type, sorts: propsSorts, readOnly, columns, wrapperClass, modifySorts }) => {
const SortSetter = ({ target = 'sf-metadata-sort-popover', type, sorts: propsSorts, readOnly, columns, wrapperClass, modifySorts }) => {
const [isShowSetter, setShowSetter] = useState(false);
const sorts = useMemo(() => {
@@ -94,9 +94,4 @@ const propTypes = {
SortSetter.propTypes = propTypes;
SortSetter.defaultProps = {
target: 'sf-metadata-sort-popover',
isNeedSubmit: false,
};
export default SortSetter;

View File

@@ -4,7 +4,16 @@ import { UncontrolledTooltip, DropdownItem } from 'reactstrap';
import classnames from 'classnames';
import { Icon } from '@seafile/sf-metadata-ui-component';
const ColumnDropdownItem = ({ disabled, iconName, target, title, tip, className, onChange, onMouseEnter }) => {
const ColumnDropdownItem = ({
disabled = false,
iconName,
target,
title,
tip,
className = '',
onChange = () => {},
onMouseEnter = () => {},
}) => {
const [isShowToolTip, setToolTipShow] = useState(false);
useEffect(() => {
@@ -62,11 +71,4 @@ ColumnDropdownItem.propTypes = {
onMouseEnter: PropTypes.func.isRequired,
};
ColumnDropdownItem.defaultProps = {
onChange: () => {},
onMouseEnter: () => {},
disabled: false,
className: '',
};
export default ColumnDropdownItem;

View File

@@ -18,7 +18,7 @@ const Cell = ({
isHideTriangle,
column,
columnIndex,
style: propsStyle,
style: propsStyle = null,
draggingColumnKey,
draggingColumnIndex,
dragOverColumnKey,
@@ -213,10 +213,6 @@ const Cell = ({
);
};
Cell.defaultProps = {
style: null,
};
Cell.propTypes = {
groupOffsetLeft: PropTypes.number,
height: PropTypes.number,

View File

@@ -13,7 +13,7 @@ import { openFile } from '../../../../../../utils/file';
import './index.css';
const Cell = React.memo(({
needBindEvents,
needBindEvents = true,
column,
record,
groupRecordIndex,
@@ -198,10 +198,6 @@ const Cell = React.memo(({
return !isChanged;
});
Cell.defaultProps = {
needBindEvents: true
};
Cell.propTypes = {
frozen: PropTypes.bool,
isCellSelected: PropTypes.bool,