1.0.0 • Published 7 months ago

@onus-elements/react v1.0.0

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

@onus-elements/react

npm Version License

Separate DOM position from rendering position. Like Portals, but better because you don't have to interact with the DOM, and you can easily replace or append to the previous content.

Installation

yarn add onus-elements

or

npm i --save onus-elements

Usage

import { GetElement, SetElement, OnusElementsProvider } from 'onus-elements'
;<OnusElementsProvider>
  <header>
    <GetElement name='header' />
  </header>
  <footer>
    <SetElement name='header' priority={0}>
      <a href='/'>Home</a>
    </SetElement>
    // These can be rendered anywhere in your application, and it will appear where
    GetElement lives in the DOM
    <SetElement name='header' priority={1} append>
      <span>
        > <a href='/breadcrumb'>Breadcrumb</a>
      </span>
    </SetElement>
  </footer>
</OnusElementsProvider>

Note

When inspecting the element using the React Dev Tools, you will notice the GetElement component rendered in your application. That GetElement will render a Fragement with a "key" prop using the pattern name:priority:index where:

  • name is the name of the content you want to render
  • priority is the deepest applied number (provided by the SetElement)
  • index increments when there multiple sources for the same depth (via append or prepend)

Props

GetElement

Used as placeholder for where you want content to be rendered

PropTypeDefaultDescription
nameStringRequiredUnique name that will be matched with SetElement
childrenNodeDefault content to render if nothing else has been provided

SetElement

Used to set the content to be rendered inside the GetContent component

PropTypeDefaultDescription
childrenNodeFragmentChildren to render in GetElement with a matching name
nameStringRequiredUnique name that will be matched with GetElement
priorityNumberRequiredPriority to render children, highest wins
appendBooleanAppend children to currently rendered content
prependBooleanPrepended children to currently rendered content

useSetElement

Hook to set the onus element at the top of your component

NameTypeDefaultDescription
ParamOptionsObjectRequiredDescribes the element to set
nameStringRequiredSame as SetElement name
priorityNumberRequiredSame as SetElement priority
appendBooleanSame as SetElement append
prependBooleanSame as SetElement prepend
ParamnodeNodeChildren to render in the GetElement with a matching name

Testing

yarn test

Build Example

yarn build

Start Example

yarn start

Running unit tests

Run nx test onus-react to execute the unit tests via Jest.

1.1.0-next.8

7 months ago

1.1.0-next.7

7 months ago

1.1.0-next.6

7 months ago

1.1.0-next.5

8 months ago

1.1.0-next.4

8 months ago

1.1.0-next.3

8 months ago

1.1.0-next.2

8 months ago

1.1.0-next.1

8 months ago

1.0.0

2 years ago

2.3.1

2 years ago

2.3.0

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.1.0

2 years ago

2.0.4

2 years ago

2.0.3

2 years ago

2.0.2

2 years ago

2.0.1

2 years ago

2.0.0

2 years ago

1.0.1

3 years ago