@aarhus-university/au-lib-react-components 9.11.19 → 10.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.eslintrc.js +44 -0
  2. package/README.md +19 -20
  3. package/babel.config.js +7 -6
  4. package/build/umd/all.css +1 -1
  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 -2
  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 -60
  19. package/src/components/{delphinus/AUAlertComponent.js → AUAlertComponent.tsx} +70 -85
  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} +80 -94
  26. package/src/components/{form/AUReceiptComponent.js → AUReceiptComponent.tsx} +33 -40
  27. package/src/components/AUSpinnerComponent.tsx +67 -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/{delphinus/AUTabbedContentComponent.js → AUTabbedContentComponent.tsx} +145 -150
  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 -128
  35. package/src/components/profile/AUProfileAvatarComponent.js +83 -83
  36. package/src/components/profile/AUProfileAvatarV2Component.js +91 -91
  37. package/src/components/profile/AUProfileAvatarV3Component.tsx +42 -0
  38. package/src/components/profile/AUProfileContainerComponent.js +283 -283
  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 → AUProfileLoginComponent.tsx} +3 -18
  43. package/src/components/profile/AUProfileMailComponent.js +307 -307
  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 -230
  48. package/src/components/profile/AUProfileWidgetComponent.js +95 -95
  49. package/src/components/profile/AUProfileWidgetV2Component.js +116 -116
  50. package/src/components/profile/{AUProfileWidgetV3Component.js → AUProfileWidgetV3Component.tsx} +122 -130
  51. package/src/components/wrapping/AUEmbedComponent.js +47 -47
  52. package/src/{components → layout-2016/components}/alphabox/AlphaBoxComponent.js +28 -25
  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} +31 -59
  78. package/src/{components/delphinus/hooks.js → lib/hooks.ts} +33 -28
  79. package/src/lib/{i18n.js → i18n.ts} +600 -601
  80. package/src/lib/{tracking.js → tracking.ts} +69 -65
  81. package/src/lib/{wrapping.js → wrapping.ts} +21 -16
  82. package/src/styles/_settings.scss +10 -10
  83. package/src/styles/alphabox.scss +222 -208
  84. package/src/styles/app.scss +7 -13
  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 +395 -395
  90. package/tsconfig.json +47 -0
  91. package/types/common/interfaces/gui.d.ts +63 -0
  92. package/types/common/interfaces/model.d.ts +29 -0
  93. package/types/common/main.d.ts +5 -0
  94. package/types/common/package.json +5 -0
  95. package/types/common/payloads.d.ts +0 -0
  96. package/types/common/props.d.ts +165 -0
  97. package/{src/config/webpack.umd.config.js → webpack.config.js} +20 -16
  98. package/.eslintrc +0 -19
  99. package/build/dev.html +0 -329
  100. package/build/umd/auAuth.js +0 -2
  101. package/build/umd/auAuth.js.map +0 -1
  102. package/build/umd/databox.js.LICENSE.txt +0 -5
  103. package/build/umd/news.js +0 -2
  104. package/build/umd/news.js.map +0 -1
  105. package/src/all.js +0 -3
  106. package/src/app.js +0 -263
  107. package/src/components/AUAlertComponent.js +0 -158
  108. package/src/components/AUAmountComponent.js +0 -84
  109. package/src/components/AUBannerComponent.js +0 -99
  110. package/src/components/AUCalendarComponent.js +0 -393
  111. package/src/components/AUDatepickerComponent.js +0 -105
  112. package/src/components/AUFilterCheckboxComponent.js +0 -122
  113. package/src/components/AUFocusComponent.js +0 -55
  114. package/src/components/AUModalComponent.js +0 -94
  115. package/src/components/AUPaginationComponent.js +0 -103
  116. package/src/components/context/AUUserContextComponent.js +0 -91
  117. package/src/components/context/ImpersonateComponent.js +0 -54
  118. package/src/components/delphinus/AUCalendarComponent.js +0 -487
  119. package/src/components/delphinus/AUContentToggleComponent.js +0 -32
  120. package/src/components/delphinus/AUDatepickerComponent.js +0 -164
  121. package/src/components/delphinus/AULoginComponent.js +0 -65
  122. package/src/components/delphinus/AUSpinnerComponent.js +0 -114
  123. package/src/components/form/AUMobilePrefixComponent.js +0 -18
  124. package/src/components/news/EventLayout1Component.js +0 -94
  125. package/src/components/news/EventLayout2Component.js +0 -90
  126. package/src/components/news/EventLayout3Component.js +0 -68
  127. package/src/components/news/NewsCategoriesComponent.js +0 -21
  128. package/src/components/news/NewsCollageBannerComponent.js +0 -71
  129. package/src/components/news/NewsCollageBannerRSSComponent.js +0 -79
  130. package/src/components/news/NewsColumnsComponent.js +0 -125
  131. package/src/components/news/NewsLanguageChangeComponent.js +0 -74
  132. package/src/components/news/NewsLayout1Component.js +0 -80
  133. package/src/components/news/NewsLayout2Component.js +0 -80
  134. package/src/components/news/NewsLayout3Component.js +0 -81
  135. package/src/components/news/NewsLayout4Component.js +0 -80
  136. package/src/components/news/NewsLayout5Component.js +0 -61
  137. package/src/components/news/NewsLayout6Component.js +0 -55
  138. package/src/components/news/NewsLayout7Component.js +0 -58
  139. package/src/components/news/NewsLayout8Component.js +0 -57
  140. package/src/components/news/NewsListComponent.js +0 -291
  141. package/src/components/news/NewsPopUpComponent.js +0 -591
  142. package/src/components/news/NewsRSSComponent.js +0 -74
  143. package/src/components/news/NewsSocialComponent.js +0 -104
  144. package/src/components/news/NewsSubHeaderComponent.js +0 -19
  145. package/src/components/password/AUChangePasswordComponent.js +0 -177
  146. package/src/components/password/AUCurrentPasswordComponent.js +0 -72
  147. package/src/components/password/AUNewPasswordComponent.js +0 -143
  148. package/src/components/password/AUPasswordActions.js +0 -101
  149. package/src/components/password/AUPasswordHooks.js +0 -47
  150. package/src/components/password/AUPasswordReducer.js +0 -78
  151. package/src/components/password/AUPasswordRequirementsComponent.js +0 -29
  152. package/src/components/profile/AUProfileAvatarV3Component.js +0 -80
  153. package/src/config/webpack.dev.config.js +0 -47
  154. package/src/index.js +0 -6
  155. package/src/lib/au-auth.js +0 -227
  156. package/src/lib/au-news.js +0 -371
  157. package/src/lib/menu.js +0 -10
  158. package/src/lib/urlHandler.js +0 -63
  159. package/src/lib/validation.js +0 -181
  160. package/src/styles/alert.scss +0 -39
  161. package/src/styles/calendar.scss +0 -112
  162. package/src/styles/filtercheckbox.scss +0 -5
  163. package/src/styles/modal.scss +0 -35
  164. package/src/styles/pagination.scss +0 -11
  165. 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;