ding-react-admin 1.0.2 → 1.0.4

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 (86) hide show
  1. package/README.md +36 -5
  2. package/dist/index.js +712 -723
  3. package/dist/src/crud/InlineFormSet.d.ts +13 -11
  4. package/dist/src/crud/InlineFormSet.d.ts.map +1 -1
  5. package/dist/src/crud/ResourceForm.d.ts +10 -2
  6. package/dist/src/crud/ResourceForm.d.ts.map +1 -1
  7. package/dist/src/crud/ResourceFormModal.d.ts.map +1 -1
  8. package/dist/src/crud/ResourceList.d.ts.map +1 -1
  9. package/dist/src/crud/context/SubmitFieldsContext.d.ts +18 -0
  10. package/dist/src/crud/context/SubmitFieldsContext.d.ts.map +1 -0
  11. package/dist/src/crud/fields/BooleanField.d.ts +3 -1
  12. package/dist/src/crud/fields/BooleanField.d.ts.map +1 -1
  13. package/dist/src/crud/fields/DateField.d.ts +3 -1
  14. package/dist/src/crud/fields/DateField.d.ts.map +1 -1
  15. package/dist/src/crud/fields/FieldWrapper.d.ts +7 -14
  16. package/dist/src/crud/fields/FieldWrapper.d.ts.map +1 -1
  17. package/dist/src/crud/fields/NumberField.d.ts +5 -3
  18. package/dist/src/crud/fields/NumberField.d.ts.map +1 -1
  19. package/dist/src/crud/fields/PasswordField.d.ts +5 -3
  20. package/dist/src/crud/fields/PasswordField.d.ts.map +1 -1
  21. package/dist/src/crud/fields/ReferenceField.d.ts +6 -5
  22. package/dist/src/crud/fields/ReferenceField.d.ts.map +1 -1
  23. package/dist/src/crud/fields/ReferenceManyField.d.ts +3 -1
  24. package/dist/src/crud/fields/ReferenceManyField.d.ts.map +1 -1
  25. package/dist/src/crud/fields/SelectField.d.ts +3 -1
  26. package/dist/src/crud/fields/SelectField.d.ts.map +1 -1
  27. package/dist/src/crud/fields/TextField.d.ts +5 -3
  28. package/dist/src/crud/fields/TextField.d.ts.map +1 -1
  29. package/dist/src/crud/index.d.ts +8 -4
  30. package/dist/src/crud/index.d.ts.map +1 -1
  31. package/dist/src/crud/types.d.ts +21 -20
  32. package/dist/src/crud/types.d.ts.map +1 -1
  33. package/dist/src/crud/utils/inlineFieldName.d.ts +3 -0
  34. package/dist/src/crud/utils/inlineFieldName.d.ts.map +1 -0
  35. package/dist/src/crud/utils/useAbortableEffect.d.ts +7 -0
  36. package/dist/src/crud/utils/useAbortableEffect.d.ts.map +1 -0
  37. package/dist/src/crud/utils/useResourceFormData.d.ts +47 -0
  38. package/dist/src/crud/utils/useResourceFormData.d.ts.map +1 -0
  39. package/dist/src/data/abortError.d.ts +3 -0
  40. package/dist/src/data/abortError.d.ts.map +1 -0
  41. package/dist/src/data/abortError.test.d.ts +2 -0
  42. package/dist/src/data/abortError.test.d.ts.map +1 -0
  43. package/dist/src/data/createRestResourceHandlers.d.ts +2 -2
  44. package/dist/src/data/createRestResourceHandlers.d.ts.map +1 -1
  45. package/dist/src/data/dataProviderTypes.d.ts +7 -1
  46. package/dist/src/data/dataProviderTypes.d.ts.map +1 -1
  47. package/dist/src/data/resourceHandlers.d.ts +2 -2
  48. package/dist/src/data/resourceHandlers.d.ts.map +1 -1
  49. package/dist/src/index.d.ts +4 -3
  50. package/dist/src/index.d.ts.map +1 -1
  51. package/package.json +59 -59
  52. package/src/crud/InlineFormSet.tsx +77 -89
  53. package/src/crud/ResourceForm.tsx +87 -202
  54. package/src/crud/ResourceFormModal.tsx +37 -25
  55. package/src/crud/ResourceList.tsx +35 -26
  56. package/src/crud/context/SubmitFieldsContext.tsx +62 -0
  57. package/src/crud/fields/BooleanField.tsx +22 -16
  58. package/src/crud/fields/DateField.tsx +32 -26
  59. package/src/crud/fields/FieldWrapper.tsx +32 -54
  60. package/src/crud/fields/NumberField.tsx +36 -34
  61. package/src/crud/fields/PasswordField.tsx +41 -40
  62. package/src/crud/fields/ReferenceField.tsx +35 -130
  63. package/src/crud/fields/ReferenceManyField.tsx +31 -25
  64. package/src/crud/fields/SelectField.tsx +6 -0
  65. package/src/crud/fields/TextField.tsx +32 -30
  66. package/src/crud/index.ts +19 -2
  67. package/src/crud/types.ts +132 -130
  68. package/src/crud/utils/inlineFieldName.ts +8 -0
  69. package/src/crud/utils/useAbortableEffect.ts +17 -0
  70. package/src/crud/utils/useResourceFormData.ts +231 -0
  71. package/src/data/abortError.test.ts +19 -0
  72. package/src/data/abortError.ts +10 -0
  73. package/src/data/createMemoryResourceHandlers.ts +1 -1
  74. package/src/data/createRestResourceHandlers.ts +4 -4
  75. package/src/data/dataProviderTypes.ts +8 -0
  76. package/src/data/resourceHandlers.ts +4 -3
  77. package/src/index.ts +14 -1
  78. package/dist/src/crud/context/FormFieldsContext.d.ts +0 -14
  79. package/dist/src/crud/context/FormFieldsContext.d.ts.map +0 -1
  80. package/dist/src/crud/context/InlineFormContext.d.ts +0 -16
  81. package/dist/src/crud/context/InlineFormContext.d.ts.map +0 -1
  82. package/dist/src/crud/fields/useInlineOrFormField.d.ts +0 -10
  83. package/dist/src/crud/fields/useInlineOrFormField.d.ts.map +0 -1
  84. package/src/crud/context/FormFieldsContext.tsx +0 -76
  85. package/src/crud/context/InlineFormContext.tsx +0 -71
  86. package/src/crud/fields/useInlineOrFormField.tsx +0 -91
@@ -1,91 +0,0 @@
1
- import { useEffect, useMemo, useRef, type ReactNode } from "react";
2
- import { useInlineFormSetContext } from "../context/InlineFormContext";
3
- import type {
4
- FieldRenderProps,
5
- FieldRules,
6
- InlineFieldDefinition,
7
- InlineFieldOptions,
8
- } from "../types";
9
- import { FieldWrapper, InlineFieldWrapper } from "./FieldWrapper";
10
-
11
- export function useInlineOrFormField(
12
- source: string,
13
- label: string | undefined,
14
- required: boolean | undefined,
15
- rules: FieldRules | undefined,
16
- renderInput: (props: FieldRenderProps) => ReactNode,
17
- inlineOptions?: InlineFieldOptions,
18
- ) {
19
- const inlineCtx = useInlineFormSetContext();
20
- const registerField = inlineCtx?.registerField;
21
- const isInline = registerField != null;
22
- const renderInputRef = useRef(renderInput);
23
- renderInputRef.current = renderInput;
24
-
25
- const inlineDef = useMemo((): InlineFieldDefinition | null => {
26
- if (!registerField) return null;
27
- return {
28
- key: source,
29
- source,
30
- label,
31
- width: inlineOptions?.width,
32
- minWidth: inlineOptions?.minWidth,
33
- render: ({ name, index }) => (
34
- <InlineFieldWrapper
35
- name={name}
36
- label={label}
37
- required={required}
38
- rules={rules}
39
- hideLabel={inlineCtx?.layout !== "stacked"}
40
- >
41
- {({ value, onChange, onBlur }) =>
42
- renderInputRef.current({
43
- value,
44
- onChange,
45
- onBlur,
46
- name,
47
- index,
48
- })
49
- }
50
- </InlineFieldWrapper>
51
- ),
52
- };
53
- }, [
54
- registerField,
55
- source,
56
- label,
57
- required,
58
- rules,
59
- inlineCtx?.layout,
60
- inlineOptions?.width,
61
- inlineOptions?.minWidth,
62
- ]);
63
-
64
- const inlineDefRef = useRef(inlineDef);
65
- inlineDefRef.current = inlineDef;
66
-
67
- useEffect(() => {
68
- if (!registerField) return;
69
- const def = inlineDefRef.current;
70
- if (!def) return;
71
- return registerField(def);
72
- }, [registerField, source]);
73
-
74
- if (isInline) return { mode: "inline" as const };
75
-
76
- return {
77
- mode: "form" as const,
78
- element: (
79
- <FieldWrapper
80
- source={source}
81
- label={label}
82
- required={required}
83
- rules={rules}
84
- >
85
- {({ value, onChange, onBlur, disabled }) =>
86
- renderInput({ value, onChange, onBlur, disabled })
87
- }
88
- </FieldWrapper>
89
- ),
90
- };
91
- }