@aarhus-university/au-lib-react-components 8.20.0 → 8.80.0

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 (168) hide show
  1. package/.eslintrc.js +44 -0
  2. package/README.md +19 -20
  3. package/babel.config.js +7 -0
  4. package/build/umd/all.css +1 -2
  5. package/build/umd/all.css.map +1 -1
  6. package/build/umd/all.js +1 -1
  7. package/build/umd/all.js.map +1 -1
  8. package/build/umd/alphabox.js +1 -1
  9. package/build/umd/alphabox.js.map +1 -1
  10. package/build/umd/databox.js +1 -6
  11. package/build/umd/databox.js.map +1 -1
  12. package/build/umd/diagramme.js +1 -1
  13. package/build/umd/diagramme.js.map +1 -1
  14. package/build/umd/flowbox.js +1 -1
  15. package/build/umd/flowbox.js.map +1 -1
  16. package/build/umd/universe.js +1 -1
  17. package/build/umd/universe.js.map +1 -1
  18. package/package.json +66 -65
  19. package/src/components/AUAlertComponent.tsx +70 -0
  20. package/src/components/{AutoSuggestComponent.js → AUAutoSuggestComponent.js} +45 -19
  21. package/src/components/AUCalendarComponent.tsx +493 -0
  22. package/src/components/AUContentToggleComponent.tsx +33 -0
  23. package/src/components/AUDatepickerComponent.tsx +117 -0
  24. package/src/components/AUMobilePrefixComponent.tsx +15 -0
  25. package/src/components/{delphinus/AUModalComponent.js → AUModalComponent.tsx} +78 -76
  26. package/src/components/{form/AUReceiptComponent.js → AUReceiptComponent.tsx} +33 -40
  27. package/src/components/AUSpinnerComponent.tsx +64 -0
  28. package/src/components/{delphinus/AUSubNavComponent.js → AUSubNavComponent.tsx} +38 -53
  29. package/src/components/{form/AUSubmitButtonContainerComponent.js → AUSubmitButtonContainerComponent.tsx} +31 -39
  30. package/src/components/AUTabbedContentComponent.tsx +145 -0
  31. package/src/components/{delphinus/AUTableComponent.js → AUTableComponent.tsx} +24 -28
  32. package/src/components/{delphinus/AUToastComponent.js → AUToastComponent.tsx} +104 -91
  33. package/src/components/{delphinus/AUToolbarComponent.js → AUToolbarComponent.tsx} +45 -48
  34. package/src/components/profile/AUProfileActions.js +128 -113
  35. package/src/components/profile/AUProfileAvatarComponent.js +83 -83
  36. package/src/components/profile/AUProfileAvatarV2Component.js +91 -0
  37. package/src/components/profile/AUProfileAvatarV3Component.js +80 -0
  38. package/src/components/profile/AUProfileContainerComponent.js +283 -285
  39. package/src/components/profile/AUProfileHooks.js +30 -30
  40. package/src/components/profile/AUProfileItemComponent.js +54 -54
  41. package/src/components/profile/AUProfileLanguageComponent.js +131 -131
  42. package/src/components/profile/AUProfileLoginComponent.js +0 -2
  43. package/src/components/profile/AUProfileMailComponent.js +307 -299
  44. package/src/components/profile/AUProfileMobileComponent.js +164 -164
  45. package/src/components/profile/AUProfileNameComponent.js +253 -253
  46. package/src/components/profile/AUProfileNextOfKinComponent.js +216 -216
  47. package/src/components/profile/AUProfileReducer.js +230 -210
  48. package/src/components/profile/AUProfileWidgetComponent.js +95 -95
  49. package/src/components/profile/AUProfileWidgetV2Component.js +116 -0
  50. package/src/components/profile/AUProfileWidgetV3Component.js +130 -0
  51. package/src/components/wrapping/AUEmbedComponent.js +47 -47
  52. package/src/{components → layout-2016/components}/alphabox/AlphaBoxComponent.js +29 -28
  53. package/src/{components → layout-2016/components}/alphabox/AlphaBoxContentComponent.js +25 -14
  54. package/src/{components → layout-2016/components/common}/AUCollapsibleComponent.js +1 -22
  55. package/src/{components → layout-2016/components/common}/AUSpinnerComponent.js +2 -24
  56. package/src/{components → layout-2016/components}/databox/DataBoxAlphabetComponent.js +1 -1
  57. package/src/{components → layout-2016/components}/databox/DataBoxAssociationComponent.js +2 -2
  58. package/src/{components → layout-2016/components}/databox/DataBoxButtonComponent.js +7 -3
  59. package/src/{components → layout-2016/components}/databox/DataBoxComponent.js +2 -2
  60. package/src/{components → layout-2016/components}/databox/DataBoxGroupingComponent.js +2 -0
  61. package/src/{components → layout-2016/components}/databox/DataBoxSearchResultComponent.js +1 -5
  62. package/src/{components → layout-2016/components}/databox/DataBoxStackedAssociationComponent.js +1 -5
  63. package/src/{components → layout-2016/components}/databox/DataBoxSuggestionComponent.js +0 -0
  64. package/src/{components → layout-2016/components/diagramme}/AUDiagrammeComponent.js +5 -6
  65. package/src/{components → layout-2016/components}/flowbox/FlowBoxComponent.js +8 -8
  66. package/src/{components → layout-2016/components}/flowbox/FlowBoxPhoneComponent.js +3 -5
  67. package/src/{components → layout-2016/components}/profile/AUProfileAvatar2016Component.js +6 -2
  68. package/src/{components → layout-2016/components}/universe/StaffTopComponent.js +4 -3
  69. package/src/{components → layout-2016/components}/universe/StudentTopComponent.js +0 -0
  70. package/src/{components → layout-2016/components}/universe/UniverseContainerComponent.js +11 -8
  71. package/src/layout-2016/lib/all.js +3 -0
  72. package/src/{lib → layout-2016/lib}/au-alphabox.js +1 -3
  73. package/src/{lib → layout-2016/lib}/au-databox.js +6 -9
  74. package/src/{lib → layout-2016/lib}/au-diagramme.js +2 -4
  75. package/src/{lib → layout-2016/lib}/au-flowbox.js +1 -3
  76. package/src/{lib → layout-2016/lib}/universe.js +0 -0
  77. package/src/lib/{helpers.js → helpers.ts} +40 -66
  78. package/src/lib/hooks.ts +33 -0
  79. package/src/lib/{i18n.js → i18n.ts} +600 -595
  80. package/src/lib/tracking.ts +69 -0
  81. package/src/lib/{wrapping.js → wrapping.ts} +21 -16
  82. package/src/styles/_settings.scss +11 -11
  83. package/src/styles/alphabox.scss +222 -209
  84. package/src/styles/app.scss +7 -12
  85. package/src/styles/autosuggest.scss +57 -57
  86. package/src/styles/databox.scss +563 -563
  87. package/src/styles/diagramme.scss +119 -119
  88. package/src/styles/flowbox.scss +72 -72
  89. package/src/styles/maps.scss +396 -0
  90. package/tsconfig.json +47 -0
  91. package/types/common/interfaces.d.ts +64 -0
  92. package/types/common/main.d.ts +4 -0
  93. package/types/common/package.json +5 -0
  94. package/types/common/payloads.d.ts +0 -0
  95. package/types/common/props.d.ts +138 -0
  96. package/webpack.config.js +89 -0
  97. package/.eslintrc +0 -19
  98. package/DOCUMENTATION.md +0 -369
  99. package/build/cjs/auAuth.js +0 -2
  100. package/build/cjs/auAuth.js.map +0 -1
  101. package/build/dev.html +0 -329
  102. package/build/umd/auAuth.js +0 -2
  103. package/build/umd/auAuth.js.map +0 -1
  104. package/build/umd/news.js +0 -2
  105. package/build/umd/news.js.map +0 -1
  106. package/src/all.js +0 -3
  107. package/src/app.js +0 -263
  108. package/src/components/AUAlertComponent.js +0 -158
  109. package/src/components/AUAmountComponent.js +0 -84
  110. package/src/components/AUBannerComponent.js +0 -99
  111. package/src/components/AUCalendarComponent.js +0 -393
  112. package/src/components/AUDatepickerComponent.js +0 -105
  113. package/src/components/AUFilterCheckboxComponent.js +0 -122
  114. package/src/components/AUFocusComponent.js +0 -55
  115. package/src/components/AUModalComponent.js +0 -94
  116. package/src/components/AUPaginationComponent.js +0 -103
  117. package/src/components/context/AUUserContextComponent.js +0 -91
  118. package/src/components/context/ImpersonateComponent.js +0 -54
  119. package/src/components/delphinus/AUCalendarComponent.js +0 -422
  120. package/src/components/delphinus/AUContentToggleComponent.js +0 -32
  121. package/src/components/delphinus/AUDatepickerComponent.js +0 -113
  122. package/src/components/delphinus/AULoginComponent.js +0 -65
  123. package/src/components/delphinus/AUSpinnerComponent.js +0 -114
  124. package/src/components/delphinus/AUTabbedContentComponent.js +0 -53
  125. package/src/components/delphinus/hooks.js +0 -25
  126. package/src/components/form/AUMobilePrefixComponent.js +0 -18
  127. package/src/components/news/EventLayout1Component.js +0 -94
  128. package/src/components/news/EventLayout2Component.js +0 -90
  129. package/src/components/news/EventLayout3Component.js +0 -68
  130. package/src/components/news/NewsCategoriesComponent.js +0 -21
  131. package/src/components/news/NewsCollageBannerComponent.js +0 -71
  132. package/src/components/news/NewsColumnsComponent.js +0 -125
  133. package/src/components/news/NewsLanguageChangeComponent.js +0 -74
  134. package/src/components/news/NewsLayout1Component.js +0 -80
  135. package/src/components/news/NewsLayout2Component.js +0 -80
  136. package/src/components/news/NewsLayout3Component.js +0 -81
  137. package/src/components/news/NewsLayout4Component.js +0 -80
  138. package/src/components/news/NewsLayout5Component.js +0 -61
  139. package/src/components/news/NewsLayout6Component.js +0 -55
  140. package/src/components/news/NewsLayout7Component.js +0 -58
  141. package/src/components/news/NewsLayout8Component.js +0 -57
  142. package/src/components/news/NewsListComponent.js +0 -291
  143. package/src/components/news/NewsPopUpComponent.js +0 -591
  144. package/src/components/news/NewsRSSComponent.js +0 -74
  145. package/src/components/news/NewsSocialComponent.js +0 -104
  146. package/src/components/news/NewsSubHeaderComponent.js +0 -19
  147. package/src/components/password/AUChangePasswordComponent.js +0 -177
  148. package/src/components/password/AUCurrentPasswordComponent.js +0 -72
  149. package/src/components/password/AUNewPasswordComponent.js +0 -143
  150. package/src/components/password/AUPasswordActions.js +0 -101
  151. package/src/components/password/AUPasswordHooks.js +0 -47
  152. package/src/components/password/AUPasswordReducer.js +0 -78
  153. package/src/components/password/AUPasswordRequirementsComponent.js +0 -29
  154. package/src/config/webpack.cjs.config.js +0 -75
  155. package/src/config/webpack.dev.config.js +0 -61
  156. package/src/config/webpack.umd.config.js +0 -107
  157. package/src/index.js +0 -6
  158. package/src/lib/au-auth.js +0 -221
  159. package/src/lib/au-news.js +0 -306
  160. package/src/lib/menu.js +0 -10
  161. package/src/lib/urlHandler.js +0 -63
  162. package/src/lib/validation.js +0 -181
  163. package/src/styles/alert.scss +0 -39
  164. package/src/styles/calendar.scss +0 -112
  165. package/src/styles/filtercheckbox.scss +0 -5
  166. package/src/styles/modal.scss +0 -35
  167. package/src/styles/pagination.scss +0 -11
  168. package/src/styles/spinner.scss +0 -30
@@ -1,91 +1,104 @@
1
- /* eslint-env browser */
2
- import React, { useEffect, useLayoutEffect, useRef } from 'react';
3
- import PropTypes from 'prop-types';
4
-
5
- const dismissTimeout = 5000;
6
- let timeoutId = null;
7
- const AUToastComponent = ({ message: pMessage, dismiss, onOpen }) => {
8
- const { type, message } = pMessage;
9
- const toastRef = useRef(null);
10
- const persistent = type !== 'confirm';
11
-
12
- const moveOut = (element) => {
13
- const moveOutClass = 'toast-notification--move-out';
14
- element.classList.add(moveOutClass);
15
- const moveOutElement = document.querySelector(`.${moveOutClass}`);
16
- if (moveOutElement) {
17
- moveOutElement.addEventListener('animationend', () => {
18
- dismiss();
19
- });
20
- }
21
- };
22
-
23
- useEffect(() => {
24
- onOpen();
25
- }, []);
26
-
27
- useLayoutEffect(() => {
28
- const element = toastRef.current;
29
- if (!persistent) {
30
- if (element) {
31
- element.addEventListener('animationend', () => {
32
- timeoutId = setTimeout(() => {
33
- moveOut(element);
34
- }, dismissTimeout);
35
- });
36
- element.addEventListener('mouseenter', () => {
37
- if (timeoutId) {
38
- clearTimeout(timeoutId);
39
- element.addEventListener('mouseleave', () => {
40
- moveOut(element);
41
- });
42
- }
43
- });
44
- }
45
- } else {
46
- element.querySelector('button').focus();
47
- }
48
- }, []);
49
-
50
- let className = `theme--normal toast-notification toast-notification--${type}`;
51
- if (persistent) {
52
- className = `${className} toast-notification--persistent`;
53
- }
54
- return (
55
- <div ref={toastRef} className={className}>
56
- <div className="toast-notification__content">
57
- <p dangerouslySetInnerHTML={{ __html: message }} />
58
- </div>
59
- {
60
- persistent && (
61
- <button
62
- type="button"
63
- className="button"
64
- onClick={() => {
65
- moveOut(toastRef.current);
66
- }}
67
- >
68
- OK
69
- </button>
70
- )
71
- }
72
- </div>
73
- );
74
- };
75
-
76
- AUToastComponent.defaultProps = {
77
- dismiss: () => {},
78
- onOpen: () => {},
79
- };
80
-
81
- AUToastComponent.propTypes = {
82
- message: PropTypes.shape({
83
- type: PropTypes.string.isRequired,
84
- message: PropTypes.string.isRequired,
85
- }).isRequired,
86
- dismiss: PropTypes.func,
87
- onOpen: PropTypes.func,
88
- };
89
-
90
- AUToastComponent.displayName = 'AUToastComponent';
91
- export default AUToastComponent;
1
+ /* eslint-env browser */
2
+ import React, {
3
+ useEffect, useLayoutEffect, useRef, FC,
4
+ } from 'react';
5
+ import PropTypes from 'prop-types';
6
+
7
+ const dismissTimeout = 5000;
8
+ let timeoutId: NodeJS.Timeout | null = null;
9
+
10
+ const AUToastComponent: FC<AUToastComponentProps> = ({
11
+ message: pMessage,
12
+ dismiss,
13
+ onOpen,
14
+ }: AUToastComponentProps) => {
15
+ const { type, message } = pMessage;
16
+ const toastRef = useRef<HTMLDivElement>(null);
17
+ const persistent = type !== 'confirm';
18
+
19
+ const moveOut = (element: HTMLElement): void => {
20
+ const moveOutClass = 'toast-notification--move-out';
21
+ element.classList.add(moveOutClass);
22
+ const moveOutElement = document.querySelector(`.${moveOutClass}`);
23
+ if (moveOutElement && typeof dismiss === 'function') {
24
+ moveOutElement.addEventListener('animationend', () => {
25
+ dismiss();
26
+ });
27
+ }
28
+ };
29
+
30
+ useEffect(() => {
31
+ if (typeof onOpen === 'function') {
32
+ onOpen();
33
+ }
34
+ }, []);
35
+
36
+ useLayoutEffect(() => {
37
+ const element = toastRef.current;
38
+ if (!persistent) {
39
+ if (element) {
40
+ element.addEventListener('animationend', () => {
41
+ timeoutId = setTimeout(() => {
42
+ moveOut(element);
43
+ }, dismissTimeout);
44
+ });
45
+ element.addEventListener('mouseenter', () => {
46
+ if (timeoutId) {
47
+ clearTimeout(timeoutId);
48
+ element.addEventListener('mouseleave', () => {
49
+ moveOut(element);
50
+ });
51
+ }
52
+ });
53
+ }
54
+ } else {
55
+ element?.querySelector('button')?.focus();
56
+ }
57
+ }, []);
58
+
59
+ let className = `theme--normal toast-notification toast-notification--${type}`;
60
+ if (persistent) {
61
+ className = `${className} toast-notification--persistent`;
62
+ }
63
+ return (
64
+ <div ref={toastRef} className={className}>
65
+ <div className="toast-notification__content">
66
+ <p dangerouslySetInnerHTML={{ __html: message }} />
67
+ </div>
68
+ {
69
+ persistent && (
70
+ <button
71
+ type="button"
72
+ className="button"
73
+ onClick={() => {
74
+ if (toastRef.current) {
75
+ moveOut(toastRef.current);
76
+ }
77
+ }}
78
+ >
79
+ OK
80
+ </button>
81
+ )
82
+ }
83
+ </div>
84
+ );
85
+ };
86
+
87
+ AUToastComponent.defaultProps = {
88
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
89
+ dismiss: () => { },
90
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
91
+ onOpen: () => { },
92
+ };
93
+
94
+ AUToastComponent.propTypes = {
95
+ message: PropTypes.shape({
96
+ type: PropTypes.string.isRequired,
97
+ message: PropTypes.string.isRequired,
98
+ }).isRequired,
99
+ dismiss: PropTypes.func,
100
+ onOpen: PropTypes.func,
101
+ };
102
+
103
+ AUToastComponent.displayName = 'AUToastComponent';
104
+ export default AUToastComponent;
@@ -1,48 +1,45 @@
1
- /* eslint-disable react/no-array-index-key */
2
- /* eslint-env browser */
3
- import React, { useEffect } from 'react';
4
- import PropTypes from 'prop-types';
5
- import { setToolbars, setToolbarToggle } from '@aarhus-university/au-designsystem-delphinus/source/js/components/toolbar';
6
-
7
- let windowInnerWidth = 0;
8
- const AUToolbarComponent = ({ lang, elements }) => {
9
- useEffect(() => {
10
- setToolbars();
11
- setToolbarToggle();
12
- windowInnerWidth = window.innerWidth;
13
- window.addEventListener('resize', () => {
14
- if (windowInnerWidth > 0 && window.innerWidth !== windowInnerWidth) {
15
- windowInnerWidth = window.innerWidth;
16
- setToolbars();
17
- }
18
- });
19
- }, []);
20
-
21
- const renderElements = elements.map((e, i) => <React.Fragment key={i}>{e}</React.Fragment>);
22
- const label = lang === 'da' ? 'Muligheder' : 'Options';
23
-
24
- return (
25
- <div className="toolbar">
26
- <div className="toolbar__items">
27
- {renderElements}
28
- </div>
29
- <button
30
- type="button"
31
- className="toolbar__toggle"
32
- title={label}
33
- aria-haspopup="true"
34
- >
35
- {label}
36
- </button>
37
- </div>
38
- );
39
- };
40
-
41
- AUToolbarComponent.displayName = 'AUToolbarComponent';
42
-
43
- AUToolbarComponent.propTypes = {
44
- lang: PropTypes.string.isRequired,
45
- elements: PropTypes.arrayOf(PropTypes.element).isRequired,
46
- };
47
-
48
- export default AUToolbarComponent;
1
+ /* eslint-disable react/no-array-index-key */
2
+ /* eslint-env browser */
3
+ import React, { useEffect, FC } from 'react';
4
+ import { setToolbars, setToolbarToggle } from '@aarhus-university/au-designsystem-delphinus/source/js/components/toolbar';
5
+
6
+ let windowInnerWidth = 0;
7
+
8
+ const AUToolbarComponent: FC<AUToolbarComponentProps> = ({
9
+ lang,
10
+ elements,
11
+ }: AUToolbarComponentProps) => {
12
+ useEffect(() => {
13
+ setToolbars();
14
+ setToolbarToggle();
15
+ windowInnerWidth = window.innerWidth;
16
+ window.addEventListener('resize', () => {
17
+ if (windowInnerWidth > 0 && window.innerWidth !== windowInnerWidth) {
18
+ windowInnerWidth = window.innerWidth;
19
+ setToolbars();
20
+ }
21
+ });
22
+ }, []);
23
+
24
+ const renderElements = elements.map((e, i) => <React.Fragment key={i}>{e}</React.Fragment>);
25
+ const label = lang === 'da' ? 'Muligheder' : 'Options';
26
+
27
+ return (
28
+ <div className="toolbar">
29
+ <div className="toolbar__items">
30
+ {renderElements}
31
+ </div>
32
+ <button
33
+ type="button"
34
+ className="toolbar__toggle"
35
+ title={label}
36
+ aria-haspopup="true"
37
+ >
38
+ {label}
39
+ </button>
40
+ </div>
41
+ );
42
+ };
43
+
44
+ AUToolbarComponent.displayName = 'AUToolbarComponent';
45
+ export default AUToolbarComponent;
@@ -1,113 +1,128 @@
1
- /* eslint-disable import/prefer-default-export */
2
- export const GET_BASIC_USER = 'GET_BASIC_USER';
3
- export const SAVING_USER = 'SAVING_USER';
4
- export const PATCH_NAME = 'PATCH_NAME';
5
- export const PATCH_MAIL = 'PATCH_MAIL';
6
- export const PATCH_MOBILE = 'PATCH_MOBILE';
7
- export const PATCH_LANGUAGE = 'PATCH_LANGUAGE';
8
- export const PATCH_NEXTOFKIN = 'PATCH_NEXTOFKIN';
9
- export const DISMISS_MESSAGES = 'DISMISS_MESSAGES';
10
- export const SET_SAVED = 'SET_SAVED';
11
-
12
- export const getActionCreators = () => {
13
- const actionCreators = {
14
- getBasicUser: (callback) => async (dispatch) => {
15
- callback((ok, status, json) => {
16
- const result = {};
17
- result[ok ? 'user' : 'error'] = json;
18
- result.status = status;
19
- dispatch({
20
- type: GET_BASIC_USER,
21
- result,
22
- });
23
- });
24
- },
25
- clear: () => (dispatch) => {
26
- dispatch({
27
- type: SET_SAVED,
28
- });
29
- },
30
- dismissMessages: () => (dispatch) => {
31
- dispatch({
32
- type: DISMISS_MESSAGES,
33
- });
34
- },
35
- patchName: (data, callback) => async (dispatch) => {
36
- dispatch({
37
- type: SAVING_USER,
38
- });
39
-
40
- callback(data, (ok, status, json) => {
41
- const result = {};
42
- result[ok ? 'user' : 'error'] = json;
43
- result.status = status;
44
- dispatch({
45
- type: PATCH_NAME,
46
- result,
47
- });
48
- });
49
- },
50
- patchMail: (data, callback) => async (dispatch) => {
51
- dispatch({
52
- type: SAVING_USER,
53
- });
54
-
55
- callback(data, (ok, status, json) => {
56
- const result = {};
57
- result[ok ? 'user' : 'error'] = json;
58
- result.status = status;
59
- dispatch({
60
- type: PATCH_MAIL,
61
- result,
62
- });
63
- });
64
- },
65
- patchMobile: (data, callback) => async (dispatch) => {
66
- dispatch({
67
- type: SAVING_USER,
68
- });
69
-
70
- callback(data, (ok, status, json) => {
71
- const result = {};
72
- result[ok ? 'user' : 'error'] = json;
73
- result.status = status;
74
- dispatch({
75
- type: PATCH_MOBILE,
76
- result,
77
- });
78
- });
79
- },
80
- patchLanguage: (data, callback) => async (dispatch) => {
81
- dispatch({
82
- type: SAVING_USER,
83
- });
84
-
85
- callback(data, (ok, status, json) => {
86
- const result = {};
87
- result[ok ? 'user' : 'error'] = json;
88
- result.status = status;
89
- dispatch({
90
- type: PATCH_LANGUAGE,
91
- result,
92
- });
93
- });
94
- },
95
- patchNextOfKin: (data, callback) => async (dispatch) => {
96
- dispatch({
97
- type: SAVING_USER,
98
- });
99
-
100
- callback(data, (ok, status, json) => {
101
- const result = {};
102
- result[ok ? 'user' : 'error'] = json;
103
- result.status = status;
104
- dispatch({
105
- type: PATCH_NEXTOFKIN,
106
- result,
107
- });
108
- });
109
- },
110
- };
111
-
112
- return actionCreators;
113
- };
1
+ /* eslint-disable import/prefer-default-export */
2
+ export const GET_BASIC_USER = 'GET_BASIC_USER';
3
+ export const SAVING_USER = 'SAVING_USER';
4
+ export const PATCH_NAME = 'PATCH_NAME';
5
+ export const PATCH_MAIL = 'PATCH_MAIL';
6
+ export const PATCH_MOBILE = 'PATCH_MOBILE';
7
+ export const PATCH_LANGUAGE = 'PATCH_LANGUAGE';
8
+ export const PATCH_NEXTOFKIN = 'PATCH_NEXTOFKIN';
9
+ export const DISMISS_MESSAGES = 'DISMISS_MESSAGES';
10
+ export const SET_SAVED = 'SET_SAVED';
11
+ export const GET_WORKMAIL_DOMAIN = 'GET_WORKMAIL_DOMAIN';
12
+
13
+ export const getActionCreators = () => {
14
+ const actionCreators = {
15
+ getBasicUser: (callback) => async (dispatch) => { // Tror simpelthen ikke det her er i brug...
16
+ callback((ok, status, json) => {
17
+ const result = {};
18
+ result[ok ? 'user' : 'error'] = json;
19
+ result.status = status;
20
+ dispatch({
21
+ type: GET_BASIC_USER,
22
+ result,
23
+ });
24
+ });
25
+ },
26
+ getWorkMailDomain: () => async (dispatch) => {
27
+ const url = '/v1/person/getworkmaildomain';
28
+ const response = await fetch(url);
29
+ const json = await response.json();
30
+ const result = {};
31
+ result[response.ok ? 'user' : 'error'] = response.ok ? {
32
+ workMailDomain: json
33
+ } : json;
34
+ result.status = response.status;
35
+ dispatch({
36
+ type: GET_WORKMAIL_DOMAIN,
37
+ result,
38
+ });
39
+ },
40
+ clear: () => (dispatch) => {
41
+ dispatch({
42
+ type: SET_SAVED,
43
+ });
44
+ },
45
+ dismissMessages: () => (dispatch) => {
46
+ dispatch({
47
+ type: DISMISS_MESSAGES,
48
+ });
49
+ },
50
+ patchName: (data, callback) => async (dispatch) => {
51
+ dispatch({
52
+ type: SAVING_USER,
53
+ });
54
+
55
+ callback(data, (ok, status, json) => {
56
+ const result = {};
57
+ result[ok ? 'user' : 'error'] = json;
58
+ result.status = status;
59
+ dispatch({
60
+ type: PATCH_NAME,
61
+ result,
62
+ });
63
+ });
64
+ },
65
+ patchMail: (data, callback) => async (dispatch) => {
66
+ dispatch({
67
+ type: SAVING_USER,
68
+ });
69
+
70
+ callback(data, (ok, status, json) => {
71
+ const result = {};
72
+ result[ok ? 'user' : 'error'] = json;
73
+ result.status = status;
74
+ dispatch({
75
+ type: PATCH_MAIL,
76
+ result,
77
+ });
78
+ });
79
+ },
80
+ patchMobile: (data, callback) => async (dispatch) => {
81
+ dispatch({
82
+ type: SAVING_USER,
83
+ });
84
+
85
+ callback(data, (ok, status, json) => {
86
+ const result = {};
87
+ result[ok ? 'user' : 'error'] = json;
88
+ result.status = status;
89
+ dispatch({
90
+ type: PATCH_MOBILE,
91
+ result,
92
+ });
93
+ });
94
+ },
95
+ patchLanguage: (data, callback) => async (dispatch) => {
96
+ dispatch({
97
+ type: SAVING_USER,
98
+ });
99
+
100
+ callback(data, (ok, status, json) => {
101
+ const result = {};
102
+ result[ok ? 'user' : 'error'] = json;
103
+ result.status = status;
104
+ dispatch({
105
+ type: PATCH_LANGUAGE,
106
+ result,
107
+ });
108
+ });
109
+ },
110
+ patchNextOfKin: (data, callback) => async (dispatch) => {
111
+ dispatch({
112
+ type: SAVING_USER,
113
+ });
114
+
115
+ callback(data, (ok, status, json) => {
116
+ const result = {};
117
+ result[ok ? 'user' : 'error'] = json;
118
+ result.status = status;
119
+ dispatch({
120
+ type: PATCH_NEXTOFKIN,
121
+ result,
122
+ });
123
+ });
124
+ },
125
+ };
126
+
127
+ return actionCreators;
128
+ };