Skip to content
This repository has been archived by the owner on Oct 8, 2022. It is now read-only.

Commit

Permalink
Welcome, Prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
lourenci committed Nov 15, 2019
1 parent bd6ac99 commit 739ec2f
Show file tree
Hide file tree
Showing 22 changed files with 195 additions and 152 deletions.
3 changes: 2 additions & 1 deletion .eslintrc
@@ -1,11 +1,12 @@
{
"extends": ["standard", "standard-react"],
"extends": ["standard", "standard-react", "plugin:prettier/recommended"],
"plugins": ["react-hooks"],
"env": {
"jest": true
},
"rules": {
"react/prop-types": "off",
"react/jsx-indent": "off",
"react-hooks/rules-of-hooks": "error",
"react-hooks/exhaustive-deps": "warn"
}
Expand Down
6 changes: 6 additions & 0 deletions .prettierrc
@@ -0,0 +1,6 @@
{
"semi": false,
"singleQuote": true,
"printWidth": 120,
"jsxSingleQuote": true
}
3 changes: 3 additions & 0 deletions package.json
Expand Up @@ -28,11 +28,13 @@
"cypress": "3.6.1",
"docz": "2.0.0-rc.53",
"eslint": "6.6.0",
"eslint-config-prettier": "^6.5.0",
"eslint-config-standard": "14.1.0",
"eslint-config-standard-react": "9.2.0",
"eslint-plugin-cypress": "2.7.0",
"eslint-plugin-import": "2.18.2",
"eslint-plugin-node": "10.0.0",
"eslint-plugin-prettier": "^3.1.1",
"eslint-plugin-promise": "4.2.1",
"eslint-plugin-react": "7.15.1",
"eslint-plugin-react-hooks": "2.3.0",
Expand All @@ -42,6 +44,7 @@
"jest": "24.8.0",
"jest-environment-jsdom-fifteen": "1.0.0",
"nyc": "14.1.1",
"prettier": "^1.19.1",
"react": "16.12.0",
"react-dom": "16.12.0",
"start-server-and-test": "1.10.3",
Expand Down
6 changes: 4 additions & 2 deletions src/components/Board/components/DefaultCard/index.js
Expand Up @@ -9,7 +9,9 @@ const DefaultCard = styled(CardSkeleton)`
padding: 10px;
margin-bottom: 7px;
${({ dragging }) => dragging && `
${({ dragging }) =>
dragging &&
`
box-shadow: 2px 2px grey;
`}
`
Expand All @@ -26,7 +28,7 @@ const CardDescription = styled.div`
padding-top: 10px;
`

export default function ({ children: card, dragging, allowRemoveCard, onCardRemove }) {
export default function({ children: card, dragging, allowRemoveCard, onCardRemove }) {
return (
<DefaultCard dragging={dragging}>
<span>
Expand Down
4 changes: 2 additions & 2 deletions src/components/Board/components/DefaultCard/index.spec.js
Expand Up @@ -9,7 +9,7 @@ describe('<DefaultCard />', () => {

const card = { id: 1, title: 'Card title', description: 'Description' }

function mount (props) {
function mount(props) {
subject = render(
<DefaultCard onCardRemove={onCardRemove} {...props}>
{card}
Expand All @@ -18,7 +18,7 @@ describe('<DefaultCard />', () => {
return subject
}

function reset () {
function reset() {
subject = undefined
onCardRemove.mockClear()
}
Expand Down
43 changes: 22 additions & 21 deletions src/components/Board/components/DefaultLaneHeader/index.js
Expand Up @@ -15,11 +15,13 @@ const LaneHeaderSkeleton = styled.div`

const DefaultButton = styled.button`
color: #333333;
background-color: #FFFFFF;
border-color: #CCCCCC;
background-color: #ffffff;
border-color: #cccccc;
:hover, :focus, :active {
background-color: #E6E6E6;
:hover,
:focus,
:active {
background-color: #e6e6e6;
}
`

Expand All @@ -29,42 +31,34 @@ const Input = styled.input`
}
`

function LaneTitle ({ allowRenameLane, onClick, children: title }) {
return allowRenameLane ? (
<CursorPointer onClick={onClick}>
{title}
</CursorPointer>
) : (
<span>
{title}
</span>
)
function LaneTitle({ allowRenameLane, onClick, children: title }) {
return allowRenameLane ? <CursorPointer onClick={onClick}>{title}</CursorPointer> : <span>{title}</span>
}

function useRenameMode (state) {
function useRenameMode(state) {
const [renameMode, setRenameMode] = useState(state)

function toggleRenameMode () {
function toggleRenameMode() {
setRenameMode(!renameMode)
}

return [renameMode, toggleRenameMode]
}

export default function ({ children: lane, allowRemoveLane, onLaneRemove, allowRenameLane, onLaneRename }) {
export default function({ children: lane, allowRemoveLane, onLaneRemove, allowRenameLane, onLaneRename }) {
const [renameMode, toggleRenameMode] = useRenameMode(false)
const [title, setTitle] = useState(lane.title)
const [titleInput, setTitleInput] = useState('')

function handleRenameLane (event) {
function handleRenameLane(event) {
event.preventDefault()

onLaneRename(lane.id, titleInput)
setTitle(titleInput)
toggleRenameMode()
}

function handleRenameMode () {
function handleRenameMode() {
setTitleInput(title)
toggleRenameMode()
}
Expand All @@ -74,11 +68,18 @@ export default function ({ children: lane, allowRemoveLane, onLaneRemove, allowR
{renameMode ? (
<form onSubmit={handleRenameLane}>
<span>
<Input type='text' value={titleInput} onChange={({ target: { value } }) => setTitleInput(value)} autoFocus />
<Input
type='text'
value={titleInput}
onChange={({ target: { value } }) => setTitleInput(value)}
autoFocus
/>
</span>
<span>
<DefaultButton type='submit'>Rename</DefaultButton>
<DefaultButton type='button' onClick={handleRenameMode}>Cancel</DefaultButton>
<DefaultButton type='button' onClick={handleRenameMode}>
Cancel
</DefaultButton>
</span>
</form>
) : (
Expand Down
Expand Up @@ -10,13 +10,13 @@ describe('<DefaultLaneHeader />', () => {

const lane = { id: 1, title: 'Lane title' }

function reset () {
function reset() {
subject = undefined
onLaneRemove.mockClear()
onLaneRename.mockClear()
}

function mount (props) {
function mount(props) {
subject = render(
<DefaultLaneHeader onLaneRemove={onLaneRemove} onLaneRename={onLaneRename} {...props}>
{lane}
Expand Down
13 changes: 3 additions & 10 deletions src/components/Board/components/Lane/components/Card/index.js
Expand Up @@ -7,20 +7,13 @@ const CardTemplate = styled.div`
white-space: normal;
`

function Card ({ children, index, renderCard, disableCardDrag }) {
function Card({ children, index, renderCard, disableCardDrag }) {
return (
<Draggable draggableId={String(children.id)} index={index} isDragDisabled={disableCardDrag}>
{(provided, { isDragging }) => {
return (
<div
ref={provided.innerRef}
{...provided.draggableProps}
{...provided.dragHandleProps}
data-testid='card'
>
<CardTemplate>
{renderCard(isDragging)}
</CardTemplate>
<div ref={provided.innerRef} {...provided.draggableProps} {...provided.dragHandleProps} data-testid='card'>
<CardTemplate>{renderCard(isDragging)}</CardTemplate>
</div>
)
}}
Expand Down
14 changes: 10 additions & 4 deletions src/components/Board/components/Lane/components/Card/index.spec.js
Expand Up @@ -14,12 +14,16 @@ describe('<Card />', () => {

const defaultCard = jest.fn(() => <div>Card title</div>)

function mount ({ children = card, ...otherProps } = {}) {
subject = render(<Card renderCard={defaultCard} {...otherProps}>{children}</Card>)
function mount({ children = card, ...otherProps } = {}) {
subject = render(
<Card renderCard={defaultCard} {...otherProps}>
{children}
</Card>
)
return subject
}

function reset () {
function reset() {
subject = undefined
defaultCard.mockClear()
}
Expand All @@ -35,7 +39,9 @@ describe('<Card />', () => {
callbacks.isDragging(true)
mount()
})
afterEach(() => { callbacks.isDragging(false) })
afterEach(() => {
callbacks.isDragging(false)
})

it('calls the "renderCard" prop passing the dragging value', () => {
expect(defaultCard).toHaveBeenCalledTimes(1)
Expand Down
9 changes: 1 addition & 8 deletions src/components/Board/components/Lane/index.js
Expand Up @@ -19,14 +19,7 @@ const DroppableLane = withDroppable(styled.div`
min-height: 28px;
`)

function Lane ({
children,
index: laneIndex,
renderCard,
renderLaneHeader,
disableLaneDrag,
disableCardDrag
}) {
function Lane({ children, index: laneIndex, renderCard, renderLaneHeader, disableLaneDrag, disableCardDrag }) {
return (
<Draggable draggableId={`lane-draggable-${children.id}`} index={laneIndex} isDragDisabled={disableLaneDrag}>
{laneProvided => (
Expand Down
10 changes: 3 additions & 7 deletions src/components/Board/components/Lane/index.spec.js
Expand Up @@ -24,20 +24,16 @@ describe('<Lane />', () => {
]
}

function mount ({ children = lane, ...otherProps } = {}) {
function mount({ children = lane, ...otherProps } = {}) {
subject = render(
<Lane
{...otherProps}
renderLaneHeader={<div>Backlog</div>}
renderCard={renderCard}
>
<Lane {...otherProps} renderLaneHeader={<div>Backlog</div>} renderCard={renderCard}>
{children}
</Lane>
)
return subject
}

function reset () {
function reset() {
subject = undefined
renderCard.mockClear()
}
Expand Down
Expand Up @@ -12,10 +12,10 @@ const StyledLaneForm = styled(StyledLane)`
}
`

function LaneForm ({ onConfirm, onCancel }) {
function LaneForm({ onConfirm, onCancel }) {
const inputLaneTitle = React.createRef()

function addLane (event) {
function addLane(event) {
event.preventDefault()

when(inputLaneTitle.current.value)(onConfirm)
Expand All @@ -26,7 +26,9 @@ function LaneForm ({ onConfirm, onCancel }) {
<form onSubmit={addLane}>
<input type='text' ref={inputLaneTitle} autoFocus />
<button type='submit'>Add</button>
<button type='button' onClick={onCancel}>Cancel</button>
<button type='button' onClick={onCancel}>
Cancel
</button>
</form>
</StyledLaneForm>
)
Expand Down
Expand Up @@ -5,15 +5,17 @@ import LaneForm from './'
describe('<LaneForm />', () => {
let subject, onConfirm, onCancel

function mount () {
function mount() {
onConfirm = jest.fn()
onCancel = jest.fn()

subject = render(<LaneForm onConfirm={onConfirm} onCancel={onCancel} />)
}

beforeEach(mount)
afterEach(() => { subject = onConfirm = onCancel = undefined })
afterEach(() => {
subject = onConfirm = onCancel = undefined
})

it('renders an input asking for a lane title', () => {
expect(subject.container.querySelector('input')).toBeInTheDocument()
Expand Down
14 changes: 9 additions & 5 deletions src/components/Board/components/LaneAdder/index.js
Expand Up @@ -16,17 +16,21 @@ const LaneAdderPlaceholder = styled.div`
}
`

function LaneAdder ({ onConfirm }) {
function LaneAdder({ onConfirm }) {
const [isAddingLane, setAddingLane] = useState(false)

function confirmLane (title) {
function confirmLane(title) {
onConfirm(title)
setAddingLane(false)
}

return isAddingLane
? <LaneForm onConfirm={confirmLane} onCancel={() => setAddingLane(false)} />
: <LaneAdderPlaceholder onClick={() => setAddingLane(true)} role='button'></LaneAdderPlaceholder>
return isAddingLane ? (
<LaneForm onConfirm={confirmLane} onCancel={() => setAddingLane(false)} />
) : (
<LaneAdderPlaceholder onClick={() => setAddingLane(true)} role='button'>
</LaneAdderPlaceholder>
)
}

export default LaneAdder
6 changes: 4 additions & 2 deletions src/components/Board/components/LaneAdder/index.spec.js
Expand Up @@ -5,14 +5,16 @@ import LaneAdder from './'
describe('<LaneAdder />', () => {
let subject, onConfirm

function mount () {
function mount() {
onConfirm = jest.fn()

subject = render(<LaneAdder onConfirm={onConfirm} />)
}

beforeEach(mount)
afterEach(() => { subject = onConfirm = undefined })
afterEach(() => {
subject = onConfirm = undefined
})

it('renders the lane placeholder to add a new lane', () => {
expect(subject.queryByText('➕')).toBeInTheDocument()
Expand Down

0 comments on commit 739ec2f

Please sign in to comment.