3.0.0 • Published 12 months ago
@onus-elements/react v3.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-elementsor
npm i --save onus-elementsUsage
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:
nameis the name of the content you want to renderpriorityis the deepest applied number (provided by the SetElement)indexincrements 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 testBuild Example
yarn buildStart Example
yarn startRunning unit tests
Run nx test onus-react to execute the unit tests via Jest.
1.1.0
12 months ago
3.0.0
12 months ago
1.1.0-next.8
12 months ago
1.1.0-next.7
12 months ago
1.1.0-next.6
12 months ago
1.1.0-next.5
1 year ago
1.1.0-next.4
1 year ago
1.1.0-next.3
1 year ago
1.1.0-next.2
1 year ago
1.1.0-next.1
1 year ago
1.0.0
3 years ago
2.3.1
3 years ago
2.3.0
3 years ago
2.2.1
3 years ago
2.2.0
3 years ago
2.1.0
3 years ago
2.0.4
3 years ago
2.0.3
3 years ago
2.0.2
3 years ago
2.0.1
3 years ago
2.0.0
3 years ago
1.0.1
3 years ago