@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,94 +0,0 @@
1
- /* eslint-env browser */
2
- /* eslint jsx-a11y/click-events-have-key-events: 0 */
3
- /* eslint jsx-a11y/no-noninteractive-element-interactions: 0 */
4
- /* eslint jsx-a11y/no-static-element-interactions: 0 */
5
- import React from 'react';
6
- import ReactDOM from 'react-dom';
7
- import PropTypes from 'prop-types';
8
-
9
- const AUModalComponent = (props) => {
10
- const {
11
- classNames,
12
- content,
13
- children,
14
- show,
15
- onClose,
16
- closeButton,
17
- outsideClick,
18
- } = props;
19
-
20
- const className = `au-modal ${classNames}`;
21
-
22
- if (show) {
23
- return [
24
- ReactDOM.createPortal(
25
- <div
26
- className="au-modal-overlay"
27
- onClick={() => {
28
- if (typeof onClose === 'function' && outsideClick) {
29
- onClose();
30
- }
31
- }}
32
- />,
33
- document.querySelector('body'),
34
- ),
35
- <div key={0} className={className}>
36
- {
37
- closeButton && (
38
- <button
39
- type="button"
40
- className="button close"
41
- onClick={() => {
42
- if (typeof onClose === 'function') {
43
- onClose();
44
- }
45
- }}
46
- >
47
- c
48
- </button>
49
- )
50
- }
51
- {children || content}
52
- </div>,
53
- ];
54
- }
55
-
56
- return <div />;
57
- };
58
-
59
- AUModalComponent.defaultProps = {
60
- children: null,
61
- content: null,
62
- classNames: '',
63
- onClose: null,
64
- closeButton: true,
65
- outsideClick: true,
66
- };
67
-
68
- AUModalComponent.propTypes = {
69
- /**
70
- * True når modalen skal vises
71
- */
72
- show: PropTypes.bool.isRequired,
73
- /**
74
- * Det element der trigger beskeden
75
- */
76
- children: PropTypes.element,
77
- /**
78
- * Det samme som children
79
- */
80
- content: PropTypes.element,
81
- /**
82
- * Hvis der skal tilføjes ekstra klasser til alert-komponentet
83
- */
84
- classNames: PropTypes.string,
85
- /**
86
- * Kaldes ved luk
87
- */
88
- onClose: PropTypes.func,
89
- closeButton: PropTypes.bool,
90
- outsideClick: PropTypes.bool,
91
- };
92
-
93
- AUModalComponent.displayName = 'AUModalComponent';
94
- export default AUModalComponent;
@@ -1,103 +0,0 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
-
4
- class AUPaginationComponent extends React.Component {
5
- constructor(props) {
6
- super(props);
7
-
8
- this.goTo = this.goTo.bind(this);
9
- }
10
-
11
- goTo(page) {
12
- const { onPageChange } = this.props;
13
- if (typeof onPageChange === 'function') {
14
- onPageChange(page);
15
- }
16
- }
17
-
18
- render() {
19
- const { page, pages } = this.props;
20
-
21
- const createBtn = (label, nextPage, disabled = false) => (
22
- <button
23
- type="button"
24
- disabled={disabled}
25
- onClick={() => {
26
- this.goTo(nextPage);
27
- }}
28
- >
29
- {label}
30
- </button>
31
- );
32
-
33
- let hellipBefore = false;
34
- let hellipAfter = false;
35
- const renderPages = [...Array(pages).keys()].map((_p) => {
36
- const p = _p + 1;
37
- if (p === page) {
38
- return (
39
- <li key={p} className="current">
40
- {createBtn(p, p)}
41
- </li>
42
- );
43
- }
44
- if (p === 1 || p === pages) {
45
- return <li key={p}>{createBtn(p, p)}</li>;
46
- }
47
- if (!hellipBefore && p <= page - 2) {
48
- hellipBefore = true;
49
- return <li key={p}>{createBtn('...', p, true)}</li>;
50
- }
51
- if (!hellipAfter && p >= page + 2) {
52
- hellipAfter = true;
53
- return <li key={p}>{createBtn('...', p, true)}</li>;
54
- }
55
- if (p === page - 1 || p === page + 1) {
56
- return <li key={p}>{createBtn(p, p)}</li>;
57
- }
58
- return null;
59
- });
60
-
61
- return (
62
- <ul className="resetlist au-pagination">
63
- <li>
64
- <button
65
- type="button"
66
- disabled={page === 1}
67
- onClick={() => {
68
- this.goTo(page - 1);
69
- }}
70
- >
71
- {'<'}
72
- </button>
73
- </li>
74
- {renderPages}
75
- <li>
76
- <button
77
- type="button"
78
- disabled={page === pages}
79
- onClick={() => {
80
- this.goTo(page + 1);
81
- }}
82
- >
83
- {'>'}
84
- </button>
85
- </li>
86
- </ul>
87
- );
88
- }
89
- }
90
-
91
- AUPaginationComponent.defaultProps = {
92
- page: 1,
93
- onPageChange: null,
94
- };
95
-
96
- AUPaginationComponent.propTypes = {
97
- page: PropTypes.number,
98
- pages: PropTypes.number.isRequired,
99
- onPageChange: PropTypes.func,
100
- };
101
-
102
- AUPaginationComponent.displayName = 'AUPaginationComponent';
103
- export default AUPaginationComponent;
@@ -1,91 +0,0 @@
1
- /* eslint-env browser */
2
- import React, { useState, useEffect } from 'react';
3
- import PropTypes from 'prop-types';
4
- import AUSpinnerComponent from '../delphinus/AUSpinnerComponent';
5
-
6
- const AUUserContextComponent = ({
7
- auid,
8
- contextKey,
9
- spinner,
10
- children,
11
- handleContext,
12
- handleError,
13
- loginComponent,
14
- emptyComponent,
15
- clearCache,
16
- loggedIn,
17
- enrichContext,
18
- }) => {
19
- const { auAuth } = window;
20
- const [hasContext, setHasContext] = useState(false);
21
- const setContext = () => {
22
- if ((loggedIn || auAuth.getUser() != null) && !hasContext) {
23
- auAuth.setUserContext(auid, contextKey, clearCache, (userContext) => {
24
- setHasContext(true);
25
- handleContext(userContext);
26
- console.log(`Context for key ${contextKey} has been received and sent to handler`);
27
- }, (status, json) => {
28
- setHasContext(true); // Her skal vi måske have en special fejltilstand?
29
- handleError(status, json);
30
- }, true, loggedIn, enrichContext);
31
- }
32
- };
33
- useEffect(() => {
34
- if (!spinner) {
35
- setContext();
36
- }
37
- });
38
-
39
- // Hvis vi vil vise en loginskærm, fx på mitstudie
40
- if (loginComponent != null && auAuth.getUser() == null && !loggedIn) {
41
- return loginComponent;
42
- }
43
-
44
- // Hvis spinner er slået til, viser vi content deri
45
- if (spinner) {
46
- return (
47
- <AUSpinnerComponent
48
- onLoad={setContext}
49
- loadingCondition={!hasContext}
50
- loaded={hasContext}
51
- >
52
- {children}
53
- </AUSpinnerComponent>
54
- );
55
- }
56
-
57
- // Hvis vi ikke er indlæst har vi mulighed for at vise en tom tilstand
58
- if (!hasContext) {
59
- return emptyComponent;
60
- }
61
-
62
- return children;
63
- };
64
-
65
- AUUserContextComponent.defaultProps = {
66
- auid: 0,
67
- spinner: true,
68
- loginComponent: null,
69
- emptyComponent: null,
70
- clearCache: false,
71
- loggedIn: false,
72
- handleError: (status, json) => console.error(status, json),
73
- enrichContext: async (json) => json,
74
- };
75
-
76
- AUUserContextComponent.propTypes = {
77
- auid: PropTypes.number,
78
- contextKey: PropTypes.string,
79
- spinner: PropTypes.bool,
80
- children: PropTypes.element.isRequired,
81
- handleContext: PropTypes.func.isRequired,
82
- handleError: PropTypes.func.isRequired,
83
- loginComponent: PropTypes.element,
84
- emptyComponent: PropTypes.element,
85
- clearCache: PropTypes.bool,
86
- loggedIn: PropTypes.bool,
87
- enrichContext: PropTypes.func.isRequired,
88
- };
89
-
90
- AUUserContextComponent.displayName = 'AUUserContextComponent';
91
- export default AUUserContextComponent;
@@ -1,54 +0,0 @@
1
- /* eslint-disable jsx-a11y/label-has-associated-control */
2
- /* eslint-disable jsx-a11y/label-has-for */
3
- /* eslint-env browser */
4
- import React, { useState } from 'react';
5
-
6
- const ImpersonateComponent = ({ impersonating, children }) => {
7
- const [auId, setAuid] = useState(window.API_AUID || '');
8
-
9
- let form = null;
10
- if (impersonating && !window.location.href.includes('showForm=false')) {
11
- form = (
12
- <div key="impersonate" className="page__content__block">
13
- <form method="get" action="" id="impersonate-form">
14
- <h1 className="pagetitle">
15
- Test af frontend-applikation
16
- </h1>
17
- <div className="form__field">
18
- <label htmlFor="impersonate-auId" />
19
- <input
20
- type="text"
21
- className="test"
22
- id="impersonate-auId"
23
- name="auId"
24
- value={auId}
25
- onChange={(e) => {
26
- setAuid(e.target.value);
27
- }}
28
- placeholder="Indtast auId eller studienummer for den studerende, du vil udgive dig for"
29
- />
30
- </div>
31
- <div className="form__field form__field--horizontal">
32
- <label htmlFor="presentation-mode">
33
- {'Præsentationsvisning'}
34
- </label>
35
- <input type="checkbox" name="showForm" value="false" />
36
- </div>
37
- <div className="form__field">
38
- <input type="submit" className="button" value="Test" />
39
- </div>
40
- </form>
41
- </div>
42
- );
43
- }
44
-
45
- const content = impersonating && !window.API_AUID ? null : children;
46
-
47
- return [
48
- form,
49
- content,
50
- ];
51
- };
52
-
53
- ImpersonateComponent.displayName = 'ImpersonateComponent';
54
- export default ImpersonateComponent;