@dartech/arsenal-ui 0.0.1 → 0.0.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 (214) hide show
  1. package/{index.ts → index.d.ts} +3 -3
  2. package/index.esm.js +1 -0
  3. package/index.umd.js +1 -0
  4. package/package.json +5 -2
  5. package/src/interfaces/common.d.ts +10 -0
  6. package/src/interfaces/definition.d.ts +117 -0
  7. package/src/interfaces/{index.ts → index.d.ts} +3 -3
  8. package/src/interfaces/ui.d.ts +33 -0
  9. package/src/lib/Alert/Alert.d.ts +53 -0
  10. package/src/lib/Alert/index.d.ts +1 -0
  11. package/src/lib/Definition/CreateDefinition/CreateDefinition.d.ts +11 -0
  12. package/src/lib/Definition/CreateDefinition/{index.ts → index.d.ts} +1 -1
  13. package/src/lib/Definition/DefinitionFiller/DefinitionFiller.d.ts +8 -0
  14. package/src/lib/Definition/DefinitionFiller/WidgetDefinitionFiller.d.ts +9 -0
  15. package/src/lib/Definition/DefinitionFiller/{index.ts → index.d.ts} +2 -2
  16. package/src/lib/Definition/{index.ts → index.d.ts} +2 -2
  17. package/src/lib/DemPropertyField/DemPropertyField.d.ts +59 -0
  18. package/src/lib/DemPropertyField/DemPropertyView/DemPropertyView.d.ts +8 -0
  19. package/src/lib/DemPropertyField/DemPropertyView/{index.ts → index.d.ts} +1 -1
  20. package/src/lib/DemPropertyField/MultipleDemField/MultipleDemField.d.ts +9 -0
  21. package/src/lib/DemPropertyField/MultipleDemField/{index.tsx → index.d.ts} +1 -1
  22. package/src/lib/DemPropertyField/RestrictedValuesEditor.d.ts +6 -0
  23. package/src/lib/DemPropertyField/SingleDemField/SingleDemField.d.ts +9 -0
  24. package/src/lib/DemPropertyField/SingleDemField/{index.ts → index.d.ts} +1 -1
  25. package/src/lib/DemPropertyField/{index.ts → index.d.ts} +2 -2
  26. package/src/lib/DemPropertyField/styles.d.ts +2 -0
  27. package/src/lib/DemPropertyField/widgets/DemBooleanWidget.d.ts +7 -0
  28. package/src/lib/DemPropertyField/widgets/DemDateTimeWidget.d.ts +9 -0
  29. package/src/lib/DemPropertyField/widgets/DemDateWidget.d.ts +9 -0
  30. package/src/lib/DemPropertyField/widgets/DemFieldWidget.d.ts +11 -0
  31. package/src/lib/DemPropertyField/widgets/DemFloatWidget.d.ts +10 -0
  32. package/src/lib/DemPropertyField/widgets/DemIntegerWidget.d.ts +10 -0
  33. package/src/lib/DemPropertyField/widgets/DemJsonWidget.d.ts +9 -0
  34. package/src/lib/DemPropertyField/widgets/DemStringWidget.d.ts +10 -0
  35. package/src/lib/DemPropertyField/widgets/DemTimeWidget.d.ts +9 -0
  36. package/src/lib/DemPropertyField/widgets/{index.ts → index.d.ts} +1 -1
  37. package/src/lib/Forms/BackButton.d.ts +7 -0
  38. package/src/lib/Forms/ControlAceEditor.d.ts +20 -0
  39. package/src/lib/Forms/ControlAutocomplete.d.ts +49 -0
  40. package/src/lib/Forms/ControlCheckbox.d.ts +30 -0
  41. package/src/lib/Forms/ControlDebouncedInput.d.ts +4 -0
  42. package/src/lib/Forms/ControlInput.d.ts +54 -0
  43. package/src/lib/Forms/ControlNumberInput.d.ts +43 -0
  44. package/src/lib/Forms/ControlQueryAutocomplete.d.ts +7 -0
  45. package/src/lib/Forms/ControlRadioBtn.d.ts +26 -0
  46. package/src/lib/Forms/ControlSelect.d.ts +66 -0
  47. package/src/lib/Forms/CopyButton.d.ts +21 -0
  48. package/src/lib/Forms/{index.ts → index.d.ts} +11 -10
  49. package/src/lib/InfoItem/InfoItem.d.ts +10 -0
  50. package/src/lib/InfoItem/{index.ts → index.d.ts} +1 -1
  51. package/src/lib/InfoItem/styles.d.ts +2 -0
  52. package/src/lib/JsonPathPicker/JsonPathPicker.d.ts +10 -0
  53. package/src/lib/JsonPathPicker/PropertyStep.d.ts +11 -0
  54. package/src/lib/JsonPathPicker/{index.ts → index.d.ts} +1 -1
  55. package/src/lib/JsonView/JsonView.d.ts +9 -0
  56. package/src/lib/JsonView/{index.ts → index.d.ts} +1 -1
  57. package/src/lib/Loader/Loader.d.ts +21 -0
  58. package/src/lib/Loader/{index.ts → index.d.ts} +1 -1
  59. package/src/lib/Modals/JsonModalView.d.ts +10 -0
  60. package/src/lib/Modals/{index.ts → index.d.ts} +1 -1
  61. package/src/lib/Property/PropertyValueField/BooleanValueField.d.ts +7 -0
  62. package/src/lib/Property/PropertyValueField/DateTimeValueField.d.ts +9 -0
  63. package/src/lib/Property/PropertyValueField/DateValueField.d.ts +9 -0
  64. package/src/lib/Property/PropertyValueField/EntityValueField.d.ts +9 -0
  65. package/src/lib/Property/PropertyValueField/JsonValueField.d.ts +10 -0
  66. package/src/lib/Property/PropertyValueField/PropertyValue.d.ts +10 -0
  67. package/src/lib/Property/PropertyValueField/PropertyValueField.d.ts +9 -0
  68. package/src/lib/Property/PropertyValueField/StringValueField.d.ts +9 -0
  69. package/src/lib/Property/PropertyValueField/TimeValueField.d.ts +9 -0
  70. package/src/lib/Property/PropertyValueField/ValueComponent.d.ts +15 -0
  71. package/src/lib/Property/PropertyValueField/{index.ts → index.d.ts} +2 -1
  72. package/src/lib/Property/PropertyWidget/PropertyWidget.d.ts +9 -0
  73. package/src/lib/Property/PropertyWidget/{index.ts → index.d.ts} +1 -1
  74. package/src/lib/Property/UpsertProperty/CreatePropertiesList.d.ts +13 -0
  75. package/src/lib/Property/UpsertProperty/CreatePropertyFormFields.d.ts +10 -0
  76. package/src/lib/Property/UpsertProperty/CustomPropertyField.d.ts +7 -0
  77. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/BigDecimalPropertyFields.d.ts +6 -0
  78. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/DateAdditionalFields.d.ts +7 -0
  79. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityAdditionalFields.d.ts +8 -0
  80. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityReferencePropertyFields.d.ts +6 -0
  81. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/PropertyAdditionalFields.d.ts +10 -0
  82. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/StringPropertyFields.d.ts +6 -0
  83. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/{index.ts → index.d.ts} +1 -1
  84. package/src/lib/Property/UpsertProperty/{index.ts → index.d.ts} +2 -2
  85. package/src/lib/Property/UpsertProperty/useCustomFields.d.ts +6 -0
  86. package/src/lib/Property/ViewPropertiesList/ViewPropertiesList.d.ts +8 -0
  87. package/src/lib/Property/ViewPropertiesList/{index.ts → index.d.ts} +1 -1
  88. package/src/lib/Property/ViewProperty/EntityPropertiesShortView.d.ts +9 -0
  89. package/src/lib/Property/ViewProperty/EntityPropertiesView.d.ts +8 -0
  90. package/src/lib/Property/ViewProperty/PropertyDataTable.d.ts +7 -0
  91. package/src/lib/Property/ViewProperty/PropertyItem.d.ts +9 -0
  92. package/src/lib/Property/ViewProperty/ViewProperty.d.ts +9 -0
  93. package/src/lib/Property/ViewProperty/{index.ts → index.d.ts} +1 -1
  94. package/src/lib/Property/{index.ts → index.d.ts} +4 -4
  95. package/src/lib/Status/Status.d.ts +7 -0
  96. package/src/lib/Status/{index.ts → index.d.ts} +1 -1
  97. package/src/lib/Status/styles.d.ts +2 -0
  98. package/src/lib/StepperView/StepperView.d.ts +10 -0
  99. package/src/lib/StepperView/index.d.ts +1 -0
  100. package/src/lib/Table/Table.d.ts +49 -0
  101. package/src/lib/Table/TableColumnMenu.d.ts +3 -0
  102. package/src/lib/Table/TablePagination.d.ts +3 -0
  103. package/src/lib/Table/index.d.ts +1 -0
  104. package/src/lib/Table/styles.d.ts +2 -0
  105. package/src/lib/Table/usePagination.d.ts +5 -0
  106. package/src/lib/Table/useTableQueryPagination.d.ts +11 -0
  107. package/src/lib/Table/useTableQuerySorting.d.ts +6 -0
  108. package/src/lib/Tabs/RouteTabs.d.ts +11 -0
  109. package/src/lib/Tabs/TabPanel.d.ts +25 -0
  110. package/src/lib/Tabs/{index.ts → index.d.ts} +2 -2
  111. package/src/lib/TemplateContent/ExpressionDecorator.d.ts +5 -0
  112. package/src/lib/TemplateContent/TemplateContentEditor.d.ts +9 -0
  113. package/src/lib/TemplateContent/{index.ts → index.d.ts} +1 -1
  114. package/src/lib/{index.ts → index.d.ts} +15 -14
  115. package/src/utils/common.d.ts +7 -0
  116. package/src/utils/dem.d.ts +7 -0
  117. package/src/utils/hooks.d.ts +7 -0
  118. package/src/utils/{index.ts → index.d.ts} +5 -5
  119. package/src/utils/ui-utils.d.ts +7 -0
  120. package/src/utils/validators.d.ts +12 -0
  121. package/.babelrc +0 -12
  122. package/.eslintrc.json +0 -22
  123. package/jest.config.js +0 -9
  124. package/project.json +0 -69
  125. package/rollup.config.js +0 -135
  126. package/src/interfaces/common.ts +0 -12
  127. package/src/interfaces/definition.ts +0 -143
  128. package/src/interfaces/ui.ts +0 -35
  129. package/src/lib/Alert/Alert.tsx +0 -108
  130. package/src/lib/Alert/index.ts +0 -1
  131. package/src/lib/Definition/CreateDefinition/CreateDefinition.tsx +0 -74
  132. package/src/lib/Definition/DefinitionFiller/DefinitionFiller.tsx +0 -85
  133. package/src/lib/Definition/DefinitionFiller/WidgetDefinitionFiller.tsx +0 -96
  134. package/src/lib/DemPropertyField/DemPropertyField.tsx +0 -93
  135. package/src/lib/DemPropertyField/DemPropertyView/DemPropertyView.tsx +0 -44
  136. package/src/lib/DemPropertyField/MultipleDemField/MultipleDemField.tsx +0 -293
  137. package/src/lib/DemPropertyField/RestrictedValuesEditor.tsx +0 -63
  138. package/src/lib/DemPropertyField/SingleDemField/SingleDemField.tsx +0 -156
  139. package/src/lib/DemPropertyField/styles.ts +0 -50
  140. package/src/lib/DemPropertyField/widgets/DemBooleanWidget.tsx +0 -26
  141. package/src/lib/DemPropertyField/widgets/DemDateTimeWidget.tsx +0 -34
  142. package/src/lib/DemPropertyField/widgets/DemDateWidget.tsx +0 -33
  143. package/src/lib/DemPropertyField/widgets/DemFieldWidget.tsx +0 -67
  144. package/src/lib/DemPropertyField/widgets/DemFloatWidget.tsx +0 -49
  145. package/src/lib/DemPropertyField/widgets/DemIntegerWidget.tsx +0 -63
  146. package/src/lib/DemPropertyField/widgets/DemJsonWidget.tsx +0 -33
  147. package/src/lib/DemPropertyField/widgets/DemStringWidget.tsx +0 -35
  148. package/src/lib/DemPropertyField/widgets/DemTimeWidget.tsx +0 -46
  149. package/src/lib/Forms/BackButton.tsx +0 -45
  150. package/src/lib/Forms/ControlAceEditor.tsx +0 -103
  151. package/src/lib/Forms/ControlAutocomplete.tsx +0 -134
  152. package/src/lib/Forms/ControlCheckbox.tsx +0 -57
  153. package/src/lib/Forms/ControlDebouncedInput.tsx +0 -69
  154. package/src/lib/Forms/ControlInput.tsx +0 -102
  155. package/src/lib/Forms/ControlNumberInput.tsx +0 -144
  156. package/src/lib/Forms/ControlRadioBtn.tsx +0 -46
  157. package/src/lib/Forms/ControlSelect.tsx +0 -135
  158. package/src/lib/Forms/CopyButton.tsx +0 -49
  159. package/src/lib/InfoItem/InfoItem.tsx +0 -39
  160. package/src/lib/InfoItem/styles.ts +0 -17
  161. package/src/lib/JsonPathPicker/JsonPathPicker.tsx +0 -71
  162. package/src/lib/JsonPathPicker/PropertyStep.tsx +0 -74
  163. package/src/lib/JsonView/JsonView.tsx +0 -43
  164. package/src/lib/Loader/Loader.tsx +0 -41
  165. package/src/lib/Modals/JsonModalView.tsx +0 -52
  166. package/src/lib/Property/PropertyValueField/BooleanValueField.tsx +0 -41
  167. package/src/lib/Property/PropertyValueField/DateTimeValueField.tsx +0 -59
  168. package/src/lib/Property/PropertyValueField/DateValueField.tsx +0 -59
  169. package/src/lib/Property/PropertyValueField/EntityValueField.tsx +0 -33
  170. package/src/lib/Property/PropertyValueField/JsonValueField.tsx +0 -64
  171. package/src/lib/Property/PropertyValueField/PropertyValue.tsx +0 -97
  172. package/src/lib/Property/PropertyValueField/PropertyValueField.tsx +0 -86
  173. package/src/lib/Property/PropertyValueField/StringValueField.tsx +0 -21
  174. package/src/lib/Property/PropertyValueField/TimeValueField.tsx +0 -68
  175. package/src/lib/Property/PropertyValueField/ValueComponent.tsx +0 -63
  176. package/src/lib/Property/PropertyWidget/PropertyWidget.tsx +0 -167
  177. package/src/lib/Property/UpsertProperty/CreatePropertiesList.tsx +0 -131
  178. package/src/lib/Property/UpsertProperty/CreatePropertyFormFields.tsx +0 -147
  179. package/src/lib/Property/UpsertProperty/CustomPropertyField.tsx +0 -40
  180. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/BigDecimalPropertyFields.tsx +0 -41
  181. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/DateAdditionalFields.tsx +0 -27
  182. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityAdditionalFields.tsx +0 -133
  183. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityReferencePropertyFields.tsx +0 -46
  184. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/PropertyAdditionalFields.tsx +0 -52
  185. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/StringPropertyFields.tsx +0 -98
  186. package/src/lib/Property/UpsertProperty/useCustomFields.ts +0 -22
  187. package/src/lib/Property/ViewPropertiesList/ViewPropertiesList.tsx +0 -50
  188. package/src/lib/Property/ViewProperty/EntityPropertiesShortView.tsx +0 -41
  189. package/src/lib/Property/ViewProperty/EntityPropertiesView.tsx +0 -48
  190. package/src/lib/Property/ViewProperty/PropertyDataTable.tsx +0 -139
  191. package/src/lib/Property/ViewProperty/PropertyItem.tsx +0 -46
  192. package/src/lib/Property/ViewProperty/ViewProperty.tsx +0 -52
  193. package/src/lib/Status/Status.tsx +0 -15
  194. package/src/lib/Status/styles.ts +0 -14
  195. package/src/lib/Table/Table.tsx +0 -116
  196. package/src/lib/Table/TableColumnMenu.tsx +0 -12
  197. package/src/lib/Table/TablePagination.tsx +0 -42
  198. package/src/lib/Table/index.ts +0 -1
  199. package/src/lib/Table/styles.ts +0 -59
  200. package/src/lib/Table/usePagination.ts +0 -15
  201. package/src/lib/Table/useTableQueryPagination.ts +0 -49
  202. package/src/lib/Table/useTableQuerySorting.ts +0 -52
  203. package/src/lib/Tabs/RouteTabs.tsx +0 -54
  204. package/src/lib/Tabs/TabPanel.tsx +0 -42
  205. package/src/lib/TemplateContent/ExpressionDecorator.tsx +0 -7
  206. package/src/lib/TemplateContent/TemplateContentEditor.tsx +0 -144
  207. package/src/utils/common.ts +0 -68
  208. package/src/utils/dem.ts +0 -78
  209. package/src/utils/hooks.ts +0 -41
  210. package/src/utils/ui-utils.tsx +0 -71
  211. package/src/utils/validators.ts +0 -130
  212. package/tsconfig.json +0 -24
  213. package/tsconfig.lib.json +0 -22
  214. package/tsconfig.spec.json +0 -19
@@ -1,293 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import Button from '@material-ui/core/Button';
3
- import MenuItem from '@material-ui/core/MenuItem';
4
- import TextField from '@material-ui/core/TextField';
5
- import Typography from '@material-ui/core/Typography';
6
- import CloseIcon from '@material-ui/icons/Close';
7
- import IconButton from '@material-ui/core/IconButton';
8
- import { DemFieldWidget } from '../widgets';
9
-
10
- import { useEffect, useState } from 'react';
11
- import { useController, useFormContext } from 'react-hook-form';
12
- import { validateJson } from '../../../utils';
13
- import useStyles from '../styles';
14
-
15
- import { PropertyUnion } from '../../../interfaces';
16
-
17
- type Props = {
18
- property: PropertyUnion;
19
- name: string;
20
- label: string;
21
- };
22
-
23
- type MainFillOptions = 'null' | 'expression' | 'widgets';
24
-
25
- const fillOptionsDefault = [
26
- { value: 'null', label: 'NULL' },
27
- { value: 'expression', label: 'Expression' },
28
- { value: 'widget', label: 'Widget' },
29
- ];
30
-
31
- const replaceArrayItem = (arr, value, index) => {
32
- const newArr = [...arr];
33
- newArr[index] = value;
34
- return newArr;
35
- };
36
-
37
- const removeArrayItem = (arr, index) => {
38
- const newArr = [...arr];
39
- newArr.splice(index, 1);
40
- return newArr;
41
- };
42
-
43
- export const MultipleDemField = ({ property, label, name }: Props) => {
44
- const classes = useStyles();
45
- const { setValue, getValues, setError, clearErrors, control } = useFormContext();
46
- const {
47
- fieldState: { error },
48
- } = useController({
49
- name,
50
- control,
51
- });
52
-
53
- const [mainFillOptions, setMainFillOptions] = useState([
54
- { value: 'expression', label: 'Expression' },
55
- { value: 'widgets', label: 'Array of Values' },
56
- ]);
57
- const [mainFillOption, setMainFillOption] = useState<MainFillOptions>(null);
58
- const [mainExpression, setMainExpression] = useState('');
59
- const [fillOptions, setFillOptions] = useState(fillOptionsDefault);
60
- const [valuesFillOptions, setValuesFillOptions] = useState([]);
61
- const [values, setValues] = useState([]);
62
-
63
- const handleMainFillOptionChange = (e) => {
64
- const { value } = e.target;
65
- setMainFillOption(value);
66
- clearErrors(name);
67
-
68
- if (value === 'null') {
69
- setValue(name, null);
70
- }
71
- };
72
-
73
- const handleMainExpressionChange = (e) => {
74
- const { value } = e.target;
75
- setMainExpression(value);
76
- setValue(name, value);
77
-
78
- if (property.isRequired && !value.length) {
79
- setError(name, { type: 'custom', message: 'Please, fill this field' });
80
- } else {
81
- clearErrors(name);
82
- }
83
- };
84
-
85
- const handleValueFillOptionChange = (e, index) => {
86
- const { value } = e.target;
87
- const fieldName = `${name}.${index}`;
88
-
89
- setValuesFillOptions((prevState) => replaceArrayItem(prevState, value, index));
90
- if (value === 'widget' && property.propertyType === 'BOOLEAN') {
91
- setValues((prevState) => replaceArrayItem(prevState, false, index));
92
- } else {
93
- setValues((prevState) => replaceArrayItem(prevState, '', index));
94
- }
95
- clearErrors(fieldName);
96
- };
97
-
98
- const handleValueChange = (value, index) => {
99
- const fieldName = `${name}.${index}`;
100
-
101
- setValues((prevState) => replaceArrayItem(prevState, value, index));
102
-
103
- if (property.isRequired && !(value + '').length) {
104
- setError(fieldName, { type: 'custom', message: 'Please, fill this field' });
105
- } else if (property.propertyType === 'JSON' && !validateJson(value)) {
106
- setError(fieldName, { type: 'custom', message: `Not valid JSON at value - ${index + 1}` });
107
- } else {
108
- clearErrors(fieldName);
109
- }
110
- };
111
-
112
- const handleAddValue = () => {
113
- setValues((prevState) => [...prevState, null]);
114
- setValuesFillOptions((prevState) => [...prevState, 'null']);
115
- };
116
-
117
- const handleDeleteValue = (index) => {
118
- setValuesFillOptions((prevState) => removeArrayItem(prevState, index));
119
- setValues((prevState) => removeArrayItem(prevState, index));
120
- };
121
-
122
- useEffect(() => {
123
- if (mainFillOption === 'widgets') {
124
- setValue(name, values);
125
- }
126
- }, [mainFillOption, values]);
127
-
128
- useEffect(() => {
129
- if (property) {
130
- if (!property.isRequired) {
131
- setMainFillOptions((prevState) => [{ value: 'null', label: 'NULL' }, ...prevState]);
132
- }
133
- if (
134
- property.propertyType === 'DATE' ||
135
- property.propertyType === 'DATE_TIME' ||
136
- property.propertyType === 'TIME'
137
- ) {
138
- setFillOptions((prevState) => [...prevState, { value: 'string', label: 'String' }]);
139
- }
140
- }
141
- }, [property]);
142
-
143
- useEffect(() => {
144
- if (property) {
145
- const { defaultValue } = property;
146
- const value = getValues(name) || defaultValue;
147
-
148
- if (Array.isArray(value)) {
149
- setMainFillOption('widgets');
150
- setValues(
151
- value.map((val) => {
152
- if (typeof val === 'object') {
153
- return JSON.stringify(val);
154
- }
155
- return val;
156
- })
157
- );
158
- setValuesFillOptions(
159
- value.map((value) => {
160
- if (value === null || value === 'null') {
161
- return 'null';
162
- } else if (value && typeof value === 'string' && value.startsWith('$')) {
163
- return 'expression';
164
- } else {
165
- return 'widget';
166
- }
167
- })
168
- );
169
- } else if (typeof value === 'string') {
170
- setMainFillOption('expression');
171
- setMainExpression(value);
172
- } else {
173
- setMainFillOption('null');
174
- }
175
- }
176
- }, [property, name]);
177
-
178
- return (
179
- <Grid container spacing={2}>
180
- <Grid item sm={12}>
181
- <Typography className={classes.inputParameterTitle}>{label}</Typography>
182
- </Grid>
183
- <Grid item sm={12}>
184
- <TextField
185
- select
186
- fullWidth
187
- size="small"
188
- variant="outlined"
189
- value={mainFillOption}
190
- onChange={handleMainFillOptionChange}
191
- >
192
- {mainFillOptions.map((option) => (
193
- <MenuItem key={option.value} value={option.value}>
194
- {option.label}
195
- </MenuItem>
196
- ))}
197
- </TextField>
198
- </Grid>
199
- {mainFillOption === 'expression' && (
200
- <Grid item sm={12}>
201
- <TextField
202
- fullWidth
203
- variant="outlined"
204
- size="small"
205
- label="Expression"
206
- value={mainExpression}
207
- onChange={handleMainExpressionChange}
208
- />
209
- </Grid>
210
- )}
211
- {mainFillOption === 'widgets' && (
212
- <>
213
- {values.map((value, index) => (
214
- <Grid container item sm={12} key={index} spacing={1} className={classes.multipleValueContainer}>
215
- <Grid item sm={12} className={classes.multipleValueTitle}>
216
- <Typography variant="subtitle1">value-{index + 1}</Typography>
217
- <IconButton size="small" onClick={() => handleDeleteValue(index)}>
218
- <CloseIcon fontSize="small" />
219
- </IconButton>
220
- </Grid>
221
- <Grid item sm={12}>
222
- <TextField
223
- select
224
- fullWidth
225
- variant="outlined"
226
- size="small"
227
- value={valuesFillOptions[index]}
228
- onChange={(e) => handleValueFillOptionChange(e, index)}
229
- >
230
- {fillOptions.map((option) => (
231
- <MenuItem key={option.value} value={option.value}>
232
- {option.label}
233
- </MenuItem>
234
- ))}
235
- </TextField>
236
- </Grid>
237
- {valuesFillOptions[index] === 'widget' && (
238
- <DemFieldWidget
239
- property={property}
240
- label={`${label} : value-${index + 1}`}
241
- name={`${name}.${index}`}
242
- value={value}
243
- onChange={(value) => handleValueChange(value, index)}
244
- />
245
- )}
246
- {valuesFillOptions[index] === 'expression' && (
247
- <Grid item sm={12}>
248
- <TextField
249
- fullWidth
250
- variant="outlined"
251
- size="small"
252
- label="Expression"
253
- value={value}
254
- onChange={(e) => handleValueChange(e.target.value, index)}
255
- />
256
- </Grid>
257
- )}
258
- {valuesFillOptions[index] === 'string' && (
259
- <Grid item sm={12}>
260
- <TextField
261
- fullWidth
262
- variant="outlined"
263
- size="small"
264
- label="String value"
265
- value={value}
266
- onChange={(e) => handleValueChange(e.target.value, index)}
267
- />
268
- </Grid>
269
- )}
270
- {error?.[index]?.message && (
271
- <Grid item sm={12}>
272
- <Typography color="secondary">{error?.[index]?.message}</Typography>
273
- </Grid>
274
- )}
275
- </Grid>
276
- ))}
277
- <Grid item sm={12}>
278
- <Button variant="outlined" color="primary" onClick={handleAddValue}>
279
- Add value
280
- </Button>
281
- </Grid>
282
- </>
283
- )}
284
- {error?.message && (
285
- <Grid item sm={12}>
286
- <Typography color="secondary">{error.message}</Typography>
287
- </Grid>
288
- )}
289
- </Grid>
290
- );
291
- };
292
-
293
- export default MultipleDemField;
@@ -1,63 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import Chip from '@material-ui/core/Chip';
3
- import TextField from '@material-ui/core/TextField';
4
- import Button from '@material-ui/core/Button';
5
-
6
- import { useState } from 'react';
7
- import { useFormContext } from 'react-hook-form';
8
- import useStyles from './styles';
9
-
10
- type Props = {
11
- name: string;
12
- };
13
-
14
- const RestrictedValuesEditor = ({ name }: Props) => {
15
- const { setValue, watch } = useFormContext();
16
- const classes = useStyles();
17
- const values = watch(name);
18
-
19
- const [addValue, setAddValue] = useState('');
20
-
21
- const handleAddValueChange = (e) => {
22
- setAddValue(e.target.value);
23
- };
24
-
25
- const handleDelete = (value: string) => {
26
- const filteredValues = values.filter((val) => val !== value);
27
- setValue(name, filteredValues);
28
- };
29
-
30
- const handleAdd = () => {
31
- if (values && values.length) {
32
- setValue(name, [...values, addValue]);
33
- } else {
34
- setValue(name, [addValue]);
35
- }
36
- setAddValue('');
37
- };
38
-
39
- return (
40
- <Grid item sm={12}>
41
- <div className={classes.restrictedValuesContainer}>
42
- {values && values.length
43
- ? values.map((value) => <Chip key={value} label={value} onDelete={() => handleDelete(value)} />)
44
- : null}
45
- </div>
46
- <div className={classes.restrictedValuesContainer}>
47
- <TextField
48
- fullWidth
49
- variant="outlined"
50
- size="small"
51
- label="Restricted value"
52
- value={addValue}
53
- onChange={handleAddValueChange}
54
- />
55
- <Button variant="contained" size="small" color="primary" onClick={handleAdd}>
56
- Add
57
- </Button>
58
- </div>
59
- </Grid>
60
- );
61
- };
62
-
63
- export default RestrictedValuesEditor;
@@ -1,156 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import TextField from '@material-ui/core/TextField';
3
- import MenuItem from '@material-ui/core/MenuItem';
4
- import Typography from '@material-ui/core/Typography';
5
-
6
- import { useEffect, useState } from 'react';
7
- import { useController, useFormContext } from 'react-hook-form';
8
- import { validateJson } from '../../../utils';
9
- import useStyles from '../styles';
10
-
11
- import { PropertyUnion } from '../../../interfaces';
12
- import { DemFieldWidget } from '../widgets';
13
-
14
- type Props = {
15
- name: string;
16
- label: string;
17
- property: PropertyUnion;
18
- };
19
-
20
- const defaultFillOptions = [
21
- { value: 'expression', label: 'Expression' },
22
- { value: 'widget', label: 'Widget' },
23
- ];
24
-
25
- export const SingleDemField = ({ property, name, label }: Props) => {
26
- const classes = useStyles();
27
- const { setValue, getValues, setError, clearErrors, control } = useFormContext();
28
- const {
29
- fieldState: { error },
30
- } = useController({
31
- name,
32
- control,
33
- });
34
-
35
- const [fillOptions, setFillOptions] = useState(defaultFillOptions);
36
- const [selectedFillOption, setSelectedFillOption] = useState(null);
37
- const [expression, setExpression] = useState('');
38
- const [fieldValue, setFieldValue] = useState(null);
39
-
40
- const handleExpressionChange = (e) => {
41
- const { value } = e.target;
42
- setExpression(value);
43
- setValue(name, value);
44
-
45
- if (property.isRequired && !value.length) {
46
- setError(name, { type: 'custom', message: 'Please, fill this field' });
47
- } else {
48
- clearErrors(name);
49
- }
50
- };
51
-
52
- const handleFillOptionChange = (e) => {
53
- setSelectedFillOption(e.target.value);
54
-
55
- if (e.target.value === 'null') {
56
- setValue(name, null);
57
- }
58
-
59
- clearErrors(name);
60
- };
61
-
62
- const handleValueChange = (value) => {
63
- setFieldValue(value);
64
- setValue(name, value);
65
-
66
- if (property.isRequired && !(value + '').length) {
67
- setError(name, { type: 'custom', message: 'Please, fill this field' });
68
- } else if (property.propertyType === 'JSON' && !validateJson(value)) {
69
- setError(name, { type: 'custom', message: 'Not valid JSON' });
70
- } else {
71
- clearErrors(name);
72
- }
73
- };
74
-
75
- useEffect(() => {
76
- if (property) {
77
- if (!property.isRequired) {
78
- setFillOptions((prevState) => [{ value: 'null', label: 'NULL' }, ...prevState]);
79
- }
80
- if (
81
- property.propertyType === 'DATE' ||
82
- property.propertyType === 'DATE_TIME' ||
83
- property.propertyType === 'TIME'
84
- ) {
85
- setFillOptions((prevState) => [...prevState, { value: 'string', label: 'String' }]);
86
- }
87
- }
88
- }, [property]);
89
-
90
- useEffect(() => {
91
- const { defaultValue } = property;
92
- let value;
93
- if (typeof getValues(name) === 'boolean' || getValues(name)) {
94
- value = getValues(name);
95
- } else {
96
- value = defaultValue;
97
- }
98
-
99
- if (typeof value === 'undefined' || value === null || value === 'null') {
100
- setValue(name, null);
101
- setSelectedFillOption('null');
102
- } else if (value && typeof value === 'string' && value.startsWith('$')) {
103
- setValue(name, value);
104
- setExpression(value);
105
- setSelectedFillOption('expression');
106
- } else {
107
- setValue(name, value);
108
- setFieldValue(value);
109
- setSelectedFillOption('widget');
110
- }
111
- }, [property, name]);
112
-
113
- return (
114
- <Grid container spacing={2}>
115
- <Grid item sm={12}>
116
- <Typography className={classes.inputParameterTitle}>{label}</Typography>
117
- </Grid>
118
- <Grid item sm={12}>
119
- <TextField
120
- select
121
- fullWidth
122
- variant="outlined"
123
- size="small"
124
- value={selectedFillOption}
125
- onChange={handleFillOptionChange}
126
- >
127
- {fillOptions.map((option) => (
128
- <MenuItem key={option.value} value={option.value}>
129
- {option.label}
130
- </MenuItem>
131
- ))}
132
- </TextField>
133
- </Grid>
134
- {selectedFillOption === 'expression' && (
135
- <Grid item sm={12}>
136
- <TextField
137
- fullWidth
138
- variant="outlined"
139
- size="small"
140
- label="Expression"
141
- value={expression}
142
- onChange={handleExpressionChange}
143
- />
144
- </Grid>
145
- )}
146
- {selectedFillOption === 'widget' && (
147
- <DemFieldWidget property={property} name={name} value={fieldValue} onChange={handleValueChange} />
148
- )}
149
- <Grid item sm={12}>
150
- <Typography color="secondary">{error?.message}</Typography>
151
- </Grid>
152
- </Grid>
153
- );
154
- };
155
-
156
- export default SingleDemField;
@@ -1,50 +0,0 @@
1
- import { makeStyles } from '@material-ui/core/styles';
2
-
3
- export default makeStyles((theme) => ({
4
- editor: {
5
- position: 'relative',
6
- },
7
- editorDisabled: {
8
- opacity: 0.6,
9
- '&:before': {
10
- content: '""',
11
- display: 'block',
12
- position: 'absolute',
13
- top: 0,
14
- left: 0,
15
- width: '100%',
16
- height: '100%',
17
- zIndex: 5,
18
- },
19
- },
20
- editorCopy: {
21
- position: 'absolute',
22
- top: 0,
23
- right: -53,
24
- zIndex: 2,
25
- },
26
- inputParameterTitle: {
27
- fontWeight: 600,
28
- },
29
- multipleValueTitle: {
30
- display: 'flex',
31
- justifyContent: 'space-between',
32
- },
33
- multipleValueContainer: {
34
- '&:hover': {
35
- backgroundColor: '#f7f7f7',
36
- },
37
- },
38
- restrictedValuesContainer: {
39
- width: '100%',
40
- display: 'flex',
41
- marginBottom: '8px',
42
- '& > * ': {
43
- marginRight: '4px',
44
-
45
- '&::last-child': {
46
- marginRight: 0,
47
- },
48
- },
49
- },
50
- }));
@@ -1,26 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import FormControlLabel from '@material-ui/core/FormControlLabel';
3
- import Switch from '@material-ui/core/Switch';
4
-
5
- type Props = {
6
- value: string | boolean;
7
- onChange: (value: boolean) => void;
8
- };
9
-
10
- const DemBooleanWidget = ({ value, onChange }: Props) => {
11
- const handleChange = (e) => {
12
- const { checked } = e.target;
13
- onChange(checked);
14
- };
15
-
16
- return (
17
- <Grid item sm={12}>
18
- <FormControlLabel
19
- label={!!value + ''}
20
- control={<Switch color="primary" size="small" onChange={handleChange} checked={!!value + '' === 'true'} />}
21
- />
22
- </Grid>
23
- );
24
- };
25
-
26
- export default DemBooleanWidget;
@@ -1,34 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import TextField from '@mui/material/TextField';
3
- import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
4
-
5
- import { format } from 'date-fns';
6
- import { getDemPropertyDateFormat } from '../../../utils';
7
- import { DateTimeProperty } from '../../../interfaces';
8
-
9
- type Props = {
10
- property: DateTimeProperty;
11
- value: string;
12
- onChange: (value: string) => void;
13
- };
14
-
15
- const DemDateTimeWidget = ({ property, value, onChange }: Props) => {
16
- const handleChange = (date) => {
17
- onChange(format(date, getDemPropertyDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX", property.format)));
18
- };
19
-
20
- return (
21
- <Grid item sm={12}>
22
- <DateTimePicker
23
- clearable
24
- ampm={false}
25
- value={value || null}
26
- onChange={handleChange}
27
- inputFormat={getDemPropertyDateFormat('yyyy-MM-dd HH:mm', property.format)}
28
- renderInput={(props) => <TextField {...props} fullWidth variant="outlined" size="small" />}
29
- />
30
- </Grid>
31
- );
32
- };
33
-
34
- export default DemDateTimeWidget;
@@ -1,33 +0,0 @@
1
- import Grid from '@material-ui/core/Grid';
2
- import TextField from '@mui/material/TextField';
3
- import { DatePicker } from '@mui/x-date-pickers/DatePicker';
4
-
5
- import { format } from 'date-fns';
6
- import { getDemPropertyDateFormat } from '../../../utils';
7
- import { DateProperty } from '../../../interfaces';
8
-
9
- type Props = {
10
- property: DateProperty;
11
- value: string;
12
- onChange: (value: string) => void;
13
- };
14
-
15
- const DemDateWidget = ({ property, value, onChange }: Props) => {
16
- const handleChange = (date) => {
17
- onChange(format(date, getDemPropertyDateFormat('yyyy-MM-dd', property.format)));
18
- };
19
-
20
- return (
21
- <Grid item sm={12}>
22
- <DatePicker
23
- clearable
24
- onChange={handleChange}
25
- value={value || null}
26
- inputFormat={getDemPropertyDateFormat('yyyy-MM-dd', property.format)}
27
- renderInput={(props) => <TextField {...props} fullWidth variant="outlined" size="small" />}
28
- />
29
- </Grid>
30
- );
31
- };
32
-
33
- export default DemDateWidget;