@tsed/react-formio 1.13.0 → 1.13.3

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 (184) hide show
  1. package/.eslintignore +13 -0
  2. package/.eslintrc.js +7 -0
  3. package/coverage.json +6 -0
  4. package/dist/components/actions-table/actionsTable.component.d.ts +0 -1
  5. package/dist/components/actions-table/actionsTable.stories.d.ts +0 -1
  6. package/dist/components/alert/alert.component.d.ts +1 -2
  7. package/dist/components/alert/alert.stories.d.ts +0 -1
  8. package/dist/components/card/card.stories.d.ts +0 -1
  9. package/dist/components/form/form.component.d.ts +1 -2
  10. package/dist/components/form/form.component.spec.d.ts +1 -0
  11. package/dist/components/form/form.stories.d.ts +3745 -172
  12. package/dist/components/form/useForm.hook.d.ts +1 -2
  13. package/dist/components/form-access/formAccess.stories.d.ts +1 -2
  14. package/dist/components/form-action/formAction.stories.d.ts +0 -1
  15. package/dist/components/form-builder/formBuilder.stories.d.ts +518 -153
  16. package/dist/components/form-control/formControl.component.d.ts +2 -2
  17. package/dist/components/form-control/formControl.component.spec.d.ts +1 -0
  18. package/dist/components/form-control/formControl.stories.d.ts +57 -0
  19. package/dist/components/form-edit/formEdit.component.d.ts +0 -1
  20. package/dist/components/form-edit/formEdit.stories.d.ts +18 -19
  21. package/dist/components/form-settings/formSettings.component.d.ts +0 -1
  22. package/dist/components/form-settings/formSettings.stories.d.ts +1 -2
  23. package/dist/components/forms-table/components/formCell.component.d.ts +0 -1
  24. package/dist/components/forms-table/formsTable.component.d.ts +0 -1
  25. package/dist/components/forms-table/formsTable.stories.d.ts +0 -1
  26. package/dist/components/index.d.ts +2 -2
  27. package/dist/components/input-tags/inputTags.component.d.ts +0 -1
  28. package/dist/components/input-tags/inputTags.stories.d.ts +2 -3
  29. package/dist/components/input-text/inputText.component.d.ts +0 -1
  30. package/dist/components/input-text/inputText.stories.d.ts +0 -1
  31. package/dist/components/loader/loader.component.d.ts +1 -1
  32. package/dist/components/loader/loader.stories.d.ts +0 -1
  33. package/dist/components/modal/modal.component.d.ts +1 -1
  34. package/dist/components/modal/modal.stories.d.ts +0 -1
  35. package/dist/components/pagination/pagination.component.d.ts +0 -1
  36. package/dist/components/pagination/pagination.stories.d.ts +0 -1
  37. package/dist/components/react-component/reactComponent.component.d.ts +3 -3
  38. package/dist/components/select/select.stories.d.ts +2 -3
  39. package/dist/components/submissions-table/submissionsTable.component.d.ts +0 -1
  40. package/dist/components/submissions-table/submissionsTable.stories.d.ts +13 -14
  41. package/dist/components/table/components/defaultArrowSort.component.d.ts +0 -1
  42. package/dist/components/table/components/defaultCell.component.d.ts +0 -1
  43. package/dist/components/table/components/defaultCellHeader.component.d.ts +1 -2
  44. package/dist/components/table/components/defaultCellOperations.component.d.ts +0 -1
  45. package/dist/components/table/components/defaultOperationButton.component.d.ts +0 -1
  46. package/dist/components/table/filters/defaultColumnFilter.component.d.ts +0 -1
  47. package/dist/components/table/filters/selectColumnFilter.component.d.ts +0 -1
  48. package/dist/components/table/filters/sliderColumnFilter.component.d.ts +0 -1
  49. package/dist/components/table/index.d.ts +1 -1
  50. package/dist/components/table/table.stories.d.ts +4 -5
  51. package/dist/components/tabs/tabs.component.stories.d.ts +0 -1
  52. package/dist/hooks/useTooltip.d.ts +1 -1
  53. package/dist/index.d.ts +3 -3
  54. package/dist/index.js +7936 -7913
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.modern.js +7375 -7347
  57. package/dist/index.modern.js.map +1 -1
  58. package/dist/stores/actions/index.d.ts +1 -1
  59. package/dist/stores/auth/auth.selectors.d.ts +1 -1
  60. package/dist/stores/auth/index.d.ts +4 -4
  61. package/dist/stores/index.d.ts +2 -2
  62. package/jest.config.js +6 -1
  63. package/package.json +8 -5
  64. package/src/components/__fixtures__/form.fixture.json +23 -0
  65. package/src/components/actions-table/actionsTable.component.spec.tsx +11 -11
  66. package/src/components/actions-table/actionsTable.component.tsx +8 -9
  67. package/src/components/actions-table/actionsTable.stories.tsx +1 -0
  68. package/src/components/alert/alert.component.spec.tsx +21 -19
  69. package/src/components/alert/alert.stories.tsx +1 -0
  70. package/src/components/card/card.component.spec.tsx +5 -4
  71. package/src/components/card/card.stories.tsx +1 -0
  72. package/src/components/form/form.component.spec.tsx +57 -0
  73. package/src/components/form/form.component.tsx +4 -3
  74. package/src/components/form/form.stories.tsx +157 -65
  75. package/src/components/form/useForm.hook.ts +35 -33
  76. package/src/components/form-access/formAccess.component.tsx +3 -2
  77. package/src/components/form-access/formAccess.schema.ts +1 -0
  78. package/src/components/form-access/formAccess.stories.tsx +1 -0
  79. package/src/components/form-access/formAccess.utils.ts +6 -5
  80. package/src/components/form-action/formAction.component.tsx +5 -4
  81. package/src/components/form-action/formAction.stories.tsx +225 -227
  82. package/src/components/form-builder/formBuilder.component.tsx +2 -1
  83. package/src/components/form-builder/formBuilder.stories.tsx +1 -0
  84. package/src/components/form-control/formControl.component.spec.tsx +76 -0
  85. package/src/components/form-control/formControl.component.tsx +15 -7
  86. package/src/components/form-control/formControl.stories.tsx +65 -0
  87. package/src/components/form-edit/formCtas.component.tsx +10 -9
  88. package/src/components/form-edit/formEdit.component.tsx +2 -1
  89. package/src/components/form-edit/formEdit.reducer.ts +1 -0
  90. package/src/components/form-edit/formEdit.stories.tsx +1 -0
  91. package/src/components/form-edit/formParameters.component.tsx +1 -0
  92. package/src/components/form-edit/useFormEdit.hook.ts +1 -0
  93. package/src/components/form-settings/formSettings.component.spec.tsx +7 -6
  94. package/src/components/form-settings/formSettings.component.tsx +12 -14
  95. package/src/components/form-settings/formSettings.stories.tsx +1 -0
  96. package/src/components/form-settings/formSettings.utils.ts +4 -3
  97. package/src/components/forms-table/components/formCell.component.tsx +1 -0
  98. package/src/components/forms-table/formsTable.component.tsx +23 -25
  99. package/src/components/forms-table/formsTable.stories.tsx +1 -0
  100. package/src/components/index.ts +2 -2
  101. package/src/components/input-tags/inputTags.component.tsx +7 -6
  102. package/src/components/input-tags/inputTags.stories.tsx +1 -0
  103. package/src/components/input-text/inputText.component.spec.tsx +13 -12
  104. package/src/components/input-text/inputText.component.tsx +4 -3
  105. package/src/components/input-text/inputText.stories.tsx +1 -0
  106. package/src/components/loader/loader.component.spec.tsx +6 -5
  107. package/src/components/loader/loader.component.tsx +1 -0
  108. package/src/components/loader/loader.stories.tsx +1 -0
  109. package/src/components/modal/modal.component.spec.tsx +36 -33
  110. package/src/components/modal/modal.component.tsx +3 -3
  111. package/src/components/modal/modal.stories.tsx +1 -0
  112. package/src/components/modal/removeModal.component.tsx +1 -0
  113. package/src/components/pagination/pagination.component.spec.tsx +24 -21
  114. package/src/components/pagination/pagination.component.tsx +1 -0
  115. package/src/components/pagination/pagination.stories.tsx +1 -0
  116. package/src/components/react-component/reactComponent.component.tsx +11 -7
  117. package/src/components/select/select.component.spec.tsx +17 -18
  118. package/src/components/select/select.component.tsx +3 -2
  119. package/src/components/select/select.stories.tsx +1 -0
  120. package/src/components/submissions-table/submissionsTable.component.tsx +3 -2
  121. package/src/components/submissions-table/submissionsTable.stories.tsx +1 -0
  122. package/src/components/table/components/defaultArrowSort.component.tsx +1 -0
  123. package/src/components/table/components/defaultCellHeader.component.tsx +1 -1
  124. package/src/components/table/components/defaultCellOperations.component.tsx +1 -0
  125. package/src/components/table/components/defaultOperationButton.component.tsx +1 -0
  126. package/src/components/table/filters/defaultColumnFilter.component.spec.tsx +5 -3
  127. package/src/components/table/filters/defaultColumnFilter.component.tsx +1 -0
  128. package/src/components/table/filters/selectColumnFilter.component.spec.tsx +9 -7
  129. package/src/components/table/filters/selectColumnFilter.component.tsx +1 -0
  130. package/src/components/table/index.ts +1 -1
  131. package/src/components/table/table.component.tsx +5 -4
  132. package/src/components/table/table.stories.tsx +2 -1
  133. package/src/components/table/utils/mapFormToColumns.tsx +3 -2
  134. package/src/components/table/utils/useOperations.hook.tsx +1 -0
  135. package/src/components/tabs/tabs.component.spec.tsx +6 -5
  136. package/src/components/tabs/tabs.component.stories.tsx +1 -0
  137. package/src/components/tabs/tabs.component.tsx +11 -5
  138. package/src/hooks/useTooltip.ts +1 -1
  139. package/src/index.ts +3 -4
  140. package/src/interfaces/Operation.ts +1 -0
  141. package/src/stores/action/action.actions.spec.ts +1 -0
  142. package/src/stores/action/action.actions.ts +1 -0
  143. package/src/stores/action/action.reducers.ts +1 -1
  144. package/src/stores/action-info/action-info.actions.spec.ts +1 -0
  145. package/src/stores/action-info/action-info.actions.ts +2 -1
  146. package/src/stores/action-info/action-info.reducers.ts +2 -1
  147. package/src/stores/action-info/action-info.selectors.ts +2 -1
  148. package/src/stores/actions/actions.actions.spec.ts +1 -0
  149. package/src/stores/actions/actions.actions.ts +1 -0
  150. package/src/stores/actions/actions.reducers.ts +1 -0
  151. package/src/stores/actions/index.ts +1 -1
  152. package/src/stores/auth/auth.actions.ts +1 -0
  153. package/src/stores/auth/auth.reducers.ts +1 -0
  154. package/src/stores/auth/auth.selectors.ts +1 -0
  155. package/src/stores/auth/auth.utils.tsx +3 -2
  156. package/src/stores/auth/getAccess.action.spec.ts +1 -0
  157. package/src/stores/auth/getAccess.action.ts +3 -2
  158. package/src/stores/auth/getProjectAccess.action.ts +1 -0
  159. package/src/stores/auth/index.ts +4 -4
  160. package/src/stores/auth/initAuth.action.spec.ts +1 -0
  161. package/src/stores/auth/initAuth.action.ts +1 -0
  162. package/src/stores/auth/logout.action.spec.ts +2 -0
  163. package/src/stores/auth/logout.action.ts +1 -0
  164. package/src/stores/auth/setUser.action.spec.ts +1 -0
  165. package/src/stores/auth/setUser.action.ts +1 -0
  166. package/src/stores/form/form.actions.spec.ts +1 -0
  167. package/src/stores/form/form.actions.ts +1 -0
  168. package/src/stores/form/form.reducers.ts +1 -0
  169. package/src/stores/form/form.selectors.ts +1 -1
  170. package/src/stores/forms/forms.actions.spec.ts +1 -0
  171. package/src/stores/forms/forms.actions.ts +1 -0
  172. package/src/stores/forms/forms.reducers.ts +1 -0
  173. package/src/stores/index.ts +3 -2
  174. package/src/stores/root/root.selectors.ts +3 -3
  175. package/src/stores/submission/submission.actions.spec.ts +1 -0
  176. package/src/stores/submission/submission.actions.ts +1 -0
  177. package/src/stores/submission/submission.reducers.ts +1 -0
  178. package/src/stores/submissions/submissions.actions.spec.ts +1 -0
  179. package/src/stores/submissions/submissions.actions.ts +1 -0
  180. package/src/stores/submissions/submissions.reducers.ts +1 -0
  181. package/tsconfig.json +10 -27
  182. package/tsconfig.node.json +8 -0
  183. package/craco.config.js +0 -11
  184. package/tsconfig.test.json +0 -6
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+
2
3
  import { FormAction } from "./formAction.component";
3
4
 
4
5
  export default {
@@ -38,296 +39,293 @@ export const Sandbox = (args: any) => {
38
39
 
39
40
  Sandbox.args = {
40
41
  actionInfo: {
41
- "name": "save",
42
- "title": "Save Submission",
43
- "description": "Saves the submission into the database.",
44
- "priority": 10,
45
- "defaults": {
46
- "handler": [
47
- "before"
48
- ],
49
- "method": [
50
- "create",
51
- "update"
52
- ],
53
- "priority": 10,
54
- "name": "save",
55
- "title": "Save Submission"
42
+ name: "save",
43
+ title: "Save Submission",
44
+ description: "Saves the submission into the database.",
45
+ priority: 10,
46
+ defaults: {
47
+ handler: ["before"],
48
+ method: ["create", "update"],
49
+ priority: 10,
50
+ name: "save",
51
+ title: "Save Submission"
56
52
  },
57
- "access": {
58
- "handler": false,
59
- "method": false
53
+ access: {
54
+ handler: false,
55
+ method: false
60
56
  },
61
- "settingsForm": {
62
- "components": [
57
+ settingsForm: {
58
+ components: [
63
59
  {
64
- "type": "hidden",
65
- "input": true,
66
- "key": "priority"
60
+ type: "hidden",
61
+ input: true,
62
+ key: "priority"
67
63
  },
68
64
  {
69
- "type": "hidden",
70
- "input": true,
71
- "key": "name"
65
+ type: "hidden",
66
+ input: true,
67
+ key: "name"
72
68
  },
73
69
  {
74
- "type": "textfield",
75
- "input": true,
76
- "label": "Title",
77
- "key": "title"
70
+ type: "textfield",
71
+ input: true,
72
+ label: "Title",
73
+ key: "title"
78
74
  },
79
75
  {
80
- "type": "fieldset",
81
- "input": false,
82
- "tree": true,
83
- "legend": "Action Settings",
84
- "components": [
76
+ type: "fieldset",
77
+ input: false,
78
+ tree: true,
79
+ legend: "Action Settings",
80
+ components: [
85
81
  {
86
- "input": false,
87
- "type": "container",
88
- "key": "settings",
89
- "components": [
82
+ input: false,
83
+ type: "container",
84
+ key: "settings",
85
+ components: [
90
86
  {
91
- "type": "resourcefields",
92
- "key": "resource",
93
- "title": "Save submission to",
94
- "placeholder": "This form",
95
- "basePath": "/project/5d0797bc872fc7d140559857/form",
96
- "form": "62b18b10fbbba513555c6c5e",
97
- "required": false
87
+ type: "resourcefields",
88
+ key: "resource",
89
+ title: "Save submission to",
90
+ placeholder: "This form",
91
+ basePath: "/project/5d0797bc872fc7d140559857/form",
92
+ form: "62b18b10fbbba513555c6c5e",
93
+ required: false
98
94
  }
99
95
  ]
100
96
  }
101
97
  ]
102
98
  },
103
99
  {
104
- "type": "fieldset",
105
- "input": false,
106
- "tree": false,
107
- "key": "conditions",
108
- "legend": "Action Execution",
109
- "components": [
100
+ type: "fieldset",
101
+ input: false,
102
+ tree: false,
103
+ key: "conditions",
104
+ legend: "Action Execution",
105
+ components: [
110
106
  {
111
- "type": "select",
112
- "input": true,
113
- "key": "handler",
114
- "label": "Handler",
115
- "placeholder": "Select which handler(s) you would like to trigger",
116
- "dataSrc": "json",
117
- "data": {
118
- "json": "[{\"name\":\"before\",\"title\":\"Before\"},{\"name\":\"after\",\"title\":\"After\"}]"
107
+ type: "select",
108
+ input: true,
109
+ key: "handler",
110
+ label: "Handler",
111
+ placeholder: "Select which handler(s) you would like to trigger",
112
+ dataSrc: "json",
113
+ data: {
114
+ json: '[{"name":"before","title":"Before"},{"name":"after","title":"After"}]'
119
115
  },
120
- "template": "<span>{{ item.title }}</span>",
121
- "valueProperty": "name",
122
- "multiple": true
116
+ template: "<span>{{ item.title }}</span>",
117
+ valueProperty: "name",
118
+ multiple: true
123
119
  },
124
120
  {
125
- "type": "select",
126
- "input": true,
127
- "label": "Methods",
128
- "key": "method",
129
- "placeholder": "Trigger action on method(s)",
130
- "dataSrc": "json",
131
- "data": {
132
- "json": "[{\"name\":\"create\",\"title\":\"Create\"},{\"name\":\"update\",\"title\":\"Update\"},{\"name\":\"read\",\"title\":\"Read\"},{\"name\":\"delete\",\"title\":\"Delete\"},{\"name\":\"index\",\"title\":\"Index\"}]"
121
+ type: "select",
122
+ input: true,
123
+ label: "Methods",
124
+ key: "method",
125
+ placeholder: "Trigger action on method(s)",
126
+ dataSrc: "json",
127
+ data: {
128
+ json: '[{"name":"create","title":"Create"},{"name":"update","title":"Update"},{"name":"read","title":"Read"},{"name":"delete","title":"Delete"},{"name":"index","title":"Index"}]'
133
129
  },
134
- "template": "<span>{{ item.title }}</span>",
135
- "valueProperty": "name",
136
- "multiple": true
130
+ template: "<span>{{ item.title }}</span>",
131
+ valueProperty: "name",
132
+ multiple: true
137
133
  }
138
134
  ]
139
135
  },
140
136
  {
141
- "key": "fieldset",
142
- "type": "fieldset",
143
- "input": false,
144
- "tree": false,
145
- "legend": "Action Conditions (optional)",
146
- "components": [
137
+ key: "fieldset",
138
+ type: "fieldset",
139
+ input: false,
140
+ tree: false,
141
+ legend: "Action Conditions (optional)",
142
+ components: [
147
143
  {
148
- "type": "container",
149
- "key": "condition",
150
- "input": false,
151
- "tree": true,
152
- "components": [
144
+ type: "container",
145
+ key: "condition",
146
+ input: false,
147
+ tree: true,
148
+ components: [
153
149
  {
154
- "key": "columns",
155
- "type": "columns",
156
- "input": false,
157
- "columns": [
150
+ key: "columns",
151
+ type: "columns",
152
+ input: false,
153
+ columns: [
158
154
  {
159
- "components": [
155
+ components: [
160
156
  {
161
- "type": "select",
162
- "input": true,
163
- "label": "Trigger this action only if field",
164
- "key": "field",
165
- "placeholder": "Select the conditional field",
166
- "template": "<span>{{ item.label || item.key }}</span>",
167
- "dataSrc": "json",
168
- "data": {
169
- "json": "[{\"key\":\"\"},{\"label\":\"Rules\",\"reorder\":false,\"addAnotherPosition\":\"bottom\",\"layoutFixed\":false,\"enableRowGroups\":false,\"initEmpty\":false,\"tableView\":false,\"defaultValue\":[{\"path\":{},\"operator\":\"\"}],\"key\":\"rules\",\"type\":\"datagrid\",\"input\":true,\"components\":[{\"label\":\"Path\",\"widget\":\"choicesjs\",\"tableView\":true,\"dataSrc\":\"url\",\"data\":{\"url\":\"/test\",\"headers\":[{\"key\":\"\",\"value\":\"\"}]},\"key\":\"path\",\"type\":\"select\",\"input\":true,\"disableLimit\":false},{\"label\":\"Operator\",\"widget\":\"choicesjs\",\"tableView\":true,\"data\":{\"values\":[{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"Contains\",\"value\":\"CONTAINS\"}]},\"key\":\"operator\",\"type\":\"select\",\"input\":true},{\"customClass\":\"mt-0 mb-0\",\"key\":\"fieldset\",\"type\":\"fieldset\",\"label\":\"Field Set\",\"input\":false,\"tableView\":false,\"components\":[{\"label\":\"Value\",\"tableView\":true,\"key\":\"value1\",\"customConditional\":\"show = row.operator === 'CONTAINS'\",\"type\":\"textfield\",\"input\":true}]},{\"label\":\"Hello\",\"tableView\":true,\"key\":\"textField\",\"customConditional\":\"show = row.operator === 'CONTAINS'\",\"type\":\"textfield\",\"input\":true}]},{\"label\":\"Path\",\"widget\":\"choicesjs\",\"tableView\":true,\"dataSrc\":\"url\",\"data\":{\"url\":\"/test\",\"headers\":[{\"key\":\"\",\"value\":\"\"}]},\"key\":\"path\",\"type\":\"select\",\"input\":true,\"disableLimit\":false},{\"label\":\"Operator\",\"widget\":\"choicesjs\",\"tableView\":true,\"data\":{\"values\":[{\"label\":\"default\",\"value\":\"default\"},{\"label\":\"Contains\",\"value\":\"CONTAINS\"}]},\"key\":\"operator\",\"type\":\"select\",\"input\":true},{\"label\":\"Value\",\"tableView\":true,\"key\":\"value1\",\"customConditional\":\"show = row.operator === 'CONTAINS'\",\"type\":\"textfield\",\"input\":true},{\"label\":\"Hello\",\"tableView\":true,\"key\":\"textField\",\"customConditional\":\"show = row.operator === 'CONTAINS'\",\"type\":\"textfield\",\"input\":true},{\"type\":\"button\",\"label\":\"Submit\",\"key\":\"submit\",\"disableOnInvalid\":true,\"input\":true,\"tableView\":false}]"
157
+ type: "select",
158
+ input: true,
159
+ label: "Trigger this action only if field",
160
+ key: "field",
161
+ placeholder: "Select the conditional field",
162
+ template: "<span>{{ item.label || item.key }}</span>",
163
+ dataSrc: "json",
164
+ data: {
165
+ json: '[{"key":""},{"label":"Rules","reorder":false,"addAnotherPosition":"bottom","layoutFixed":false,"enableRowGroups":false,"initEmpty":false,"tableView":false,"defaultValue":[{"path":{},"operator":""}],"key":"rules","type":"datagrid","input":true,"components":[{"label":"Path","widget":"choicesjs","tableView":true,"dataSrc":"url","data":{"url":"/test","headers":[{"key":"","value":""}]},"key":"path","type":"select","input":true,"disableLimit":false},{"label":"Operator","widget":"choicesjs","tableView":true,"data":{"values":[{"label":"default","value":"default"},{"label":"Contains","value":"CONTAINS"}]},"key":"operator","type":"select","input":true},{"customClass":"mt-0 mb-0","key":"fieldset","type":"fieldset","label":"Field Set","input":false,"tableView":false,"components":[{"label":"Value","tableView":true,"key":"value1","customConditional":"show = row.operator === \'CONTAINS\'","type":"textfield","input":true}]},{"label":"Hello","tableView":true,"key":"textField","customConditional":"show = row.operator === \'CONTAINS\'","type":"textfield","input":true}]},{"label":"Path","widget":"choicesjs","tableView":true,"dataSrc":"url","data":{"url":"/test","headers":[{"key":"","value":""}]},"key":"path","type":"select","input":true,"disableLimit":false},{"label":"Operator","widget":"choicesjs","tableView":true,"data":{"values":[{"label":"default","value":"default"},{"label":"Contains","value":"CONTAINS"}]},"key":"operator","type":"select","input":true},{"label":"Value","tableView":true,"key":"value1","customConditional":"show = row.operator === \'CONTAINS\'","type":"textfield","input":true},{"label":"Hello","tableView":true,"key":"textField","customConditional":"show = row.operator === \'CONTAINS\'","type":"textfield","input":true},{"type":"button","label":"Submit","key":"submit","disableOnInvalid":true,"input":true,"tableView":false}]'
170
166
  },
171
- "valueProperty": "key",
172
- "multiple": false
167
+ valueProperty: "key",
168
+ multiple: false
173
169
  },
174
170
  {
175
- "type": "select",
176
- "input": true,
177
- "label": "",
178
- "key": "eq",
179
- "placeholder": "Select comparison",
180
- "template": "<span>{{ item.label }}</span>",
181
- "dataSrc": "values",
182
- "data": {
183
- "values": [
171
+ type: "select",
172
+ input: true,
173
+ label: "",
174
+ key: "eq",
175
+ placeholder: "Select comparison",
176
+ template: "<span>{{ item.label }}</span>",
177
+ dataSrc: "values",
178
+ data: {
179
+ values: [
184
180
  {
185
- "value": "",
186
- "label": ""
181
+ value: "",
182
+ label: ""
187
183
  },
188
184
  {
189
- "value": "equals",
190
- "label": "Equals"
185
+ value: "equals",
186
+ label: "Equals"
191
187
  },
192
188
  {
193
- "value": "notEqual",
194
- "label": "Does Not Equal"
189
+ value: "notEqual",
190
+ label: "Does Not Equal"
195
191
  }
196
192
  ],
197
- "json": "",
198
- "url": "",
199
- "resource": ""
193
+ json: "",
194
+ url: "",
195
+ resource: ""
200
196
  },
201
- "valueProperty": "value",
202
- "multiple": false
197
+ valueProperty: "value",
198
+ multiple: false
203
199
  },
204
200
  {
205
- "input": true,
206
- "type": "textfield",
207
- "inputType": "text",
208
- "label": "",
209
- "key": "value",
210
- "placeholder": "Enter value",
211
- "multiple": false
201
+ input: true,
202
+ type: "textfield",
203
+ inputType: "text",
204
+ label: "",
205
+ key: "value",
206
+ placeholder: "Enter value",
207
+ multiple: false
212
208
  }
213
209
  ]
214
210
  },
215
211
  {
216
- "components": [
212
+ components: [
217
213
  {
218
- "key": "well2",
219
- "type": "well",
220
- "input": false,
221
- "components": [
214
+ key: "well2",
215
+ type: "well",
216
+ input: false,
217
+ components: [
222
218
  {
223
- "key": "html",
224
- "type": "htmlelement",
225
- "tag": "h4",
226
- "input": false,
227
- "content": "Or you can provide your own custom JavaScript or <a href=\"http://jsonlogic.com\" target=\"_blank\">JSON</a> condition logic here",
228
- "className": ""
219
+ key: "html",
220
+ type: "htmlelement",
221
+ tag: "h4",
222
+ input: false,
223
+ content:
224
+ 'Or you can provide your own custom JavaScript or <a href="http://jsonlogic.com" target="_blank">JSON</a> condition logic here',
225
+ className: ""
229
226
  },
230
227
  {
231
- "label": "",
232
- "type": "textarea",
233
- "input": true,
234
- "key": "custom",
235
- "editorComponents": [
228
+ label: "",
229
+ type: "textarea",
230
+ input: true,
231
+ key: "custom",
232
+ editorComponents: [
236
233
  {
237
- "label": "Rules",
238
- "reorder": false,
239
- "addAnotherPosition": "bottom",
240
- "layoutFixed": false,
241
- "enableRowGroups": false,
242
- "initEmpty": false,
243
- "tableView": false,
244
- "defaultValue": [
234
+ label: "Rules",
235
+ reorder: false,
236
+ addAnotherPosition: "bottom",
237
+ layoutFixed: false,
238
+ enableRowGroups: false,
239
+ initEmpty: false,
240
+ tableView: false,
241
+ defaultValue: [
245
242
  {
246
- "path": {},
247
- "operator": ""
243
+ path: {},
244
+ operator: ""
248
245
  }
249
246
  ],
250
- "key": "rules",
251
- "type": "datagrid",
252
- "input": true,
253
- "components": [
247
+ key: "rules",
248
+ type: "datagrid",
249
+ input: true,
250
+ components: [
254
251
  {
255
- "label": "Path",
256
- "widget": "choicesjs",
257
- "tableView": true,
258
- "dataSrc": "url",
259
- "data": {
260
- "url": "/test",
261
- "headers": [
252
+ label: "Path",
253
+ widget: "choicesjs",
254
+ tableView: true,
255
+ dataSrc: "url",
256
+ data: {
257
+ url: "/test",
258
+ headers: [
262
259
  {
263
- "key": "",
264
- "value": ""
260
+ key: "",
261
+ value: ""
265
262
  }
266
263
  ]
267
264
  },
268
- "key": "path",
269
- "type": "select",
270
- "input": true,
271
- "disableLimit": false
265
+ key: "path",
266
+ type: "select",
267
+ input: true,
268
+ disableLimit: false
272
269
  },
273
270
  {
274
- "label": "Operator",
275
- "widget": "choicesjs",
276
- "tableView": true,
277
- "data": {
278
- "values": [
271
+ label: "Operator",
272
+ widget: "choicesjs",
273
+ tableView: true,
274
+ data: {
275
+ values: [
279
276
  {
280
- "label": "default",
281
- "value": "default"
277
+ label: "default",
278
+ value: "default"
282
279
  },
283
280
  {
284
- "label": "Contains",
285
- "value": "CONTAINS"
281
+ label: "Contains",
282
+ value: "CONTAINS"
286
283
  }
287
284
  ]
288
285
  },
289
- "key": "operator",
290
- "type": "select",
291
- "input": true
286
+ key: "operator",
287
+ type: "select",
288
+ input: true
292
289
  },
293
290
  {
294
- "customClass": "mt-0 mb-0",
295
- "key": "fieldset",
296
- "type": "fieldset",
297
- "label": "Field Set",
298
- "input": false,
299
- "tableView": false,
300
- "components": [
291
+ customClass: "mt-0 mb-0",
292
+ key: "fieldset",
293
+ type: "fieldset",
294
+ label: "Field Set",
295
+ input: false,
296
+ tableView: false,
297
+ components: [
301
298
  {
302
- "label": "Value",
303
- "tableView": true,
304
- "key": "value1",
305
- "customConditional": "show = row.operator === 'CONTAINS'",
306
- "type": "textfield",
307
- "input": true
299
+ label: "Value",
300
+ tableView: true,
301
+ key: "value1",
302
+ customConditional: "show = row.operator === 'CONTAINS'",
303
+ type: "textfield",
304
+ input: true
308
305
  }
309
306
  ]
310
307
  },
311
308
  {
312
- "label": "Hello",
313
- "tableView": true,
314
- "key": "textField",
315
- "customConditional": "show = row.operator === 'CONTAINS'",
316
- "type": "textfield",
317
- "input": true
309
+ label: "Hello",
310
+ tableView: true,
311
+ key: "textField",
312
+ customConditional: "show = row.operator === 'CONTAINS'",
313
+ type: "textfield",
314
+ input: true
318
315
  }
319
316
  ]
320
317
  },
321
318
  {
322
- "type": "button",
323
- "label": "Submit",
324
- "key": "submit",
325
- "disableOnInvalid": true,
326
- "input": true,
327
- "tableView": false
319
+ type: "button",
320
+ label: "Submit",
321
+ key: "submit",
322
+ disableOnInvalid: true,
323
+ input: true,
324
+ tableView: false
328
325
  }
329
326
  ],
330
- "placeholder": "// Example: Only execute if submitted roles has 'authenticated'.\nJavaScript: execute = (data.roles.indexOf('authenticated') !== -1);\nJSON: { \"in\": [ \"authenticated\", { \"var\": \"data.roles\" } ] }"
327
+ placeholder:
328
+ '// Example: Only execute if submitted roles has \'authenticated\'.\nJavaScript: execute = (data.roles.indexOf(\'authenticated\') !== -1);\nJSON: { "in": [ "authenticated", { "var": "data.roles" } ] }'
331
329
  }
332
330
  ]
333
331
  }
@@ -340,28 +338,28 @@ Sandbox.args = {
340
338
  ]
341
339
  },
342
340
  {
343
- "key": "html2",
344
- "type": "htmlelement",
345
- "tag": "hr",
346
- "input": false,
347
- "content": "",
348
- "className": ""
341
+ key: "html2",
342
+ type: "htmlelement",
343
+ tag: "hr",
344
+ input: false,
345
+ content: "",
346
+ className: ""
349
347
  },
350
348
  {
351
- "type": "button",
352
- "input": true,
353
- "label": "Save Action",
354
- "key": "submit",
355
- "size": "md",
356
- "leftIcon": "",
357
- "rightIcon": "",
358
- "block": false,
359
- "action": "submit",
360
- "disableOnInvalid": true,
361
- "theme": "primary"
349
+ type: "button",
350
+ input: true,
351
+ label: "Save Action",
352
+ key: "submit",
353
+ size: "md",
354
+ leftIcon: "",
355
+ rightIcon: "",
356
+ block: false,
357
+ action: "submit",
358
+ disableOnInvalid: true,
359
+ theme: "primary"
362
360
  }
363
361
  ],
364
- "action": "/project/5d0797bc872fc7d140559857/form/62b18b10fbbba513555c6c5e/action"
362
+ action: "/project/5d0797bc872fc7d140559857/form/62b18b10fbbba513555c6c5e/action"
365
363
  }
366
364
  },
367
365
  options: { template: "tailwind", iconset: "bx" }
@@ -8,6 +8,7 @@ import cloneDeep from "lodash/cloneDeep";
8
8
  import noop from "lodash/noop";
9
9
  import PropTypes from "prop-types";
10
10
  import React from "react";
11
+
11
12
  import { callLast } from "../../utils/callLast";
12
13
 
13
14
  Components.setComponents(AllComponents);
@@ -175,7 +176,7 @@ export class FormBuilder extends React.Component<FormBuilderProps, any> {
175
176
 
176
177
  whenComponentsChange(components: ComponentSchema[]) {
177
178
  this.setState({ components }, () => {
178
- this.props?.onChange(components);
179
+ this.props?.onChange && this.props.onChange(components);
179
180
  });
180
181
  }
181
182
 
@@ -1,4 +1,5 @@
1
1
  import React from "react";
2
+
2
3
  import { FormBuilder } from "../../index";
3
4
 
4
5
  export default {