@ea-lab/reactive-json-docs 0.1.2

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 (93) hide show
  1. package/README-npm.md +49 -0
  2. package/README.md +86 -0
  3. package/package.json +79 -0
  4. package/public/rjbuild/component-doc/chartjs/components.yaml +252 -0
  5. package/public/rjbuild/component-doc/chartjs/overview.yaml +51 -0
  6. package/public/rjbuild/component-doc/core/action/HashChangeListener.md +90 -0
  7. package/public/rjbuild/component-doc/core/action/HashChangeListener.yaml +124 -0
  8. package/public/rjbuild/component-doc/core/action/Hide.md +22 -0
  9. package/public/rjbuild/component-doc/core/action/Hide.yaml +60 -0
  10. package/public/rjbuild/component-doc/core/action/MessageListener.md +93 -0
  11. package/public/rjbuild/component-doc/core/action/MessageListener.yaml +153 -0
  12. package/public/rjbuild/component-doc/core/action/Popover.md +26 -0
  13. package/public/rjbuild/component-doc/core/action/Popover.yaml +100 -0
  14. package/public/rjbuild/component-doc/core/action/ReactOnEvent.md +81 -0
  15. package/public/rjbuild/component-doc/core/action/ReactOnEvent.yaml +133 -0
  16. package/public/rjbuild/component-doc/core/action/Redirect.md +20 -0
  17. package/public/rjbuild/component-doc/core/action/Redirect.yaml +68 -0
  18. package/public/rjbuild/component-doc/core/action/Tooltip.md +22 -0
  19. package/public/rjbuild/component-doc/core/action/Tooltip.yaml +90 -0
  20. package/public/rjbuild/component-doc/core/action/VisuallyHide.md +21 -0
  21. package/public/rjbuild/component-doc/core/action/VisuallyHide.yaml +62 -0
  22. package/public/rjbuild/component-doc/core/action/index.md +214 -0
  23. package/public/rjbuild/component-doc/core/action/index.yaml +278 -0
  24. package/public/rjbuild/component-doc/core/element/form/CheckBoxField.md +276 -0
  25. package/public/rjbuild/component-doc/core/element/form/CheckBoxField.yaml +338 -0
  26. package/public/rjbuild/component-doc/core/element/form/DateField.md +189 -0
  27. package/public/rjbuild/component-doc/core/element/form/DateField.yaml +264 -0
  28. package/public/rjbuild/component-doc/core/element/form/NumberField.md +136 -0
  29. package/public/rjbuild/component-doc/core/element/form/NumberField.yaml +103 -0
  30. package/public/rjbuild/component-doc/core/element/form/SelectField.md +304 -0
  31. package/public/rjbuild/component-doc/core/element/form/SelectField.yaml +360 -0
  32. package/public/rjbuild/component-doc/core/element/form/TextAreaField.md +134 -0
  33. package/public/rjbuild/component-doc/core/element/form/TextAreaField.yaml +146 -0
  34. package/public/rjbuild/component-doc/core/element/form/TextField.md +129 -0
  35. package/public/rjbuild/component-doc/core/element/form/TextField.yaml +147 -0
  36. package/public/rjbuild/component-doc/core/element/form/formElementsCommon.md +106 -0
  37. package/public/rjbuild/component-doc/core/element/form/index.md +50 -0
  38. package/public/rjbuild/component-doc/core/element/form/index.yaml +96 -0
  39. package/public/rjbuild/component-doc/core/element/html/AccordionItem.yaml +47 -0
  40. package/public/rjbuild/component-doc/core/element/html/FolderSortableTree.yaml +81 -0
  41. package/public/rjbuild/component-doc/core/element/html/FormatNumeral.yaml +58 -0
  42. package/public/rjbuild/component-doc/core/element/html/Html.yaml +67 -0
  43. package/public/rjbuild/component-doc/core/element/html/LabelFromValue.yaml +54 -0
  44. package/public/rjbuild/component-doc/core/element/html/Modal.yaml +93 -0
  45. package/public/rjbuild/component-doc/core/element/html/PreformattedMarkup.yaml +37 -0
  46. package/public/rjbuild/component-doc/core/element/html/SortableTreeItemCollapseButton.yaml +92 -0
  47. package/public/rjbuild/component-doc/core/element/html/Tabs.yaml +57 -0
  48. package/public/rjbuild/component-doc/core/element/special/BootstrapElement.md +17 -0
  49. package/public/rjbuild/component-doc/core/element/special/BootstrapElement.yaml +18 -0
  50. package/public/rjbuild/component-doc/core/element/special/Count.md +37 -0
  51. package/public/rjbuild/component-doc/core/element/special/Count.yaml +325 -0
  52. package/public/rjbuild/component-doc/core/element/special/DataFilter.md +149 -0
  53. package/public/rjbuild/component-doc/core/element/special/DataFilter.yaml +315 -0
  54. package/public/rjbuild/component-doc/core/element/special/DelayedActions.md +51 -0
  55. package/public/rjbuild/component-doc/core/element/special/DelayedActions.yaml +55 -0
  56. package/public/rjbuild/component-doc/core/element/special/PageControls.md +126 -0
  57. package/public/rjbuild/component-doc/core/element/special/PageControls.yaml +133 -0
  58. package/public/rjbuild/component-doc/core/element/special/Phantom.md +31 -0
  59. package/public/rjbuild/component-doc/core/element/special/Phantom.yaml +34 -0
  60. package/public/rjbuild/component-doc/core/element/special/ReactiveJsonSubroot.md +27 -0
  61. package/public/rjbuild/component-doc/core/element/special/ReactiveJsonSubroot.yaml +51 -0
  62. package/public/rjbuild/component-doc/core/element/special/Switch.md +262 -0
  63. package/public/rjbuild/component-doc/core/element/special/Switch.yaml +348 -0
  64. package/public/rjbuild/component-doc/core/example/accordion.md +96 -0
  65. package/public/rjbuild/component-doc/core/example/accordion.yaml +64 -0
  66. package/public/rjbuild/component-doc/core/example/dynamic-content.md +197 -0
  67. package/public/rjbuild/component-doc/core/example/dynamic-content.yaml +237 -0
  68. package/public/rjbuild/component-doc/core/example/html.md +66 -0
  69. package/public/rjbuild/component-doc/core/example/html.yaml +83 -0
  70. package/public/rjbuild/component-doc/core/example/website.yaml +1663 -0
  71. package/public/rjbuild/component-doc/core/reaction/addData.md +96 -0
  72. package/public/rjbuild/component-doc/core/reaction/addData.yaml +133 -0
  73. package/public/rjbuild/component-doc/core/reaction/fetchData.md +60 -0
  74. package/public/rjbuild/component-doc/core/reaction/fetchData.yaml +156 -0
  75. package/public/rjbuild/component-doc/core/reaction/index.md +236 -0
  76. package/public/rjbuild/component-doc/core/reaction/index.yaml +254 -0
  77. package/public/rjbuild/component-doc/core/reaction/moveData.md +68 -0
  78. package/public/rjbuild/component-doc/core/reaction/moveData.yaml +71 -0
  79. package/public/rjbuild/component-doc/core/reaction/postMessage.md +63 -0
  80. package/public/rjbuild/component-doc/core/reaction/postMessage.yaml +68 -0
  81. package/public/rjbuild/component-doc/core/reaction/redirectNow.md +37 -0
  82. package/public/rjbuild/component-doc/core/reaction/redirectNow.yaml +37 -0
  83. package/public/rjbuild/component-doc/core/reaction/removeData.md +78 -0
  84. package/public/rjbuild/component-doc/core/reaction/removeData.yaml +56 -0
  85. package/public/rjbuild/component-doc/core/reaction/setClipboardData.md +44 -0
  86. package/public/rjbuild/component-doc/core/reaction/setClipboardData.yaml +41 -0
  87. package/public/rjbuild/component-doc/core/reaction/setData.md +93 -0
  88. package/public/rjbuild/component-doc/core/reaction/setData.yaml +85 -0
  89. package/public/rjbuild/component-doc/core/reaction/submitData.md +138 -0
  90. package/public/rjbuild/component-doc/core/reaction/submitData.yaml +141 -0
  91. package/public/rjbuild/component-doc/core/reaction/triggerEvent.md +59 -0
  92. package/public/rjbuild/component-doc/core/reaction/triggerEvent.yaml +59 -0
  93. package/public/rjbuild/component-doc/index.yaml +13 -0
@@ -0,0 +1,338 @@
1
+ renderView:
2
+ - type: Markdown
3
+ content: |
4
+ # CheckBoxField
5
+
6
+ The `CheckBoxField` component renders checkbox or radio button groups using React Bootstrap. It supports both single and multiple selections, dynamic options, and intelligent data storage based on the control type and configuration.
7
+
8
+ ## Properties
9
+
10
+ - `dataLocation` (string, optional): Path to bind the field value in the data context
11
+ - `defaultFieldValue` (any, optional): Default value when no data is present
12
+ - `options` (array, optional): Static array of option objects with `label` and `value` properties
13
+ - `dynamicOptions` (string, optional): Template path to dynamic options array
14
+ - `controlType` (string, optional): Type of control - "checkbox" (default) or "radio"
15
+ - `multiple` (boolean, optional): Force array storage for checkboxes (default: auto-detected)
16
+ - `attributes` (object, optional): Attributes applied to the Form.Group container
17
+ - `actions` (array, optional): Actions to execute based on field state
18
+
19
+ ## Option Format
20
+
21
+ Each option object must have:
22
+ - `label` (string|object): Display text or Reactive-JSON content for the option
23
+ - `value` (any): The actual value to store when selected
24
+ - `attributes` (object, optional): Additional attributes for the specific option
25
+
26
+ ## Data Storage Modes
27
+
28
+ The component uses different data storage strategies:
29
+
30
+ ### Single Value Mode
31
+ - Used for radio buttons (`controlType: "radio"`)
32
+ - Used for single checkbox when `options.length === 1` and `multiple` is not set
33
+ - Stores the selected value directly
34
+
35
+ ### Array Mode
36
+ - Used for multiple checkboxes when `options.length > 1` or `multiple: true`
37
+ - Stores selected values in an array
38
+ - Automatically manages array additions and removals
39
+
40
+ - type: RjBuildDescriber
41
+ title: "Multiple Checkboxes"
42
+ description: "CheckBoxField with multiple options storing values in an array"
43
+ toDescribe:
44
+ renderView:
45
+ - type: CheckBoxField
46
+ dataLocation: ~.interests
47
+ options:
48
+ - label: "Technology"
49
+ value: "tech"
50
+ - label: "Sports"
51
+ value: "sports"
52
+ - label: "Music"
53
+ value: "music"
54
+ - label: "Travel"
55
+ value: "travel"
56
+ data:
57
+ interests:
58
+ - sports
59
+ - travel
60
+
61
+ - type: RjBuildDescriber
62
+ title: "Radio Buttons"
63
+ description: "CheckBoxField as radio buttons for single selection"
64
+ toDescribe:
65
+ renderView:
66
+ - type: CheckBoxField
67
+ dataLocation: ~.priority
68
+ controlType: "radio"
69
+ options:
70
+ - label: "Low"
71
+ value: "low"
72
+ - label: "Medium"
73
+ value: "medium"
74
+ - label: "High"
75
+ value: "high"
76
+ - label: "Critical"
77
+ value: "critical"
78
+ - type: div
79
+ content:
80
+ - "Selected priority: "
81
+ - type: strong
82
+ content: ~.priority
83
+ data:
84
+ priority: ""
85
+
86
+ - type: RjBuildDescriber
87
+ title: "Single Checkbox"
88
+ description: "Single checkbox for boolean values"
89
+ toDescribe:
90
+ renderView:
91
+ - type: CheckBoxField
92
+ dataLocation: ~.acceptTerms
93
+ options:
94
+ - label: "I accept the terms and conditions"
95
+ value: true
96
+ - type: CheckBoxField
97
+ dataLocation: ~.newsletter
98
+ options:
99
+ - label: "Subscribe to newsletter"
100
+ value: true
101
+ - type: div
102
+ attributes:
103
+ style:
104
+ marginTop: "20px"
105
+ padding: "10px"
106
+ backgroundColor: "#f8f9fa"
107
+ borderRadius: "5px"
108
+ content:
109
+ - type: strong
110
+ content: "Current Values:"
111
+ - type: div
112
+ content:
113
+ - "Terms accepted: "
114
+ - type: span
115
+ content: "✓ Yes"
116
+ attributes:
117
+ style:
118
+ color: "green"
119
+ actions:
120
+ - what: hide
121
+ when: ~.acceptTerms
122
+ isNot: true
123
+ - type: span
124
+ content: "✗ No"
125
+ attributes:
126
+ style:
127
+ color: "red"
128
+ actions:
129
+ - what: hide
130
+ when: ~.acceptTerms
131
+ is: true
132
+ - type: div
133
+ content:
134
+ - "Newsletter: "
135
+ - type: span
136
+ content: "✓ Yes"
137
+ attributes:
138
+ style:
139
+ color: "green"
140
+ actions:
141
+ - what: hide
142
+ when: ~.newsletter
143
+ isNot: true
144
+ - type: span
145
+ content: "✗ No"
146
+ attributes:
147
+ style:
148
+ color: "red"
149
+ actions:
150
+ - what: hide
151
+ when: ~.newsletter
152
+ is: true
153
+ data:
154
+ acceptTerms: false
155
+ newsletter: false
156
+
157
+ - type: Markdown
158
+ content: |
159
+ ## Value Types Limitations
160
+
161
+ **Important**: CheckBoxField has limitations with non-string value types due to HTML input behavior:
162
+
163
+ - ✅ **String values**: Work perfectly (`"tech"`, `"sports"`, etc.)
164
+ - ✅ **Boolean values**: Work for single checkboxes (`true`/`false`)
165
+ - ❌ **Numeric values**: May cause issues due to string conversion in HTML inputs
166
+ - ❌ **Complex objects**: Not supported in array mode
167
+
168
+ **Recommendation**: Use string values for reliability. Numeric and complex value type support may be improved in future versions.
169
+
170
+ ```yaml
171
+ # ✅ Recommended - String values
172
+ options:
173
+ - label: "Priority 1"
174
+ value: "priority_1"
175
+ - label: "Priority 2"
176
+ value: "priority_2"
177
+
178
+ # ❌ Avoid - Numeric values may cause issues
179
+ options:
180
+ - label: "Priority 1"
181
+ value: 1
182
+ - label: "Priority 2"
183
+ value: 2
184
+ ```
185
+
186
+ - type: RjBuildDescriber
187
+ title: "Dynamic Options"
188
+ description:
189
+ type: Markdown
190
+ content: |
191
+ CheckBoxField with conditional display using `dynamicOptions` and `hide` actions.
192
+
193
+ **Technique**: Since dynamic path selection like `~.data[~.key]` is not supported,
194
+ we create one CheckBoxField per category and use conditional `hide` actions to show
195
+ only the relevant one based on the selection.
196
+ toDescribe:
197
+ renderView:
198
+ - type: SelectField
199
+ dataLocation: ~.selectedCategory
200
+ label: "Select Category to see available skills:"
201
+ options:
202
+ - label: "Choose category"
203
+ value: ""
204
+ - label: "Technology"
205
+ value: "technology"
206
+ - label: "Business"
207
+ value: "business"
208
+ - label: "Creative"
209
+ value: "creative"
210
+ - type: CheckBoxField
211
+ dataLocation: ~.techSkills
212
+ dynamicOptions: ~.skillCategories.technology
213
+ actions:
214
+ - what: hide
215
+ when: ~.selectedCategory
216
+ isNot: "technology"
217
+ - type: CheckBoxField
218
+ dataLocation: ~.businessSkills
219
+ dynamicOptions: ~.skillCategories.business
220
+ actions:
221
+ - what: hide
222
+ when: ~.selectedCategory
223
+ isNot: "business"
224
+ - type: CheckBoxField
225
+ dataLocation: ~.creativeSkills
226
+ dynamicOptions: ~.skillCategories.creative
227
+ actions:
228
+ - what: hide
229
+ when: ~.selectedCategory
230
+ isNot: "creative"
231
+ data:
232
+ selectedCategory: ""
233
+ techSkills: []
234
+ businessSkills: []
235
+ creativeSkills: []
236
+ skillCategories:
237
+ technology:
238
+ - label: "JavaScript"
239
+ value: "javascript"
240
+ - label: "Python"
241
+ value: "python"
242
+ - label: "React"
243
+ value: "react"
244
+ - label: "Node.js"
245
+ value: "nodejs"
246
+ business:
247
+ - label: "Project Management"
248
+ value: "pm"
249
+ - label: "Marketing"
250
+ value: "marketing"
251
+ - label: "Sales"
252
+ value: "sales"
253
+ - label: "Finance"
254
+ value: "finance"
255
+ creative:
256
+ - label: "Graphic Design"
257
+ value: "design"
258
+ - label: "Photography"
259
+ value: "photo"
260
+ - label: "Writing"
261
+ value: "writing"
262
+ - label: "Video Editing"
263
+ value: "video"
264
+
265
+ - type: RjBuildDescriber
266
+ title: "Option Attributes"
267
+ description: "CheckBoxField with custom attributes on options"
268
+ toDescribe:
269
+ renderView:
270
+ - type: CheckBoxField
271
+ dataLocation: ~.notifications
272
+ options:
273
+ - label: "Email notifications"
274
+ value: "email"
275
+ attributes:
276
+ style:
277
+ color: "blue"
278
+ - label: "SMS notifications (premium feature)"
279
+ value: "sms"
280
+ attributes:
281
+ disabled: true
282
+ title: "This feature requires a premium subscription"
283
+ - label: "Push notifications"
284
+ value: "push"
285
+ attributes:
286
+ style:
287
+ fontWeight: "bold"
288
+ - type: div
289
+ attributes:
290
+ style:
291
+ marginTop: "20px"
292
+ padding: "10px"
293
+ backgroundColor: "#f8f9fa"
294
+ borderRadius: "5px"
295
+ content:
296
+ - type: strong
297
+ content: "Selected Notifications:"
298
+ - type: div
299
+ content:
300
+ - "Current: "
301
+ - ~.notifications
302
+ - type: div
303
+ content: "Note: SMS is disabled (premium feature)"
304
+ attributes:
305
+ style:
306
+ fontSize: "12px"
307
+ color: "#666"
308
+ data:
309
+ notifications: []
310
+
311
+ - type: Markdown
312
+ content: |
313
+ ## Limitations
314
+
315
+ ### Value Types
316
+ - **Numeric values**: May cause issues due to string conversion in HTML input elements
317
+ - **Complex objects**: Cannot be used as option values in array mode
318
+ - **Recommendation**: Use string values for most cases. Numeric and complex value type support may be improved in future versions.
319
+
320
+ ### General Limitations
321
+ - Option labels support template evaluation but with limited View component rendering
322
+ - No support for indeterminate checkbox state
323
+ - No built-in option grouping or hierarchical structure
324
+ - Array mode may not preserve object key order in older JavaScript engines
325
+ - No built-in validation for minimum/maximum selections
326
+ - Limited styling options compared to custom checkbox implementations
327
+
328
+ ## Value Type Handling
329
+
330
+ The component handles special string values in radio mode:
331
+ - Empty string `""` becomes `undefined`
332
+ - String `"true"` becomes boolean `true`
333
+ - String `"false"` becomes boolean `false`
334
+ - String `"null"` becomes `null`
335
+ - Other strings remain as strings
336
+
337
+ templates: {}
338
+ data: {}
@@ -0,0 +1,189 @@
1
+ # DateField
2
+
3
+ The `DateField` component renders a date and time input field using React Bootstrap. It provides a datetime-local input type for selecting both date and time values with automatic data binding to the global data context.
4
+
5
+ > **Warning**
6
+ > This component has limited support and is marked as TODO in the codebase. Currently only supports `datetime-local` input type.
7
+
8
+ ## Properties
9
+
10
+ - `dataLocation` (string, optional): Path to bind the field value in the data context
11
+ - `defaultFieldValue` (string, optional): Default value when no data is present
12
+ - `label` (string, optional): Field label text
13
+ - `attributes` (object, optional): Attributes applied to the Form.Group container
14
+ - `actions` (array, optional): Actions to execute based on field state. Supports both actions (hide, tooltip, etc.) and conditional reactions (setData, fetchData, etc.) with full conditional logic support
15
+
16
+ ## Data Management
17
+
18
+ The component automatically synchronizes its value with the global data context as an ISO 8601 datetime string format (YYYY-MM-DDTHH:mm). When using `dataLocation`, the value is stored at the specified path. Without `dataLocation`, the value is stored in the template context using the component's `datafield`.
19
+
20
+ ## Date Format
21
+
22
+ The component uses the HTML5 `datetime-local` input type which:
23
+ - Displays a date and time picker in the browser
24
+ - Returns values in ISO 8601 format: `YYYY-MM-DDTHH:mm`
25
+ - Does not include timezone information
26
+ - Appearance varies by browser and operating system
27
+
28
+ ## Basic Example
29
+
30
+ ```yaml
31
+ renderView:
32
+ - type: DateField
33
+ dataLocation: ~.eventDate
34
+ label: "Event Date and Time:"
35
+
36
+ data:
37
+ eventDate: null
38
+ ```
39
+
40
+ ## DateField with Default Value
41
+
42
+ ```yaml
43
+ renderView:
44
+ - type: DateField
45
+ dataLocation: ~.deadline
46
+ label: "Project Deadline:"
47
+ defaultFieldValue: "2024-12-31T17:00"
48
+
49
+ data:
50
+ deadline: null
51
+ ```
52
+
53
+ ## Multiple DateFields
54
+
55
+ ```yaml
56
+ renderView:
57
+ - type: DateField
58
+ dataLocation: ~.startDate
59
+ label: "Start Date:"
60
+ - type: DateField
61
+ dataLocation: ~.endDate
62
+ label: "End Date:"
63
+ - type: DateField
64
+ dataLocation: ~.reminderDate
65
+ label: "Reminder Date:"
66
+
67
+ data:
68
+ startDate: null
69
+ endDate: null
70
+ reminderDate: null
71
+ ```
72
+
73
+ ## Interactive Date Management
74
+
75
+ Advanced example with conditional reactions and dynamic messaging:
76
+
77
+ ```yaml
78
+ renderView:
79
+ - type: DateField
80
+ dataLocation: ~.meetingDate
81
+ label: "Meeting Date:"
82
+ - type: button
83
+ content: "Set to Tomorrow"
84
+ actions:
85
+ - what: setData
86
+ on: click
87
+ path: ~.meetingDate
88
+ value: "2024-12-25T14:00"
89
+ - type: button
90
+ content: "Clear Date"
91
+ actions:
92
+ - what: setData
93
+ on: click
94
+ path: ~.meetingDate
95
+ value: null
96
+ - type: button
97
+ content: "Validate Meeting"
98
+ actions:
99
+ - what: setData
100
+ on: click
101
+ path: ~.message
102
+ value: "✓ Meeting date is set!"
103
+ when: ~.meetingDate
104
+ isEmpty: "not"
105
+ - what: setData
106
+ on: click
107
+ path: ~.message
108
+ value: "⚠ Please select a meeting date first"
109
+ when: ~.meetingDate
110
+ isEmpty: true
111
+
112
+ data:
113
+ meetingDate: null
114
+ message: null
115
+ ```
116
+
117
+ ## Complete Example
118
+
119
+ A comprehensive example showing DateField in different contexts:
120
+
121
+ ```yaml
122
+ renderView:
123
+ - type: DateField
124
+ dataLocation: ~.eventDate
125
+ label: "Event Date and Time:"
126
+ - type: DateField
127
+ dataLocation: ~.deadline
128
+ label: "Deadline:"
129
+ defaultFieldValue: "2024-12-31T23:59"
130
+ - type: div
131
+ content:
132
+ - "Event: "
133
+ - ~.eventDate
134
+ - type: div
135
+ content:
136
+ - "Deadline: "
137
+ - ~.deadline
138
+
139
+ data:
140
+ eventDate: null
141
+ deadline: null
142
+ ```
143
+
144
+ ## Current Limitations
145
+
146
+ > **Development Status**
147
+ > The DateField component is currently limited and marked as TODO in the codebase. However, it integrates fully with reactive-json's action and reaction system for rich interactivity.
148
+
149
+ ### Component Limitations
150
+ - Only supports `datetime-local` input type (hardcoded)
151
+ - No support for `date` input type (date only)
152
+ - No support for `time` input type (time only)
153
+ - No support for `month` or `week` input types
154
+ - No built-in date formatting or localization
155
+ - No timezone handling or conversion
156
+ - No support for inputAttributes property (not implemented)
157
+ - No template evaluation support for label property
158
+
159
+ ### Browser and Validation Limitations
160
+ - No date validation beyond browser defaults
161
+ - No support for date ranges or multiple date selection
162
+ - No support for custom date picker libraries
163
+ - Limited browser compatibility for datetime-local input
164
+
165
+ ### Workarounds Available
166
+ - ✅ **Date validation**: Use conditional reactions with `isEmpty`, `andConditions`, `orConditions`
167
+ - ✅ **Interactive behavior**: Full support for conditional actions and reactions
168
+ - ✅ **Dynamic messaging**: Use setData reactions to provide user feedback
169
+ - ✅ **Complex logic**: Combine multiple DateFields with sophisticated conditional logic
170
+
171
+ ## Browser Compatibility
172
+
173
+ The `datetime-local` input type has varying support across browsers:
174
+ - Modern browsers provide native date/time pickers
175
+ - Older browsers may fall back to text input
176
+ - Mobile browsers typically provide optimized date/time selection interfaces
177
+ - Appearance and behavior can vary significantly between browsers
178
+
179
+ ## Future Improvements
180
+
181
+ The component is marked for future enhancement to support:
182
+ - Dedicated `date` input type for date-only selection
183
+ - Dedicated `time` input type for time-only selection
184
+ - Better validation and error handling
185
+ - Custom date formatting options
186
+ - Timezone support
187
+ - Integration with date picker libraries
188
+ - Support for inputAttributes property
189
+ - Template evaluation for label property