diff --git a/frontend/src/components/cur-dir-path/dir-tool.js b/frontend/src/components/cur-dir-path/dir-tool.js index e4c2822a40..ab30682a32 100644 --- a/frontend/src/components/cur-dir-path/dir-tool.js +++ b/frontend/src/components/cur-dir-path/dir-tool.js @@ -25,6 +25,7 @@ const propTypes = { sortOrder: PropTypes.string, sortItems: PropTypes.func, viewId: PropTypes.string, + onCloseDetail: PropTypes.func, }; class DirTool extends React.Component { @@ -119,7 +120,7 @@ class DirTool extends React.Component { if (isFileExtended) { return (
- +
); } diff --git a/frontend/src/components/dir-view-mode/dir-column-view.js b/frontend/src/components/dir-view-mode/dir-column-view.js index 0687c0f771..8aa78e9282 100644 --- a/frontend/src/components/dir-view-mode/dir-column-view.js +++ b/frontend/src/components/dir-view-mode/dir-column-view.js @@ -205,6 +205,7 @@ class DirColumnView extends React.Component { renameFileCallback={this.props.renameFileCallback} updateCurrentDirent={this.props.updateCurrentDirent} closeDirentDetail={this.props.closeDirentDetail} + showDirentDetail={this.props.showDirentDetail} /> )} {currentMode === LIST_MODE && diff --git a/frontend/src/metadata/components/view-toolbar/index.js b/frontend/src/metadata/components/view-toolbar/index.js index 8801eba717..b74dcd7741 100644 --- a/frontend/src/metadata/components/view-toolbar/index.js +++ b/frontend/src/metadata/components/view-toolbar/index.js @@ -8,7 +8,7 @@ import KanbanViewToolBar from './kanban-view-toolbar'; import './index.css'; -const ViewToolBar = ({ viewId, isCustomPermission, showDetail }) => { +const ViewToolBar = ({ viewId, isCustomPermission, showDetail, closeDetail }) => { const [view, setView] = useState(null); const [collaborators, setCollaborators] = useState([]); @@ -105,6 +105,7 @@ const ViewToolBar = ({ viewId, isCustomPermission, showDetail }) => { collaborators={collaborators} modifyFilters={modifyFilters} modifySorts={modifySorts} + closeDetail={closeDetail} /> )} @@ -114,7 +115,8 @@ const ViewToolBar = ({ viewId, isCustomPermission, showDetail }) => { ViewToolBar.propTypes = { viewId: PropTypes.string, isCustomPermission: PropTypes.bool, - switchViewMode: PropTypes.func, + showDetail: PropTypes.func, + closeDetail: PropTypes.func, }; export default ViewToolBar; diff --git a/frontend/src/metadata/components/view-toolbar/kanban-view-toolbar/index.js b/frontend/src/metadata/components/view-toolbar/kanban-view-toolbar/index.js index 430959c33e..2196c3467c 100644 --- a/frontend/src/metadata/components/view-toolbar/kanban-view-toolbar/index.js +++ b/frontend/src/metadata/components/view-toolbar/kanban-view-toolbar/index.js @@ -9,7 +9,8 @@ const KanbanViewToolBar = ({ view, collaborators, modifyFilters, - modifySorts + modifySorts, + closeDetail, }) => { const viewType = useMemo(() => view.type, [view]); const viewColumns = useMemo(() => { @@ -22,6 +23,7 @@ const KanbanViewToolBar = ({ }, [viewColumns]); const onToggleKanbanSetting = () => { + closeDetail(); window.sfMetadataContext.eventBus.dispatch(EVENT_BUS_TYPE.TOGGLE_KANBAN_SETTINGS); }; diff --git a/frontend/src/metadata/hooks/metadata-view.js b/frontend/src/metadata/hooks/metadata-view.js index c9436db496..027ed6aac8 100644 --- a/frontend/src/metadata/hooks/metadata-view.js +++ b/frontend/src/metadata/hooks/metadata-view.js @@ -134,6 +134,7 @@ export const MetadataViewProvider = ({ renameFileCallback: params.renameFileCallback, updateCurrentDirent: params.updateCurrentDirent, closeDirentDetail: params.closeDirentDetail, + showDirentDetail: params.showDirentDetail, }} > {children} diff --git a/frontend/src/metadata/views/kanban/boards/board/card/index.css b/frontend/src/metadata/views/kanban/boards/board/card/index.css index 26a73d7d88..6c35637e30 100644 --- a/frontend/src/metadata/views/kanban/boards/board/card/index.css +++ b/frontend/src/metadata/views/kanban/boards/board/card/index.css @@ -34,6 +34,10 @@ margin-bottom: 0; } +.sf-metadata-kanban-card .sf-metadata-kanban-card-record .file-name-formatter-wrapper { + width: fit-content; +} + .sf-metadata-kanban-card .sf-metadata-kanban-card-record .sf-metadata-kanban-card-record-name { margin-bottom: 4px; color: #666; @@ -68,7 +72,7 @@ } .sf-metadata-kanban-card .file-name-formatter:not(.sf-metadata-image-file-formatter) { - margin-left: -4px; + transform: translateX(-4px); } .sf-metadata-kanban-card .sf-metadata-special-file-name-formatter:not(.sf-metadata-image-file-formatter) { @@ -79,6 +83,16 @@ transform: translateY(-1px); } +.sf-metadata-kanban-card .sf-metadata-ui.file-name-formatter .sf-metadata-file-name { + text-decoration: none; + flex: none; +} + +.sf-metadata-kanban-card .sf-metadata-ui.file-name-formatter .sf-metadata-file-name:hover { + text-decoration: underline; + text-decoration-color: #212529; +} + .sf-metadata-kanban-card .sf-metadata-kanban-card-record .collaborators-formatter { display: flex; flex-wrap: wrap; diff --git a/frontend/src/metadata/views/kanban/boards/board/card/index.js b/frontend/src/metadata/views/kanban/boards/board/card/index.js index 01572ceb85..dbc9714666 100644 --- a/frontend/src/metadata/views/kanban/boards/board/card/index.js +++ b/frontend/src/metadata/views/kanban/boards/board/card/index.js @@ -1,8 +1,10 @@ -import React from 'react'; +import React, { useCallback } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import { getCellValueByColumn, isValidCellValue } from '../../../../../utils/cell'; import Formatter from '../formatter'; +import { PRIVATE_COLUMN_KEY } from '../../../../../constants'; +import { useMetadataView } from '../../../../../hooks/metadata-view'; import './index.css'; @@ -13,12 +15,39 @@ const Card = ({ record, titleColumn, displayColumns, + onCloseSettings, }) => { + const { updateCurrentDirent, showDirentDetail } = useMetadataView(); const titleValue = getCellValueByColumn(record, titleColumn); + const handleClick = useCallback((e) => { + e.preventDefault(); + e.stopPropagation(); + const name = record[PRIVATE_COLUMN_KEY.FILE_NAME]; + const path = record[PRIVATE_COLUMN_KEY.PARENT_DIR]; + updateCurrentDirent({ + type: 'file', + name, + path, + file_tags: [] + }); + onCloseSettings(); + showDirentDetail(); + }, [record, updateCurrentDirent, showDirentDetail, onCloseSettings]); + + const handleClickFilename = useCallback((e) => { + e.preventDefault(); + e.stopPropagation(); + console.log('click filename'); + }, []); + return ( -
+
{titleColumn && (
@@ -41,7 +70,9 @@ const Card = ({ return (
{displayColumnName && (
{column.name}
)} - +
+ +
); })} @@ -57,6 +88,7 @@ Card.propTypes = { record: PropTypes.object, titleColumn: PropTypes.object, displayColumns: PropTypes.array, + onCloseSettings: PropTypes.func.isRequired, }; export default Card; diff --git a/frontend/src/metadata/views/kanban/boards/board/index.js b/frontend/src/metadata/views/kanban/boards/board/index.js index 0188ac34a2..79679b0ec8 100644 --- a/frontend/src/metadata/views/kanban/boards/board/index.js +++ b/frontend/src/metadata/views/kanban/boards/board/index.js @@ -23,6 +23,7 @@ const Board = ({ deleteOption, onFreezed, onUnFreezed, + onCloseSettings, }) => { const [isDraggingOver, setDraggingOver] = useState(false); const boardName = useMemo(() => `sf_metadata_kanban_board_${board.key}`, [board]); @@ -82,6 +83,7 @@ const Board = ({ record={record} titleColumn={titleColumn} displayColumns={displayColumns} + onCloseSettings={onCloseSettings} /> ); if (readonly) return CardElement; @@ -110,6 +112,7 @@ Board.propTypes = { deleteOption: PropTypes.func, onFreezed: PropTypes.func, onUnFreezed: PropTypes.func, + onCloseSettings: PropTypes.func.isRequired, }; export default Board; diff --git a/frontend/src/metadata/views/kanban/boards/index.js b/frontend/src/metadata/views/kanban/boards/index.js index 980e177634..4812ef1ae6 100644 --- a/frontend/src/metadata/views/kanban/boards/index.js +++ b/frontend/src/metadata/views/kanban/boards/index.js @@ -14,7 +14,7 @@ import Board from './board'; import './index.css'; -const Boards = ({ modifyRecord, modifyColumnData }) => { +const Boards = ({ modifyRecord, modifyColumnData, onCloseSettings }) => { const [haveFreezed, setHaveFreezed] = useState(false); const { metadata, store } = useMetadataView(); @@ -193,6 +193,7 @@ const Boards = ({ modifyRecord, modifyColumnData }) => { deleteOption={deleteOption} onFreezed={onFreezed} onUnFreezed={onUnFreezed} + onCloseSettings={onCloseSettings} /> ); })} @@ -207,6 +208,7 @@ const Boards = ({ modifyRecord, modifyColumnData }) => { Boards.propTypes = { modifyRecord: PropTypes.func.isRequired, modifyColumnData: PropTypes.func.isRequired, + onCloseSettings: PropTypes.func.isRequired, }; export default Boards; diff --git a/frontend/src/metadata/views/kanban/index.js b/frontend/src/metadata/views/kanban/index.js index 774665392b..c64b5bcc85 100644 --- a/frontend/src/metadata/views/kanban/index.js +++ b/frontend/src/metadata/views/kanban/index.js @@ -52,7 +52,7 @@ const Kanban = () => { return (
- +
{isShowSettings && (
}