envoc-form 2.0.1-6 → 3.0.0-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +7 -7
  2. package/dist/css/envoc-form-styles.css +43 -5
  3. package/dist/css/envoc-form-styles.css.map +1 -1
  4. package/es/AddressInput/AddressInput.js +7 -6
  5. package/es/ConfirmBaseForm/ConfirmBaseForm.js +3 -2
  6. package/es/ConfirmDeleteForm/ConfirmDeleteForm.js +6 -5
  7. package/es/DatePickerInput/DatePickerInput.js +8 -3
  8. package/es/FileInput/DefaultFileList.js +36 -0
  9. package/es/FileInput/DropzoneFileInput.js +58 -0
  10. package/es/FileInput/FileInput.js +31 -9
  11. package/es/FileInput/index.js +2 -1
  12. package/es/Form/Form.js +11 -33
  13. package/es/Form/FormBasedPreventNavigation.js +4 -7
  14. package/es/FormGroupWrapper.js +2 -1
  15. package/es/FormInput/FormInput.js +19 -7
  16. package/es/FormInputArray/FormInputArray.js +39 -24
  17. package/es/IconInput.js +2 -1
  18. package/es/ReactSelectField/ReactSelectField.js +6 -3
  19. package/es/SubmitFormButton.js +2 -1
  20. package/es/__Tests__/FormTestBase.js +5 -2
  21. package/es/normalizers.js +10 -5
  22. package/es/useStandardFormInput.js +4 -2
  23. package/es/utils/index.js +3 -0
  24. package/es/utils/objectContainsNonSerializableProperty.js +16 -0
  25. package/es/utils/objectToFormData.js +65 -0
  26. package/es/utils/typeChecks.js +25 -0
  27. package/lib/AddressInput/AddressInput.js +14 -8
  28. package/lib/ConfirmBaseForm/ConfirmBaseForm.js +4 -2
  29. package/lib/ConfirmDeleteForm/ConfirmDeleteForm.js +6 -4
  30. package/lib/DatePickerInput/DatePickerInput.js +9 -3
  31. package/lib/FileInput/DefaultFileList.js +47 -0
  32. package/lib/FileInput/DropzoneFileInput.js +75 -0
  33. package/lib/FileInput/FileInput.js +39 -10
  34. package/lib/FileInput/index.js +13 -3
  35. package/lib/Form/Form.js +19 -39
  36. package/lib/Form/FormBasedPreventNavigation.js +4 -10
  37. package/lib/FormGroupWrapper.js +3 -1
  38. package/lib/FormInput/FormInput.js +21 -8
  39. package/lib/FormInputArray/FormInputArray.js +47 -26
  40. package/lib/FormSection.js +5 -1
  41. package/lib/IconInput.js +3 -1
  42. package/lib/ReactSelectField/ReactSelectField.js +13 -5
  43. package/lib/ReactSelectField/index.js +6 -2
  44. package/lib/SubmitFormButton.js +3 -1
  45. package/lib/__Tests__/FormTestBase.js +6 -2
  46. package/lib/index.js +7 -3
  47. package/lib/normalizers.js +10 -5
  48. package/lib/useStandardFormInput.js +5 -2
  49. package/lib/utils/index.js +23 -0
  50. package/lib/utils/objectContainsNonSerializableProperty.js +24 -0
  51. package/lib/utils/objectToFormData.js +73 -0
  52. package/lib/utils/typeChecks.js +58 -0
  53. package/lib/validators/index.js +5 -1
  54. package/package.json +99 -92
  55. package/src/AddressInput/AddesssInput.test.js +23 -23
  56. package/src/AddressInput/AddressInput.js +73 -73
  57. package/src/AddressInput/UsStates.js +53 -53
  58. package/src/AddressInput/__snapshots__/AddesssInput.test.js.snap +207 -207
  59. package/src/AddressInput/index.js +2 -2
  60. package/src/BoolInput/BoolInput.js +7 -7
  61. package/src/BoolInput/BoolInput.test.js +23 -23
  62. package/src/BoolInput/InlineBoolInput.js +7 -7
  63. package/src/BoolInput/__snapshots__/BoolInput.test.js.snap +89 -89
  64. package/src/BoolInput/boolOptions.js +6 -6
  65. package/src/BoolInput/index.js +4 -4
  66. package/src/ConfirmBaseForm/ConfirmBaseForm.js +37 -37
  67. package/src/ConfirmBaseForm/ConfirmBaseForm.test.js +14 -14
  68. package/src/ConfirmBaseForm/__snapshots__/ConfirmBaseForm.test.js.snap +23 -23
  69. package/src/ConfirmBaseForm/index.js +1 -1
  70. package/src/ConfirmDeleteForm/ConfirmDeleteForm.js +39 -39
  71. package/src/ConfirmDeleteForm/ConfirmDeleteForm.test.js +24 -24
  72. package/src/ConfirmDeleteForm/__snapshots__/ConfirmDeleteForm.test.js.snap +25 -25
  73. package/src/ConfirmDeleteForm/index.js +1 -1
  74. package/src/DatePickerInput/DatePickerInput.js +49 -46
  75. package/src/DatePickerInput/DatePickerInput.test.js +74 -74
  76. package/src/DatePickerInput/__snapshots__/DatePickerInput.test.js.snap +134 -134
  77. package/src/DatePickerInput/date-picker-input.scss +42 -42
  78. package/src/DatePickerInput/index.js +3 -3
  79. package/src/ErrorScrollTarget.js +6 -6
  80. package/src/FileInput/DefaultFileList.js +39 -0
  81. package/src/FileInput/DropzoneFileInput.js +56 -0
  82. package/src/FileInput/DropzoneFileInput.test.js +24 -0
  83. package/src/FileInput/FileInput.js +77 -49
  84. package/src/FileInput/FileInput.test.js +24 -15
  85. package/src/FileInput/__snapshots__/DropzoneFileInput.test.js.snap +57 -0
  86. package/src/FileInput/__snapshots__/FileInput.test.js.snap +58 -22
  87. package/src/FileInput/file-input.scss +58 -17
  88. package/src/FileInput/index.js +4 -3
  89. package/src/Form/FocusError.js +48 -48
  90. package/src/Form/Form.js +139 -161
  91. package/src/Form/Form.test.js +23 -23
  92. package/src/Form/FormBasedPreventNavigation.js +25 -25
  93. package/src/Form/ServerErrorContext.js +7 -7
  94. package/src/Form/__snapshots__/Form.test.js.snap +9 -9
  95. package/src/Form/index.js +3 -3
  96. package/src/FormGroup.js +30 -30
  97. package/src/FormGroupWrapper.js +28 -28
  98. package/src/FormInput/FormInput.js +144 -141
  99. package/src/FormInput/FormInput.test.js +66 -66
  100. package/src/FormInput/__snapshots__/FormInput.test.js.snap +323 -316
  101. package/src/FormInput/form-input.scss +9 -9
  102. package/src/FormInput/index.js +2 -2
  103. package/src/FormInputArray/FormInputArray.js +224 -210
  104. package/src/FormInputArray/FormInputArray.test.js +108 -59
  105. package/src/FormInputArray/__snapshots__/FormInputArray.test.js.snap +52 -40
  106. package/src/FormInputArray/form-input-array.scss +13 -8
  107. package/src/FormInputArray/index.js +2 -2
  108. package/src/FormSection.js +13 -13
  109. package/src/IconInput.js +31 -31
  110. package/src/InlineFormInput/InlineFormInput.js +6 -6
  111. package/src/InlineFormInput/InlineFormInput.test.js +23 -23
  112. package/src/InlineFormInput/__snapshots__/InlineFormInput.test.js.snap +26 -26
  113. package/src/InlineFormInput/index.js +3 -3
  114. package/src/InlineFormInput/inline-form-input.scss +3 -3
  115. package/src/MoneyInput/InlineMoneyInput.js +7 -7
  116. package/src/MoneyInput/MoneyInput.js +7 -7
  117. package/src/MoneyInput/MoneyInputs.test.js +43 -43
  118. package/src/MoneyInput/__snapshots__/MoneyInputs.test.js.snap +81 -81
  119. package/src/MoneyInput/index.js +4 -4
  120. package/src/MoneyInput/money-input.scss +3 -3
  121. package/src/MoneyInput/moneyInputProps.js +12 -12
  122. package/src/NestedFormFieldContext.js +6 -6
  123. package/src/ReactSelectField/ReactSelectField.js +122 -120
  124. package/src/ReactSelectField/index.js +6 -6
  125. package/src/ReactSelectField/react-select-field.scss +5 -5
  126. package/src/StandardFormActions.js +27 -27
  127. package/src/SubmitFormButton.js +28 -28
  128. package/src/__Tests__/FormTestBase.js +14 -11
  129. package/src/__Tests__/IconInput.test.js +23 -23
  130. package/src/__Tests__/StandardFormActions.test.js +23 -23
  131. package/src/__Tests__/SubmitFormButton.test.js +23 -23
  132. package/src/__Tests__/__snapshots__/IconInput.test.js.snap +38 -38
  133. package/src/__Tests__/__snapshots__/StandardFormActions.test.js.snap +25 -25
  134. package/src/__Tests__/__snapshots__/SubmitFormButton.test.js.snap +18 -18
  135. package/src/__Tests__/index.js +2 -2
  136. package/src/_variables.scss +11 -11
  137. package/src/index.js +33 -33
  138. package/src/normalizers.js +42 -32
  139. package/src/selectors.js +3 -3
  140. package/src/styles.scss +7 -7
  141. package/src/useStandardFormInput.js +118 -118
  142. package/src/utils/index.js +3 -0
  143. package/src/utils/objectContainsNonSerializableProperty.js +15 -0
  144. package/src/utils/objectContainsNonSerializableProperty.test.js +49 -0
  145. package/src/utils/objectToFormData.js +89 -0
  146. package/src/utils/objectToFormData.test.js +76 -0
  147. package/src/utils/typeChecks.js +18 -0
  148. package/src/validators/index.js +2 -2
  149. package/src/validators/validators.js +93 -93
  150. package/src/validators/validators.test.js +79 -79
  151. package/CHANGELOG.json +0 -95
  152. package/CHANGELOG.md +0 -58
@@ -1,2 +1,2 @@
1
- import AddressInput from './AddressInput';
2
- export default AddressInput;
1
+ import AddressInput from './AddressInput';
2
+ export default AddressInput;
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
- import boolOptions from './boolOptions';
3
- import FormInput from '../FormInput';
4
-
5
- export default function BoolInput(props) {
6
- return <FormInput options={boolOptions} type="select" {...props} />;
7
- }
1
+ import React from 'react';
2
+ import boolOptions from './boolOptions';
3
+ import FormInput from '../FormInput';
4
+
5
+ export default function BoolInput(props) {
6
+ return <FormInput options={boolOptions} type="select" {...props} />;
7
+ }
@@ -1,23 +1,23 @@
1
- import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import { FormTestBase } from '../__Tests__';
4
- import BoolInput from './BoolInput';
5
-
6
- describe('BoolInput', () => {
7
- it('renders without crashing', () => {
8
- render(
9
- <FormTestBase>
10
- <BoolInput name="yesNo" />
11
- </FormTestBase>
12
- );
13
- });
14
-
15
- it('has matching snapshot', () => {
16
- const renderResult = render(
17
- <FormTestBase>
18
- <BoolInput name="yesNo" />
19
- </FormTestBase>
20
- );
21
- expect(renderResult.asFragment()).toMatchSnapshot();
22
- });
23
- });
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { FormTestBase } from '../__Tests__';
4
+ import BoolInput from './BoolInput';
5
+
6
+ describe('BoolInput', () => {
7
+ it('renders without crashing', () => {
8
+ render(
9
+ <FormTestBase>
10
+ <BoolInput name="yesNo" />
11
+ </FormTestBase>
12
+ );
13
+ });
14
+
15
+ it('has matching snapshot', () => {
16
+ const renderResult = render(
17
+ <FormTestBase>
18
+ <BoolInput name="yesNo" />
19
+ </FormTestBase>
20
+ );
21
+ expect(renderResult.asFragment()).toMatchSnapshot();
22
+ });
23
+ });
@@ -1,7 +1,7 @@
1
- import React from 'react';
2
- import boolOptions from './boolOptions';
3
- import InlineFormInput from '../InlineFormInput';
4
-
5
- export default function InlineBoolInput(props) {
6
- return <InlineFormInput options={boolOptions} type="select" {...props} />;
7
- }
1
+ import React from 'react';
2
+ import boolOptions from './boolOptions';
3
+ import InlineFormInput from '../InlineFormInput';
4
+
5
+ export default function InlineBoolInput(props) {
6
+ return <InlineFormInput options={boolOptions} type="select" {...props} />;
7
+ }
@@ -1,89 +1,89 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`BoolInput has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <form
6
- action="#"
7
- >
8
- <div
9
- class="form-group"
10
- >
11
- <div
12
- id="yesno-error-scroll-target"
13
- style="display: none;"
14
- />
15
- <div
16
- class="react-select-input css-2b097c-container"
17
- id="yesNo"
18
- >
19
- <div
20
- class=" css-150ye8w-control"
21
- >
22
- <div
23
- class=" css-lbak6p-Component"
24
- >
25
- <div
26
- class=" css-1osw1h9-placeholder"
27
- >
28
- Select...
29
- </div>
30
- <div
31
- class="css-lp83hw-Component"
32
- >
33
- <div
34
- class=""
35
- style="display: inline-block;"
36
- >
37
- <input
38
- aria-autocomplete="list"
39
- autocapitalize="none"
40
- autocomplete="off"
41
- autocorrect="off"
42
- id="react-select-3-input"
43
- spellcheck="false"
44
- style="box-sizing: content-box; width: 2px; border: 0px; opacity: 1; outline: 0; padding: 0px;"
45
- tabindex="0"
46
- type="text"
47
- value=""
48
- />
49
- <div
50
- style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-family: -webkit-small-control; letter-spacing: normal; text-transform: none;"
51
- />
52
- </div>
53
- </div>
54
- </div>
55
- <div
56
- class=" css-ny0e4k-Component"
57
- >
58
- <span
59
- class=" css-1sl80az-indicatorSeparator"
60
- />
61
- <div
62
- aria-hidden="true"
63
- class=" css-augegj-indicatorContainer"
64
- >
65
- <svg
66
- aria-hidden="true"
67
- class="css-7ezgaa-Component"
68
- focusable="false"
69
- height="20"
70
- viewBox="0 0 20 20"
71
- width="20"
72
- >
73
- <path
74
- d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
75
- />
76
- </svg>
77
- </div>
78
- </div>
79
- </div>
80
- <input
81
- name="yesNo"
82
- type="hidden"
83
- value=""
84
- />
85
- </div>
86
- </div>
87
- </form>
88
- </DocumentFragment>
89
- `;
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`BoolInput has matching snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <form
6
+ action="#"
7
+ >
8
+ <div
9
+ class="form-group"
10
+ >
11
+ <div
12
+ id="yesno-error-scroll-target"
13
+ style="display: none;"
14
+ />
15
+ <div
16
+ class="react-select-input css-2b097c-container"
17
+ id="yesNo"
18
+ >
19
+ <div
20
+ class=" css-150ye8w-control"
21
+ >
22
+ <div
23
+ class=" css-lbak6p-Component"
24
+ >
25
+ <div
26
+ class=" css-1osw1h9-placeholder"
27
+ >
28
+ Select...
29
+ </div>
30
+ <div
31
+ class="css-lp83hw-Component"
32
+ >
33
+ <div
34
+ class=""
35
+ style="display: inline-block;"
36
+ >
37
+ <input
38
+ aria-autocomplete="list"
39
+ autocapitalize="none"
40
+ autocomplete="off"
41
+ autocorrect="off"
42
+ id="react-select-3-input"
43
+ spellcheck="false"
44
+ style="box-sizing: content-box; width: 2px; border: 0px; opacity: 1; outline: 0; padding: 0px;"
45
+ tabindex="0"
46
+ type="text"
47
+ value=""
48
+ />
49
+ <div
50
+ style="position: absolute; top: 0px; left: 0px; visibility: hidden; height: 0px; overflow: scroll; white-space: pre; font-family: -webkit-small-control; letter-spacing: normal; text-transform: none;"
51
+ />
52
+ </div>
53
+ </div>
54
+ </div>
55
+ <div
56
+ class=" css-ny0e4k-Component"
57
+ >
58
+ <span
59
+ class=" css-1sl80az-indicatorSeparator"
60
+ />
61
+ <div
62
+ aria-hidden="true"
63
+ class=" css-augegj-indicatorContainer"
64
+ >
65
+ <svg
66
+ aria-hidden="true"
67
+ class="css-7ezgaa-Component"
68
+ focusable="false"
69
+ height="20"
70
+ viewBox="0 0 20 20"
71
+ width="20"
72
+ >
73
+ <path
74
+ d="M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z"
75
+ />
76
+ </svg>
77
+ </div>
78
+ </div>
79
+ </div>
80
+ <input
81
+ name="yesNo"
82
+ type="hidden"
83
+ value=""
84
+ />
85
+ </div>
86
+ </div>
87
+ </form>
88
+ </DocumentFragment>
89
+ `;
@@ -1,6 +1,6 @@
1
- const boolOptions = [
2
- { label: 'Yes', value: true },
3
- { label: 'No', value: false },
4
- ];
5
-
6
- export default boolOptions;
1
+ const boolOptions = [
2
+ { label: 'Yes', value: true },
3
+ { label: 'No', value: false },
4
+ ];
5
+
6
+ export default boolOptions;
@@ -1,4 +1,4 @@
1
- import BoolInput from './BoolInput';
2
- import InlineBoolInput from './InlineBoolInput';
3
-
4
- export { BoolInput, InlineBoolInput };
1
+ import BoolInput from './BoolInput';
2
+ import InlineBoolInput from './InlineBoolInput';
3
+
4
+ export { BoolInput, InlineBoolInput };
@@ -1,37 +1,37 @@
1
- import React from 'react';
2
- import { Button } from 'reactstrap';
3
- import { useAxiosRequest } from 'envoc-request';
4
-
5
- export default function ConfirmBaseForm({
6
- handleCancel,
7
- request,
8
- yesColor = 'danger',
9
- style,
10
- title,
11
- ...props
12
- }) {
13
- const webRequest = useAxiosRequest(
14
- Object.assign({}, request, { autoExecute: false })
15
- );
16
- return (
17
- <div style={{ textAlign: 'center', ...style }} {...props}>
18
- <h3>{title}</h3>
19
- <Button
20
- color={yesColor}
21
- onClick={webRequest.submitRequest}
22
- disabled={webRequest.loading}>
23
- Yes
24
- </Button>
25
- <Button
26
- type="button"
27
- color="link"
28
- disabled={webRequest.loading}
29
- onClick={handleCancel || goBack}>
30
- Cancel
31
- </Button>
32
- </div>
33
- );
34
- function goBack() {
35
- window.history.back();
36
- }
37
- }
1
+ import React from 'react';
2
+ import { Button } from 'reactstrap';
3
+ import { useAxiosRequest } from 'envoc-request';
4
+
5
+ export default function ConfirmBaseForm({
6
+ handleCancel,
7
+ request,
8
+ yesColor = 'danger',
9
+ style,
10
+ title,
11
+ ...props
12
+ }) {
13
+ const webRequest = useAxiosRequest(
14
+ Object.assign({}, request, { autoExecute: false })
15
+ );
16
+ return (
17
+ <div style={{ textAlign: 'center', ...style }} {...props}>
18
+ <h3>{title}</h3>
19
+ <Button
20
+ color={yesColor}
21
+ onClick={webRequest.submitRequest}
22
+ disabled={webRequest.loading}>
23
+ Yes
24
+ </Button>
25
+ <Button
26
+ type="button"
27
+ color="link"
28
+ disabled={webRequest.loading}
29
+ onClick={handleCancel || goBack}>
30
+ Cancel
31
+ </Button>
32
+ </div>
33
+ );
34
+ function goBack() {
35
+ window.history.back();
36
+ }
37
+ }
@@ -1,14 +1,14 @@
1
- import React from 'react';
2
- import { render, screen } from '@testing-library/react';
3
- import ConfirmBaseForm from './ConfirmBaseForm';
4
-
5
- describe('ConfirmBaseForm', () => {
6
- it('Renders without error', () => {
7
- render(<ConfirmBaseForm />);
8
- });
9
-
10
- it('has matching snapshot', () => {
11
- const renderResult = render(<ConfirmBaseForm />);
12
- expect(renderResult.asFragment()).toMatchSnapshot();
13
- });
14
- });
1
+ import React from 'react';
2
+ import { render, screen } from '@testing-library/react';
3
+ import ConfirmBaseForm from './ConfirmBaseForm';
4
+
5
+ describe('ConfirmBaseForm', () => {
6
+ it('Renders without error', () => {
7
+ render(<ConfirmBaseForm />);
8
+ });
9
+
10
+ it('has matching snapshot', () => {
11
+ const renderResult = render(<ConfirmBaseForm />);
12
+ expect(renderResult.asFragment()).toMatchSnapshot();
13
+ });
14
+ });
@@ -1,23 +1,23 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmBaseForm has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <div
6
- style="text-align: center;"
7
- >
8
- <h3 />
9
- <button
10
- class="btn btn-danger"
11
- type="button"
12
- >
13
- Yes
14
- </button>
15
- <button
16
- class="btn btn-link"
17
- type="button"
18
- >
19
- Cancel
20
- </button>
21
- </div>
22
- </DocumentFragment>
23
- `;
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ConfirmBaseForm has matching snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ style="text-align: center;"
7
+ >
8
+ <h3 />
9
+ <button
10
+ class="btn btn-danger"
11
+ type="button"
12
+ >
13
+ Yes
14
+ </button>
15
+ <button
16
+ class="btn btn-link"
17
+ type="button"
18
+ >
19
+ Cancel
20
+ </button>
21
+ </div>
22
+ </DocumentFragment>
23
+ `;
@@ -1,2 +1,2 @@
1
- import ConfirmBaseForm from './ConfirmBaseForm';
1
+ import ConfirmBaseForm from './ConfirmBaseForm';
2
2
  export default ConfirmBaseForm;
@@ -1,39 +1,39 @@
1
- import React from 'react';
2
- import { useHistory, useParams } from 'react-router-dom';
3
- import ConfirmBaseForm from '../ConfirmBaseForm';
4
- import { toast } from 'react-toastify';
5
-
6
- export default function ConfirmDeleteForm({
7
- successUrl,
8
- form,
9
- children,
10
- ...props
11
- }) {
12
- const history = useHistory();
13
- const { entityId } = useParams();
14
- const request = {
15
- method: 'delete',
16
- url: `/api/${form}/${entityId}`,
17
- onComplete: () => {
18
- toast.success('Deleted!');
19
- goBack();
20
- },
21
- };
22
- return (
23
- <ConfirmBaseForm
24
- request={request}
25
- handleCancel={goBack}
26
- title="Are you sure you want to delete this?"
27
- {...props}>
28
- {children}
29
- </ConfirmBaseForm>
30
- );
31
-
32
- function goBack() {
33
- if (successUrl) {
34
- history.push(successUrl);
35
- } else {
36
- history.back();
37
- }
38
- }
39
- }
1
+ import React from 'react';
2
+ import { useNavigate, useParams } from 'react-router-dom';
3
+ import ConfirmBaseForm from '../ConfirmBaseForm';
4
+ import { toast } from 'react-toastify';
5
+
6
+ export default function ConfirmDeleteForm({
7
+ successUrl,
8
+ form,
9
+ children,
10
+ ...props
11
+ }) {
12
+ const navigate = useNavigate();
13
+ const { entityId } = useParams();
14
+ const request = {
15
+ method: 'delete',
16
+ url: `/api/${form}/${entityId}`,
17
+ onComplete: () => {
18
+ toast.success('Deleted!');
19
+ goBack();
20
+ },
21
+ };
22
+ return (
23
+ <ConfirmBaseForm
24
+ request={request}
25
+ handleCancel={goBack}
26
+ title="Are you sure you want to delete this?"
27
+ {...props}>
28
+ {children}
29
+ </ConfirmBaseForm>
30
+ );
31
+
32
+ function goBack() {
33
+ if (successUrl) {
34
+ navigate(successUrl);
35
+ } else {
36
+ navigate(-1);
37
+ }
38
+ }
39
+ }
@@ -1,24 +1,24 @@
1
- import React from 'react';
2
- import { HashRouter } from 'react-router-dom';
3
- import { render, screen } from '@testing-library/react';
4
-
5
- import ConfirmDeleteForm from './ConfirmDeleteForm';
6
-
7
- describe('ConfirmDeleteForm', () => {
8
- it('Renders without error', () => {
9
- render(
10
- <HashRouter>
11
- <ConfirmDeleteForm />
12
- </HashRouter>
13
- );
14
- });
15
-
16
- it('has matching snapshot', () => {
17
- const renderResult = render(
18
- <HashRouter>
19
- <ConfirmDeleteForm />
20
- </HashRouter>
21
- );
22
- expect(renderResult.asFragment()).toMatchSnapshot();
23
- });
24
- });
1
+ import React from 'react';
2
+ import { HashRouter } from 'react-router-dom';
3
+ import { render, screen } from '@testing-library/react';
4
+
5
+ import ConfirmDeleteForm from './ConfirmDeleteForm';
6
+
7
+ describe('ConfirmDeleteForm', () => {
8
+ it('Renders without error', () => {
9
+ render(
10
+ <HashRouter>
11
+ <ConfirmDeleteForm />
12
+ </HashRouter>
13
+ );
14
+ });
15
+
16
+ it('has matching snapshot', () => {
17
+ const renderResult = render(
18
+ <HashRouter>
19
+ <ConfirmDeleteForm />
20
+ </HashRouter>
21
+ );
22
+ expect(renderResult.asFragment()).toMatchSnapshot();
23
+ });
24
+ });
@@ -1,25 +1,25 @@
1
- // Jest Snapshot v1, https://goo.gl/fbAQLP
2
-
3
- exports[`ConfirmDeleteForm has matching snapshot 1`] = `
4
- <DocumentFragment>
5
- <div
6
- style="text-align: center;"
7
- >
8
- <h3>
9
- Are you sure you want to delete this?
10
- </h3>
11
- <button
12
- class="btn btn-danger"
13
- type="button"
14
- >
15
- Yes
16
- </button>
17
- <button
18
- class="btn btn-link"
19
- type="button"
20
- >
21
- Cancel
22
- </button>
23
- </div>
24
- </DocumentFragment>
25
- `;
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ConfirmDeleteForm has matching snapshot 1`] = `
4
+ <DocumentFragment>
5
+ <div
6
+ style="text-align: center;"
7
+ >
8
+ <h3>
9
+ Are you sure you want to delete this?
10
+ </h3>
11
+ <button
12
+ class="btn btn-danger"
13
+ type="button"
14
+ >
15
+ Yes
16
+ </button>
17
+ <button
18
+ class="btn btn-link"
19
+ type="button"
20
+ >
21
+ Cancel
22
+ </button>
23
+ </div>
24
+ </DocumentFragment>
25
+ `;
@@ -1,2 +1,2 @@
1
- import ConfirmDeleteForm from './ConfirmDeleteForm'
1
+ import ConfirmDeleteForm from './ConfirmDeleteForm'
2
2
  export default ConfirmDeleteForm;