Skip to content

Instantly share code, notes, and snippets.

@DZuz14
DZuz14 / Accordion.js
Last active July 17, 2020 20:43
Accordion with state and function
import React, { useState } from 'react'
import Collapsed from './Collapsed'
import Expanded from './Expanded'
const Accordion = ({ children }) => {
const [open, setOpen] = useState('')
const handleOpen = (e) => {
const id = e.target.getAttribute('data-id')
id === open ? setOpen('') : setOpen(id)
@DZuz14
DZuz14 / Collapsed.js
Created July 17, 2020 19:38
Collapsed with id prop
import React from 'react'
const Collapsed = ({ children, id }) => (
<div style={styles} data-id={id}>
{children}
</div>
)
const styles = {
color: '#007bff', // blue
@DZuz14
DZuz14 / index.js
Created July 17, 2020 19:37
Map through items 2
<Accordion>
{items.map(({ summary, detail }) => (
<Accordion.Item key={summary}>
<Accordion.Collapsed id={summary}>
{summary}
</Accordion.Collapsed>
<Accordion.Expanded>{detail}</Accordion.Expanded>
</Accordion.Item>
))}
</Accordion>
@DZuz14
DZuz14 / index.js
Created July 17, 2020 19:36
Map through items 1
<Accordion>
{items.map(({ summary, detail }) => (
<Accordion.Item key={summary}>
<Accordion.Collapsed>{summary}</Accordion.Collapsed>
<Accordion.Expanded>{detail}</Accordion.Expanded>
</Accordion.Item>
))}
</Accordion>
@DZuz14
DZuz14 / items.js
Created July 17, 2020 19:34
Accordion mock data
const items = [
{
summary: 'Basketball shoes',
detail: 'Never worn, but owned by the GOAT, Michael Jordan himself.'
},
{
summary: 'Tennis racket',
detail: 'Not in too bad of shape.'
},
{
@DZuz14
DZuz14 / Accordion.js
Created July 17, 2020 19:32
Accordion with Expanded And Collapsed
import React from 'react'
import Collapsed from './Collapsed'
import Expanded from './Expanded'
const Accordion = ({ children }) => {
return <div>{children}</div>
}
Accordion.Collapsed = Collapsed
Accordion.Expanded = Expanded
@DZuz14
DZuz14 / Accordion.js
Created July 17, 2020 19:31
Accordion Plain
import React from 'react'
const Accordion = ({ children }) => {
return <div>{children}</div>
}
export default Accordion
@DZuz14
DZuz14 / index.js
Created July 17, 2020 19:30
Accordion With Item Added
<Accordion>
<Accordion.Item>
…content here
</Accordion.Item>
</Accordion>
@DZuz14
DZuz14 / Accordion.js
Created July 17, 2020 19:29
Accordion Item
import React from 'react'
const Accordion = ({ children }) => {
return <div>{children}</div>
}
Accordion.Item = ({ children }) => children
export default Accordion
@DZuz14
DZuz14 / Adjacent.js
Created July 17, 2020 19:28
Adjacent Error
return (
<Accordion>
<Accordion.Collapsed>
…content here
</Accordion.Collapsed>
<Accordion.Expanded>
…content here
</Accordion.Expanded>
</Accordion>
)