2.0.2 • Published 3 months ago

react-flex-element v2.0.2

Weekly downloads
-
License
ISC
Repository
github
Last release
3 months ago

react-flex-element

npm (scoped) npm type definitions

Flexbox elements for React.

image

<Flex row spaceBetween gap={32}>
  <FlexItem selfStart />
  <FlexItem shrink grow />
  <Flex
    selfStretch
    column
    spaceBetween
    alignEnd
    gap={16}
    grow={2}
  >
    <FlexItem selfStretch />
    <FlexItem selfCenter />
    <FlexItem grow />
  </Flex>
</Flex>

Live Example

Tl;dr

You don't know CSS Flexbox? Read here!

2 components:

  • <Flex />
    • creates a flex container.
    • provides EVERY Flexbox property.
  • <FlexItem />
    • creates a flexed item.
    • provides Flexbox properties for items only.

3 ways to set properties:

  • flags (row, start, stretch, ecc...)
  • classic properties (display, flexDirection, justifyContent, ecc...)
  • short version of classic properties (justify, align, self, ecc...)

Install

# Install via NPM
npm i react-flex-element
# or Yarn
yarn add react-flex-element

Usage

Every Flexbox property can be set via one or more dedicated props.

Flexible "container" props

This first set of props refers to "flex container" related properties. For this reason they are only available for the component Flex.

display

propstypevalue
//flex (default)
inlinebooleaninline-flex
displaystringany
<>
  <Flex /> // flex
  <Flex inline /> // inline-flex
  <Flex display="inline-flex" /> // inline-flex
</>

flex-direction

propstypevalue
rowbooleanrow (default)
col or columnbooleancolumn
rowReversebooleanrow-reverse
colReverse or columnReversebooleancolumn-reverse
direction or flexDirectionstringany
<>
  <Flex row /> // row
  <Flex col /> // column
  <Flex column /> // column
  <Flex rowReverse /> // row-reverse
  <Flex colReverse /> // column-reverse
  <Flex columnReverse /> // column-reverse

  <Flex direction="column-reverse" /> // column-reverse
  <Flex flexDirection="column-reverse" /> // column-reverse
</>

The additional reverse prop can be used to programmatically revert the specified direction:

proptype
reverseboolean
<>
  <Flex row reverse /> // row-reverse
  <Flex row reverse={true} /> // row-reverse
  <Flex row reverse={false} /> // row
</>

flex-wrap

propstypevalue
nowrapbooleannowrap (default)
wrapbooleanwrap
wrapReversebooleanwrap-reverse
wrap or flexWrapstringany
<>
  <Flex wrap /> // wrap
  <Flex nowrap /> // nowrap
  <Flex wrapReverse /> // wrap-reverse

  <Flex wrap={true} /> // wrap
  <Flex wrap={false} /> // nowrap

  <Flex wrap="wrap-reverse" /> // wrap-reverse
  <Flex flexWrap="wrap-reverse" /> // wrap-reverse
</>

justify-content

propstypevalue
startbooleanflex-start (default)
endbooleanflex-end
centerbooleancenter
spaceBetweenbooleanspace-between
spaceAroundbooleanspace-around
spaceEvenlybooleanspace-evenly
justify or justifyContentstringany
<>
  <Flex start /> // flex-start
  <Flex end /> // flex-end
  <Flex center /> // center
  <Flex spaceBetween /> // space-between
  <Flex spaceAround /> // space-around
  <Flex spaceEvenly /> // space-evenly

  <Flex justify="space-beetween" /> // space-beetween
  <Flex justifyContent="space-beetween" /> // space-beetween
</>

align-items

propstypevalue
alignStartbooleanflex-start
alignEndbooleanflex-end
alignCenterbooleancenter (default)
stretch or alignStretchbooleanstretch
baseline or alignBaselinebooleanbaseline
align or alignItemsstringany
<>
  <Flex alignStart /> // flex-start
  <Flex alignEnd /> // flex-end
  <Flex alignCenter /> // center
  <Flex alignStretch /> // stretch
  <Flex alignBaseline /> // baseline

  <Flex align="flex-end" /> // flex-end
  <Flex alignItems="flex-end" /> // flex-end
</>

align-content

propstypevalue
contentStartbooleanflex-start
contentEndbooleanflex-end
contentCenterbooleancenter
contentStretchbooleanstretch
contentBaselinebooleanbaseline
alignContentstringany
<>
  <Flex contentStart /> // flex-start
  <Flex contentEnd /> // flex-end
  <Flex contentCenter /> // center
  <Flex contentStretch /> // stretch
  <Flex contentSpaceBetween /> // space-between
  <Flex contentSpaceAround /> // space-around

  <Flex alignContent="flex-end" /> // flex-end
</>

row-gap

propstypevalue
rowGapnumber or stringany
<>
  <Flex rowGap={10} /> // 10px
  <Flex rowGap="10px" /> // 10px
</>

column-gap

propstypevalue
colGap or columnGapnumber or stringany
<>
  <Flex colGap={10} /> // 10px
  <Flex colGap="10px" /> // 10px
  <Flex columnGap={10} /> // 10px
  <Flex columnGap="10px" /> // 10px
</>

gap

propstypevalue
gapnumber or string or Arrayany
<>
  <Flex gap={10} /> // 10px
  <Flex gap="10px" /> // 10px

  <Flex gap={[10, 20]} /> // 10px 20px
  <Flex gap="10px 20px" /> // 10px 20px
</>

Flexible "item" props

The set of props below refers to "flex items" related properties. They are all available for both Flex and FlexItem components.

order

propstypevalue
ordernumber or stringany
<>
  <Flex order={3} /> // 3
  <Flex order="3" /> // 3
</>

flex-grow

propstypevalue
grow or flexGrowbooolean or number or string/
<>
  <Flex grow /> // 1
  <Flex grow={true} /> // 1
  <Flex grow={false} /> // 0
  <Flex grow={3} /> // 3
  <Flex grow="3" /> // 3
  <Flex flexGrow={3} /> // 3
  <Flex flexGrow="3" /> // 3
</>

flex-shrink

propstypevalue
shrink or flexShrinkbooolean or number or string/
<>
  <Flex shrink /> // 1
  <Flex shrink={true} /> // 1
  <Flex shrink={false} /> // 0
  <Flex shrink={3} /> // 3
  <Flex shrink="3" /> // 3
  <Flex flexShrink={3} /> // 3
  <Flex flexShrink="3" /> // 3
</>

flex-basis

propstypevalue
basis or flexBasisnumber or string/
<>
  <Flex basis={10} /> // 10px
  <Flex basis="10px" /> // 10px
  <Flex flexBasis={10} /> // 10px
  <Flex flexBasis="10px" /> // 10px
</>

align-self

propstypevalue
selfStartbooleanflex-start
selfEndbooleanflex-end
selfCenterbooleancenter
selfStretchbooleanstretch
selfBaselinebooleanbaseline
self or alignSelfstring/
<>
  <Flex selfStart /> // flex-start
  <Flex selfEnd /> // flex-end
  <Flex selfCenter /> // center
  <Flex selfStretch /> // stretch
  <Flex selfBaseline /> // baseline
  
  <Flex self="flex-end" /> // flex-end
  <Flex alignSelf="flex-end" /> // flex-end
<>

width and height

propstypevalue
fillboolean \| stringsee below
<>
  <Flex fill /> // 100% width and height
  <Flex fill="x" /> // 100% width
  <Flex fill="y" /> // 100% height
  <Flex fill="page" /> // 100vw width and 100vh height
  <Flex fill="page-x" /> // 100vw width
  <Flex fill="page-y" /> // 100vh height
<>

Other props

By default, both Flex and FlexItem components renders a div element with the specified flex properties.

Nevertheless, it is possible to change this behaviour via the as prop:

propstype
asstring or React.ComponentType

Examples:

<>
  <Flex as="input" />
  <Flex as={MyCustomComp} />
</>

In addition, any additional prop passed to Flex or FlexItem will be drilled down to the render element or component.

Basic usage

<FlexItem id="myDiv" class="some-class" selfEnd grow={3} />

Usage with a different element

<FlexItem as="a" href="#foo" onClick={handleClick} grow />

Usage with a custom component

const MyComp = ({ size }) => (
  <span style={{ fontSize: size }}>
    {children}
  </span>
)

return (
  <FlexItem as={MyComp} size={18} selfEnd />
)

Components

Flex

Use it to create a flexible container.

<Flex>Hello world!</Flex>

By default, it renders a div element with the following CSS properties set:

display: flex;
align-items: center;

It provides all the properties listed above.

FlexItem

Use it to create a flexible item.

// React
<FlexItem>Hello world!</FlexItem>

By default, it renders a div element, but it does not set any CSS property.

Lastly, it provides only props related to order, flex-grow, flex-shrink, flex-basis and align-self properties.

2.0.2

3 months ago

2.0.1

3 months ago

2.0.0

3 months ago

1.1.1

1 year ago

1.1.0

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

0.0.0

2 years ago