1.0.0 • Published 7 months ago
@onus-elements/react v1.0.0
@onus-elements/react
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 renderpriority
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
Prop | Type | Default | Description |
---|---|---|---|
name | String | Required | Unique name that will be matched with SetElement |
children | Node | Default content to render if nothing else has been provided |
SetElement
Used to set the content to be rendered inside the GetContent component
Prop | Type | Default | Description |
---|---|---|---|
children | Node | Fragment | Children to render in GetElement with a matching name |
name | String | Required | Unique name that will be matched with GetElement |
priority | Number | Required | Priority to render children, highest wins |
append | Boolean | Append children to currently rendered content | |
prepend | Boolean | Prepended children to currently rendered content |
useSetElement
Hook to set the onus element at the top of your component
Name | Type | Default | Description | |
---|---|---|---|---|
Param | Options | Object | Required | Describes the element to set |
↳ | name | String | Required | Same as SetElement name |
↳ | priority | Number | Required | Same as SetElement priority |
↳ | append | Boolean | Same as SetElement append | |
↳ | prepend | Boolean | Same as SetElement prepend | |
Param | node | Node | Children 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