Progress Commit

Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
Dave Richer
2024-05-16 16:41:39 -04:00
parent 095e1e9789
commit d47ae64bd6
11 changed files with 5174 additions and 24727 deletions

29610
client/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -17,10 +17,10 @@
"@reduxjs/toolkit": "^2.2.4", "@reduxjs/toolkit": "^2.2.4",
"@sentry/cli": "^2.31.2", "@sentry/cli": "^2.31.2",
"@sentry/react": "^7.114.0", "@sentry/react": "^7.114.0",
"@splitsoftware/splitio-react": "^1.11.1", "@splitsoftware/splitio-react": "^1.12.0",
"@tanem/react-nprogress": "^5.0.51", "@tanem/react-nprogress": "^5.0.51",
"@vitejs/plugin-react": "^4.2.1", "@vitejs/plugin-react": "^4.2.1",
"antd": "^5.17.0", "antd": "^5.17.2",
"apollo-link-logger": "^2.0.1", "apollo-link-logger": "^2.0.1",
"apollo-link-sentry": "^3.3.0", "apollo-link-sentry": "^3.3.0",
"autosize": "^6.0.1", "autosize": "^6.0.1",
@@ -32,9 +32,9 @@
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"env-cmd": "^10.1.0", "env-cmd": "^10.1.0",
"exifr": "^7.1.3", "exifr": "^7.1.3",
"firebase": "^10.11.1", "firebase": "^10.12.0",
"graphql": "^16.6.0", "graphql": "^16.6.0",
"i18next": "^23.11.3", "i18next": "^23.11.4",
"i18next-browser-languagedetector": "^7.2.1", "i18next-browser-languagedetector": "^7.2.1",
"immutability-helper": "^3.1.1", "immutability-helper": "^3.1.1",
"kuika-smooth-dnd": "^1.0.0", "kuika-smooth-dnd": "^1.0.0",
@@ -62,7 +62,7 @@
"react-product-fruits": "^2.2.6", "react-product-fruits": "^2.2.6",
"react-redux": "^9.1.2", "react-redux": "^9.1.2",
"react-resizable": "^3.0.5", "react-resizable": "^3.0.5",
"react-router-dom": "^6.23.0", "react-router-dom": "^6.23.1",
"react-scripts": "^5.0.1", "react-scripts": "^5.0.1",
"react-sticky": "^6.0.3", "react-sticky": "^6.0.3",
"react-virtualized": "^9.22.5", "react-virtualized": "^9.22.5",
@@ -73,7 +73,7 @@
"redux-saga": "^1.3.0", "redux-saga": "^1.3.0",
"redux-state-sync": "^3.1.4", "redux-state-sync": "^3.1.4",
"reselect": "^5.1.0", "reselect": "^5.1.0",
"sass": "^1.77.0", "sass": "^1.77.1",
"socket.io-client": "^4.7.5", "socket.io-client": "^4.7.5",
"styled-components": "^6.1.11", "styled-components": "^6.1.11",
"subscriptions-transport-ws": "^0.11.0", "subscriptions-transport-ws": "^0.11.0",

View File

@@ -22,7 +22,7 @@ const CardColorLegend = ({ bodyshop }) => {
}); });
return ( return (
<Col> <Col style={{ marginLeft: "15px" }}>
<Typography>{t("production.labels.legend")}</Typography> <Typography>{t("production.labels.legend")}</Typography>
<List <List
grid={{ grid={{

View File

@@ -1,4 +1,4 @@
import { SyncOutlined } from "@ant-design/icons"; import { SyncOutlined, UnorderedListOutlined } from "@ant-design/icons";
import { useApolloClient } from "@apollo/client"; import { useApolloClient } from "@apollo/client";
import Board from "../../components/trello-board/index"; import Board from "../../components/trello-board/index";
import { Button, Grid, notification, Space, Statistic } from "antd"; import { Button, Grid, notification, Space, Statistic } from "antd";
@@ -54,7 +54,10 @@ export function ProductionBoardKanbanComponent({
const [isMoving, setIsMoving] = useState(false); const [isMoving, setIsMoving] = useState(false);
const [orientation, setOrientation] = useState("vertical");
const { t } = useTranslation(); const { t } = useTranslation();
useEffect(() => { useEffect(() => {
const boardData = createBoardData( const boardData = createBoardData(
[...bodyshop.md_ro_statuses.production_statuses, ...(bodyshop.md_ro_statuses.additional_board_statuses || [])], [...bodyshop.md_ro_statuses.production_statuses, ...(bodyshop.md_ro_statuses.additional_board_statuses || [])],
@@ -71,6 +74,11 @@ export function ProductionBoardKanbanComponent({
const client = useApolloClient(); const client = useApolloClient();
// Create a function that toggles the orientation when the button is clicked
const toggleOrientation = () => {
setOrientation((prevOrientation) => (prevOrientation === "horizontal" ? "vertical" : "horizontal"));
};
const handleDragEnd = async (cardId, sourceLaneId, targetLaneId, position, cardDetails) => { const handleDragEnd = async (cardId, sourceLaneId, targetLaneId, position, cardDetails) => {
logImEXEvent("kanban_drag_end"); logImEXEvent("kanban_drag_end");
@@ -106,33 +114,41 @@ export function ProductionBoardKanbanComponent({
} }
const newChildCardNewParent = newChildCard ? cardId : null; const newChildCardNewParent = newChildCard ? cardId : null;
const update = await client.mutate({ try {
mutation: generate_UPDATE_JOB_KANBAN( const update = await client.mutate({
oldChildCard ? oldChildCard.id : null, mutation: generate_UPDATE_JOB_KANBAN(
oldChildCardNewParent, oldChildCard ? oldChildCard.id : null,
cardId, oldChildCardNewParent,
movedCardNewKanbanParent, cardId,
targetLaneId, movedCardNewKanbanParent,
newChildCard ? newChildCard.id : null, targetLaneId,
newChildCardNewParent newChildCard ? newChildCard.id : null,
) newChildCardNewParent
}); )
});
insertAuditTrail({ insertAuditTrail({
jobid: cardId, jobid: cardId,
operation: AuditTrailMapping.jobstatuschange(targetLaneId), operation: AuditTrailMapping.jobstatuschange(targetLaneId),
type: "jobstatuschange" type: "jobstatuschange"
}); });
if (update.errors) { if (update.errors) {
notification["error"]({
message: t("production.errors.boardupdate", {
message: JSON.stringify(update.errors)
})
});
}
} catch (error) {
notification["error"]({ notification["error"]({
message: t("production.errors.boardupdate", { message: t("production.errors.boardupdate", {
message: JSON.stringify(update.errors) message: error.message
}) })
}); });
} finally {
setIsMoving(false);
} }
setIsMoving(false);
}; };
const totalHrs = data const totalHrs = data
@@ -174,7 +190,7 @@ export function ProductionBoardKanbanComponent({
<Sticky> <Sticky>
{({ style }) => ( {({ style }) => (
<div className="react-trello-column-header" style={{ ...style, zIndex: "99", backgroundColor: "#e3e3e3" }}> <div className="react-trello-column-header" style={{ ...style, zIndex: "99", backgroundColor: "#e3e3e3" }}>
{title} <UnorderedListOutlined style={{ marginRight: "5px" }} /> {title}
</div> </div>
)} )}
</Sticky> </Sticky>
@@ -182,7 +198,7 @@ export function ProductionBoardKanbanComponent({
const NormalHeader = ({ title }) => ( const NormalHeader = ({ title }) => (
<div className="react-trello-column-header" style={{ backgroundColor: "#e3e3e3" }}> <div className="react-trello-column-header" style={{ backgroundColor: "#e3e3e3" }}>
{title} <UnorderedListOutlined style={{ marginRight: "5px" }} /> {title}
</div> </div>
); );
@@ -229,6 +245,7 @@ export function ProductionBoardKanbanComponent({
</Button> </Button>
<ProductionBoardFilters filter={filter} setFilter={setFilter} loading={isMoving} /> <ProductionBoardFilters filter={filter} setFilter={setFilter} loading={isMoving} />
<ProductionBoardKanbanCardSettings associationSettings={associationSettings} /> <ProductionBoardKanbanCardSettings associationSettings={associationSettings} />
<Button onClick={toggleOrientation}>Toggle Orientation</Button>
</Space> </Space>
} }
/> />
@@ -242,6 +259,8 @@ export function ProductionBoardKanbanComponent({
handleDragEnd={handleDragEnd} handleDragEnd={handleDragEnd}
style={{ height: "100%", backgroundColor: "transparent" }} style={{ height: "100%", backgroundColor: "transparent" }}
components={components} components={components}
orientation={orientation}
collapsibleLanes
/> />
</StickyContainer> </StickyContainer>
) : ( ) : (
@@ -252,6 +271,8 @@ export function ProductionBoardKanbanComponent({
handleDragEnd={handleDragEnd} handleDragEnd={handleDragEnd}
style={{ backgroundColor: "transparent" }} style={{ backgroundColor: "transparent" }}
components={components} components={components}
collapsibleLanes
orientation={orientation}
/> />
</div> </div>
)} )}

View File

@@ -6,10 +6,11 @@ import NewLaneForm from "./NewLaneForm.jsx";
import NewCardForm from "./NewCardForm.jsx"; import NewCardForm from "./NewCardForm.jsx";
import AddCardLink from "./AddCardLink"; import AddCardLink from "./AddCardLink";
import NewLaneSection from "./NewLaneSection.jsx"; import NewLaneSection from "./NewLaneSection.jsx";
import { BoardWrapper, GlobalStyle, ScrollableLane, Section } from "../styles/Base"; import { BoardWrapper, GlobalStyleHorizontal, GlobalStyleVertical, ScrollableLane, Section } from "../styles/Base";
const exports = { const exports = {
GlobalStyle, GlobalStyleHorizontal,
GlobalStyleVertical,
BoardWrapper, BoardWrapper,
Loader, Loader,
ScrollableLane, ScrollableLane,

View File

@@ -3,15 +3,22 @@ import classNames from "classnames";
import { useState } from "react"; import { useState } from "react";
import { v1 } from "uuid"; import { v1 } from "uuid";
const Board = ({ id, className, components, ...additionalProps }) => { const Board = ({ id, className, components, orientation, ...additionalProps }) => {
const [storeId] = useState(id || v1()); const [storeId] = useState(id || v1());
const allClassNames = classNames("react-trello-board", className || ""); const allClassNames = classNames("react-trello-board", className || "");
const Styles = orientation === "horizontal" ? components.GlobalStyleHorizontal : components.GlobalStyleVertical;
return ( return (
<> <>
<components.GlobalStyle /> <Styles />
<BoardContainer components={components} {...additionalProps} id={storeId} className={allClassNames} /> <BoardContainer
components={components}
orientation={orientation}
{...additionalProps}
id={storeId}
className={allClassNames}
/>
</> </>
); );
}; };

View File

@@ -141,12 +141,13 @@ class BoardContainer extends Component {
laneStyle, laneStyle,
onCardMoveAcrossLanes, onCardMoveAcrossLanes,
t, t,
orientation,
...otherProps ...otherProps
} = this.props; } = this.props;
const { addLaneMode } = this.state; const { addLaneMode } = this.state;
// Stick to whitelisting attributes to segregate board and lane props // Stick to whitelisting attributes to segregate board and lane props
const passthroughProps = pick(this.props, [ const passThroughProps = pick(this.props, [
"onCardMoveAcrossLanes", "onCardMoveAcrossLanes",
"onLaneScroll", "onLaneScroll",
"onLaneDelete", "onLaneDelete",
@@ -169,19 +170,19 @@ class BoardContainer extends Component {
"handleDragEnd", "handleDragEnd",
"cardDragClass", "cardDragClass",
"editLaneTitle", "editLaneTitle",
"t" "orientation"
]); ]);
return ( return (
<components.BoardWrapper style={style} {...otherProps} draggable={false}> <components.BoardWrapper style={style} orientation={orientation} {...otherProps} draggable={false}>
<PopoverWrapper> <PopoverWrapper>
<Container <Container
orientation="horizontal" orientation={orientation === "vertical" ? "vertical" : "horizontal"}
onDragStart={this.onDragStart} onDragStart={this.onDragStart}
dragClass={laneDragClass} dragClass={laneDragClass}
dropClass={laneDropClass} dropClass={laneDropClass}
onDrop={this.onLaneDrop} onDrop={this.onLaneDrop}
lockAxis="x" lockAxis={orientation === "vertical" ? "y" : "x"}
getChildPayload={(index) => this.getLaneDetails(index)} getChildPayload={(index) => this.getLaneDetails(index)}
groupName={this.groupName} groupName={this.groupName}
> >
@@ -201,7 +202,7 @@ class BoardContainer extends Component {
cardStyle={this.props.cardStyle || lane.cardStyle} cardStyle={this.props.cardStyle || lane.cardStyle}
editable={editable && !lane.disallowAddingCard} editable={editable && !lane.disallowAddingCard}
{...otherProps} {...otherProps}
{...passthroughProps} {...passThroughProps}
/> />
); );
return draggable && laneDraggable ? <Draggable key={lane.id}>{laneToRender}</Draggable> : laneToRender; return draggable && laneDraggable ? <Draggable key={lane.id}>{laneToRender}</Draggable> : laneToRender;
@@ -209,9 +210,9 @@ class BoardContainer extends Component {
</Container> </Container>
</PopoverWrapper> </PopoverWrapper>
{canAddLanes && ( {canAddLanes && (
<Container orientation="horizontal"> <Container orientation={orientation === "vertical" ? "vertical" : "horizontal"}>
{editable && !addLaneMode ? ( {editable && !addLaneMode ? (
<components.NewLaneSection t={t} onClick={this.showEditableLane} /> <components.NewLaneSection onClick={this.showEditableLane} />
) : ( ) : (
addLaneMode && <components.NewLaneForm onCancel={this.hideEditableLane} onAdd={this.addNewLane} t={t} /> addLaneMode && <components.NewLaneForm onCancel={this.hideEditableLane} onAdd={this.addNewLane} t={t} />
)} )}
@@ -257,7 +258,9 @@ BoardContainer.propTypes = {
cardDragClass: PropTypes.string, cardDragClass: PropTypes.string,
laneDragClass: PropTypes.string, laneDragClass: PropTypes.string,
laneDropClass: PropTypes.string, laneDropClass: PropTypes.string,
onCardMoveAcrossLanes: PropTypes.func.isRequired onCardMoveAcrossLanes: PropTypes.func.isRequired,
t: PropTypes.func,
orientation: PropTypes.string
}; };
BoardContainer.defaultProps = { BoardContainer.defaultProps = {
@@ -281,7 +284,8 @@ BoardContainer.defaultProps = {
cardDraggable: true, cardDraggable: true,
cardDragClass: "react_trello_dragClass", cardDragClass: "react_trello_dragClass",
laneDragClass: "react_trello_dragLaneClass", laneDragClass: "react_trello_dragLaneClass",
laneDropClass: "" laneDropClass: "",
orientation: "horizontal"
}; };
const mapStateToProps = (state) => { const mapStateToProps = (state) => {

View File

@@ -157,7 +157,8 @@ class Lane extends Component {
cardDropClass, cardDropClass,
tagStyle, tagStyle,
cardStyle, cardStyle,
components components,
orientation
} = this.props; } = this.props;
const { addCardMode, collapsed } = this.state; const { addCardMode, collapsed } = this.state;
@@ -191,7 +192,7 @@ class Lane extends Component {
return ( return (
<components.ScrollableLane ref={this.laneDidMount} isDraggingOver={isDraggingOver}> <components.ScrollableLane ref={this.laneDidMount} isDraggingOver={isDraggingOver}>
<Container <Container
orientation="vertical" // TODO This is where we would switch the card orientation. // orientation={orientation === "horizontal" ? "vertical" : "horizontal"}
groupName={this.groupName} groupName={this.groupName}
dragClass={cardDragClass} dragClass={cardDragClass}
dropClass={cardDropClass} dropClass={cardDropClass}
@@ -254,6 +255,7 @@ class Lane extends Component {
onLaneUpdate, onLaneUpdate,
onCardUpdate, onCardUpdate,
onCardMoveAcrossLanes, onCardMoveAcrossLanes,
orientation,
...otherProps ...otherProps
} = this.props; } = this.props;
const allClassNames = classNames("react-trello-lane", this.props.className || ""); const allClassNames = classNames("react-trello-lane", this.props.className || "");
@@ -265,6 +267,7 @@ class Lane extends Component {
onClick={() => onLaneClick && onLaneClick(id)} onClick={() => onLaneClick && onLaneClick(id)}
draggable={false} draggable={false}
className={allClassNames} className={allClassNames}
orientation={orientation}
> >
{this.renderHeader({ id, cards, ...otherProps })} {this.renderHeader({ id, cards, ...otherProps })}
{this.renderDragContainer(isDraggingOver)} {this.renderDragContainer(isDraggingOver)}
@@ -308,7 +311,13 @@ Lane.propTypes = {
cardDraggable: PropTypes.bool, cardDraggable: PropTypes.bool,
cardDragClass: PropTypes.string, cardDragClass: PropTypes.string,
cardDropClass: PropTypes.string, cardDropClass: PropTypes.string,
canAddLanes: PropTypes.bool canAddLanes: PropTypes.bool,
hideCardDeleteIcon: PropTypes.bool,
components: PropTypes.object,
getCardDetails: PropTypes.func,
handleDragStart: PropTypes.func,
handleDragEnd: PropTypes.func,
orientation: PropTypes.string
}; };
Lane.defaultProps = { Lane.defaultProps = {
@@ -319,7 +328,25 @@ Lane.defaultProps = {
editable: false, editable: false,
onLaneUpdate: () => {}, onLaneUpdate: () => {},
onCardAdd: () => {}, onCardAdd: () => {},
onCardUpdate: () => {} onCardUpdate: () => {},
onCardDelete: () => {},
onBeforeCardDelete: () => {},
onLaneDelete: () => {},
onLaneClick: () => {},
onLaneScroll: () => {},
onCardClick: () => {},
onCardMoveAcrossLanes: () => {},
draggable: false,
laneDraggable: false,
cardDraggable: true,
collapsibleLanes: false,
droppable: true,
canAddLanes: false,
hideCardDeleteIcon: false,
components: {},
handleDragStart: () => {},
handleDragEnd: () => {},
orientation: "vertical"
}; };
const mapDispatchToProps = (dispatch) => ({ const mapDispatchToProps = (dispatch) => ({

View File

@@ -1,26 +0,0 @@
const REPLACE_TABLE = {
customLaneHeader: "components.LaneHeader",
newLaneTemplate: "components.NewLaneSection",
newCardTemplate: "components.NewCardForm",
children: "components.Card",
customCardLayout: "components.Card",
addLaneTitle: '`t` function with key "Add another lane"',
addCardLink: '`t` function with key "Click to add card"'
};
const warn = (prop) => {
const use = REPLACE_TABLE[prop];
console.warn(
`react-trello property '${prop}' is removed. Use '${use}' instead. More - https://github.com/rcdexta/react-trello/blob/master/UPGRADE.md`
);
};
const deprecationWarning = (props) => {
Object.keys(REPLACE_TABLE).forEach((key) => {
if (props.hasOwnProperty(key)) {
warn(key);
}
});
};
export default deprecationWarning;

View File

@@ -5,7 +5,6 @@ import Container from "./dnd/Container.jsx";
import BoardContainer from "./controllers/BoardContainer.jsx"; import BoardContainer from "./controllers/BoardContainer.jsx";
import Board from "./controllers/Board.jsx"; import Board from "./controllers/Board.jsx";
import Lane from "./controllers/Lane.jsx"; import Lane from "./controllers/Lane.jsx";
import deprecationWarnings from "./helpers/deprecationWarnings";
import DefaultComponents from "./components"; import DefaultComponents from "./components";
import widgets from "./widgets/index"; import widgets from "./widgets/index";
@@ -19,8 +18,6 @@ export { DefaultComponents as components };
// Enhanced default export using arrow function for simplicity // Enhanced default export using arrow function for simplicity
const TrelloBoard = ({ components, ...otherProps }) => { const TrelloBoard = ({ components, ...otherProps }) => {
deprecationWarnings(otherProps);
return ( return (
<StyleSheetManager shouldForwardProp={shouldForwardProp}> <StyleSheetManager shouldForwardProp={shouldForwardProp}>
<Board components={{ ...DefaultComponents, ...components }} {...otherProps} /> <Board components={{ ...DefaultComponents, ...components }} {...otherProps} />

View File

@@ -1,7 +1,30 @@
import { PopoverContainer, PopoverContent } from "react-popopo"; import { PopoverContainer, PopoverContent } from "react-popopo";
import styled, { createGlobalStyle, css } from "styled-components"; import styled, { createGlobalStyle, css } from "styled-components";
export const GlobalStyle = createGlobalStyle` const getBoardWrapperStyles = (props) => {
if (props.orientation === "vertical") {
return ` `;
}
if (props.orientation === "horizontal") {
return `
display: flex;
flex-direction: row;
align-items: flex-start;
`;
}
return "";
};
const getSectionStyles = (props) => {
if (props.orientation === "horizontal") {
return `
display: inline-flex;
`;
}
return "";
};
export const GlobalStyleHorizontal = createGlobalStyle`
.comPlainTextContentEditable { .comPlainTextContentEditable {
-webkit-user-modify: read-write-plaintext-only; -webkit-user-modify: read-write-plaintext-only;
cursor: text; cursor: text;
@@ -25,9 +48,11 @@ export const GlobalStyle = createGlobalStyle`
.icon-overflow-menu-horizontal:before { .icon-overflow-menu-horizontal:before {
content: "\\E91F"; content: "\\E91F";
} }
.icon-lg, .icon-sm { .icon-lg, .icon-sm {
color: #798d99; color: #798d99;
} }
.icon-lg { .icon-lg {
height: 32px; height: 32px;
font-size: 16px; font-size: 16px;
@@ -36,6 +61,69 @@ export const GlobalStyle = createGlobalStyle`
} }
`; `;
export const GlobalStyleVertical = createGlobalStyle`
.comPlainTextContentEditable {
-webkit-user-modify: read-write-plaintext-only;
cursor: text;
}
.comPlainTextContentEditable--has-placeholder::before {
content: attr(placeholder);
opacity: 0.5;
color: inherit;
cursor: text;
}
.react_trello_dragClass {
transform: rotate(3deg);
}
.react_trello_dragLaneClass {
transform: rotate(3deg);
}
.icon-overflow-menu-horizontal:before {
content: "\\E91F";
}
.icon-lg, .icon-sm {
color: #798d99;
}
.icon-lg {
height: 32px;
font-size: 16px;
line-height: 32px;
width: 32px;
}
.smooth-dnd-container {
//min-height: 100px; // Not needed, just for extra landing space
}
.smooth-dnd-container.horizontal {
white-space: break-spaces;
flex-direction: column;
}
.react-trello-lane {
border: 1px solid #ccc;
border-radius: 5px;
}
.react-trello-column-header {
border: 1px solid #ccc;
border-radius: 5px;
padding: 5px;
text-align: left;
}
.react-trello-board {
overflow-y: hidden !important;
}
`;
export const CustomPopoverContainer = styled(PopoverContainer)` export const CustomPopoverContainer = styled(PopoverContainer)`
position: absolute; position: absolute;
right: 10px; right: 10px;
@@ -58,6 +146,7 @@ export const CustomPopoverContent = styled(PopoverContent)`
padding: 5px; padding: 5px;
left: 50%; left: 50%;
transform: translateX(-50%); transform: translateX(-50%);
${(props) => ${(props) =>
props.active && props.active &&
` `
@@ -67,11 +156,13 @@ export const CustomPopoverContent = styled(PopoverContent)`
`} &::before { `} &::before {
visibility: hidden; visibility: hidden;
} }
a { a {
color: rgba(255, 255, 255, 0.56); color: rgba(255, 255, 255, 0.56);
padding: 0.5em 1em; padding: 0.5em 1em;
margin: 0; margin: 0;
text-decoration: none; text-decoration: none;
&:hover { &:hover {
background-color: #00bcd4 !important; background-color: #00bcd4 !important;
color: #37474f; color: #37474f;
@@ -85,11 +176,7 @@ export const BoardWrapper = styled.div`
overflow-y: scroll; overflow-y: scroll;
padding: 5px; padding: 5px;
color: #393939; color: #393939;
display: flex; ${getBoardWrapperStyles};
flex-direction: row;
align-items: flex-start;
// TODO: This was commented out to match existing board style
//height: 100vh;
`; `;
export const Header = styled.header` export const Header = styled.header`
@@ -105,9 +192,7 @@ export const Section = styled.section`
margin: 5px 5px; margin: 5px 5px;
position: relative; position: relative;
padding: 10px; padding: 10px;
display: inline-flex; ${getSectionStyles};
// TODO: This was commented out to match existing board style
//max-height: 90%;
flex-direction: column; flex-direction: column;
`; `;
@@ -282,6 +367,7 @@ export const InlineInput = styled.textarea`
border: 0; border: 0;
padding: 0 8px; padding: 0 8px;
outline: 0; outline: 0;
${(props) => ${(props) =>
props.border && props.border &&
css` css`