mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-09 10:50:24 +00:00
8
frontend/package-lock.json
generated
8
frontend/package-lock.json
generated
@@ -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",
|
||||
|
@@ -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",
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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...')}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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> :
|
||||
|
@@ -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 } }]}
|
||||
>
|
||||
|
@@ -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;
|
||||
|
@@ -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"
|
||||
/>
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
@@ -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"
|
||||
|
@@ -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,
|
||||
|
@@ -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}
|
||||
|
@@ -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}
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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,
|
||||
|
@@ -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,
|
||||
|
Reference in New Issue
Block a user