@ea-lab/reactive-json-docs 0.8.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +7 -5
- package/public/rjbuild/docs/advanced-concepts/attribute-transformers.md +168 -0
- package/public/rjbuild/docs/advanced-concepts/attribute-transformers.yaml +151 -0
- package/public/rjbuild/docs/advanced-concepts/data-mapping.md +6 -6
- package/public/rjbuild/docs/advanced-concepts/data-mapping.yaml +7 -7
- package/public/rjbuild/docs/advanced-concepts/data-processors.md +7 -7
- package/public/rjbuild/docs/advanced-concepts/data-processors.yaml +7 -7
- package/public/rjbuild/docs/advanced-concepts/forward-update.md +2 -2
- package/public/rjbuild/docs/advanced-concepts/forward-update.yaml +2 -2
- package/public/rjbuild/docs/advanced-concepts/index.md +1 -0
- package/public/rjbuild/docs/advanced-concepts/index.yaml +1 -0
- package/public/rjbuild/docs/advanced-concepts/plugins/component-development.md +1 -1
- package/public/rjbuild/docs/advanced-concepts/plugins/component-development.yaml +1 -1
- package/public/rjbuild/docs/advanced-concepts/plugins/plugin-system.md +48 -2
- package/public/rjbuild/docs/advanced-concepts/plugins/plugin-system.yaml +54 -2
- package/public/rjbuild/docs/core/action/Attribute/SetAttributeValue.md +2 -0
- package/public/rjbuild/docs/core/action/Attribute/SetAttributeValue.yaml +2 -0
- package/public/rjbuild/docs/core/action/Attribute/ToggleAttributeValue.md +2 -0
- package/public/rjbuild/docs/core/action/Attribute/ToggleAttributeValue.yaml +2 -0
- package/public/rjbuild/docs/core/action/Attribute/UnsetAttribute.md +2 -0
- package/public/rjbuild/docs/core/action/Attribute/UnsetAttribute.yaml +2 -0
- package/public/rjbuild/docs/core/action/Attribute/UnsetAttributeValue.md +2 -0
- package/public/rjbuild/docs/core/action/Attribute/UnsetAttributeValue.yaml +2 -0
- package/public/rjbuild/docs/core/action/Attribute/index.md +121 -0
- package/public/rjbuild/docs/core/action/Attribute/index.yaml +77 -0
- package/public/rjbuild/docs/core/attributeTransformer/index.md +17 -0
- package/public/rjbuild/docs/core/attributeTransformer/index.yaml +24 -0
- package/public/rjbuild/docs/core/attributeTransformer/setAttributeValue.md +101 -0
- package/public/rjbuild/docs/core/attributeTransformer/setAttributeValue.yaml +144 -0
- package/public/rjbuild/docs/core/attributeTransformer/toggleAttributeValue.md +269 -0
- package/public/rjbuild/docs/core/attributeTransformer/toggleAttributeValue.yaml +247 -0
- package/public/rjbuild/docs/core/attributeTransformer/unsetAttribute.md +114 -0
- package/public/rjbuild/docs/core/attributeTransformer/unsetAttribute.yaml +138 -0
- package/public/rjbuild/docs/core/attributeTransformer/unsetAttributeValue.md +140 -0
- package/public/rjbuild/docs/core/attributeTransformer/unsetAttributeValue.yaml +187 -0
- package/public/rjbuild/docs/core/dataMapping/simpleMapping.yaml +14 -4
- package/public/rjbuild/docs/core/element/form/Input.md +307 -0
- package/public/rjbuild/docs/core/element/form/Input.yaml +572 -0
- package/public/rjbuild/docs/core/element/special/Count.yaml +99 -31
- package/public/rjbuild/docs/core/element/special/DataFilter.yaml +118 -38
- package/public/rjbuild/docs/core/element/special/ReactiveJsonSubroot.yaml +154 -34
- package/public/rjbuild/docs/core/element/special/Switch.md +5 -5
- package/public/rjbuild/docs/core/element/special/Switch.yaml +9 -18
- package/public/rjbuild/docs/core/example/html.md +2 -2
- package/public/rjbuild/docs/core/example/html.yaml +2 -3
- package/public/rjbuild/docs/core/example/native-html-forms.md +245 -0
- package/public/rjbuild/docs/core/example/native-html-forms.yaml +393 -0
- package/public/rjbuild/docs/core/hook/index.md +38 -0
- package/public/rjbuild/docs/core/hook/index.yaml +44 -0
- package/public/rjbuild/docs/core/hook/usePagination.md +286 -0
- package/public/rjbuild/docs/core/hook/usePagination.yaml +319 -0
- package/public/rjbuild/docs/core/hook/useTransformedAttributes.md +130 -0
- package/public/rjbuild/docs/core/hook/useTransformedAttributes.yaml +164 -0
- package/public/rjbuild/docs/core/reaction/addData.md +17 -3
- package/public/rjbuild/docs/core/reaction/addData.yaml +53 -9
- package/public/rjbuild/docs/core/reaction/fetchData.yaml +44 -8
- package/public/rjbuild/docs/core/reaction/setData.md +18 -4
- package/public/rjbuild/docs/core/reaction/setData.yaml +18 -4
- package/public/rjbuild/docs/docs-components/Mermaid.md +254 -0
- package/public/rjbuild/docs/docs-components/Mermaid.yaml +339 -0
- package/public/rjbuild/docs/docs-components/index.yaml +1 -0
- package/public/rjbuild/docs/getting-started/actions.md +1 -1
- package/public/rjbuild/docs/index.yaml +2 -1
- package/public/rjbuild/docs/install.md +2 -5
- package/public/rjbuild/docs/install.yaml +4 -10
- package/public/rjbuild/docs/{core → integration/bootstrap}/action/Popover.md +1 -1
- package/public/rjbuild/docs/{core → integration/bootstrap}/action/Tooltip.md +1 -1
- package/public/rjbuild/docs/integration/bootstrap/element/html/AccordionItem.md +69 -0
- package/public/rjbuild/docs/integration/bootstrap/element/html/Modal.md +127 -0
- package/public/rjbuild/docs/integration/bootstrap/element/html/Tabs.md +150 -0
- package/public/rjbuild/docs/integration/bootstrap/element/html/index.md +13 -0
- package/public/rjbuild/docs/integration/bootstrap/element/special/index.md +19 -0
- package/public/rjbuild/docs/integration/bootstrap/example/website.md +41 -0
- package/public/rjbuild/docs/integration/bootstrap/overview.md +69 -0
- package/public/rjbuild/docs/integration/bootstrap/overview.yaml +87 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/action/Popover.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/action/Tooltip.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/CheckBoxField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/CheckBoxField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/DateField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/DateField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/NumberField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/NumberField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/SelectField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/SelectField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextAreaField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextAreaField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextField.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextField.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/formElementsCommon.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/index.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/index.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/AccordionItem.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/Modal.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/Tabs.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/special/BootstrapElement.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/element/special/BootstrapElement.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/example/accordion.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/example/accordion.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/example/dynamic-content.md +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/example/dynamic-content.yaml +0 -0
- /package/public/rjbuild/docs/{core → integration/bootstrap}/example/website.yaml +0 -0
- /package/public/rjbuild/docs/{chartjs → integration/chartjs}/components.yaml +0 -0
- /package/public/rjbuild/docs/{chartjs → integration/chartjs}/overview.yaml +0 -0
|
@@ -188,7 +188,7 @@ renderView:
|
|
|
188
188
|
npm install
|
|
189
189
|
|
|
190
190
|
# Install Reactive-JSON and required packages
|
|
191
|
-
npm install @ea-lab/reactive-json
|
|
191
|
+
npm install @ea-lab/reactive-json axios clsx dnd-kit-sortable-tree html-react-parser js-yaml jsonpath lodash
|
|
192
192
|
|
|
193
193
|
- type: Markdown
|
|
194
194
|
content: |
|
|
@@ -244,7 +244,6 @@ renderView:
|
|
|
244
244
|
import React from 'react'
|
|
245
245
|
import ReactDOM from 'react-dom/client'
|
|
246
246
|
import App from './App.tsx'
|
|
247
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
248
247
|
|
|
249
248
|
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
250
249
|
<App />
|
|
@@ -262,7 +261,6 @@ renderView:
|
|
|
262
261
|
language: typescript
|
|
263
262
|
content: |
|
|
264
263
|
import { ReactiveJsonRoot } from '@ea-lab/reactive-json'
|
|
265
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
266
264
|
|
|
267
265
|
function App() {
|
|
268
266
|
return <ReactiveJsonRoot rjBuildUrl="/config.yaml" rjBuildFetchMethod="GET" />
|
|
@@ -371,7 +369,6 @@ renderView:
|
|
|
371
369
|
import { ReactiveJsonRoot } from '@ea-lab/reactive-json'
|
|
372
370
|
import { routeMapping } from './config/routes'
|
|
373
371
|
import Navigation from './components/Navigation'
|
|
374
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
375
372
|
|
|
376
373
|
function App() {
|
|
377
374
|
return (
|
|
@@ -456,7 +453,7 @@ renderView:
|
|
|
456
453
|
|
|
457
454
|
- If you see errors, check that all dependencies are installed correctly
|
|
458
455
|
- Ensure the `public/config.yaml` file exists
|
|
459
|
-
- Verify that
|
|
456
|
+
- Verify that required CSS is imported (if any)
|
|
460
457
|
- Check browser console for any JavaScript errors
|
|
461
458
|
|
|
462
459
|
---
|
|
@@ -644,7 +641,7 @@ templates:
|
|
|
644
641
|
|
|
645
642
|
```bash
|
|
646
643
|
npm install
|
|
647
|
-
npm install @ea-lab/reactive-json
|
|
644
|
+
npm install @ea-lab/reactive-json axios clsx dnd-kit-sortable-tree html-react-parser js-yaml jsonpath lodash
|
|
648
645
|
```
|
|
649
646
|
|
|
650
647
|
---
|
|
@@ -697,8 +694,7 @@ templates:
|
|
|
697
694
|
import React from 'react'
|
|
698
695
|
import ReactDOM from 'react-dom/client'
|
|
699
696
|
import App from './App.tsx'
|
|
700
|
-
// Import
|
|
701
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
697
|
+
// Import global CSS here if needed.
|
|
702
698
|
|
|
703
699
|
ReactDOM.createRoot(document.getElementById('root')!).render(
|
|
704
700
|
<App />
|
|
@@ -719,7 +715,6 @@ templates:
|
|
|
719
715
|
|
|
720
716
|
```javascript
|
|
721
717
|
import { ReactiveJsonRoot } from '@ea-lab/reactive-json'
|
|
722
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
723
718
|
|
|
724
719
|
function App() {
|
|
725
720
|
return <ReactiveJsonRoot rjBuildUrl="/config.yaml" rjBuildFetchMethod="GET" />
|
|
@@ -814,7 +809,6 @@ templates:
|
|
|
814
809
|
import { ReactiveJsonRoot } from '@ea-lab/reactive-json'
|
|
815
810
|
import { routeMapping } from './config/routes'
|
|
816
811
|
import Navigation from './components/Navigation'
|
|
817
|
-
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
818
812
|
|
|
819
813
|
function App() {
|
|
820
814
|
return (
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# AccordionItem
|
|
2
|
+
|
|
3
|
+
The `AccordionItem` component provides collapsible content panels using Bootstrap's accordion component. Each item must be used within a parent accordion container and supports dynamic content through Reactive-JSON's template system.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
- `eventKey` (string, required): Unique identifier for this accordion item
|
|
8
|
+
- `header` (string/component, required): The accordion header content (clickable area)
|
|
9
|
+
- `content` (any, optional): The collapsible content area
|
|
10
|
+
- `attributes` (object, optional): Additional HTML attributes for the accordion item
|
|
11
|
+
- `actions` (array, optional): Actions to execute based on field state
|
|
12
|
+
|
|
13
|
+
## Basic Example
|
|
14
|
+
|
|
15
|
+
```yaml
|
|
16
|
+
renderView:
|
|
17
|
+
- type: BsAccordion
|
|
18
|
+
attributes:
|
|
19
|
+
defaultActiveKey: "0"
|
|
20
|
+
content:
|
|
21
|
+
- type: AccordionItem
|
|
22
|
+
eventKey: "0"
|
|
23
|
+
header: "Accordion Item #1"
|
|
24
|
+
content: "This is the content for the first accordion item."
|
|
25
|
+
- type: AccordionItem
|
|
26
|
+
eventKey: "1"
|
|
27
|
+
header: "Accordion Item #2"
|
|
28
|
+
content: "This is the content for the second accordion item."
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Dynamic Content Example
|
|
32
|
+
|
|
33
|
+
```yaml
|
|
34
|
+
renderView:
|
|
35
|
+
- type: BsAccordion
|
|
36
|
+
content: ~.faqItems
|
|
37
|
+
singleOption:
|
|
38
|
+
load: faqItem
|
|
39
|
+
|
|
40
|
+
templates:
|
|
41
|
+
faqItem:
|
|
42
|
+
type: AccordionItem
|
|
43
|
+
eventKey: ~.id
|
|
44
|
+
header: ~.question
|
|
45
|
+
content: ~.answer
|
|
46
|
+
|
|
47
|
+
data:
|
|
48
|
+
faqItems:
|
|
49
|
+
- id: "q1"
|
|
50
|
+
question: "What is Reactive-JSON?"
|
|
51
|
+
answer: "Reactive-JSON is a declarative framework for building interactive UIs using JSON configurations."
|
|
52
|
+
- id: "q2"
|
|
53
|
+
question: "How do I install it?"
|
|
54
|
+
answer: "You can install it using npm: npm install @ea-lab/reactive-json"
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Limitations
|
|
60
|
+
|
|
61
|
+
- Must be used within a parent `BsAccordion` component
|
|
62
|
+
- Each `eventKey` must be unique within the accordion
|
|
63
|
+
- Header content should be simple text or basic components
|
|
64
|
+
|
|
65
|
+
## Requirements
|
|
66
|
+
|
|
67
|
+
- Bootstrap CSS must be imported
|
|
68
|
+
- `@ea-lab/reactive-json-bootstrap` plugin must be installed and configured
|
|
69
|
+
- React-Bootstrap dependencies must be available
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
# Modal
|
|
2
|
+
|
|
3
|
+
The `Modal` component provides Bootstrap modal dialogs for displaying focused content, forms, or confirmations. It supports dynamic content and integrates with Reactive-JSON's action system for show/hide functionality.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
- `show` (boolean, required): Controls whether the modal is visible
|
|
8
|
+
- `onHide` (reaction, optional): Reaction to execute when modal is closed
|
|
9
|
+
- `size` (string, optional): Modal size (`sm`, `lg`, `xl`)
|
|
10
|
+
- `centered` (boolean, optional): Whether to center the modal vertically
|
|
11
|
+
- `backdrop` (boolean/string, optional): Whether to show backdrop or allow backdrop click to close
|
|
12
|
+
- `header` (component, optional): Modal header content
|
|
13
|
+
- `body` (component, optional): Modal body content
|
|
14
|
+
- `footer` (component, optional): Modal footer content
|
|
15
|
+
- `attributes` (object, optional): Additional HTML attributes
|
|
16
|
+
- `actions` (array, optional): Actions to execute based on modal state
|
|
17
|
+
|
|
18
|
+
## Basic Example
|
|
19
|
+
|
|
20
|
+
```yaml
|
|
21
|
+
renderView:
|
|
22
|
+
- type: button
|
|
23
|
+
content: "Open Modal"
|
|
24
|
+
actions:
|
|
25
|
+
- what: setData
|
|
26
|
+
on: click
|
|
27
|
+
path: ~.showModal
|
|
28
|
+
value: true
|
|
29
|
+
|
|
30
|
+
- type: Modal
|
|
31
|
+
show: ~.showModal
|
|
32
|
+
onHide:
|
|
33
|
+
- what: setData
|
|
34
|
+
path: ~.showModal
|
|
35
|
+
value: false
|
|
36
|
+
header: "Modal Title"
|
|
37
|
+
body: "This is the modal content."
|
|
38
|
+
footer:
|
|
39
|
+
- type: button
|
|
40
|
+
content: "Close"
|
|
41
|
+
actions:
|
|
42
|
+
- what: setData
|
|
43
|
+
on: click
|
|
44
|
+
path: ~.showModal
|
|
45
|
+
value: false
|
|
46
|
+
|
|
47
|
+
data:
|
|
48
|
+
showModal: false
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Form Modal Example
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
renderView:
|
|
55
|
+
- type: button
|
|
56
|
+
content: "Add User"
|
|
57
|
+
actions:
|
|
58
|
+
- what: setData
|
|
59
|
+
on: click
|
|
60
|
+
path: ~.showUserForm
|
|
61
|
+
value: true
|
|
62
|
+
|
|
63
|
+
- type: Modal
|
|
64
|
+
show: ~.showUserForm
|
|
65
|
+
size: "lg"
|
|
66
|
+
centered: true
|
|
67
|
+
onHide:
|
|
68
|
+
- what: setData
|
|
69
|
+
path: ~.showUserForm
|
|
70
|
+
value: false
|
|
71
|
+
header: "Add New User"
|
|
72
|
+
body:
|
|
73
|
+
- type: TextField
|
|
74
|
+
label: "Name:"
|
|
75
|
+
dataLocation: ~.newUser.name
|
|
76
|
+
- type: TextField
|
|
77
|
+
label: "Email:"
|
|
78
|
+
dataLocation: ~.newUser.email
|
|
79
|
+
inputType: "email"
|
|
80
|
+
footer:
|
|
81
|
+
- type: button
|
|
82
|
+
content: "Cancel"
|
|
83
|
+
actions:
|
|
84
|
+
- what: setData
|
|
85
|
+
on: click
|
|
86
|
+
path: ~.showUserForm
|
|
87
|
+
value: false
|
|
88
|
+
- type: button
|
|
89
|
+
content: "Save User"
|
|
90
|
+
actions:
|
|
91
|
+
- what: addData
|
|
92
|
+
on: click
|
|
93
|
+
path: ~.users
|
|
94
|
+
value: ~.newUser
|
|
95
|
+
- what: setData
|
|
96
|
+
path: ~.showUserForm
|
|
97
|
+
value: false
|
|
98
|
+
- what: setData
|
|
99
|
+
path: ~.newUser
|
|
100
|
+
value: {}
|
|
101
|
+
|
|
102
|
+
data:
|
|
103
|
+
showUserForm: false
|
|
104
|
+
newUser: {}
|
|
105
|
+
users: []
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
## Modal Sizes
|
|
111
|
+
|
|
112
|
+
- `sm`: Small modal
|
|
113
|
+
- Default: Standard modal width
|
|
114
|
+
- `lg`: Large modal
|
|
115
|
+
- `xl`: Extra large modal
|
|
116
|
+
|
|
117
|
+
## Limitations
|
|
118
|
+
|
|
119
|
+
- Modal visibility must be controlled through data state
|
|
120
|
+
- Complex animations beyond Bootstrap defaults are not supported
|
|
121
|
+
- Modal stacking (modal over modal) should be avoided
|
|
122
|
+
|
|
123
|
+
## Requirements
|
|
124
|
+
|
|
125
|
+
- Bootstrap CSS must be imported
|
|
126
|
+
- `@ea-lab/reactive-json-bootstrap` plugin must be installed and configured
|
|
127
|
+
- React-Bootstrap dependencies must be available
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
# Tabs
|
|
2
|
+
|
|
3
|
+
The `Tabs` component provides a tabbed interface using React-Bootstrap. Each tab must have a unique `eventKey` and a `title` in its attributes, and can contain any valid Reactive-JSON view content.
|
|
4
|
+
|
|
5
|
+
## Properties
|
|
6
|
+
|
|
7
|
+
- `defaultActiveKey` (string, optional): The key of the tab that should be active by default
|
|
8
|
+
- `activeKey` (string, optional): The key of the currently active tab (for controlled mode)
|
|
9
|
+
- `onSelect` (reaction, optional): Reaction to execute when a tab is selected
|
|
10
|
+
- `variant` (string, optional): Tab style variant (`tabs`, `pills`)
|
|
11
|
+
- `content` (array, required): Array of tab definitions
|
|
12
|
+
- `attributes` (object, optional): Additional HTML attributes
|
|
13
|
+
- `actions` (array, optional): Actions to execute based on tab state
|
|
14
|
+
|
|
15
|
+
## Tab Definition
|
|
16
|
+
|
|
17
|
+
Each tab in the `content` array should have:
|
|
18
|
+
- `eventKey` (string, required): Unique identifier for the tab
|
|
19
|
+
- `title` (string, required): Tab header text
|
|
20
|
+
- `content` (any, optional): Tab content (can be any Reactive-JSON components)
|
|
21
|
+
- `disabled` (boolean, optional): Whether the tab is disabled
|
|
22
|
+
- `attributes` (object, optional): Additional attributes for the tab
|
|
23
|
+
|
|
24
|
+
## Basic Example
|
|
25
|
+
|
|
26
|
+
```yaml
|
|
27
|
+
renderView:
|
|
28
|
+
- type: Tabs
|
|
29
|
+
defaultActiveKey: "home"
|
|
30
|
+
content:
|
|
31
|
+
- eventKey: "home"
|
|
32
|
+
title: "Home"
|
|
33
|
+
content: "Welcome to the home tab!"
|
|
34
|
+
- eventKey: "profile"
|
|
35
|
+
title: "Profile"
|
|
36
|
+
content: "This is the profile tab content."
|
|
37
|
+
- eventKey: "contact"
|
|
38
|
+
title: "Contact"
|
|
39
|
+
content: "Contact information goes here."
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Dynamic Tabs Example
|
|
43
|
+
|
|
44
|
+
```yaml
|
|
45
|
+
renderView:
|
|
46
|
+
- type: Tabs
|
|
47
|
+
defaultActiveKey: ~.activeTab
|
|
48
|
+
onSelect:
|
|
49
|
+
- what: setData
|
|
50
|
+
path: ~.activeTab
|
|
51
|
+
value: "<reactive-json:event-new-value>"
|
|
52
|
+
content: ~.sections
|
|
53
|
+
singleOption:
|
|
54
|
+
load: tabItem
|
|
55
|
+
|
|
56
|
+
templates:
|
|
57
|
+
tabItem:
|
|
58
|
+
eventKey: ~.id
|
|
59
|
+
title: ~.name
|
|
60
|
+
content:
|
|
61
|
+
- type: h3
|
|
62
|
+
content: ~.name
|
|
63
|
+
- type: p
|
|
64
|
+
content: ~.description
|
|
65
|
+
|
|
66
|
+
data:
|
|
67
|
+
activeTab: "overview"
|
|
68
|
+
sections:
|
|
69
|
+
- id: "overview"
|
|
70
|
+
name: "Overview"
|
|
71
|
+
description: "General information about our service."
|
|
72
|
+
- id: "features"
|
|
73
|
+
name: "Features"
|
|
74
|
+
description: "Key features and capabilities."
|
|
75
|
+
- id: "pricing"
|
|
76
|
+
name: "Pricing"
|
|
77
|
+
description: "Pricing plans and options."
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Pills Variant Example
|
|
81
|
+
|
|
82
|
+
```yaml
|
|
83
|
+
renderView:
|
|
84
|
+
- type: Tabs
|
|
85
|
+
variant: "pills"
|
|
86
|
+
defaultActiveKey: "tab1"
|
|
87
|
+
content:
|
|
88
|
+
- eventKey: "tab1"
|
|
89
|
+
title: "Tab 1"
|
|
90
|
+
content: "Content for tab 1"
|
|
91
|
+
- eventKey: "tab2"
|
|
92
|
+
title: "Tab 2"
|
|
93
|
+
content: "Content for tab 2"
|
|
94
|
+
- eventKey: "tab3"
|
|
95
|
+
title: "Tab 3"
|
|
96
|
+
disabled: true
|
|
97
|
+
content: "This tab is disabled"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
## Complex Content Example
|
|
101
|
+
|
|
102
|
+
```yaml
|
|
103
|
+
renderView:
|
|
104
|
+
- type: Tabs
|
|
105
|
+
defaultActiveKey: "dashboard"
|
|
106
|
+
content:
|
|
107
|
+
- eventKey: "dashboard"
|
|
108
|
+
title: "Dashboard"
|
|
109
|
+
content:
|
|
110
|
+
- type: h4
|
|
111
|
+
content: "Dashboard Overview"
|
|
112
|
+
- type: div
|
|
113
|
+
content: "Statistics and metrics go here."
|
|
114
|
+
- eventKey: "settings"
|
|
115
|
+
title: "Settings"
|
|
116
|
+
content:
|
|
117
|
+
- type: TextField
|
|
118
|
+
label: "Username:"
|
|
119
|
+
dataLocation: ~.settings.username
|
|
120
|
+
- type: CheckBoxField
|
|
121
|
+
label: "Enable notifications"
|
|
122
|
+
dataLocation: ~.settings.notifications
|
|
123
|
+
options:
|
|
124
|
+
- value: true
|
|
125
|
+
label: ""
|
|
126
|
+
|
|
127
|
+
data:
|
|
128
|
+
settings:
|
|
129
|
+
username: ""
|
|
130
|
+
notifications: false
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
## Tab Variants
|
|
136
|
+
|
|
137
|
+
- `tabs`: Traditional tab styling (default)
|
|
138
|
+
- `pills`: Pill-style navigation
|
|
139
|
+
|
|
140
|
+
## Limitations
|
|
141
|
+
|
|
142
|
+
- Each `eventKey` must be unique within the tabs component
|
|
143
|
+
- Tab switching animations are limited to Bootstrap defaults
|
|
144
|
+
- Complex tab layouts may require custom CSS
|
|
145
|
+
|
|
146
|
+
## Requirements
|
|
147
|
+
|
|
148
|
+
- Bootstrap CSS must be imported
|
|
149
|
+
- `@ea-lab/reactive-json-bootstrap` plugin must be installed and configured
|
|
150
|
+
- React-Bootstrap dependencies must be available
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Bootstrap HTML Elements
|
|
2
|
+
|
|
3
|
+
## Available Components
|
|
4
|
+
|
|
5
|
+
- **[AccordionItem](./AccordionItem.yaml)** - Collapsible content panels
|
|
6
|
+
- **[Modal](./Modal.yaml)** - Dialog boxes and overlays
|
|
7
|
+
- **[Tabs](./Tabs.yaml)** - Tabbed interface component
|
|
8
|
+
|
|
9
|
+
## Usage Requirements
|
|
10
|
+
|
|
11
|
+
- Bootstrap CSS must be imported in your application
|
|
12
|
+
- The `@ea-lab/reactive-json-bootstrap` plugin must be installed and configured
|
|
13
|
+
- React-Bootstrap dependencies must be available
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Bootstrap Special Elements
|
|
2
|
+
|
|
3
|
+
Bootstrap special elements provide advanced functionality and generic wrappers for Bootstrap components.
|
|
4
|
+
|
|
5
|
+
## Available Components
|
|
6
|
+
|
|
7
|
+
- **[BootstrapElement](./BootstrapElement.yaml)** - Generic wrapper for any React-Bootstrap component
|
|
8
|
+
|
|
9
|
+
## Usage Requirements
|
|
10
|
+
|
|
11
|
+
- Bootstrap CSS must be imported in your application
|
|
12
|
+
- The `@ea-lab/reactive-json-bootstrap` plugin must be installed and configured
|
|
13
|
+
- React-Bootstrap dependencies must be available
|
|
14
|
+
|
|
15
|
+
## BootstrapElement Use Cases
|
|
16
|
+
|
|
17
|
+
- Wrapping React-Bootstrap components not explicitly supported
|
|
18
|
+
- Advanced component configurations
|
|
19
|
+
- Prototyping before creating dedicated wrappers
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Complete Website Example
|
|
2
|
+
|
|
3
|
+
This example demonstrates building a complete website layout using Bootstrap components within Reactive-JSON. It showcases navigation, content sections, forms, and interactive elements working together.
|
|
4
|
+
|
|
5
|
+
## Website Structure
|
|
6
|
+
|
|
7
|
+
The example includes:
|
|
8
|
+
- **Navigation**: Bootstrap navbar with responsive design
|
|
9
|
+
- **Hero Section**: Call-to-action with buttons and forms
|
|
10
|
+
- **Content Sections**: Cards, tabs, and accordions
|
|
11
|
+
- **Contact Form**: Complete form with validation
|
|
12
|
+
- **Modal Dialogs**: Interactive overlays for additional content
|
|
13
|
+
|
|
14
|
+
## Features Demonstrated
|
|
15
|
+
|
|
16
|
+
- Interactive navigation with tab switching and accordion sections
|
|
17
|
+
- Form handling with user input and submission
|
|
18
|
+
- Dynamic content updates and user interactions
|
|
19
|
+
- Modal dialogs for focused interactions
|
|
20
|
+
|
|
21
|
+
## Key Bootstrap Components Used
|
|
22
|
+
|
|
23
|
+
- **Form Elements**: TextField, SelectField, CheckBoxField, TextAreaField
|
|
24
|
+
- **Layout Components**: Containers, rows, columns (via BootstrapElement)
|
|
25
|
+
- **Navigation**: Tabs for content organization
|
|
26
|
+
- **Interactive Elements**: Modals for focused interactions
|
|
27
|
+
- **Content Display**: Cards and accordions for information organization
|
|
28
|
+
|
|
29
|
+
## Implementation Notes
|
|
30
|
+
|
|
31
|
+
This website example demonstrates declarative UI development where complex layouts and interactions are defined entirely through JSON/YAML configuration.
|
|
32
|
+
|
|
33
|
+
## Usage
|
|
34
|
+
|
|
35
|
+
This example serves as a template for building complete websites with Reactive-JSON and Bootstrap. You can:
|
|
36
|
+
- Copy sections for your own projects
|
|
37
|
+
- Modify the styling and content to match your needs
|
|
38
|
+
- Add additional Bootstrap components as required
|
|
39
|
+
- Extend with custom components for specific functionality
|
|
40
|
+
|
|
41
|
+
View the complete implementation in the [website.yaml](./website.yaml) file.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Bootstrap Integration Overview
|
|
2
|
+
|
|
3
|
+
Reactive-JSON has Bootstrap integration through the `@ea-lab/reactive-json-bootstrap` plugin.
|
|
4
|
+
|
|
5
|
+
The Bootstrap integration adds form components, HTML elements, and actions such as: `TextField`, `SelectField`, `CheckBoxField`, `DateField`, `NumberField`, `TextAreaField`, `Modal`, `Tabs`, `AccordionItem`, `Tooltip`, `Popover`, and the versatile `BootstrapElement` wrapper.
|
|
6
|
+
|
|
7
|
+
The Bootstrap components integrate with Bootstrap's CSS framework.
|
|
8
|
+
|
|
9
|
+
## Install
|
|
10
|
+
|
|
11
|
+
The demo website you currently look at has already this integration installed and ready.
|
|
12
|
+
|
|
13
|
+
To enable the integration on your own project that uses Reactive-JSON, make sure that the integration is installed and loaded.
|
|
14
|
+
|
|
15
|
+
Bootstrap support is available through the `@ea-lab/reactive-json-bootstrap` plugin. To get it:
|
|
16
|
+
|
|
17
|
+
```shell
|
|
18
|
+
npm i @ea-lab/reactive-json-bootstrap bootstrap react-bootstrap
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Then make it available to ReactiveJsonRoot:
|
|
22
|
+
|
|
23
|
+
```js
|
|
24
|
+
import {ReactiveJsonRoot} from "@ea-lab/reactive-json";
|
|
25
|
+
import {mergeComponentCollections} from "@ea-lab/reactive-json";
|
|
26
|
+
import {bootstrapComponents} from "@ea-lab/reactive-json-bootstrap";
|
|
27
|
+
|
|
28
|
+
export const YourComponent = () => {
|
|
29
|
+
|
|
30
|
+
const rjRootProps = {
|
|
31
|
+
// Set your own props to rjRootProps such as rjBuildUrl.
|
|
32
|
+
// ...
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Set the plugins prop by merging the component collections.
|
|
36
|
+
// Here, we only have a single plugin, but you can add your own of course.
|
|
37
|
+
rjRootProps.plugins = mergeComponentCollections([bootstrapComponents]);
|
|
38
|
+
|
|
39
|
+
return <ReactiveJsonRoot {...rjRootProps} />;
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Don't forget to import Bootstrap CSS in your application:
|
|
44
|
+
|
|
45
|
+
```js
|
|
46
|
+
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Component Categories
|
|
50
|
+
|
|
51
|
+
### Form Elements
|
|
52
|
+
- **TextField**: Text input
|
|
53
|
+
- **SelectField**: Dropdown select
|
|
54
|
+
- **CheckBoxField**: Checkbox input
|
|
55
|
+
- **DateField**: Date input (limited support)
|
|
56
|
+
- **NumberField**: Numeric input
|
|
57
|
+
- **TextAreaField**: Multi-line text input
|
|
58
|
+
|
|
59
|
+
### HTML Elements
|
|
60
|
+
- **Modal**: Modal dialogs
|
|
61
|
+
- **Tabs**: Tabbed interface
|
|
62
|
+
- **AccordionItem**: Collapsible content panels
|
|
63
|
+
|
|
64
|
+
### Actions
|
|
65
|
+
- **Tooltip**: Tooltips on hover
|
|
66
|
+
- **Popover**: Popovers on click/hover
|
|
67
|
+
|
|
68
|
+
### Special Components
|
|
69
|
+
- **BootstrapElement**: Generic wrapper for React-Bootstrap components
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
renderView:
|
|
2
|
+
- type: h1
|
|
3
|
+
content: Bootstrap integration overview
|
|
4
|
+
|
|
5
|
+
- type: Markdown
|
|
6
|
+
content: |
|
|
7
|
+
Reactive-JSON has Bootstrap integration through the `@ea-lab/reactive-json-bootstrap` plugin.
|
|
8
|
+
|
|
9
|
+
The Bootstrap integration adds form components, HTML elements, and actions such as: `TextField`, `SelectField`, `CheckBoxField`, `DateField`, `NumberField`, `TextAreaField`, `Modal`, `Tabs`, `AccordionItem`, `Tooltip`, `Popover`, and the versatile `BootstrapElement` wrapper.
|
|
10
|
+
|
|
11
|
+
The Bootstrap components are designed to work seamlessly with Bootstrap's CSS framework and provide pre-styled, accessible form controls and UI elements.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
The demo website you currently look at has already this integration installed and ready.
|
|
16
|
+
|
|
17
|
+
To enable the integration on your own project that uses Reactive-JSON, make sure
|
|
18
|
+
that the integration is installed and loaded.
|
|
19
|
+
|
|
20
|
+
Bootstrap support is available through the `@ea-lab/reactive-json-bootstrap` plugin. To get it:
|
|
21
|
+
|
|
22
|
+
```shell
|
|
23
|
+
npm i @ea-lab/reactive-json-bootstrap bootstrap react-bootstrap
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Then make it available to ReactiveJsonRoot:
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
import {ReactiveJsonRoot} from "@ea-lab/reactive-json";
|
|
30
|
+
import {mergeComponentCollections} from "@ea-lab/reactive-json";
|
|
31
|
+
import {bootstrapComponents} from "@ea-lab/reactive-json-bootstrap";
|
|
32
|
+
|
|
33
|
+
export const YourComponent = () => {
|
|
34
|
+
|
|
35
|
+
const rjRootProps = {
|
|
36
|
+
// Set your own props to rjRootProps such as rjBuildUrl.
|
|
37
|
+
// ...
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Set the plugins prop by merging the component collections.
|
|
41
|
+
// Here, we only have a single plugin, but you can add your own of course.
|
|
42
|
+
rjRootProps.plugins = mergeComponentCollections([bootstrapComponents]);
|
|
43
|
+
|
|
44
|
+
return <ReactiveJsonRoot {...rjRootProps} />;
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Don't forget to import Bootstrap CSS in your application:
|
|
49
|
+
|
|
50
|
+
```js
|
|
51
|
+
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Component Categories
|
|
55
|
+
|
|
56
|
+
### Form Elements
|
|
57
|
+
- **TextField**: Text input with Bootstrap styling
|
|
58
|
+
- **SelectField**: Dropdown select with options
|
|
59
|
+
- **CheckBoxField**: Checkbox input with labels
|
|
60
|
+
- **DateField**: Date input (limited support)
|
|
61
|
+
- **NumberField**: Numeric input with validation
|
|
62
|
+
- **TextAreaField**: Multi-line text input
|
|
63
|
+
|
|
64
|
+
### HTML Elements
|
|
65
|
+
- **Modal**: Bootstrap modal dialogs
|
|
66
|
+
- **Tabs**: Tabbed interface component
|
|
67
|
+
- **AccordionItem**: Collapsible content panels
|
|
68
|
+
|
|
69
|
+
### Actions
|
|
70
|
+
- **Tooltip**: Bootstrap tooltips on hover
|
|
71
|
+
- **Popover**: Bootstrap popovers on click/hover
|
|
72
|
+
|
|
73
|
+
### Special Components
|
|
74
|
+
- **BootstrapElement**: Generic wrapper for any React-Bootstrap component
|
|
75
|
+
|
|
76
|
+
## Features
|
|
77
|
+
|
|
78
|
+
- **Consistent Styling**: All components follow Bootstrap design patterns
|
|
79
|
+
- **Form Integration**: Seamless data binding with Reactive-JSON's form system
|
|
80
|
+
- **Accessibility**: Built-in accessibility features from React-Bootstrap
|
|
81
|
+
- **Responsive**: Mobile-first responsive design
|
|
82
|
+
- **Validation**: Form validation support with Bootstrap styling
|
|
83
|
+
- **Actions Support**: Full compatibility with Reactive-JSON's action system
|
|
84
|
+
|
|
85
|
+
templates:
|
|
86
|
+
|
|
87
|
+
data: { }
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|