mirror of
https://github.com/plankanban/planka.git
synced 2025-12-26 09:15:01 +03:00
66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
/*!
|
|
* Copyright (c) 2024 PLANKA Software GmbH
|
|
* Licensed under the Fair Use License: https://github.com/plankanban/planka/blob/master/LICENSE.md
|
|
*/
|
|
|
|
import React from 'react';
|
|
import { useSelector } from 'react-redux';
|
|
|
|
import selectors from '../../../selectors';
|
|
import ModalTypes from '../../../constants/ModalTypes';
|
|
import { BoardContexts, BoardViews } from '../../../constants/Enums';
|
|
import KanbanContent from './KanbanContent';
|
|
import FiniteContent from './FiniteContent';
|
|
import EndlessContent from './EndlessContent';
|
|
import ShortcutsProvider from './ShortcutsProvider';
|
|
import CardModal from '../../cards/CardModal';
|
|
import BoardActivitiesModal from '../../activities/BoardActivitiesModal';
|
|
|
|
const Board = React.memo(() => {
|
|
const board = useSelector(selectors.selectCurrentBoard);
|
|
const modal = useSelector(selectors.selectCurrentModal);
|
|
const isCardModalOpened = useSelector((state) => !!selectors.selectPath(state).cardId);
|
|
|
|
let Content;
|
|
if (board.view === BoardViews.KANBAN) {
|
|
Content = KanbanContent;
|
|
} else {
|
|
switch (board.context) {
|
|
case BoardContexts.BOARD:
|
|
Content = FiniteContent;
|
|
|
|
break;
|
|
case BoardContexts.ARCHIVE:
|
|
case BoardContexts.TRASH:
|
|
Content = EndlessContent;
|
|
|
|
break;
|
|
default:
|
|
}
|
|
}
|
|
|
|
let modalNode = null;
|
|
if (isCardModalOpened) {
|
|
modalNode = <CardModal />;
|
|
} else if (modal) {
|
|
switch (modal.type) {
|
|
case ModalTypes.BOARD_ACTIVITIES:
|
|
modalNode = <BoardActivitiesModal />;
|
|
|
|
break;
|
|
default:
|
|
}
|
|
}
|
|
|
|
return (
|
|
<>
|
|
<ShortcutsProvider>
|
|
<Content />
|
|
</ShortcutsProvider>
|
|
{modalNode}
|
|
</>
|
|
);
|
|
});
|
|
|
|
export default Board;
|