@dartech/arsenal-ui 1.2.5 → 1.2.7

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 (271) hide show
  1. package/{index.ts → index.d.ts} +5 -5
  2. package/index.js +1 -0
  3. package/package.json +12 -3
  4. package/src/consts/index.d.ts +12 -0
  5. package/src/interfaces/common.d.ts +17 -0
  6. package/src/interfaces/definition.d.ts +107 -0
  7. package/src/interfaces/{index.ts → index.d.ts} +3 -3
  8. package/src/interfaces/ui.d.ts +70 -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/Breadcrumbs/Breadcrumbs.d.ts +9 -0
  12. package/src/lib/Breadcrumbs/Breadcrumbs.styled.d.ts +2 -0
  13. package/src/lib/Breadcrumbs/{index.ts → index.d.ts} +1 -1
  14. package/src/lib/ContentLayout/ContentLayout.d.ts +9 -0
  15. package/src/lib/ContentLayout/index.d.ts +1 -0
  16. package/src/lib/Definition/CreateDefinition/CreateDefinition.d.ts +11 -0
  17. package/src/lib/Definition/CreateDefinition/{index.ts → index.d.ts} +1 -1
  18. package/src/lib/Definition/DefinitionFiller/DefinitionFiller.d.ts +10 -0
  19. package/src/lib/Definition/DefinitionFiller/{index.ts → index.d.ts} +1 -1
  20. package/src/lib/Definition/DefinitionValueView/DefinitionValueView.d.ts +8 -0
  21. package/src/lib/Definition/DefinitionValueView/PropertyDataView.d.ts +9 -0
  22. package/src/lib/Definition/DefinitionValueView/{index.ts → index.d.ts} +1 -1
  23. package/src/lib/Definition/{index.ts → index.d.ts} +3 -3
  24. package/src/lib/Forms/BackButton.d.ts +7 -0
  25. package/src/lib/Forms/ControlAceEditor.d.ts +24 -0
  26. package/src/lib/Forms/ControlAutocomplete.d.ts +69 -0
  27. package/src/lib/Forms/ControlCheckbox.d.ts +51 -0
  28. package/src/lib/Forms/ControlDate.d.ts +18 -0
  29. package/src/lib/Forms/ControlDateTime.d.ts +18 -0
  30. package/src/lib/Forms/ControlDebouncedInput.d.ts +4 -0
  31. package/src/lib/Forms/ControlInput.d.ts +59 -0
  32. package/src/lib/Forms/ControlNumberInput.d.ts +51 -0
  33. package/src/lib/Forms/ControlQueryAutocomplete.d.ts +16 -0
  34. package/src/lib/Forms/ControlRadio.d.ts +66 -0
  35. package/src/lib/Forms/ControlSelect.d.ts +67 -0
  36. package/src/lib/Forms/ControlSwitch.d.ts +19 -0
  37. package/src/lib/Forms/ControlTime.d.ts +18 -0
  38. package/src/lib/Forms/CopyButton.d.ts +20 -0
  39. package/src/lib/Forms/{index.ts → index.d.ts} +15 -15
  40. package/src/lib/Forms/useAutocomplete.d.ts +10 -0
  41. package/src/lib/InfoItem/InfoItem.d.ts +10 -0
  42. package/src/lib/InfoItem/{index.ts → index.d.ts} +1 -1
  43. package/src/lib/InfoItem/styles.d.ts +12 -0
  44. package/src/lib/JsonPathPicker/JsonPathPicker.d.ts +10 -0
  45. package/src/lib/JsonPathPicker/PropertyStep.d.ts +11 -0
  46. package/src/lib/JsonPathPicker/{index.ts → index.d.ts} +1 -1
  47. package/src/lib/JsonView/JsonView.d.ts +7 -0
  48. package/src/lib/JsonView/{index.ts → index.d.ts} +1 -1
  49. package/src/lib/Loader/Loader.d.ts +21 -0
  50. package/src/lib/Loader/{index.ts → index.d.ts} +1 -1
  51. package/src/lib/Modals/JsonModalView.d.ts +10 -0
  52. package/src/lib/Modals/{index.ts → index.d.ts} +1 -1
  53. package/src/lib/Property/PropertyFiller/JsonEditor.d.ts +10 -0
  54. package/src/lib/Property/PropertyFiller/MultiplePropertyFiller.d.ts +12 -0
  55. package/src/lib/Property/PropertyFiller/MultiplePropertyWidget.d.ts +11 -0
  56. package/src/lib/Property/PropertyFiller/PropertyFiller.d.ts +12 -0
  57. package/src/lib/Property/PropertyFiller/{index.ts → index.d.ts} +2 -2
  58. package/src/lib/Property/PropertyFiller/usePropertyFiller.d.ts +24 -0
  59. package/src/lib/Property/PropertyFiller/useStyles.d.ts +12 -0
  60. package/src/lib/Property/PropertyValidator/NodeValidator.d.ts +6 -0
  61. package/src/lib/Property/PropertyValidator/NodesList.d.ts +6 -0
  62. package/src/lib/Property/PropertyValidator/NumericTypeValidator.d.ts +8 -0
  63. package/src/lib/Property/PropertyValidator/PropertyValidator.d.ts +6 -0
  64. package/src/lib/Property/PropertyValidator/PropertyValidatorContext.d.ts +3 -0
  65. package/src/lib/Property/PropertyValidator/StringTypeValidator.d.ts +8 -0
  66. package/src/lib/Property/PropertyValidator/ValidationNodeSelector.d.ts +7 -0
  67. package/src/lib/Property/PropertyValidator/index.d.ts +1 -0
  68. package/src/lib/Property/PropertyValueField/BooleanValueField.d.ts +7 -0
  69. package/src/lib/Property/PropertyValueField/DateTimeValueField.d.ts +9 -0
  70. package/src/lib/Property/PropertyValueField/DateValueField.d.ts +9 -0
  71. package/src/lib/Property/PropertyValueField/JsonValueField.d.ts +10 -0
  72. package/src/lib/Property/PropertyValueField/PropertyValueField.d.ts +9 -0
  73. package/src/lib/Property/PropertyValueField/StringValueField.d.ts +9 -0
  74. package/src/lib/Property/PropertyValueField/TimeValueField.d.ts +9 -0
  75. package/src/lib/Property/PropertyValueField/{index.ts → index.d.ts} +1 -1
  76. package/src/lib/Property/PropertyWidget/PropertyWidget.d.ts +13 -0
  77. package/src/lib/Property/PropertyWidget/{index.ts → index.d.ts} +1 -1
  78. package/src/lib/Property/UpsertProperty/CreatePropertiesList.d.ts +13 -0
  79. package/src/lib/Property/UpsertProperty/CreatePropertyFormFields.d.ts +10 -0
  80. package/src/lib/Property/UpsertProperty/CustomPropertyField.d.ts +7 -0
  81. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/BigDecimalPropertyFields.d.ts +6 -0
  82. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/DateAdditionalFields.d.ts +7 -0
  83. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityAdditionalFields.d.ts +8 -0
  84. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityReferencePropertyFields.d.ts +6 -0
  85. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/PropertyAdditionalFields.d.ts +10 -0
  86. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/StringPropertyFields.d.ts +6 -0
  87. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/{index.ts → index.d.ts} +1 -1
  88. package/src/lib/Property/UpsertProperty/{index.ts → index.d.ts} +2 -2
  89. package/src/lib/Property/UpsertProperty/useCustomFields.d.ts +6 -0
  90. package/src/lib/Property/ViewPropertiesList/ViewPropertiesList.d.ts +8 -0
  91. package/src/lib/Property/ViewPropertiesList/{index.ts → index.d.ts} +1 -1
  92. package/src/lib/Property/ViewProperty/EntityPropertiesShortView.d.ts +7 -0
  93. package/src/lib/Property/ViewProperty/EntityPropertiesView.d.ts +8 -0
  94. package/src/lib/Property/ViewProperty/PropertyDataTable.d.ts +7 -0
  95. package/src/lib/Property/ViewProperty/PropertyItem.d.ts +9 -0
  96. package/src/lib/Property/ViewProperty/ViewProperty.d.ts +9 -0
  97. package/src/lib/Property/ViewProperty/{index.ts → index.d.ts} +1 -1
  98. package/src/lib/Property/{index.ts → index.d.ts} +5 -5
  99. package/src/lib/Sidebar/Sidebar.d.ts +10 -0
  100. package/src/lib/Sidebar/Sidebar.styled.d.ts +117 -0
  101. package/src/lib/Sidebar/SidebarContext.d.ts +11 -0
  102. package/src/lib/Sidebar/SidebarDrawer.d.ts +9 -0
  103. package/src/lib/Sidebar/SidebarLink/MenuIcon.d.ts +7 -0
  104. package/src/lib/Sidebar/SidebarLink/SidebarLink.d.ts +7 -0
  105. package/src/lib/Sidebar/SidebarLink/SidebarLinkItem.d.ts +8 -0
  106. package/src/lib/Sidebar/SidebarLink/SidebarNestedItem.d.ts +10 -0
  107. package/src/lib/Sidebar/SidebarLink/{index.ts → index.d.ts} +2 -2
  108. package/src/lib/Sidebar/index.d.ts +2 -0
  109. package/src/lib/Status/Status.d.ts +8 -0
  110. package/src/lib/Status/{index.ts → index.d.ts} +1 -1
  111. package/src/lib/Status/styles.d.ts +12 -0
  112. package/src/lib/StepperView/StepperView.d.ts +11 -0
  113. package/src/lib/StepperView/{index.ts → index.d.ts} +1 -1
  114. package/src/lib/Table/DataGrid/JsonTypeCell.d.ts +7 -0
  115. package/src/lib/Table/DataGrid/Table.d.ts +49 -0
  116. package/src/lib/Table/DataGrid/TableAction.d.ts +13 -0
  117. package/src/lib/Table/DataGrid/TableColumnMenu.d.ts +3 -0
  118. package/src/lib/Table/DataGrid/TablePagination.d.ts +3 -0
  119. package/src/lib/Table/DataGrid/index.d.ts +2 -0
  120. package/src/lib/Table/DataGrid/styles.d.ts +12 -0
  121. package/src/lib/Table/DataGrid/usePagination.d.ts +5 -0
  122. package/src/lib/Table/DataGrid/useTableQueryPagination.d.ts +11 -0
  123. package/src/lib/Table/DataGrid/useTableQuerySorting.d.ts +6 -0
  124. package/src/lib/Table/SimpleTable/SimpleTable.d.ts +17 -0
  125. package/src/lib/Table/SimpleTable/TableActionCell.d.ts +10 -0
  126. package/src/lib/Table/SimpleTable/index.d.ts +2 -0
  127. package/src/lib/Table/SimpleTable/useTablePagination.d.ts +7 -0
  128. package/src/lib/Table/SimpleTable/useTableSorting.d.ts +6 -0
  129. package/src/lib/Table/index.d.ts +2 -0
  130. package/src/lib/Tabs/RouteTabs.d.ts +11 -0
  131. package/src/lib/Tabs/TabPanel.d.ts +25 -0
  132. package/src/lib/Tabs/{index.ts → index.d.ts} +2 -2
  133. package/src/lib/{index.ts → index.d.ts} +16 -16
  134. package/src/theme/baseTheme.d.ts +2 -0
  135. package/src/theme/index.d.ts +1 -0
  136. package/src/theme/inputThemeOptions.d.ts +117 -0
  137. package/src/theme/stepperThemeOptions.d.ts +16 -0
  138. package/src/theme/tableThemeOptions.d.ts +47 -0
  139. package/src/theme/typographyThemeOptions.d.ts +29 -0
  140. package/src/utils/common.d.ts +7 -0
  141. package/src/utils/dem.d.ts +27 -0
  142. package/src/utils/hooks.d.ts +7 -0
  143. package/src/utils/{index.ts → index.d.ts} +5 -5
  144. package/src/utils/ui-utils.d.ts +14 -0
  145. package/src/utils/validators.d.ts +5 -0
  146. package/.babelrc +0 -13
  147. package/.eslintrc.json +0 -22
  148. package/jest.config.ts +0 -11
  149. package/project.json +0 -94
  150. package/rollup.config.js +0 -146
  151. package/src/assets/chevron_left_gray.svg +0 -3
  152. package/src/consts/index.ts +0 -13
  153. package/src/interfaces/common.ts +0 -18
  154. package/src/interfaces/definition.ts +0 -143
  155. package/src/interfaces/ui.ts +0 -80
  156. package/src/lib/Alert/Alert.tsx +0 -108
  157. package/src/lib/Alert/index.ts +0 -1
  158. package/src/lib/Breadcrumbs/Breadcrumbs.styled.tsx +0 -16
  159. package/src/lib/Breadcrumbs/Breadcrumbs.tsx +0 -40
  160. package/src/lib/ContentLayout/ContentLayout.tsx +0 -31
  161. package/src/lib/ContentLayout/index.ts +0 -1
  162. package/src/lib/Definition/CreateDefinition/CreateDefinition.tsx +0 -78
  163. package/src/lib/Definition/DefinitionFiller/DefinitionFiller.tsx +0 -71
  164. package/src/lib/Definition/DefinitionValueView/DefinitionValueView.tsx +0 -54
  165. package/src/lib/Definition/DefinitionValueView/PropertyDataView.tsx +0 -67
  166. package/src/lib/Forms/BackButton.tsx +0 -46
  167. package/src/lib/Forms/ControlAceEditor.tsx +0 -125
  168. package/src/lib/Forms/ControlAutocomplete.tsx +0 -145
  169. package/src/lib/Forms/ControlCheckbox.tsx +0 -113
  170. package/src/lib/Forms/ControlDate.tsx +0 -75
  171. package/src/lib/Forms/ControlDateTime.tsx +0 -77
  172. package/src/lib/Forms/ControlDebouncedInput.tsx +0 -80
  173. package/src/lib/Forms/ControlInput.tsx +0 -111
  174. package/src/lib/Forms/ControlNumberInput.tsx +0 -121
  175. package/src/lib/Forms/ControlQueryAutocomplete.tsx +0 -197
  176. package/src/lib/Forms/ControlRadio.tsx +0 -136
  177. package/src/lib/Forms/ControlSelect.tsx +0 -164
  178. package/src/lib/Forms/ControlSwitch.tsx +0 -71
  179. package/src/lib/Forms/ControlTime.tsx +0 -93
  180. package/src/lib/Forms/CopyButton.tsx +0 -46
  181. package/src/lib/Forms/useAutocomplete.tsx +0 -47
  182. package/src/lib/InfoItem/InfoItem.tsx +0 -40
  183. package/src/lib/InfoItem/styles.ts +0 -17
  184. package/src/lib/JsonPathPicker/JsonPathPicker.tsx +0 -73
  185. package/src/lib/JsonPathPicker/PropertyStep.tsx +0 -70
  186. package/src/lib/JsonView/JsonView.tsx +0 -41
  187. package/src/lib/Loader/Loader.tsx +0 -41
  188. package/src/lib/Modals/JsonModalView.tsx +0 -53
  189. package/src/lib/Property/PropertyFiller/JsonEditor.tsx +0 -58
  190. package/src/lib/Property/PropertyFiller/MultiplePropertyFiller.tsx +0 -129
  191. package/src/lib/Property/PropertyFiller/MultiplePropertyWidget.tsx +0 -85
  192. package/src/lib/Property/PropertyFiller/PropertyFiller.tsx +0 -199
  193. package/src/lib/Property/PropertyFiller/usePropertyFiller.ts +0 -72
  194. package/src/lib/Property/PropertyFiller/useStyles.ts +0 -12
  195. package/src/lib/Property/PropertyValidator/NodeValidator.tsx +0 -92
  196. package/src/lib/Property/PropertyValidator/NodesList.tsx +0 -26
  197. package/src/lib/Property/PropertyValidator/NumericTypeValidator.tsx +0 -59
  198. package/src/lib/Property/PropertyValidator/PropertyValidator.tsx +0 -42
  199. package/src/lib/Property/PropertyValidator/PropertyValidatorContext.tsx +0 -4
  200. package/src/lib/Property/PropertyValidator/StringTypeValidator.tsx +0 -36
  201. package/src/lib/Property/PropertyValidator/ValidationNodeSelector.tsx +0 -62
  202. package/src/lib/Property/PropertyValidator/index.ts +0 -1
  203. package/src/lib/Property/PropertyValueField/BooleanValueField.tsx +0 -49
  204. package/src/lib/Property/PropertyValueField/DateTimeValueField.tsx +0 -58
  205. package/src/lib/Property/PropertyValueField/DateValueField.tsx +0 -58
  206. package/src/lib/Property/PropertyValueField/JsonValueField.tsx +0 -65
  207. package/src/lib/Property/PropertyValueField/PropertyValueField.tsx +0 -49
  208. package/src/lib/Property/PropertyValueField/StringValueField.tsx +0 -50
  209. package/src/lib/Property/PropertyValueField/TimeValueField.tsx +0 -67
  210. package/src/lib/Property/PropertyWidget/PropertyWidget.tsx +0 -115
  211. package/src/lib/Property/UpsertProperty/CreatePropertiesList.tsx +0 -148
  212. package/src/lib/Property/UpsertProperty/CreatePropertyFormFields.tsx +0 -158
  213. package/src/lib/Property/UpsertProperty/CustomPropertyField.tsx +0 -40
  214. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/BigDecimalPropertyFields.tsx +0 -41
  215. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/DateAdditionalFields.tsx +0 -27
  216. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityAdditionalFields.tsx +0 -133
  217. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/EntityReferencePropertyFields.tsx +0 -46
  218. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/PropertyAdditionalFields.tsx +0 -52
  219. package/src/lib/Property/UpsertProperty/PropertyAdditionalFields/StringPropertyFields.tsx +0 -103
  220. package/src/lib/Property/UpsertProperty/useCustomFields.ts +0 -22
  221. package/src/lib/Property/ViewPropertiesList/ViewPropertiesList.tsx +0 -37
  222. package/src/lib/Property/ViewProperty/EntityPropertiesShortView.tsx +0 -40
  223. package/src/lib/Property/ViewProperty/EntityPropertiesView.tsx +0 -48
  224. package/src/lib/Property/ViewProperty/PropertyDataTable.tsx +0 -148
  225. package/src/lib/Property/ViewProperty/PropertyItem.tsx +0 -43
  226. package/src/lib/Property/ViewProperty/ViewProperty.tsx +0 -52
  227. package/src/lib/Sidebar/Sidebar.styled.tsx +0 -157
  228. package/src/lib/Sidebar/Sidebar.tsx +0 -27
  229. package/src/lib/Sidebar/SidebarContext.tsx +0 -37
  230. package/src/lib/Sidebar/SidebarDrawer.tsx +0 -50
  231. package/src/lib/Sidebar/SidebarLink/MenuIcon.tsx +0 -16
  232. package/src/lib/Sidebar/SidebarLink/SidebarLink.tsx +0 -54
  233. package/src/lib/Sidebar/SidebarLink/SidebarLinkItem.tsx +0 -54
  234. package/src/lib/Sidebar/SidebarLink/SidebarNestedItem.tsx +0 -62
  235. package/src/lib/Sidebar/index.ts +0 -2
  236. package/src/lib/Status/Status.tsx +0 -16
  237. package/src/lib/Status/styles.ts +0 -21
  238. package/src/lib/StepperView/StepperView.tsx +0 -73
  239. package/src/lib/Table/DataGrid/JsonTypeCell.tsx +0 -51
  240. package/src/lib/Table/DataGrid/Table.tsx +0 -117
  241. package/src/lib/Table/DataGrid/TableAction.tsx +0 -43
  242. package/src/lib/Table/DataGrid/TableColumnMenu.tsx +0 -12
  243. package/src/lib/Table/DataGrid/TablePagination.tsx +0 -42
  244. package/src/lib/Table/DataGrid/index.ts +0 -2
  245. package/src/lib/Table/DataGrid/styles.ts +0 -59
  246. package/src/lib/Table/DataGrid/usePagination.ts +0 -15
  247. package/src/lib/Table/DataGrid/useTableQueryPagination.ts +0 -47
  248. package/src/lib/Table/DataGrid/useTableQuerySorting.ts +0 -47
  249. package/src/lib/Table/SimpleTable/SimpleTable.tsx +0 -138
  250. package/src/lib/Table/SimpleTable/TableActionCell.tsx +0 -67
  251. package/src/lib/Table/SimpleTable/index.ts +0 -2
  252. package/src/lib/Table/SimpleTable/useTablePagination.ts +0 -54
  253. package/src/lib/Table/SimpleTable/useTableSorting.ts +0 -50
  254. package/src/lib/Table/index.ts +0 -2
  255. package/src/lib/Tabs/RouteTabs.tsx +0 -54
  256. package/src/lib/Tabs/TabPanel.tsx +0 -42
  257. package/src/theme/baseTheme.ts +0 -128
  258. package/src/theme/fonts.d.ts +0 -2
  259. package/src/theme/index.ts +0 -126
  260. package/src/theme/inputThemeOptions.ts +0 -126
  261. package/src/theme/stepperThemeOptions.ts +0 -20
  262. package/src/theme/tableThemeOptions.ts +0 -50
  263. package/src/theme/typographyThemeOptions.ts +0 -32
  264. package/src/utils/common.ts +0 -73
  265. package/src/utils/dem.ts +0 -431
  266. package/src/utils/hooks.ts +0 -41
  267. package/src/utils/ui-utils.tsx +0 -102
  268. package/src/utils/validators.ts +0 -14
  269. package/tsconfig.json +0 -25
  270. package/tsconfig.lib.json +0 -23
  271. package/tsconfig.spec.json +0 -20
@@ -1,77 +0,0 @@
1
- import TextField from '@mui/material/TextField';
2
- import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';
3
-
4
- import { isValid, format as dateFnsFormat, isMatch } from 'date-fns';
5
- import { Control, useController, useWatch } from 'react-hook-form';
6
- import { DATE_TIME_DEFAULT_FORMAT } from '../../interfaces';
7
-
8
- type Props = {
9
- /**
10
- * React Hook Form `control`
11
- */
12
- control: Control<any>;
13
- /**
14
- * Is input required flag
15
- */
16
- required?: boolean;
17
- name: string;
18
- label?: string;
19
- format?: string;
20
- hideErrorMessage?: boolean;
21
- };
22
-
23
- export const ControlDateTime = ({
24
- control,
25
- name,
26
- required,
27
- label,
28
- format = DATE_TIME_DEFAULT_FORMAT,
29
- hideErrorMessage = false,
30
- }: Props) => {
31
- const {
32
- field: { onChange, ref },
33
- fieldState: { error },
34
- } = useController({
35
- control,
36
- name,
37
- rules: {
38
- required: required && 'Please, fill this field',
39
- validate: (val) => {
40
- if (isMatch(val, format)) {
41
- return true;
42
- }
43
- return 'Incorrect date format';
44
- },
45
- },
46
- });
47
- const value = useWatch({ control, name });
48
-
49
- const handleChange = (date) => {
50
- onChange(isValid(date) ? dateFnsFormat(date, format) : date);
51
- };
52
-
53
- return (
54
- <DateTimePicker
55
- mask=""
56
- ampm={false}
57
- inputRef={ref}
58
- label={label}
59
- value={value || null}
60
- inputFormat={format}
61
- onChange={handleChange}
62
- renderInput={(props) => (
63
- <TextField
64
- {...props}
65
- fullWidth
66
- size="small"
67
- variant="outlined"
68
- name={name}
69
- error={!!error}
70
- helperText={!hideErrorMessage && error?.message}
71
- />
72
- )}
73
- />
74
- );
75
- };
76
-
77
- export default ControlDateTime;
@@ -1,80 +0,0 @@
1
- import TextField from '@mui/material/TextField';
2
-
3
- import { useCallback, useEffect, useState } from 'react';
4
- import { useController, useWatch } from 'react-hook-form';
5
- import { useDebounce } from '../../utils/hooks';
6
- import { ControlInputProps } from './ControlInput';
7
-
8
- export const ControlDebouncedInput = ({
9
- control,
10
- validate,
11
- name = '',
12
- label = '',
13
- required = false,
14
- defaultValue = '',
15
- disabled = false,
16
- textarea = false,
17
- hideErrorMessage = false,
18
- onChange: customOnChange,
19
- ...textFieldProps
20
- }: ControlInputProps) => {
21
- const {
22
- field: { ref, onChange },
23
- fieldState: { error },
24
- } = useController({
25
- name,
26
- control,
27
- defaultValue,
28
- rules: {
29
- required: required && 'Please, fill this field',
30
- validate,
31
- },
32
- });
33
- const value = useWatch({ control, name });
34
-
35
- const [fieldValue, setFieldValue] = useState('');
36
-
37
- useEffect(() => {
38
- if (!fieldValue && value) {
39
- setFieldValue(value);
40
- }
41
- }, [fieldValue, value]);
42
-
43
- const debouncedChange = useDebounce((value) => {
44
- onChange(value);
45
- }, 200);
46
-
47
- const handleChange = useCallback(
48
- (e) => {
49
- setFieldValue(e.target.value);
50
- debouncedChange(e.target.value);
51
- },
52
- [debouncedChange]
53
- );
54
-
55
- return (
56
- <TextField
57
- fullWidth
58
- size="small"
59
- variant="outlined"
60
- type="text"
61
- inputRef={ref}
62
- name={name}
63
- label={label}
64
- error={!!error}
65
- helperText={!hideErrorMessage && error?.message}
66
- disabled={disabled}
67
- multiline={textarea}
68
- minRows={textarea ? 3 : 1}
69
- value={fieldValue ?? ''}
70
- onChange={handleChange}
71
- {...textFieldProps}
72
- inputProps={{
73
- ...(textFieldProps?.inputProps ?? {}),
74
- value: fieldValue ?? '',
75
- }}
76
- />
77
- );
78
- };
79
-
80
- export default ControlDebouncedInput;
@@ -1,111 +0,0 @@
1
- import { useController, Control, useWatch } from 'react-hook-form';
2
- import TextField, { TextFieldProps } from '@mui/material/TextField';
3
- import { ValidateFunc } from '../../interfaces';
4
-
5
- /**
6
- * This interface is referencing the [[ControlInput]] component props.
7
- * @category Forms
8
- */
9
- export type ControlInputProps = TextFieldProps & {
10
- /**
11
- * React Hook Form control `name` propery
12
- */
13
- name: string;
14
- /**
15
- * Label for MUI TextField component
16
- */
17
- label?: string;
18
- /**
19
- * React Hook Form `control`
20
- */
21
- control: Control<any>;
22
- /**
23
- * Is input required flag
24
- */
25
- required?: boolean;
26
- /**
27
- * React Hook Form `defaultValue`
28
- */
29
- defaultValue?: unknown;
30
- /**
31
- * Is disabled input flag
32
- */
33
- disabled?: boolean;
34
- /**
35
- * React Hook Form validate function
36
- * ```typescript
37
- * type ValidateFunc = (value: string) => boolean | string;
38
- * ```
39
- */
40
- validate?: ValidateFunc | Record<string, ValidateFunc>;
41
- /**
42
- * Is input textarea flag
43
- */
44
- textarea?: boolean;
45
- /**
46
- * Hide error message flag
47
- */
48
- hideErrorMessage?: boolean;
49
- /**
50
- * Custom onChange functionƒ
51
- */
52
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
53
- };
54
-
55
- /**
56
- * Material UI `TextField` controlled component. Used with react-hook-form
57
- * @category Forms
58
- */
59
- export const ControlInput = ({
60
- control,
61
- validate,
62
- name = '',
63
- label = '',
64
- required = false,
65
- defaultValue = '',
66
- disabled = false,
67
- textarea = false,
68
- hideErrorMessage = false,
69
- onChange: customOnChange,
70
- ...textFieldProps
71
- }: ControlInputProps) => {
72
- const {
73
- field: { ref, onChange },
74
- fieldState: { error },
75
- } = useController({
76
- name,
77
- control,
78
- defaultValue,
79
- rules: {
80
- required: required && 'Please, fill this field',
81
- validate,
82
- },
83
- });
84
- const value = useWatch({ control, name });
85
-
86
- return (
87
- <TextField
88
- fullWidth
89
- size="small"
90
- variant="outlined"
91
- type="text"
92
- inputRef={ref}
93
- name={name}
94
- label={label}
95
- error={!!error}
96
- helperText={!hideErrorMessage && error?.message}
97
- disabled={disabled}
98
- multiline={textarea}
99
- minRows={textarea ? 3 : 1}
100
- value={value ?? ''}
101
- onChange={customOnChange ? customOnChange : onChange}
102
- {...textFieldProps}
103
- inputProps={{
104
- ...(textFieldProps?.inputProps ?? {}),
105
- value: value ?? '',
106
- }}
107
- />
108
- );
109
- };
110
-
111
- export default ControlInput;
@@ -1,121 +0,0 @@
1
- import TextField, { TextFieldProps } from '@mui/material/TextField';
2
- import { useController, Control, useWatch } from 'react-hook-form';
3
- import { floatsOnly, digitsOnly } from '../../utils';
4
- import { ValidateFunc } from '../../interfaces';
5
-
6
- type Props = TextFieldProps & {
7
- /**
8
- * React Hook Form control `name` propery
9
- */
10
- name: string;
11
- /**
12
- * Label for MUI TextField component
13
- */
14
- label?: string;
15
- /**
16
- * React Hook Form `control`
17
- */
18
- control: Control;
19
- /**
20
- * Is input required flag
21
- */
22
- required?: boolean;
23
- /**
24
- * React Hook Form `defaultValue`
25
- */
26
- defaultValue?: number;
27
- /**
28
- * Is disabled input flag
29
- */
30
- disabled?: boolean;
31
- /**
32
- * React Hook Form validate function
33
- * ```typescript
34
- * type ValidateFunc = (value: string) => boolean | string;
35
- * ```
36
- */
37
- validate?: ValidateFunc | Record<string, ValidateFunc>;
38
-
39
- /**
40
- * Hide error message flag
41
- */
42
- hideErrorMessage?: boolean;
43
- /**
44
- * Custom onChange function
45
- */
46
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
47
- /**
48
- * Is number decimal or integer flag
49
- */
50
- decimal?: boolean;
51
- };
52
-
53
- export const ControlNumberInput = ({
54
- control,
55
- validate,
56
- name = '',
57
- label = '',
58
- required = false,
59
- defaultValue,
60
- disabled = false,
61
- hideErrorMessage = false,
62
- onChange: customOnChange,
63
- decimal = false,
64
- ...textFieldProps
65
- }: Props) => {
66
- const {
67
- field: { ref, onChange },
68
- fieldState: { error },
69
- } = useController({
70
- name,
71
- control,
72
- defaultValue,
73
- rules: {
74
- required: required && 'Please, fill this field',
75
- validate: (val) => {
76
- if (decimal && !floatsOnly.test(val)) {
77
- return 'Not valid number';
78
- } else if (!decimal && !digitsOnly.test(val)) {
79
- return 'Not valid integer';
80
- }
81
- return true;
82
- },
83
- },
84
- });
85
- const value = useWatch({ control, name });
86
-
87
- const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
88
- const lastData = event.nativeEvent['data'] || event.target.value;
89
- if (!isNaN(lastData) || (decimal && lastData === '.') || lastData === '-' || lastData === '+') {
90
- if (customOnChange) {
91
- customOnChange(event);
92
- } else {
93
- onChange(event.target.value);
94
- }
95
- }
96
- };
97
-
98
- return (
99
- <TextField
100
- fullWidth
101
- size="small"
102
- variant="outlined"
103
- type="text"
104
- inputRef={ref}
105
- name={name}
106
- label={label}
107
- error={!!error}
108
- helperText={!hideErrorMessage && error?.message}
109
- disabled={disabled}
110
- value={value ?? ''}
111
- {...textFieldProps}
112
- onChange={handleChange}
113
- inputProps={{
114
- ...(textFieldProps?.inputProps ?? {}),
115
- value: value ?? '',
116
- }}
117
- />
118
- );
119
- };
120
-
121
- export default ControlNumberInput;
@@ -1,197 +0,0 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
2
- import TextField from '@mui/material/TextField';
3
- import Autocomplete from '@mui/material/Autocomplete';
4
- import CircularProgress from '@mui/material/CircularProgress';
5
-
6
- import { useController, useWatch } from 'react-hook-form';
7
- import { useQuery } from '@tanstack/react-query';
8
- import qs from 'qs';
9
- import { useDebounce } from '../../utils/hooks';
10
- import useAutocomplete from './useAutocomplete';
11
-
12
- import { ControlAutocompleteProps } from './ControlAutocomplete';
13
- import { PaginateData } from '../../interfaces';
14
-
15
- type PaginateParams = {
16
- page: string;
17
- size: string;
18
- [key: string]: string;
19
- };
20
-
21
- type ControlQueryAutocompleteProps<T> = Omit<ControlAutocompleteProps, 'options'> & {
22
- searchBy: string;
23
- sortBy?: string;
24
- queryFunction: (params: PaginateParams) => Promise<PaginateData<T>>;
25
- itemQueryFunction?: (valueKey: string) => Promise<T>;
26
- };
27
-
28
- export function ControlQueryAutocomplete<T>({
29
- name,
30
- label,
31
- control,
32
- required = false,
33
- searchBy,
34
- labelKey,
35
- multiple = false,
36
- disabled,
37
- valueKey,
38
- sortBy = '',
39
- hideErrorMessage,
40
- disableCloseOnSelect,
41
- textFieldProps,
42
- onChange,
43
- queryFunction,
44
- validate,
45
- itemQueryFunction,
46
- ...autocompleteProps
47
- }: ControlQueryAutocompleteProps<T>) {
48
- const {
49
- field: { ref, onChange: setFieldValue },
50
- fieldState: { error, isDirty },
51
- } = useController({ control, name, rules: { required: required && 'Please, fill this field', validate } });
52
- const formValue = useWatch({ control, name, defaultValue: multiple ? [] : null });
53
-
54
- const { getOptionLabel, isOptionEqualToValue, renderOption } = useAutocomplete({ valueKey, labelKey });
55
-
56
- const [open, setOpen] = useState(false);
57
- const [inputValue, setInputValue] = useState('');
58
- const [searchValue, setSearchValue] = useState('');
59
- const [totalItems, setTotalItems] = useState(0);
60
- const [page, setPage] = useState(0);
61
- const [options, setOptions] = useState<unknown[]>([]);
62
-
63
- const debouncedChange = useDebounce((val) => {
64
- setPage(0);
65
- setSearchValue(val);
66
- setOptions([]);
67
- }, 500);
68
-
69
- const handleInputChange = useCallback(
70
- (_, value) => {
71
- setInputValue(value);
72
- debouncedChange(value);
73
- },
74
- [debouncedChange]
75
- );
76
-
77
- const handleValueChange = useCallback(
78
- (event, value) => {
79
- setFieldValue(value);
80
- if (onChange) {
81
- onChange(event, value);
82
- }
83
- },
84
- [setFieldValue, onChange]
85
- );
86
-
87
- useEffect(() => {
88
- if (!isDirty && formValue && itemQueryFunction) {
89
- let requestValue = formValue;
90
-
91
- if (typeof formValue === 'object' && valueKey in formValue) {
92
- requestValue = formValue[valueKey];
93
- }
94
-
95
- itemQueryFunction(requestValue)
96
- .then((item) => {
97
- setFieldValue(item);
98
- setInputValue(item[labelKey]);
99
- })
100
- .catch();
101
- }
102
- }, [formValue, isDirty, valueKey, labelKey, itemQueryFunction, setFieldValue]);
103
-
104
- const handleOnScroll = useCallback(
105
- (event: React.SyntheticEvent) => {
106
- const listboxNode = event.currentTarget;
107
- if (
108
- listboxNode.scrollHeight - listboxNode.scrollTop - listboxNode.clientHeight <= 1 &&
109
- options.length < totalItems
110
- ) {
111
- setPage((page) => page + 1);
112
- }
113
- },
114
- [totalItems, options]
115
- );
116
-
117
- const handleOpen = () => {
118
- setOpen(true);
119
- };
120
-
121
- const handleClose = () => {
122
- setOpen(false);
123
- setSearchValue('');
124
- };
125
-
126
- const { data, isFetching } = useQuery(['options', page, searchValue], () => {
127
- const params = qs.parse(
128
- {
129
- page: `${page}`,
130
- size: '20',
131
- sort: sortBy,
132
- ...(searchValue ? { [searchBy]: searchValue } : {}),
133
- },
134
- { ignoreQueryPrefix: true }
135
- );
136
- return queryFunction(params as PaginateParams);
137
- });
138
-
139
- useEffect(() => {
140
- if (data) {
141
- setOptions((prevOptions) => [...prevOptions, ...data.collection]);
142
- setTotalItems(data.totalItems);
143
- }
144
- }, [data]);
145
-
146
- return (
147
- <Autocomplete
148
- fullWidth
149
- disablePortal
150
- size="small"
151
- readOnly={disabled}
152
- options={options}
153
- multiple={multiple}
154
- getOptionLabel={getOptionLabel}
155
- isOptionEqualToValue={isOptionEqualToValue}
156
- disableCloseOnSelect={disableCloseOnSelect || multiple}
157
- filterSelectedOptions={multiple}
158
- inputValue={inputValue}
159
- value={formValue}
160
- onChange={handleValueChange}
161
- loading={isFetching}
162
- clearOnBlur={false}
163
- open={open}
164
- filterOptions={(x) => x}
165
- onOpen={handleOpen}
166
- onClose={handleClose}
167
- onInputChange={handleInputChange}
168
- ListboxProps={{
169
- onScroll: handleOnScroll,
170
- }}
171
- renderOption={renderOption}
172
- renderInput={(params) => (
173
- <TextField
174
- {...params}
175
- label={label}
176
- variant="outlined"
177
- error={!!error}
178
- inputRef={ref}
179
- helperText={!hideErrorMessage && error?.message}
180
- InputProps={{
181
- ...params.InputProps,
182
- endAdornment: (
183
- <React.Fragment>
184
- {isFetching ? <CircularProgress color="inherit" size={20} /> : null}
185
- {params.InputProps.endAdornment}
186
- </React.Fragment>
187
- ),
188
- }}
189
- {...textFieldProps}
190
- />
191
- )}
192
- {...autocompleteProps}
193
- />
194
- );
195
- }
196
-
197
- export default ControlQueryAutocomplete;
@@ -1,136 +0,0 @@
1
- import Radio from '@mui/material/Radio';
2
- import RadioGroup from '@mui/material/RadioGroup';
3
- import FormControlLabel from '@mui/material/FormControlLabel';
4
- import FormControl from '@mui/material/FormControl';
5
- import FormLabel from '@mui/material/FormLabel';
6
-
7
- import { Control, useController, useWatch } from 'react-hook-form';
8
- import { ValidateFunc } from '../../interfaces';
9
- import { useCallback } from 'react';
10
- import FormHelperText from '@mui/material/FormHelperText';
11
-
12
- /**
13
- * This interface is referencing the [[ControlRadioBtn]] component props.
14
- * @category Forms
15
- */
16
- export interface ControlRadioProps {
17
- /**
18
- * React Hook Form `control`
19
- */
20
- control: Control<any>;
21
- /**
22
- * React Hook Form control `name` propery
23
- */
24
- name: string;
25
- /**
26
- * Label for component
27
- */
28
- label?: string;
29
- /**
30
- * Radio group values
31
- */
32
- values: string[] | unknown[];
33
- /**
34
- * Is input required flag
35
- */
36
- required?: boolean;
37
- /**
38
- * React Hook Form `defaultValue`
39
- */
40
- defaultValue?: unknown;
41
- /**
42
- * Is disabled input flag
43
- */
44
- disabled?: boolean;
45
- /**
46
- * Hide error message flag
47
- */
48
- hideErrorMessage?: boolean;
49
- /**
50
- * Custom onChange functionƒ
51
- */
52
- onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;
53
- /**
54
- * React Hook Form validate function
55
- * ```typescript
56
- * type ValidateFunc = (value: string) => boolean | string;
57
- * ```
58
- */
59
- validate?: ValidateFunc | Record<string, ValidateFunc>;
60
- /**
61
- * Key for option label
62
- */
63
- labelKey?: string;
64
- /**
65
- * Key for option value
66
- */
67
- valueKey?: string;
68
- }
69
-
70
- /**
71
- * Material UI `Radio` controlled component. Used with react-hook-form
72
- * @category Forms
73
- */
74
- export const ControlRadio = ({
75
- name,
76
- label,
77
- values = [],
78
- control,
79
- required,
80
- defaultValue,
81
- disabled,
82
- hideErrorMessage,
83
- labelKey,
84
- valueKey,
85
- validate,
86
- onChange: customOnChange,
87
- }: ControlRadioProps) => {
88
- const {
89
- field: { ref, onChange },
90
- fieldState: { error },
91
- } = useController({
92
- name,
93
- control,
94
- defaultValue,
95
- rules: {
96
- required: required && 'Please, fill this field',
97
- validate,
98
- },
99
- });
100
- const value = useWatch({ control, name });
101
-
102
- const getValue = useCallback(
103
- (option) => {
104
- if (typeof option === 'string') return option;
105
- return valueKey ? option[valueKey] : option.value;
106
- },
107
- [valueKey]
108
- );
109
- const getLabel = useCallback(
110
- (option) => {
111
- if (typeof option === 'string') return option;
112
- return labelKey ? option[labelKey] : option.label;
113
- },
114
- [labelKey]
115
- );
116
-
117
- return (
118
- <FormControl disabled={disabled} error={!!error}>
119
- <FormLabel id="radio-buttons-group">{label}</FormLabel>
120
- <RadioGroup
121
- aria-labelledby="radio-buttons-group"
122
- ref={ref}
123
- name={name}
124
- value={value}
125
- onChange={customOnChange ? customOnChange : onChange}
126
- >
127
- {values.map((item) => (
128
- <FormControlLabel value={getValue(item)} control={<Radio />} label={getLabel(item)} />
129
- ))}
130
- </RadioGroup>
131
- {!hideErrorMessage && error?.message && <FormHelperText>{error.message}</FormHelperText>}
132
- </FormControl>
133
- );
134
- };
135
-
136
- export default ControlRadio;