@aarhus-university/au-lib-react-components 9.18.0 → 9.18.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 (141) hide show
  1. package/.eslintrc +18 -18
  2. package/README.md +20 -20
  3. package/babel.config.js +6 -6
  4. package/build/dev.html +328 -328
  5. package/build/umd/all.css +2 -2
  6. package/build/umd/all.js +1 -1
  7. package/build/umd/alphabox.js +1 -1
  8. package/build/umd/auAuth.js +1 -1
  9. package/build/umd/databox.js +2 -2
  10. package/build/umd/databox.js.LICENSE.txt +5 -5
  11. package/build/umd/diagramme.js +1 -1
  12. package/build/umd/flowbox.js +1 -1
  13. package/build/umd/news.js +1 -1
  14. package/build/umd/universe.js +1 -1
  15. package/package.json +60 -60
  16. package/src/all.js +3 -3
  17. package/src/app.js +263 -263
  18. package/src/components/AUAlertComponent.js +158 -158
  19. package/src/components/AUAmountComponent.js +84 -84
  20. package/src/components/AUBannerComponent.js +99 -99
  21. package/src/components/AUCalendarComponent.js +393 -393
  22. package/src/components/AUCollapsibleComponent.js +173 -173
  23. package/src/components/AUDatepickerComponent.js +105 -105
  24. package/src/components/AUDiagrammeComponent.js +310 -310
  25. package/src/components/AUFilterCheckboxComponent.js +122 -122
  26. package/src/components/AUFocusComponent.js +55 -55
  27. package/src/components/AUModalComponent.js +94 -94
  28. package/src/components/AUPaginationComponent.js +103 -103
  29. package/src/components/AUSpinnerComponent.js +125 -125
  30. package/src/components/AutoSuggestComponent.js +157 -157
  31. package/src/components/alphabox/AlphaBoxComponent.js +145 -145
  32. package/src/components/alphabox/AlphaBoxContentComponent.js +136 -136
  33. package/src/components/context/AUUserContextComponent.js +91 -91
  34. package/src/components/context/ImpersonateComponent.js +54 -54
  35. package/src/components/databox/DataBoxAlphabetComponent.js +144 -144
  36. package/src/components/databox/DataBoxAssociationComponent.js +122 -122
  37. package/src/components/databox/DataBoxButtonComponent.js +153 -153
  38. package/src/components/databox/DataBoxComponent.js +297 -297
  39. package/src/components/databox/DataBoxGroupingComponent.js +62 -62
  40. package/src/components/databox/DataBoxSearchResultComponent.js +40 -40
  41. package/src/components/databox/DataBoxStackedAssociationComponent.js +58 -58
  42. package/src/components/databox/DataBoxSuggestionComponent.js +39 -39
  43. package/src/components/delphinus/AUAlertComponent.js +85 -85
  44. package/src/components/delphinus/AUCalendarComponent.js +487 -487
  45. package/src/components/delphinus/AUContentToggleComponent.js +32 -32
  46. package/src/components/delphinus/AUDatepickerComponent.js +164 -164
  47. package/src/components/delphinus/AULoginComponent.js +65 -65
  48. package/src/components/delphinus/AUModalComponent.js +94 -94
  49. package/src/components/delphinus/AUSpinnerComponent.js +114 -114
  50. package/src/components/delphinus/AUSubNavComponent.js +53 -53
  51. package/src/components/delphinus/AUTabbedContentComponent.js +150 -150
  52. package/src/components/delphinus/AUTableComponent.js +28 -28
  53. package/src/components/delphinus/AUToastComponent.js +91 -91
  54. package/src/components/delphinus/AUToolbarComponent.js +48 -48
  55. package/src/components/delphinus/hooks.js +28 -28
  56. package/src/components/flowbox/FlowBoxComponent.js +126 -126
  57. package/src/components/flowbox/FlowBoxPhoneComponent.js +106 -106
  58. package/src/components/form/AUMobilePrefixComponent.js +18 -18
  59. package/src/components/form/AUReceiptComponent.js +40 -40
  60. package/src/components/form/AUSubmitButtonContainerComponent.js +39 -39
  61. package/src/components/news/EventLayout1Component.js +94 -94
  62. package/src/components/news/EventLayout2Component.js +90 -90
  63. package/src/components/news/EventLayout3Component.js +68 -68
  64. package/src/components/news/NewsCategoriesComponent.js +21 -21
  65. package/src/components/news/NewsCollageBannerComponent.js +71 -71
  66. package/src/components/news/NewsCollageBannerRSSComponent.js +79 -79
  67. package/src/components/news/NewsColumnsComponent.js +125 -125
  68. package/src/components/news/NewsLanguageChangeComponent.js +74 -74
  69. package/src/components/news/NewsLayout1Component.js +80 -80
  70. package/src/components/news/NewsLayout2Component.js +80 -80
  71. package/src/components/news/NewsLayout3Component.js +81 -81
  72. package/src/components/news/NewsLayout4Component.js +80 -80
  73. package/src/components/news/NewsLayout5Component.js +61 -61
  74. package/src/components/news/NewsLayout6Component.js +55 -55
  75. package/src/components/news/NewsLayout7Component.js +58 -58
  76. package/src/components/news/NewsLayout8Component.js +57 -57
  77. package/src/components/news/NewsListComponent.js +291 -291
  78. package/src/components/news/NewsPopUpComponent.js +591 -591
  79. package/src/components/news/NewsRSSComponent.js +74 -74
  80. package/src/components/news/NewsSocialComponent.js +104 -104
  81. package/src/components/news/NewsSubHeaderComponent.js +19 -19
  82. package/src/components/password/AUChangePasswordComponent.js +189 -189
  83. package/src/components/password/AUCurrentPasswordComponent.js +72 -72
  84. package/src/components/password/AUNewPasswordComponent.js +151 -151
  85. package/src/components/password/AUPasswordActions.js +101 -101
  86. package/src/components/password/AUPasswordHooks.js +47 -47
  87. package/src/components/password/AUPasswordReducer.js +78 -78
  88. package/src/components/password/AUPasswordRequirementsComponent.js +29 -29
  89. package/src/components/profile/AUProfileActions.js +128 -128
  90. package/src/components/profile/AUProfileAvatar2016Component.js +99 -99
  91. package/src/components/profile/AUProfileAvatarComponent.js +83 -83
  92. package/src/components/profile/AUProfileAvatarV2Component.js +91 -91
  93. package/src/components/profile/AUProfileAvatarV3Component.js +80 -80
  94. package/src/components/profile/AUProfileContainerComponent.js +283 -283
  95. package/src/components/profile/AUProfileHooks.js +30 -30
  96. package/src/components/profile/AUProfileItemComponent.js +54 -54
  97. package/src/components/profile/AUProfileLanguageComponent.js +131 -131
  98. package/src/components/profile/AUProfileLoginComponent.js +41 -41
  99. package/src/components/profile/AUProfileMailComponent.js +307 -307
  100. package/src/components/profile/AUProfileMobileComponent.js +164 -164
  101. package/src/components/profile/AUProfileNameComponent.js +253 -253
  102. package/src/components/profile/AUProfileNextOfKinComponent.js +216 -216
  103. package/src/components/profile/AUProfileReducer.js +230 -230
  104. package/src/components/profile/AUProfileWidgetComponent.js +95 -95
  105. package/src/components/profile/AUProfileWidgetV2Component.js +116 -116
  106. package/src/components/profile/AUProfileWidgetV3Component.js +130 -130
  107. package/src/components/universe/StaffTopComponent.js +366 -366
  108. package/src/components/universe/StudentTopComponent.js +137 -137
  109. package/src/components/universe/UniverseContainerComponent.js +62 -62
  110. package/src/components/wrapping/AUEmbedComponent.js +47 -47
  111. package/src/config/webpack.dev.config.js +47 -47
  112. package/src/config/webpack.umd.config.js +86 -86
  113. package/src/index.js +6 -6
  114. package/src/lib/au-alphabox.js +102 -102
  115. package/src/lib/au-auth.js +227 -227
  116. package/src/lib/au-databox.js +403 -403
  117. package/src/lib/au-diagramme.js +87 -87
  118. package/src/lib/au-flowbox.js +95 -95
  119. package/src/lib/au-news.js +371 -371
  120. package/src/lib/helpers.js +222 -222
  121. package/src/lib/i18n.js +605 -605
  122. package/src/lib/menu.js +10 -10
  123. package/src/lib/tracking.js +65 -65
  124. package/src/lib/universe.js +9 -9
  125. package/src/lib/urlHandler.js +63 -63
  126. package/src/lib/validation.js +219 -219
  127. package/src/lib/wrapping.js +16 -16
  128. package/src/styles/_settings.scss +10 -10
  129. package/src/styles/alert.scss +39 -39
  130. package/src/styles/alphabox.scss +222 -222
  131. package/src/styles/app.scss +13 -13
  132. package/src/styles/autosuggest.scss +57 -57
  133. package/src/styles/calendar.scss +111 -111
  134. package/src/styles/databox.scss +563 -563
  135. package/src/styles/diagramme.scss +119 -119
  136. package/src/styles/filtercheckbox.scss +4 -4
  137. package/src/styles/flowbox.scss +72 -72
  138. package/src/styles/maps.scss +395 -395
  139. package/src/styles/modal.scss +34 -34
  140. package/src/styles/pagination.scss +10 -10
  141. package/src/styles/spinner.scss +30 -30
@@ -1,151 +1,151 @@
1
- /* eslint-disable jsx-a11y/label-has-associated-control */
2
- /* eslint-disable jsx-a11y/label-has-for */
3
- import React, { useState, useEffect } from 'react';
4
- import PropTypes from 'prop-types';
5
- import { renderValidation, validatePassword } from '../../lib/validation';
6
- import { passwordLabels } from '../../lib/i18n';
7
-
8
- const AUNewPasswordComponent = ({
9
- lang,
10
- saving,
11
- errorMessages,
12
- setErrorMessages,
13
- newPassword,
14
- newPasswordValidated,
15
- newPasswordValidationMessages,
16
- setNewPassword,
17
- setNewPasswordValidated,
18
- setNewPasswordValidationMessages,
19
- confirmPassword,
20
- confirmPasswordValidated,
21
- confirmPasswordValidationMessages,
22
- setConfirmPassword,
23
- setConfirmPasswordValidated,
24
- setConfirmPasswordValidationMessages,
25
- }) => {
26
- const [errorMessagesSet, setErrorMessagesSet] = useState(false);
27
-
28
- useEffect(() => {
29
- if (errorMessages.length > 0 && !errorMessagesSet) {
30
- setNewPasswordValidationMessages([]);
31
- setConfirmPasswordValidationMessages([]);
32
- setErrorMessagesSet(true);
33
- } else if (errorMessages.length === 0 && errorMessagesSet) {
34
- setErrorMessagesSet(false);
35
- }
36
- });
37
-
38
- let newPasswordValidationClassName = '';
39
- if (errorMessages.length > 0
40
- || (newPasswordValidationMessages.length > 0 && !newPasswordValidated)) {
41
- newPasswordValidationClassName = ' form-info--error';
42
- } else if (newPasswordValidated) {
43
- newPasswordValidationClassName = ' form-info--confirmed';
44
- }
45
-
46
- let confirmPasswordValidationClassName = '';
47
- if (errorMessages.length > 0
48
- || (confirmPasswordValidationMessages.length > 0 && !confirmPasswordValidated)) {
49
- confirmPasswordValidationClassName = ' form-info--error';
50
- } else if (confirmPasswordValidated) {
51
- confirmPasswordValidationClassName = ' form-info--confirmed';
52
- }
53
-
54
- return (
55
- <div className="row__item row__item--basis-default-line-width">
56
- <div className={`form__field${newPasswordValidationClassName}`}>
57
- <label htmlFor="new-password">
58
- {passwordLabels[lang].newPassword}
59
- <span className="form-info__hint">{passwordLabels[lang].newPasswordInfo}</span>
60
- {renderValidation(errorMessages)}
61
- </label>
62
- {renderValidation(newPasswordValidationMessages)}
63
- <input
64
- type="password"
65
- id="new-password"
66
- value={newPassword}
67
- onChange={(e) => {
68
- const newValue = e.target.value;
69
- validatePassword(lang, newValue, confirmPassword).then((v) => {
70
- setNewPassword(newValue);
71
- setConfirmPassword('');
72
- setNewPasswordValidated(v.newPasswordValid);
73
- setNewPasswordValidationMessages(v.newPasswordMessages);
74
- setConfirmPasswordValidationMessages([]);
75
- setErrorMessages();
76
- });
77
- }}
78
- onBlur={(e) => {
79
- const newValue = e.target.value;
80
- validatePassword(lang, newValue, confirmPassword, true).then((v) => {
81
- setNewPasswordValidated(v.newPasswordValid);
82
- setNewPasswordValidationMessages(v.newPasswordMessages);
83
- });
84
- }}
85
- disabled={saving}
86
- />
87
- </div>
88
- <div className={`form__field${confirmPasswordValidationClassName}`}>
89
- <label htmlFor="repeated-password">{passwordLabels[lang].repeatPassword}</label>
90
- {renderValidation(confirmPasswordValidationMessages)}
91
- <input
92
- type="password"
93
- id="repeated-password"
94
- value={confirmPassword}
95
- onChange={(e) => {
96
- const newValue = e.target.value;
97
- validatePassword(lang, newPassword, newValue).then((v) => {
98
- setConfirmPassword(newValue);
99
- setConfirmPasswordValidated(v.confirmPasswordValid);
100
- setConfirmPasswordValidationMessages(v.confirmPasswordMessages);
101
- });
102
- }}
103
- onBlur={(e) => {
104
- const newValue = e.target.value;
105
- validatePassword(lang, newPassword, newValue, true).then((v) => {
106
- setConfirmPasswordValidated(v.confirmPasswordValid);
107
- setConfirmPasswordValidationMessages(v.confirmPasswordMessages);
108
- });
109
- }}
110
- disabled={saving}
111
- />
112
- </div>
113
- <div className="submit">
114
- <div className={`${saving ? 'submit-input-wrapper--processing' : ''}`}>
115
- <input
116
- className="button"
117
- type="submit"
118
- value={passwordLabels[lang].changePassword}
119
- disabled={saving}
120
- />
121
- </div>
122
- </div>
123
- </div>
124
- );
125
- };
126
-
127
- AUNewPasswordComponent.defaultProps = {
128
- errorMessages: [],
129
- setErrorMessages: () => {},
130
- };
131
-
132
- AUNewPasswordComponent.displayName = 'AUNewPasswordComponent';
133
- AUNewPasswordComponent.propTypes = {
134
- lang: PropTypes.string.isRequired,
135
- saving: PropTypes.bool.isRequired,
136
- errorMessages: PropTypes.arrayOf(PropTypes.string),
137
- setErrorMessages: PropTypes.func,
138
- newPassword: PropTypes.string.isRequired,
139
- newPasswordValidated: PropTypes.bool.isRequired,
140
- newPasswordValidationMessages: PropTypes.arrayOf(PropTypes.string).isRequired,
141
- setNewPassword: PropTypes.func.isRequired,
142
- setNewPasswordValidated: PropTypes.func.isRequired,
143
- setNewPasswordValidationMessages: PropTypes.func.isRequired,
144
- confirmPassword: PropTypes.string.isRequired,
145
- confirmPasswordValidated: PropTypes.bool.isRequired,
146
- confirmPasswordValidationMessages: PropTypes.arrayOf(PropTypes.string).isRequired,
147
- setConfirmPassword: PropTypes.func.isRequired,
148
- setConfirmPasswordValidated: PropTypes.func.isRequired,
149
- setConfirmPasswordValidationMessages: PropTypes.func.isRequired,
150
- };
151
- export default AUNewPasswordComponent;
1
+ /* eslint-disable jsx-a11y/label-has-associated-control */
2
+ /* eslint-disable jsx-a11y/label-has-for */
3
+ import React, { useState, useEffect } from 'react';
4
+ import PropTypes from 'prop-types';
5
+ import { renderValidation, validatePassword } from '../../lib/validation';
6
+ import { passwordLabels } from '../../lib/i18n';
7
+
8
+ const AUNewPasswordComponent = ({
9
+ lang,
10
+ saving,
11
+ errorMessages,
12
+ setErrorMessages,
13
+ newPassword,
14
+ newPasswordValidated,
15
+ newPasswordValidationMessages,
16
+ setNewPassword,
17
+ setNewPasswordValidated,
18
+ setNewPasswordValidationMessages,
19
+ confirmPassword,
20
+ confirmPasswordValidated,
21
+ confirmPasswordValidationMessages,
22
+ setConfirmPassword,
23
+ setConfirmPasswordValidated,
24
+ setConfirmPasswordValidationMessages,
25
+ }) => {
26
+ const [errorMessagesSet, setErrorMessagesSet] = useState(false);
27
+
28
+ useEffect(() => {
29
+ if (errorMessages.length > 0 && !errorMessagesSet) {
30
+ setNewPasswordValidationMessages([]);
31
+ setConfirmPasswordValidationMessages([]);
32
+ setErrorMessagesSet(true);
33
+ } else if (errorMessages.length === 0 && errorMessagesSet) {
34
+ setErrorMessagesSet(false);
35
+ }
36
+ });
37
+
38
+ let newPasswordValidationClassName = '';
39
+ if (errorMessages.length > 0
40
+ || (newPasswordValidationMessages.length > 0 && !newPasswordValidated)) {
41
+ newPasswordValidationClassName = ' form-info--error';
42
+ } else if (newPasswordValidated) {
43
+ newPasswordValidationClassName = ' form-info--confirmed';
44
+ }
45
+
46
+ let confirmPasswordValidationClassName = '';
47
+ if (errorMessages.length > 0
48
+ || (confirmPasswordValidationMessages.length > 0 && !confirmPasswordValidated)) {
49
+ confirmPasswordValidationClassName = ' form-info--error';
50
+ } else if (confirmPasswordValidated) {
51
+ confirmPasswordValidationClassName = ' form-info--confirmed';
52
+ }
53
+
54
+ return (
55
+ <div className="row__item row__item--basis-default-line-width">
56
+ <div className={`form__field${newPasswordValidationClassName}`}>
57
+ <label htmlFor="new-password">
58
+ {passwordLabels[lang].newPassword}
59
+ <span className="form-info__hint">{passwordLabels[lang].newPasswordInfo}</span>
60
+ {renderValidation(errorMessages)}
61
+ </label>
62
+ {renderValidation(newPasswordValidationMessages)}
63
+ <input
64
+ type="password"
65
+ id="new-password"
66
+ value={newPassword}
67
+ onChange={(e) => {
68
+ const newValue = e.target.value;
69
+ validatePassword(lang, newValue, confirmPassword).then((v) => {
70
+ setNewPassword(newValue);
71
+ setConfirmPassword('');
72
+ setNewPasswordValidated(v.newPasswordValid);
73
+ setNewPasswordValidationMessages(v.newPasswordMessages);
74
+ setConfirmPasswordValidationMessages([]);
75
+ setErrorMessages();
76
+ });
77
+ }}
78
+ onBlur={(e) => {
79
+ const newValue = e.target.value;
80
+ validatePassword(lang, newValue, confirmPassword, true).then((v) => {
81
+ setNewPasswordValidated(v.newPasswordValid);
82
+ setNewPasswordValidationMessages(v.newPasswordMessages);
83
+ });
84
+ }}
85
+ disabled={saving}
86
+ />
87
+ </div>
88
+ <div className={`form__field${confirmPasswordValidationClassName}`}>
89
+ <label htmlFor="repeated-password">{passwordLabels[lang].repeatPassword}</label>
90
+ {renderValidation(confirmPasswordValidationMessages)}
91
+ <input
92
+ type="password"
93
+ id="repeated-password"
94
+ value={confirmPassword}
95
+ onChange={(e) => {
96
+ const newValue = e.target.value;
97
+ validatePassword(lang, newPassword, newValue).then((v) => {
98
+ setConfirmPassword(newValue);
99
+ setConfirmPasswordValidated(v.confirmPasswordValid);
100
+ setConfirmPasswordValidationMessages(v.confirmPasswordMessages);
101
+ });
102
+ }}
103
+ onBlur={(e) => {
104
+ const newValue = e.target.value;
105
+ validatePassword(lang, newPassword, newValue, true).then((v) => {
106
+ setConfirmPasswordValidated(v.confirmPasswordValid);
107
+ setConfirmPasswordValidationMessages(v.confirmPasswordMessages);
108
+ });
109
+ }}
110
+ disabled={saving}
111
+ />
112
+ </div>
113
+ <div className="submit">
114
+ <div className={`${saving ? 'submit-input-wrapper--processing' : ''}`}>
115
+ <input
116
+ className="button"
117
+ type="submit"
118
+ value={passwordLabels[lang].changePassword}
119
+ disabled={saving}
120
+ />
121
+ </div>
122
+ </div>
123
+ </div>
124
+ );
125
+ };
126
+
127
+ AUNewPasswordComponent.defaultProps = {
128
+ errorMessages: [],
129
+ setErrorMessages: () => {},
130
+ };
131
+
132
+ AUNewPasswordComponent.displayName = 'AUNewPasswordComponent';
133
+ AUNewPasswordComponent.propTypes = {
134
+ lang: PropTypes.string.isRequired,
135
+ saving: PropTypes.bool.isRequired,
136
+ errorMessages: PropTypes.arrayOf(PropTypes.string),
137
+ setErrorMessages: PropTypes.func,
138
+ newPassword: PropTypes.string.isRequired,
139
+ newPasswordValidated: PropTypes.bool.isRequired,
140
+ newPasswordValidationMessages: PropTypes.arrayOf(PropTypes.string).isRequired,
141
+ setNewPassword: PropTypes.func.isRequired,
142
+ setNewPasswordValidated: PropTypes.func.isRequired,
143
+ setNewPasswordValidationMessages: PropTypes.func.isRequired,
144
+ confirmPassword: PropTypes.string.isRequired,
145
+ confirmPasswordValidated: PropTypes.bool.isRequired,
146
+ confirmPasswordValidationMessages: PropTypes.arrayOf(PropTypes.string).isRequired,
147
+ setConfirmPassword: PropTypes.func.isRequired,
148
+ setConfirmPasswordValidated: PropTypes.func.isRequired,
149
+ setConfirmPasswordValidationMessages: PropTypes.func.isRequired,
150
+ };
151
+ export default AUNewPasswordComponent;
@@ -1,101 +1,101 @@
1
- /* eslint-disable import/prefer-default-export */
2
- export const PATCH_PASSWORD = 'PATCH_PASSWORD';
3
- export const SAVING_PASSWORD = 'SAVING_PASSWORD';
4
- export const DISMISS_MESSAGES = 'DISMISS_MESSAGES';
5
- export const SET_SAVED = 'SET_SAVED';
6
- export const SENDING_MAIL = 'SENDING_MAIL';
7
- export const SEND_MAIL = 'SEND_MAIL';
8
- export const GETTING_TOKEN_STATUS = 'GETTING_TOKEN_STATUS';
9
- export const GET_TOKEN_STATUS = 'GET_TOKEN_STATUS';
10
-
11
- export const getActionCreators = () => {
12
- const actionCreators = {
13
- clear: () => (dispatch) => {
14
- dispatch({
15
- type: SET_SAVED,
16
- });
17
- },
18
- dismissMessages: () => (dispatch) => {
19
- dispatch({
20
- type: DISMISS_MESSAGES,
21
- });
22
- },
23
- patchPassword: (data, callback, lang = 'da') => async (dispatch) => {
24
- dispatch({
25
- type: SAVING_PASSWORD,
26
- });
27
-
28
- callback(data, (ok, status, json) => {
29
- const result = {};
30
- if (ok) {
31
- result.password = true;
32
- } else {
33
- result.error = json;
34
- result.error.lang = lang;
35
- }
36
- result.status = status;
37
- dispatch({
38
- type: PATCH_PASSWORD,
39
- result,
40
- });
41
- });
42
- },
43
- patchPasswordAnonymous: (endpoint, type, userToken, data, callback, lang = 'da') => async (dispatch) => {
44
- dispatch({
45
- type: SAVING_PASSWORD,
46
- });
47
-
48
- callback(endpoint, type, userToken, data, (ok, status, json, actionType) => {
49
- const result = {};
50
- if (ok) {
51
- result.password = json;
52
- } else {
53
- result.error = json;
54
- result.error.lang = lang;
55
- }
56
- result.status = status;
57
- dispatch({
58
- type: actionType,
59
- result,
60
- });
61
- });
62
- },
63
- sendMail: (data, callback, lang = 'da') => async (dispatch) => {
64
- dispatch({
65
- type: SENDING_MAIL,
66
- });
67
-
68
- callback(data, (ok, status, json) => {
69
- const result = {};
70
- if (ok) {
71
- result.password = true;
72
- } else {
73
- result.error = json;
74
- result.error.lang = lang;
75
- }
76
- result.status = status;
77
- dispatch({
78
- type: SEND_MAIL,
79
- result,
80
- });
81
- });
82
- },
83
- checkUserTokenIsValid: (userToken, callback) => async (dispatch) => {
84
- dispatch({
85
- type: GETTING_TOKEN_STATUS,
86
- });
87
-
88
- callback(userToken, (ok, status) => {
89
- const result = {};
90
- result.token = ok;
91
- result.status = status;
92
- dispatch({
93
- type: GET_TOKEN_STATUS,
94
- result,
95
- });
96
- });
97
- },
98
- };
99
-
100
- return actionCreators;
101
- };
1
+ /* eslint-disable import/prefer-default-export */
2
+ export const PATCH_PASSWORD = 'PATCH_PASSWORD';
3
+ export const SAVING_PASSWORD = 'SAVING_PASSWORD';
4
+ export const DISMISS_MESSAGES = 'DISMISS_MESSAGES';
5
+ export const SET_SAVED = 'SET_SAVED';
6
+ export const SENDING_MAIL = 'SENDING_MAIL';
7
+ export const SEND_MAIL = 'SEND_MAIL';
8
+ export const GETTING_TOKEN_STATUS = 'GETTING_TOKEN_STATUS';
9
+ export const GET_TOKEN_STATUS = 'GET_TOKEN_STATUS';
10
+
11
+ export const getActionCreators = () => {
12
+ const actionCreators = {
13
+ clear: () => (dispatch) => {
14
+ dispatch({
15
+ type: SET_SAVED,
16
+ });
17
+ },
18
+ dismissMessages: () => (dispatch) => {
19
+ dispatch({
20
+ type: DISMISS_MESSAGES,
21
+ });
22
+ },
23
+ patchPassword: (data, callback, lang = 'da') => async (dispatch) => {
24
+ dispatch({
25
+ type: SAVING_PASSWORD,
26
+ });
27
+
28
+ callback(data, (ok, status, json) => {
29
+ const result = {};
30
+ if (ok) {
31
+ result.password = true;
32
+ } else {
33
+ result.error = json;
34
+ result.error.lang = lang;
35
+ }
36
+ result.status = status;
37
+ dispatch({
38
+ type: PATCH_PASSWORD,
39
+ result,
40
+ });
41
+ });
42
+ },
43
+ patchPasswordAnonymous: (endpoint, type, userToken, data, callback, lang = 'da') => async (dispatch) => {
44
+ dispatch({
45
+ type: SAVING_PASSWORD,
46
+ });
47
+
48
+ callback(endpoint, type, userToken, data, (ok, status, json, actionType) => {
49
+ const result = {};
50
+ if (ok) {
51
+ result.password = json;
52
+ } else {
53
+ result.error = json;
54
+ result.error.lang = lang;
55
+ }
56
+ result.status = status;
57
+ dispatch({
58
+ type: actionType,
59
+ result,
60
+ });
61
+ });
62
+ },
63
+ sendMail: (data, callback, lang = 'da') => async (dispatch) => {
64
+ dispatch({
65
+ type: SENDING_MAIL,
66
+ });
67
+
68
+ callback(data, (ok, status, json) => {
69
+ const result = {};
70
+ if (ok) {
71
+ result.password = true;
72
+ } else {
73
+ result.error = json;
74
+ result.error.lang = lang;
75
+ }
76
+ result.status = status;
77
+ dispatch({
78
+ type: SEND_MAIL,
79
+ result,
80
+ });
81
+ });
82
+ },
83
+ checkUserTokenIsValid: (userToken, callback) => async (dispatch) => {
84
+ dispatch({
85
+ type: GETTING_TOKEN_STATUS,
86
+ });
87
+
88
+ callback(userToken, (ok, status) => {
89
+ const result = {};
90
+ result.token = ok;
91
+ result.status = status;
92
+ dispatch({
93
+ type: GET_TOKEN_STATUS,
94
+ result,
95
+ });
96
+ });
97
+ },
98
+ };
99
+
100
+ return actionCreators;
101
+ };
@@ -1,47 +1,47 @@
1
- /* eslint-env browser */
2
- import { useState } from 'react';
3
-
4
- const useAUPassword = () => {
5
- const [currentPassword, setCurrentPassword] = useState('');
6
- const [newPassword, setNewPassword] = useState('');
7
- const [confirmPassword, setConfirmPassword] = useState('');
8
-
9
- return [{
10
- currentPassword,
11
- setCurrentPassword,
12
- }, {
13
- newPassword,
14
- setNewPassword,
15
- }, {
16
- confirmPassword,
17
- setConfirmPassword,
18
- }];
19
- };
20
-
21
- const useAUPasswordValidation = () => {
22
- const [currentPasswordValidationMessages, setCurrentPasswordValidationMessages] = useState([]);
23
- const [newPasswordValidated, setNewPasswordValidated] = useState(false);
24
- const [newPasswordValidationMessages, setNewPasswordValidationMessages] = useState([]);
25
- const [confirmPasswordValidated, setConfirmPasswordValidated] = useState(false);
26
- const [confirmPasswordValidationMessages, setConfirmPasswordValidationMessages] = useState([]);
27
-
28
- return [{
29
- currentPasswordValidationMessages,
30
- setCurrentPasswordValidationMessages,
31
- }, {
32
- newPasswordValidated,
33
- setNewPasswordValidated,
34
- newPasswordValidationMessages,
35
- setNewPasswordValidationMessages,
36
- }, {
37
- confirmPasswordValidated,
38
- setConfirmPasswordValidated,
39
- confirmPasswordValidationMessages,
40
- setConfirmPasswordValidationMessages,
41
- }];
42
- };
43
-
44
- export {
45
- useAUPassword,
46
- useAUPasswordValidation,
47
- };
1
+ /* eslint-env browser */
2
+ import { useState } from 'react';
3
+
4
+ const useAUPassword = () => {
5
+ const [currentPassword, setCurrentPassword] = useState('');
6
+ const [newPassword, setNewPassword] = useState('');
7
+ const [confirmPassword, setConfirmPassword] = useState('');
8
+
9
+ return [{
10
+ currentPassword,
11
+ setCurrentPassword,
12
+ }, {
13
+ newPassword,
14
+ setNewPassword,
15
+ }, {
16
+ confirmPassword,
17
+ setConfirmPassword,
18
+ }];
19
+ };
20
+
21
+ const useAUPasswordValidation = () => {
22
+ const [currentPasswordValidationMessages, setCurrentPasswordValidationMessages] = useState([]);
23
+ const [newPasswordValidated, setNewPasswordValidated] = useState(false);
24
+ const [newPasswordValidationMessages, setNewPasswordValidationMessages] = useState([]);
25
+ const [confirmPasswordValidated, setConfirmPasswordValidated] = useState(false);
26
+ const [confirmPasswordValidationMessages, setConfirmPasswordValidationMessages] = useState([]);
27
+
28
+ return [{
29
+ currentPasswordValidationMessages,
30
+ setCurrentPasswordValidationMessages,
31
+ }, {
32
+ newPasswordValidated,
33
+ setNewPasswordValidated,
34
+ newPasswordValidationMessages,
35
+ setNewPasswordValidationMessages,
36
+ }, {
37
+ confirmPasswordValidated,
38
+ setConfirmPasswordValidated,
39
+ confirmPasswordValidationMessages,
40
+ setConfirmPasswordValidationMessages,
41
+ }];
42
+ };
43
+
44
+ export {
45
+ useAUPassword,
46
+ useAUPasswordValidation,
47
+ };