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

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 (44) hide show
  1. package/build/umd/all.css +2 -2
  2. package/build/umd/all.js +1 -1
  3. package/build/umd/alphabox.js +1 -1
  4. package/build/umd/databox.js +1 -1
  5. package/build/umd/diagramme.js +1 -1
  6. package/build/umd/flowbox.js +1 -1
  7. package/build/umd/universe.js +1 -1
  8. package/package.json +1 -1
  9. package/src/components/AUAutoSuggestComponent.js +158 -158
  10. package/src/components/AUSpinnerComponent.tsx +91 -67
  11. package/src/components/AUTabbedContentComponent.tsx +1 -1
  12. package/src/components/AUToastComponent.tsx +12 -13
  13. package/src/components/profile/AUProfileLoginComponent.tsx +26 -26
  14. package/src/layout-2016/components/alphabox/AlphaBoxComponent.js +143 -143
  15. package/src/layout-2016/components/alphabox/AlphaBoxContentComponent.js +136 -136
  16. package/src/layout-2016/components/common/AUCollapsibleComponent.js +152 -152
  17. package/src/layout-2016/components/common/AUSpinnerComponent.js +103 -103
  18. package/src/layout-2016/components/databox/DataBoxAlphabetComponent.js +144 -144
  19. package/src/layout-2016/components/databox/DataBoxAssociationComponent.js +122 -122
  20. package/src/layout-2016/components/databox/DataBoxButtonComponent.js +157 -157
  21. package/src/layout-2016/components/databox/DataBoxComponent.js +297 -297
  22. package/src/layout-2016/components/databox/DataBoxGroupingComponent.js +64 -64
  23. package/src/layout-2016/components/databox/DataBoxSearchResultComponent.js +36 -36
  24. package/src/layout-2016/components/databox/DataBoxStackedAssociationComponent.js +54 -54
  25. package/src/layout-2016/components/databox/DataBoxSuggestionComponent.js +39 -39
  26. package/src/layout-2016/components/diagramme/AUDiagrammeComponent.js +309 -309
  27. package/src/layout-2016/components/flowbox/FlowBoxComponent.js +126 -126
  28. package/src/layout-2016/components/flowbox/FlowBoxPhoneComponent.js +104 -104
  29. package/src/layout-2016/components/profile/AUProfileAvatar2016Component.js +103 -103
  30. package/src/layout-2016/components/universe/StaffTopComponent.js +363 -363
  31. package/src/layout-2016/components/universe/StudentTopComponent.js +137 -137
  32. package/src/layout-2016/components/universe/UniverseContainerComponent.js +65 -65
  33. package/src/layout-2016/lib/all.js +3 -3
  34. package/src/layout-2016/lib/au-alphabox.js +100 -100
  35. package/src/layout-2016/lib/au-databox.js +400 -400
  36. package/src/layout-2016/lib/au-diagramme.js +85 -85
  37. package/src/layout-2016/lib/au-flowbox.js +93 -93
  38. package/src/layout-2016/lib/universe.js +9 -9
  39. package/src/lib/helpers.ts +194 -194
  40. package/tsconfig.json +46 -46
  41. package/types/common/interfaces/gui.d.ts +2 -1
  42. package/types/common/interfaces/model.d.ts +29 -29
  43. package/types/common/props.d.ts +166 -165
  44. package/webpack.config.js +89 -89
@@ -1,136 +1,136 @@
1
- import React from 'react';
2
- import PropTypes from 'prop-types';
3
- import { sortAlphaObj } from '../../../lib/helpers';
4
-
5
- class AlphaBoxContentComponent extends React.Component {
6
- constructor(props) {
7
- super(props);
8
- this.letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'æ', 'ø', 'å'];
9
- this.state = {
10
- letterIndex: -1,
11
- };
12
- }
13
-
14
- render() {
15
- const { letterIndex } = this.state;
16
- const {
17
- items, linkColor, noResultsText, noResultsUri,
18
- } = this.props;
19
-
20
- const renderLetters = this.letters.map((l, i) => {
21
- const available = items.filter(
22
- (x) => x.name.toLowerCase().indexOf(l) === 0,
23
- ).length > 0;
24
-
25
- let classNames = '';
26
- if (available) {
27
- classNames += 'available';
28
- }
29
-
30
- if (i === letterIndex) {
31
- classNames += ' active';
32
- }
33
-
34
- let style = {};
35
- if (available) {
36
- if (letterIndex === i) {
37
- style = { backgroundColor: '#fff', color: linkColor };
38
- } else {
39
- style = { backgroundColor: linkColor };
40
- }
41
- }
42
-
43
- return (
44
- <li
45
- key={l}
46
- className={classNames}
47
- >
48
- <button
49
- type="button"
50
- style={style}
51
- onClick={() => {
52
- if (available) {
53
- this.setState({
54
- letterIndex: i,
55
- });
56
- }
57
- }}
58
- >
59
- {l}
60
- </button>
61
- </li>
62
- );
63
- });
64
-
65
- let filtered = [];
66
- if (letterIndex > -1) {
67
- filtered = items.filter(
68
- (x) => x.name.toLowerCase().indexOf(this.letters[letterIndex]) === 0,
69
- );
70
- }
71
-
72
- const renderItems = filtered.sort(sortAlphaObj).map((item, i) => {
73
- const key = i;
74
- const renderChildren = item.children.map(
75
- (c) => <li key={c.name}><a href={c.url}>{c.name}</a></li>,
76
- );
77
-
78
- if (item.children.length > 0) {
79
- return (
80
- <li key={key}>
81
- <a href={item.url}>{item.name}</a>
82
- <ul>
83
- {renderChildren}
84
- </ul>
85
- </li>
86
- );
87
- }
88
-
89
- return (
90
- <li key={key}>
91
- <a href={item.url}>{item.name}</a>
92
- </li>
93
- );
94
- });
95
-
96
- return (
97
- <div className="au_alphabox_content">
98
- <ul className="letters">
99
- {renderLetters}
100
- </ul>
101
- {
102
- letterIndex > -1 && (
103
- <div>
104
- <ul className="items">
105
- {renderItems}
106
- {
107
- (noResultsText && noResultsUri) && (
108
- <li className="no-results"><a href={noResultsUri}>{noResultsText}</a></li>
109
- )
110
- }
111
- </ul>
112
- </div>
113
- )
114
- }
115
- </div>
116
- );
117
- }
118
- }
119
-
120
- AlphaBoxContentComponent.defaultProps = {
121
- noResultsText: '',
122
- noResultsUri: '',
123
- };
124
-
125
- AlphaBoxContentComponent.propTypes = {
126
- linkColor: PropTypes.string.isRequired,
127
- items: PropTypes.arrayOf(PropTypes.shape({
128
- name: PropTypes.string.isRequired,
129
- url: PropTypes.string.isRequired,
130
- })).isRequired,
131
- noResultsText: PropTypes.string,
132
- noResultsUri: PropTypes.string,
133
- };
134
-
135
- AlphaBoxContentComponent.displayName = 'AlphaBoxContentComponent';
136
- export default AlphaBoxContentComponent;
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { sortAlphaObj } from '../../../lib/helpers';
4
+
5
+ class AlphaBoxContentComponent extends React.Component {
6
+ constructor(props) {
7
+ super(props);
8
+ this.letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'æ', 'ø', 'å'];
9
+ this.state = {
10
+ letterIndex: -1,
11
+ };
12
+ }
13
+
14
+ render() {
15
+ const { letterIndex } = this.state;
16
+ const {
17
+ items, linkColor, noResultsText, noResultsUri,
18
+ } = this.props;
19
+
20
+ const renderLetters = this.letters.map((l, i) => {
21
+ const available = items.filter(
22
+ (x) => x.name.toLowerCase().indexOf(l) === 0,
23
+ ).length > 0;
24
+
25
+ let classNames = '';
26
+ if (available) {
27
+ classNames += 'available';
28
+ }
29
+
30
+ if (i === letterIndex) {
31
+ classNames += ' active';
32
+ }
33
+
34
+ let style = {};
35
+ if (available) {
36
+ if (letterIndex === i) {
37
+ style = { backgroundColor: '#fff', color: linkColor };
38
+ } else {
39
+ style = { backgroundColor: linkColor };
40
+ }
41
+ }
42
+
43
+ return (
44
+ <li
45
+ key={l}
46
+ className={classNames}
47
+ >
48
+ <button
49
+ type="button"
50
+ style={style}
51
+ onClick={() => {
52
+ if (available) {
53
+ this.setState({
54
+ letterIndex: i,
55
+ });
56
+ }
57
+ }}
58
+ >
59
+ {l}
60
+ </button>
61
+ </li>
62
+ );
63
+ });
64
+
65
+ let filtered = [];
66
+ if (letterIndex > -1) {
67
+ filtered = items.filter(
68
+ (x) => x.name.toLowerCase().indexOf(this.letters[letterIndex]) === 0,
69
+ );
70
+ }
71
+
72
+ const renderItems = filtered.sort(sortAlphaObj).map((item, i) => {
73
+ const key = i;
74
+ const renderChildren = item.children.map(
75
+ (c) => <li key={c.name}><a href={c.url}>{c.name}</a></li>,
76
+ );
77
+
78
+ if (item.children.length > 0) {
79
+ return (
80
+ <li key={key}>
81
+ <a href={item.url}>{item.name}</a>
82
+ <ul>
83
+ {renderChildren}
84
+ </ul>
85
+ </li>
86
+ );
87
+ }
88
+
89
+ return (
90
+ <li key={key}>
91
+ <a href={item.url}>{item.name}</a>
92
+ </li>
93
+ );
94
+ });
95
+
96
+ return (
97
+ <div className="au_alphabox_content">
98
+ <ul className="letters">
99
+ {renderLetters}
100
+ </ul>
101
+ {
102
+ letterIndex > -1 && (
103
+ <div>
104
+ <ul className="items">
105
+ {renderItems}
106
+ {
107
+ (noResultsText && noResultsUri) && (
108
+ <li className="no-results"><a href={noResultsUri}>{noResultsText}</a></li>
109
+ )
110
+ }
111
+ </ul>
112
+ </div>
113
+ )
114
+ }
115
+ </div>
116
+ );
117
+ }
118
+ }
119
+
120
+ AlphaBoxContentComponent.defaultProps = {
121
+ noResultsText: '',
122
+ noResultsUri: '',
123
+ };
124
+
125
+ AlphaBoxContentComponent.propTypes = {
126
+ linkColor: PropTypes.string.isRequired,
127
+ items: PropTypes.arrayOf(PropTypes.shape({
128
+ name: PropTypes.string.isRequired,
129
+ url: PropTypes.string.isRequired,
130
+ })).isRequired,
131
+ noResultsText: PropTypes.string,
132
+ noResultsUri: PropTypes.string,
133
+ };
134
+
135
+ AlphaBoxContentComponent.displayName = 'AlphaBoxContentComponent';
136
+ export default AlphaBoxContentComponent;
@@ -1,152 +1,152 @@
1
- /* eslint-disable @typescript-eslint/no-empty-function */
2
- import React from 'react';
3
- import PropTypes from 'prop-types';
4
-
5
- class AUCollapsibleComponent extends React.Component {
6
- constructor(props) {
7
- super(props);
8
-
9
- this.state = {
10
- collapsed: props.collapsed,
11
- };
12
- }
13
-
14
- componentDidMount() {
15
- const { attributes } = this.props;
16
- attributes.forEach((a) => {
17
- if (a.selector) {
18
- const el = this.node.querySelector(a.selector);
19
- if (el) {
20
- el.setAttribute(a.attr, a.value);
21
- }
22
- } else {
23
- this.node.setAttribute(a.attr, a.value);
24
- }
25
- });
26
- }
27
-
28
- render() {
29
- const {
30
- header,
31
- level,
32
- content,
33
- classNames,
34
- onClick,
35
- children,
36
- dataID,
37
- headerElement,
38
- } = this.props;
39
- const { collapsed } = this.state;
40
- let className = 'csc-frame au_collapsible';
41
- if (collapsed) {
42
- className += ' au_collapsed';
43
- }
44
-
45
- if (classNames) {
46
- className += ` ${classNames}`;
47
- }
48
-
49
- return (
50
- <div data-id={dataID} ref={(node) => { this.node = node; }} className={className}>
51
- {(() => {
52
- if (level > -1) {
53
- return (
54
- <div
55
- className="csc-header"
56
- onClick={() => {
57
- this.setState((prevState) => ({
58
- collapsed: !prevState.collapsed,
59
- }), () => {
60
- const { collapsed: newCollapsed } = this.state;
61
- onClick(newCollapsed, this.node);
62
- });
63
- }}
64
- onKeyUp={() => {
65
-
66
- }}
67
- role="button"
68
- tabIndex={0}
69
- >
70
- {(() => {
71
- switch (level) {
72
- case 0 && headerElement != null:
73
- return headerElement;
74
- case 1:
75
- return (
76
- <h1>
77
- {header}
78
- </h1>
79
- );
80
- case 2:
81
- return (
82
- <h2>
83
- {header}
84
- </h2>
85
- );
86
- case 3:
87
- return (
88
- <h3>
89
- {header}
90
- </h3>
91
- );
92
- case 4:
93
- return (
94
- <h4>
95
- {header}
96
- </h4>
97
- );
98
- case 5:
99
- return (
100
- <h5>
101
- {header}
102
- </h5>
103
- );
104
- default:
105
- return (
106
- <h6>
107
- {header}
108
- </h6>
109
- );
110
- }
111
- })()}
112
- </div>
113
- );
114
- }
115
- return null;
116
- })()}
117
- {children || content}
118
- </div>
119
- );
120
- }
121
- }
122
-
123
- AUCollapsibleComponent.defaultProps = {
124
- dataID: null,
125
- children: null,
126
- content: null,
127
- header: '',
128
- headerElement: null,
129
- level: 1,
130
- classNames: '',
131
- onClick: () => { },
132
- attributes: [],
133
- };
134
-
135
- AUCollapsibleComponent.propTypes = {
136
- dataID: PropTypes.string,
137
- children: PropTypes.element,
138
- collapsed: PropTypes.bool.isRequired,
139
- header: PropTypes.string,
140
- headerElement: PropTypes.element,
141
- level: PropTypes.number,
142
- content: PropTypes.element,
143
- classNames: PropTypes.string,
144
- onClick: PropTypes.func,
145
- attributes: PropTypes.arrayOf(PropTypes.shape({
146
- attr: PropTypes.string,
147
- value: PropTypes.string,
148
- selector: PropTypes.string,
149
- })),
150
- };
151
- AUCollapsibleComponent.displayName = 'AUCollapsibleComponent';
152
- export default AUCollapsibleComponent;
1
+ /* eslint-disable @typescript-eslint/no-empty-function */
2
+ import React from 'react';
3
+ import PropTypes from 'prop-types';
4
+
5
+ class AUCollapsibleComponent extends React.Component {
6
+ constructor(props) {
7
+ super(props);
8
+
9
+ this.state = {
10
+ collapsed: props.collapsed,
11
+ };
12
+ }
13
+
14
+ componentDidMount() {
15
+ const { attributes } = this.props;
16
+ attributes.forEach((a) => {
17
+ if (a.selector) {
18
+ const el = this.node.querySelector(a.selector);
19
+ if (el) {
20
+ el.setAttribute(a.attr, a.value);
21
+ }
22
+ } else {
23
+ this.node.setAttribute(a.attr, a.value);
24
+ }
25
+ });
26
+ }
27
+
28
+ render() {
29
+ const {
30
+ header,
31
+ level,
32
+ content,
33
+ classNames,
34
+ onClick,
35
+ children,
36
+ dataID,
37
+ headerElement,
38
+ } = this.props;
39
+ const { collapsed } = this.state;
40
+ let className = 'csc-frame au_collapsible';
41
+ if (collapsed) {
42
+ className += ' au_collapsed';
43
+ }
44
+
45
+ if (classNames) {
46
+ className += ` ${classNames}`;
47
+ }
48
+
49
+ return (
50
+ <div data-id={dataID} ref={(node) => { this.node = node; }} className={className}>
51
+ {(() => {
52
+ if (level > -1) {
53
+ return (
54
+ <div
55
+ className="csc-header"
56
+ onClick={() => {
57
+ this.setState((prevState) => ({
58
+ collapsed: !prevState.collapsed,
59
+ }), () => {
60
+ const { collapsed: newCollapsed } = this.state;
61
+ onClick(newCollapsed, this.node);
62
+ });
63
+ }}
64
+ onKeyUp={() => {
65
+
66
+ }}
67
+ role="button"
68
+ tabIndex={0}
69
+ >
70
+ {(() => {
71
+ switch (level) {
72
+ case 0 && headerElement != null:
73
+ return headerElement;
74
+ case 1:
75
+ return (
76
+ <h1>
77
+ {header}
78
+ </h1>
79
+ );
80
+ case 2:
81
+ return (
82
+ <h2>
83
+ {header}
84
+ </h2>
85
+ );
86
+ case 3:
87
+ return (
88
+ <h3>
89
+ {header}
90
+ </h3>
91
+ );
92
+ case 4:
93
+ return (
94
+ <h4>
95
+ {header}
96
+ </h4>
97
+ );
98
+ case 5:
99
+ return (
100
+ <h5>
101
+ {header}
102
+ </h5>
103
+ );
104
+ default:
105
+ return (
106
+ <h6>
107
+ {header}
108
+ </h6>
109
+ );
110
+ }
111
+ })()}
112
+ </div>
113
+ );
114
+ }
115
+ return null;
116
+ })()}
117
+ {children || content}
118
+ </div>
119
+ );
120
+ }
121
+ }
122
+
123
+ AUCollapsibleComponent.defaultProps = {
124
+ dataID: null,
125
+ children: null,
126
+ content: null,
127
+ header: '',
128
+ headerElement: null,
129
+ level: 1,
130
+ classNames: '',
131
+ onClick: () => { },
132
+ attributes: [],
133
+ };
134
+
135
+ AUCollapsibleComponent.propTypes = {
136
+ dataID: PropTypes.string,
137
+ children: PropTypes.element,
138
+ collapsed: PropTypes.bool.isRequired,
139
+ header: PropTypes.string,
140
+ headerElement: PropTypes.element,
141
+ level: PropTypes.number,
142
+ content: PropTypes.element,
143
+ classNames: PropTypes.string,
144
+ onClick: PropTypes.func,
145
+ attributes: PropTypes.arrayOf(PropTypes.shape({
146
+ attr: PropTypes.string,
147
+ value: PropTypes.string,
148
+ selector: PropTypes.string,
149
+ })),
150
+ };
151
+ AUCollapsibleComponent.displayName = 'AUCollapsibleComponent';
152
+ export default AUCollapsibleComponent;