@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.
Files changed (104) hide show
  1. package/package.json +7 -5
  2. package/public/rjbuild/docs/advanced-concepts/attribute-transformers.md +168 -0
  3. package/public/rjbuild/docs/advanced-concepts/attribute-transformers.yaml +151 -0
  4. package/public/rjbuild/docs/advanced-concepts/data-mapping.md +6 -6
  5. package/public/rjbuild/docs/advanced-concepts/data-mapping.yaml +7 -7
  6. package/public/rjbuild/docs/advanced-concepts/data-processors.md +7 -7
  7. package/public/rjbuild/docs/advanced-concepts/data-processors.yaml +7 -7
  8. package/public/rjbuild/docs/advanced-concepts/forward-update.md +2 -2
  9. package/public/rjbuild/docs/advanced-concepts/forward-update.yaml +2 -2
  10. package/public/rjbuild/docs/advanced-concepts/index.md +1 -0
  11. package/public/rjbuild/docs/advanced-concepts/index.yaml +1 -0
  12. package/public/rjbuild/docs/advanced-concepts/plugins/component-development.md +1 -1
  13. package/public/rjbuild/docs/advanced-concepts/plugins/component-development.yaml +1 -1
  14. package/public/rjbuild/docs/advanced-concepts/plugins/plugin-system.md +48 -2
  15. package/public/rjbuild/docs/advanced-concepts/plugins/plugin-system.yaml +54 -2
  16. package/public/rjbuild/docs/core/action/Attribute/SetAttributeValue.md +2 -0
  17. package/public/rjbuild/docs/core/action/Attribute/SetAttributeValue.yaml +2 -0
  18. package/public/rjbuild/docs/core/action/Attribute/ToggleAttributeValue.md +2 -0
  19. package/public/rjbuild/docs/core/action/Attribute/ToggleAttributeValue.yaml +2 -0
  20. package/public/rjbuild/docs/core/action/Attribute/UnsetAttribute.md +2 -0
  21. package/public/rjbuild/docs/core/action/Attribute/UnsetAttribute.yaml +2 -0
  22. package/public/rjbuild/docs/core/action/Attribute/UnsetAttributeValue.md +2 -0
  23. package/public/rjbuild/docs/core/action/Attribute/UnsetAttributeValue.yaml +2 -0
  24. package/public/rjbuild/docs/core/action/Attribute/index.md +121 -0
  25. package/public/rjbuild/docs/core/action/Attribute/index.yaml +77 -0
  26. package/public/rjbuild/docs/core/attributeTransformer/index.md +17 -0
  27. package/public/rjbuild/docs/core/attributeTransformer/index.yaml +24 -0
  28. package/public/rjbuild/docs/core/attributeTransformer/setAttributeValue.md +101 -0
  29. package/public/rjbuild/docs/core/attributeTransformer/setAttributeValue.yaml +144 -0
  30. package/public/rjbuild/docs/core/attributeTransformer/toggleAttributeValue.md +269 -0
  31. package/public/rjbuild/docs/core/attributeTransformer/toggleAttributeValue.yaml +247 -0
  32. package/public/rjbuild/docs/core/attributeTransformer/unsetAttribute.md +114 -0
  33. package/public/rjbuild/docs/core/attributeTransformer/unsetAttribute.yaml +138 -0
  34. package/public/rjbuild/docs/core/attributeTransformer/unsetAttributeValue.md +140 -0
  35. package/public/rjbuild/docs/core/attributeTransformer/unsetAttributeValue.yaml +187 -0
  36. package/public/rjbuild/docs/core/dataMapping/simpleMapping.yaml +14 -4
  37. package/public/rjbuild/docs/core/element/form/Input.md +307 -0
  38. package/public/rjbuild/docs/core/element/form/Input.yaml +572 -0
  39. package/public/rjbuild/docs/core/element/special/Count.yaml +99 -31
  40. package/public/rjbuild/docs/core/element/special/DataFilter.yaml +118 -38
  41. package/public/rjbuild/docs/core/element/special/ReactiveJsonSubroot.yaml +154 -34
  42. package/public/rjbuild/docs/core/element/special/Switch.md +5 -5
  43. package/public/rjbuild/docs/core/element/special/Switch.yaml +9 -18
  44. package/public/rjbuild/docs/core/example/html.md +2 -2
  45. package/public/rjbuild/docs/core/example/html.yaml +2 -3
  46. package/public/rjbuild/docs/core/example/native-html-forms.md +245 -0
  47. package/public/rjbuild/docs/core/example/native-html-forms.yaml +393 -0
  48. package/public/rjbuild/docs/core/hook/index.md +38 -0
  49. package/public/rjbuild/docs/core/hook/index.yaml +44 -0
  50. package/public/rjbuild/docs/core/hook/usePagination.md +286 -0
  51. package/public/rjbuild/docs/core/hook/usePagination.yaml +319 -0
  52. package/public/rjbuild/docs/core/hook/useTransformedAttributes.md +130 -0
  53. package/public/rjbuild/docs/core/hook/useTransformedAttributes.yaml +164 -0
  54. package/public/rjbuild/docs/core/reaction/addData.md +17 -3
  55. package/public/rjbuild/docs/core/reaction/addData.yaml +53 -9
  56. package/public/rjbuild/docs/core/reaction/fetchData.yaml +44 -8
  57. package/public/rjbuild/docs/core/reaction/setData.md +18 -4
  58. package/public/rjbuild/docs/core/reaction/setData.yaml +18 -4
  59. package/public/rjbuild/docs/docs-components/Mermaid.md +254 -0
  60. package/public/rjbuild/docs/docs-components/Mermaid.yaml +339 -0
  61. package/public/rjbuild/docs/docs-components/index.yaml +1 -0
  62. package/public/rjbuild/docs/getting-started/actions.md +1 -1
  63. package/public/rjbuild/docs/index.yaml +2 -1
  64. package/public/rjbuild/docs/install.md +2 -5
  65. package/public/rjbuild/docs/install.yaml +4 -10
  66. package/public/rjbuild/docs/{core → integration/bootstrap}/action/Popover.md +1 -1
  67. package/public/rjbuild/docs/{core → integration/bootstrap}/action/Tooltip.md +1 -1
  68. package/public/rjbuild/docs/integration/bootstrap/element/html/AccordionItem.md +69 -0
  69. package/public/rjbuild/docs/integration/bootstrap/element/html/Modal.md +127 -0
  70. package/public/rjbuild/docs/integration/bootstrap/element/html/Tabs.md +150 -0
  71. package/public/rjbuild/docs/integration/bootstrap/element/html/index.md +13 -0
  72. package/public/rjbuild/docs/integration/bootstrap/element/special/index.md +19 -0
  73. package/public/rjbuild/docs/integration/bootstrap/example/website.md +41 -0
  74. package/public/rjbuild/docs/integration/bootstrap/overview.md +69 -0
  75. package/public/rjbuild/docs/integration/bootstrap/overview.yaml +87 -0
  76. /package/public/rjbuild/docs/{core → integration/bootstrap}/action/Popover.yaml +0 -0
  77. /package/public/rjbuild/docs/{core → integration/bootstrap}/action/Tooltip.yaml +0 -0
  78. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/CheckBoxField.md +0 -0
  79. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/CheckBoxField.yaml +0 -0
  80. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/DateField.md +0 -0
  81. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/DateField.yaml +0 -0
  82. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/NumberField.md +0 -0
  83. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/NumberField.yaml +0 -0
  84. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/SelectField.md +0 -0
  85. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/SelectField.yaml +0 -0
  86. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextAreaField.md +0 -0
  87. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextAreaField.yaml +0 -0
  88. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextField.md +0 -0
  89. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/TextField.yaml +0 -0
  90. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/formElementsCommon.md +0 -0
  91. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/index.md +0 -0
  92. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/form/index.yaml +0 -0
  93. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/AccordionItem.yaml +0 -0
  94. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/Modal.yaml +0 -0
  95. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/html/Tabs.yaml +0 -0
  96. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/special/BootstrapElement.md +0 -0
  97. /package/public/rjbuild/docs/{core → integration/bootstrap}/element/special/BootstrapElement.yaml +0 -0
  98. /package/public/rjbuild/docs/{core → integration/bootstrap}/example/accordion.md +0 -0
  99. /package/public/rjbuild/docs/{core → integration/bootstrap}/example/accordion.yaml +0 -0
  100. /package/public/rjbuild/docs/{core → integration/bootstrap}/example/dynamic-content.md +0 -0
  101. /package/public/rjbuild/docs/{core → integration/bootstrap}/example/dynamic-content.yaml +0 -0
  102. /package/public/rjbuild/docs/{core → integration/bootstrap}/example/website.yaml +0 -0
  103. /package/public/rjbuild/docs/{chartjs → integration/chartjs}/components.yaml +0 -0
  104. /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 bootstrap react-bootstrap axios clsx dnd-kit-sortable-tree html-react-parser js-yaml jsonpath lodash
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 Bootstrap CSS is imported
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 bootstrap react-bootstrap axios clsx dnd-kit-sortable-tree html-react-parser js-yaml jsonpath lodash
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 Bootstrap styles for reactive-json
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 (
@@ -22,5 +22,5 @@ renderView:
22
22
  ```
23
23
 
24
24
  ## Limitation
25
- - Requires Bootstrap CSS.
25
+ - Requires the Bootstrap integration plugin (`@ea-lab/reactive-json-bootstrap`).
26
26
  - The child component must be able to accept a React reference.
@@ -18,5 +18,5 @@ renderView:
18
18
  ```
19
19
 
20
20
  ## Limitation
21
- - Requires Bootstrap CSS.
21
+ - Requires the Bootstrap integration plugin (`@ea-lab/reactive-json-bootstrap`).
22
22
  - The child component must be able to accept a React reference.
@@ -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: { }