@aarhus-university/au-lib-react-components 8.20.1 → 8.81.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 (167) 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.tsx +42 -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.tsx +118 -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} +41 -66
  78. package/src/{components/delphinus/hooks.js → lib/hooks.ts} +33 -26
  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 +83 -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 +158 -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/form/AUMobilePrefixComponent.js +0 -18
  126. package/src/components/news/EventLayout1Component.js +0 -94
  127. package/src/components/news/EventLayout2Component.js +0 -90
  128. package/src/components/news/EventLayout3Component.js +0 -68
  129. package/src/components/news/NewsCategoriesComponent.js +0 -21
  130. package/src/components/news/NewsCollageBannerComponent.js +0 -71
  131. package/src/components/news/NewsColumnsComponent.js +0 -125
  132. package/src/components/news/NewsLanguageChangeComponent.js +0 -74
  133. package/src/components/news/NewsLayout1Component.js +0 -80
  134. package/src/components/news/NewsLayout2Component.js +0 -80
  135. package/src/components/news/NewsLayout3Component.js +0 -81
  136. package/src/components/news/NewsLayout4Component.js +0 -80
  137. package/src/components/news/NewsLayout5Component.js +0 -61
  138. package/src/components/news/NewsLayout6Component.js +0 -55
  139. package/src/components/news/NewsLayout7Component.js +0 -58
  140. package/src/components/news/NewsLayout8Component.js +0 -57
  141. package/src/components/news/NewsListComponent.js +0 -291
  142. package/src/components/news/NewsPopUpComponent.js +0 -591
  143. package/src/components/news/NewsRSSComponent.js +0 -74
  144. package/src/components/news/NewsSocialComponent.js +0 -104
  145. package/src/components/news/NewsSubHeaderComponent.js +0 -19
  146. package/src/components/password/AUChangePasswordComponent.js +0 -177
  147. package/src/components/password/AUCurrentPasswordComponent.js +0 -72
  148. package/src/components/password/AUNewPasswordComponent.js +0 -143
  149. package/src/components/password/AUPasswordActions.js +0 -101
  150. package/src/components/password/AUPasswordHooks.js +0 -47
  151. package/src/components/password/AUPasswordReducer.js +0 -78
  152. package/src/components/password/AUPasswordRequirementsComponent.js +0 -29
  153. package/src/config/webpack.cjs.config.js +0 -75
  154. package/src/config/webpack.dev.config.js +0 -61
  155. package/src/config/webpack.umd.config.js +0 -107
  156. package/src/index.js +0 -6
  157. package/src/lib/au-auth.js +0 -221
  158. package/src/lib/au-news.js +0 -306
  159. package/src/lib/menu.js +0 -10
  160. package/src/lib/urlHandler.js +0 -63
  161. package/src/lib/validation.js +0 -181
  162. package/src/styles/alert.scss +0 -39
  163. package/src/styles/calendar.scss +0 -112
  164. package/src/styles/filtercheckbox.scss +0 -5
  165. package/src/styles/modal.scss +0 -35
  166. package/src/styles/pagination.scss +0 -11
  167. 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
+ };