@sis-cc/dotstatsuite-visions 7.4.0 → 7.5.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.
@@ -1,5 +1,6 @@
1
1
  import React, { Fragment } from 'react';
2
2
  import PropTypes from 'prop-types';
3
+ import cx from 'classnames';
3
4
  import * as R from 'ramda';
4
5
  import useSize from '@react-hook/size';
5
6
  import Grid from '@material-ui/core/Grid';
@@ -42,15 +43,23 @@ var useStyles = makeStyles(function (theme) {
42
43
  logo: {
43
44
  height: HEIGHT / 2,
44
45
  display: 'flex'
46
+ },
47
+ sticky: {
48
+ position: 'sticky',
49
+ right: 0
45
50
  }
46
51
  };
47
52
  });
48
53
 
49
54
  var DataFooter = function DataFooter(_ref3) {
55
+ var _cx;
56
+
50
57
  var logo = _ref3.logo,
51
58
  source = _ref3.source,
52
59
  copyright = _ref3.copyright,
53
- legend = _ref3.legend;
60
+ legend = _ref3.legend,
61
+ _ref3$isSticky = _ref3.isSticky,
62
+ isSticky = _ref3$isSticky === undefined ? false : _ref3$isSticky;
54
63
 
55
64
  var target = React.useRef(null);
56
65
 
@@ -81,7 +90,7 @@ var DataFooter = function DataFooter(_ref3) {
81
90
  ),
82
91
  React.createElement(
83
92
  Grid,
84
- { item: true, style: { alignSelf: 'flex-end' } },
93
+ { item: true, style: { alignSelf: 'flex-end' }, className: cx((_cx = {}, _cx[classes.sticky] = isSticky, _cx)) },
85
94
  React.createElement(
86
95
  Grid,
87
96
  {
@@ -168,7 +177,8 @@ DataFooter.propTypes = process.env.NODE_ENV !== "production" ? {
168
177
  label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
169
178
  content: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
170
179
  }),
171
- legend: PropTypes.element
180
+ legend: PropTypes.element,
181
+ isSticky: PropTypes.bool
172
182
  } : {};
173
183
 
174
184
  export default DataFooter;
@@ -23,6 +23,7 @@
23
23
  * content: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
24
24
  * }),
25
25
  * legend: PropTypes.element,
26
+ * isSticky: PropTypes.bool,
26
27
  * @theme
27
28
  * // tooltip (see Tooltip Component)
28
29
  * @demoReady
@@ -94,6 +94,10 @@ var useStyles = makeStyles(function (theme) {
94
94
  marginLeft: 20,
95
95
  maxWidth: 270
96
96
  }, theme.typography.body1),
97
+ sticky: {
98
+ position: 'sticky',
99
+ left: 0
100
+ },
97
101
  sideIconContainer: {
98
102
  marginLeft: '10px'
99
103
  }
@@ -101,6 +105,8 @@ var useStyles = makeStyles(function (theme) {
101
105
  });
102
106
 
103
107
  var DataHeader = function DataHeader(_ref4) {
108
+ var _cx;
109
+
104
110
  var children = _ref4.children,
105
111
  title = _ref4.title,
106
112
  _ref4$subtitle = _ref4.subtitle,
@@ -108,7 +114,9 @@ var DataHeader = function DataHeader(_ref4) {
108
114
  uprs = _ref4.uprs,
109
115
  disclaimer = _ref4.disclaimer,
110
116
  sideProps = _ref4.sideProps,
111
- SideIcon = _ref4.SideIcon;
117
+ SideIcon = _ref4.SideIcon,
118
+ _ref4$isSticky = _ref4.isSticky,
119
+ isSticky = _ref4$isSticky === undefined ? false : _ref4$isSticky;
112
120
 
113
121
  var target = React.useRef(null);
114
122
 
@@ -133,7 +141,7 @@ var DataHeader = function DataHeader(_ref4) {
133
141
  { className: classes.header, ref: target },
134
142
  React.createElement(
135
143
  'div',
136
- { className: classes.container },
144
+ { className: cx(classes.container, (_cx = {}, _cx[classes.sticky] = isSticky, _cx)) },
137
145
  isWidthUp(T4_BREAKPOINTS.xs2) && title && React.createElement(
138
146
  Typography,
139
147
  { variant: 'h1', className: classes.title },
@@ -235,7 +243,8 @@ DataHeader.propTypes = process.env.NODE_ENV !== "production" ? {
235
243
  sideProps: PropTypes.object,
236
244
  SideIcon: PropTypes.func,
237
245
  disclaimer: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
238
- children: PropTypes.node
246
+ children: PropTypes.node,
247
+ isSticky: PropTypes.bool
239
248
  } : {};
240
249
 
241
250
  export default DataHeader;
@@ -35,6 +35,7 @@
35
35
  * label: PropTypes.string,
36
36
  * }),
37
37
  * disclaimer: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
38
+ * isSticky: PropTypes.bool,
38
39
  * @theme
39
40
  * // tooltip (see Tooltip Component)
40
41
  * {
@@ -93,7 +93,6 @@ var CustomExpansionPanel = function CustomExpansionPanel(_ref) {
93
93
  CustomExpansionPanel.propTypes = process.env.NODE_ENV !== "production" ? {
94
94
  testId: PropTypes.string,
95
95
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
96
- classes: PropTypes.object,
97
96
  topElementComponent: PropTypes.element,
98
97
  onChangeActivePanel: PropTypes.func,
99
98
  label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
@@ -9,7 +9,6 @@
9
9
  * ExpansionPanel.propTypes = {
10
10
  * testId: PropTypes.string,
11
11
  * id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
12
- * classes: PropTypes.object,
13
12
  * topElementComponent: PropTypes.element,
14
13
  * onChangeActivePanel: PropTypes.func,
15
14
  * label: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
@@ -33,6 +33,7 @@ var Item = function Item(_ref) {
33
33
  var classes = _ref.classes,
34
34
  id = _ref.id,
35
35
  label = _ref.label,
36
+ description = _ref.description,
36
37
  _ref$nodePath = _ref.nodePath,
37
38
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
38
39
  isSelected = _ref.isSelected,
@@ -103,14 +104,24 @@ var Item = function Item(_ref) {
103
104
  React.createElement('path', { d: svgPath })
104
105
  ),
105
106
  React.createElement(
106
- Typography,
107
+ Tooltip,
107
108
  {
108
- 'data-testid': testId + '_value_' + id,
109
- color: 'inherit',
110
- variant: 'body2',
111
- className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6))
109
+ title: R.isNil(description) ? '' : description,
110
+ tabIndex: 0,
111
+ 'aria-label': description,
112
+ 'aria-hidden': false,
113
+ placement: 'top'
112
114
  },
113
- label
115
+ React.createElement(
116
+ Typography,
117
+ {
118
+ 'data-testid': testId + '_value_' + id,
119
+ color: 'inherit',
120
+ variant: 'body2',
121
+ className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
122
+ },
123
+ label
124
+ )
114
125
  ),
115
126
  R.not(R.isNil(count)) && React.createElement(
116
127
  Typography,
@@ -181,6 +192,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
181
192
  classes: PropTypes.object,
182
193
  id: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
183
194
  label: PropTypes.string,
195
+ description: PropTypes.string,
184
196
  parentId: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
185
197
  nodePath: PropTypes.array,
186
198
  ariaLabel: PropTypes.string,
@@ -143,6 +143,9 @@ export var useStyles = makeStyles(function (theme) {
143
143
  },
144
144
  bulkSelectionIcon: {
145
145
  minWidth: 50
146
+ },
147
+ tooltipNotice: {
148
+ textDecoration: 'underline dotted'
146
149
  }
147
150
  };
148
151
  });
@@ -31,16 +31,24 @@ var useStyles = makeStyles(function (theme) {
31
31
  },
32
32
  rtl: {
33
33
  textAlign: 'right'
34
+ },
35
+ fixed: {
36
+ position: 'fixed',
37
+ bottom: 0,
38
+ left: 0,
39
+ width: '100%',
40
+ zIndex: 0
34
41
  }
35
42
  };
36
43
  });
37
44
 
38
- var SisccFooter = function SisccFooter(_ref) {
39
- var _cx, _cx2;
45
+ var SisccFooter = React.forwardRef(function (_ref, ref) {
46
+ var _cx, _cx2, _cx3;
40
47
 
41
48
  var leftLabel = _ref.leftLabel,
42
49
  _ref$rightLabel = _ref.rightLabel,
43
- rightLabel = _ref$rightLabel === undefined ? [] : _ref$rightLabel;
50
+ rightLabel = _ref$rightLabel === undefined ? [] : _ref$rightLabel,
51
+ isFixed = _ref.isFixed;
44
52
 
45
53
  var classes = useStyles();
46
54
  var theme = useTheme();
@@ -48,7 +56,12 @@ var SisccFooter = function SisccFooter(_ref) {
48
56
 
49
57
  return React.createElement(
50
58
  AppBar,
51
- { 'data-testid': 'footer-bar-test-id', position: 'static', className: classes.appBar },
59
+ {
60
+ ref: ref,
61
+ 'data-testid': 'footer-bar-test-id',
62
+ position: 'static',
63
+ className: cx(classes.appBar, (_cx = {}, _cx[classes.fixed] = isFixed, _cx))
64
+ },
52
65
  React.createElement(
53
66
  Toolbar,
54
67
  { classes: { root: classes.root, gutters: classes.gutters } },
@@ -57,7 +70,7 @@ var SisccFooter = function SisccFooter(_ref) {
57
70
  { xs: 4, item: true, container: true, justifyContent: 'flex-start', alignItems: 'flex-start' },
58
71
  React.createElement(
59
72
  Typography,
60
- { variant: 'body2', className: cx(classes.leftLabel, (_cx = {}, _cx[classes.rtl] = isRtl, _cx)) },
73
+ { variant: 'body2', className: cx(classes.leftLabel, (_cx2 = {}, _cx2[classes.rtl] = isRtl, _cx2)) },
61
74
  leftLabel
62
75
  )
63
76
  ),
@@ -66,17 +79,18 @@ var SisccFooter = function SisccFooter(_ref) {
66
79
  { xs: 8, item: true, container: true, justifyContent: 'flex-end', alignItems: 'flex-start' },
67
80
  React.createElement(
68
81
  Typography,
69
- { variant: 'body2', className: cx(classes.rightLabel, (_cx2 = {}, _cx2[classes.rtl] = !isRtl, _cx2)) },
82
+ { variant: 'body2', className: cx(classes.rightLabel, (_cx3 = {}, _cx3[classes.rtl] = !isRtl, _cx3)) },
70
83
  rightLabel
71
84
  )
72
85
  )
73
86
  )
74
87
  );
75
- };
88
+ });
76
89
 
77
90
  SisccFooter.propTypes = process.env.NODE_ENV !== "production" ? {
78
91
  leftLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
79
- rightLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
92
+ rightLabel: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
93
+ isFixed: PropTypes.bool
80
94
  } : {};
81
95
 
82
96
  export default SisccFooter;
@@ -31,6 +31,9 @@ var useStyles = makeStyles(function (theme) {
31
31
  link: {
32
32
  position: 'inherit',
33
33
  userSelect: 'inherit'
34
+ },
35
+ value: {
36
+ overflow: 'inherit'
34
37
  }
35
38
  };
36
39
  });
@@ -82,7 +85,7 @@ var Cell = function Cell(_ref) {
82
85
  React.createElement(
83
86
  Typography,
84
87
  { variant: 'body1', tabIndex: 0, noWrap: hasFlag },
85
- !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: sideProps }),
88
+ !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: sideProps, className: classes.value }),
86
89
  hasFlag && React.createElement(Flags, { flags: flags }),
87
90
  uiValue
88
91
  )
@@ -20,7 +20,6 @@ var useStyles = makeStyles(function (theme) {
20
20
  margin: 0
21
21
  }, theme.typography.body1),
22
22
  flags: _extends({
23
- verticalAlign: 'super',
24
23
  borderBottom: '1px dotted',
25
24
  borderColor: 'inherit',
26
25
  margin: theme.spacing(0, 0.5),
@@ -28,7 +27,9 @@ var useStyles = makeStyles(function (theme) {
28
27
  display: 'inline',
29
28
  fontWeight: 'bold',
30
29
  fontStyle: 'normal',
31
- textTransform: 'uppercase'
30
+ textTransform: 'uppercase',
31
+ position: 'relative',
32
+ top: '-4px'
32
33
  }, R.pathOr({}, ['mixins', 'table', 'flag'], theme)),
33
34
  svg: {
34
35
  verticalAlign: 'middle'
@@ -37,9 +37,6 @@ var useStyles = makeStyles(function (theme) {
37
37
  fontStyle: 'inherit',
38
38
  fontWeight: 'bold'
39
39
  },
40
- topCell: {
41
- paddingTop: 0
42
- },
43
40
  stickyLabel: {
44
41
  position: 'sticky'
45
42
  }
@@ -63,8 +60,6 @@ var Header = function Header(_ref) {
63
60
 
64
61
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(headerData)) return null;
65
62
  return timesIndexed(function (index) {
66
- var _cx;
67
-
68
63
  var flags = R.path([0, 'data', index, 'dimension', 'flags'], headerData);
69
64
  var id = 'header_' + index;
70
65
  return React.createElement(
@@ -76,7 +71,7 @@ var Header = function Header(_ref) {
76
71
  component: 'th',
77
72
  padding: 'none',
78
73
  align: 'center',
79
- className: cx(classes.tableHeadCell, (_cx = {}, _cx[classes.topCell] = R.not(R.isEmpty(flags)), _cx)),
74
+ className: classes.tableHeadCell,
80
75
  colSpan: R.inc(xLayoutDataLength),
81
76
  id: id,
82
77
  tabIndex: 0,
@@ -94,7 +89,7 @@ var Header = function Header(_ref) {
94
89
  )
95
90
  ),
96
91
  mapIndexed(function (headerItem, idx) {
97
- var _cx2;
92
+ var _cx;
98
93
 
99
94
  var flags = R.prop('flags', headerItem);
100
95
  return React.createElement(
@@ -102,7 +97,7 @@ var Header = function Header(_ref) {
102
97
  {
103
98
  key: R.prop('id', headerItem) + '-' + idx,
104
99
  component: 'th',
105
- className: cx(classes.tableHeadCell, (_cx2 = {}, _cx2[classes.topCell] = R.not(R.isEmpty(flags)), _cx2)),
100
+ className: cx(classes.tableHeadCell, (_cx = {}, _cx[classes.topCell] = R.not(R.isEmpty(flags)), _cx)),
106
101
  id: idx + '_' + index,
107
102
  headers: 'header_' + index,
108
103
  colSpan: R.prop('spanCount', headerItem),
@@ -1,6 +1,6 @@
1
1
  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
2
2
 
3
- import React, { Fragment } from 'react';
3
+ import React from 'react';
4
4
  import * as R from 'ramda';
5
5
  import PropTypes from 'prop-types';
6
6
  import cx from 'classnames';
@@ -33,7 +33,8 @@ var useStyles = makeStyles(function (theme) {
33
33
  borderBottom: '1px solid ' + theme.palette.grey[500],
34
34
  borderRight: '1px solid ' + theme.palette.grey[500],
35
35
  padding: theme.spacing(0.5) + 'px ' + theme.spacing(1) + 'px',
36
- position: 'sticky'
36
+ position: 'sticky',
37
+ zIndex: 1
37
38
  },
38
39
  cellContent: {
39
40
  display: 'flex',
@@ -3,6 +3,7 @@ var _extends = Object.assign || function (target) { for (var i = 1; i < argument
3
3
  import React, { Fragment } from 'react';
4
4
  import * as R from 'ramda';
5
5
  import PropTypes from 'prop-types';
6
+ import cx from 'classnames';
6
7
  import Typography from '@material-ui/core/Typography';
7
8
  import { makeStyles } from '@material-ui/core/styles';
8
9
  import Lens from '@material-ui/icons/Lens';
@@ -18,7 +19,7 @@ var useStyles = makeStyles(function (theme) {
18
19
  border: 'inherit',
19
20
  borderBottom: '1px solid ' + theme.palette.grey[500],
20
21
  borderRight: '1px solid ' + theme.palette.grey[500],
21
- padding: theme.spacing(0.5) + 'px ' + theme.spacing(1) + 'px',
22
+ padding: theme.spacing(0, 1),
22
23
  color: theme.palette.grey['A700'],
23
24
  verticalAlign: 'middle'
24
25
  },
@@ -32,18 +33,26 @@ var useStyles = makeStyles(function (theme) {
32
33
  marginRight: theme.spacing(0.5)
33
34
  },
34
35
  containerSection: {
35
- alignItems: 'baseline',
36
- display: 'flex'
36
+ display: 'flex',
37
+ justifyContent: 'space-between',
38
+ alignItems: 'center'
37
39
  },
38
40
  stickyHeaderSection: {
39
41
  position: 'sticky'
40
42
  },
41
- containerTextSection: {
42
- display: 'flex',
43
- alignItems: 'center'
44
- },
45
- flags: {
43
+ flag: {
44
+ height: '100%',
45
+ backgroundColor: getDark(theme) || theme.palette.secondary.dark,
46
46
  paddingLeft: 12
47
+ },
48
+ leftLabelPosition: {
49
+ left: theme.spacing(1)
50
+ },
51
+ rightLabelPosition: {
52
+ right: theme.spacing(1)
53
+ },
54
+ sectionLabelsContainer: {
55
+ padding: theme.spacing(0.5, 0)
47
56
  }
48
57
  };
49
58
  });
@@ -77,10 +86,12 @@ var SectionHeader = function SectionHeader(_ref) {
77
86
  },
78
87
  React.createElement(
79
88
  Typography,
80
- { noWrap: true, variant: 'body1', component: 'div', className: classes.containerSection },
89
+ { variant: 'body1', component: 'div', className: classes.containerSection },
81
90
  React.createElement(
82
- 'div',
83
- null,
91
+ 'span',
92
+ {
93
+ className: cx(classes.stickyHeaderSection, classes.leftLabelPosition, classes.sectionLabelsContainer)
94
+ },
84
95
  mapIndexed(function (sectionHeader, index) {
85
96
  return React.createElement(
86
97
  Fragment,
@@ -101,15 +112,17 @@ var SectionHeader = function SectionHeader(_ref) {
101
112
  React.createElement(
102
113
  Typography,
103
114
  { noWrap: true, variant: 'body1', component: 'span', tabIndex: 0 },
104
- R.path(['value', 'label'], sectionHeader),
105
- React.createElement(Flags, { flags: R.path(['value', 'flags'], sectionHeader) })
106
- )
115
+ R.path(['value', 'label'], sectionHeader)
116
+ ),
117
+ React.createElement(Flags, { flags: R.path(['value', 'flags'], sectionHeader) })
107
118
  );
108
119
  }, R.path([0, 'data'], section))
109
120
  ),
110
121
  React.createElement(
111
122
  'div',
112
- { className: classes.flags },
123
+ {
124
+ className: cx(classes.flag, classes.stickyHeaderSection, classes.rightLabelPosition, classes.sectionLabelsContainer)
125
+ },
113
126
  !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: R.path([0, 'sideProps'], section) }),
114
127
  React.createElement(Flags, { flags: R.path([0, 'flags'], section) })
115
128
  )
package/es/theme.js CHANGED
@@ -287,8 +287,7 @@ export var sisccTheme = function sisccTheme(_ref) {
287
287
  },
288
288
  table: {
289
289
  flag: {
290
- fontFamily: "'PT Sans Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif",
291
- fontSize: 12,
290
+ fontSize: 10,
292
291
  color: outerPalette.textLight || innerPalette.textLight
293
292
  },
294
293
  dot: {
@@ -10,6 +10,10 @@ var _propTypes = require('prop-types');
10
10
 
11
11
  var _propTypes2 = _interopRequireDefault(_propTypes);
12
12
 
13
+ var _classnames = require('classnames');
14
+
15
+ var _classnames2 = _interopRequireDefault(_classnames);
16
+
13
17
  var _ramda = require('ramda');
14
18
 
15
19
  var R = _interopRequireWildcard(_ramda);
@@ -73,15 +77,23 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
73
77
  logo: {
74
78
  height: HEIGHT / 2,
75
79
  display: 'flex'
80
+ },
81
+ sticky: {
82
+ position: 'sticky',
83
+ right: 0
76
84
  }
77
85
  };
78
86
  });
79
87
 
80
88
  var DataFooter = function DataFooter(_ref3) {
89
+ var _cx;
90
+
81
91
  var logo = _ref3.logo,
82
92
  source = _ref3.source,
83
93
  copyright = _ref3.copyright,
84
- legend = _ref3.legend;
94
+ legend = _ref3.legend,
95
+ _ref3$isSticky = _ref3.isSticky,
96
+ isSticky = _ref3$isSticky === undefined ? false : _ref3$isSticky;
85
97
 
86
98
  var target = _react2.default.useRef(null);
87
99
 
@@ -112,7 +124,7 @@ var DataFooter = function DataFooter(_ref3) {
112
124
  ),
113
125
  _react2.default.createElement(
114
126
  _Grid2.default,
115
- { item: true, style: { alignSelf: 'flex-end' } },
127
+ { item: true, style: { alignSelf: 'flex-end' }, className: (0, _classnames2.default)((_cx = {}, _cx[classes.sticky] = isSticky, _cx)) },
116
128
  _react2.default.createElement(
117
129
  _Grid2.default,
118
130
  {
@@ -199,7 +211,8 @@ DataFooter.propTypes = process.env.NODE_ENV !== "production" ? {
199
211
  label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
200
212
  content: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element])
201
213
  }),
202
- legend: _propTypes2.default.element
214
+ legend: _propTypes2.default.element,
215
+ isSticky: _propTypes2.default.bool
203
216
  } : {};
204
217
 
205
218
  exports.default = DataFooter;
@@ -134,6 +134,10 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
134
134
  marginLeft: 20,
135
135
  maxWidth: 270
136
136
  }, theme.typography.body1),
137
+ sticky: {
138
+ position: 'sticky',
139
+ left: 0
140
+ },
137
141
  sideIconContainer: {
138
142
  marginLeft: '10px'
139
143
  }
@@ -141,6 +145,8 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
141
145
  });
142
146
 
143
147
  var DataHeader = function DataHeader(_ref4) {
148
+ var _cx;
149
+
144
150
  var children = _ref4.children,
145
151
  title = _ref4.title,
146
152
  _ref4$subtitle = _ref4.subtitle,
@@ -148,7 +154,9 @@ var DataHeader = function DataHeader(_ref4) {
148
154
  uprs = _ref4.uprs,
149
155
  disclaimer = _ref4.disclaimer,
150
156
  sideProps = _ref4.sideProps,
151
- SideIcon = _ref4.SideIcon;
157
+ SideIcon = _ref4.SideIcon,
158
+ _ref4$isSticky = _ref4.isSticky,
159
+ isSticky = _ref4$isSticky === undefined ? false : _ref4$isSticky;
152
160
 
153
161
  var target = _react2.default.useRef(null);
154
162
 
@@ -173,7 +181,7 @@ var DataHeader = function DataHeader(_ref4) {
173
181
  { className: classes.header, ref: target },
174
182
  _react2.default.createElement(
175
183
  'div',
176
- { className: classes.container },
184
+ { className: (0, _classnames2.default)(classes.container, (_cx = {}, _cx[classes.sticky] = isSticky, _cx)) },
177
185
  isWidthUp(_theme.T4_BREAKPOINTS.xs2) && title && _react2.default.createElement(
178
186
  _Typography2.default,
179
187
  { variant: 'h1', className: classes.title },
@@ -275,7 +283,8 @@ DataHeader.propTypes = process.env.NODE_ENV !== "production" ? {
275
283
  sideProps: _propTypes2.default.object,
276
284
  SideIcon: _propTypes2.default.func,
277
285
  disclaimer: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
278
- children: _propTypes2.default.node
286
+ children: _propTypes2.default.node,
287
+ isSticky: _propTypes2.default.bool
279
288
  } : {};
280
289
 
281
290
  exports.default = DataHeader;
@@ -132,7 +132,6 @@ var CustomExpansionPanel = function CustomExpansionPanel(_ref) {
132
132
  CustomExpansionPanel.propTypes = process.env.NODE_ENV !== "production" ? {
133
133
  testId: _propTypes2.default.string,
134
134
  id: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
135
- classes: _propTypes2.default.object,
136
135
  topElementComponent: _propTypes2.default.element,
137
136
  onChangeActivePanel: _propTypes2.default.func,
138
137
  label: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
@@ -71,6 +71,7 @@ var Item = function Item(_ref) {
71
71
  var classes = _ref.classes,
72
72
  id = _ref.id,
73
73
  label = _ref.label,
74
+ description = _ref.description,
74
75
  _ref$nodePath = _ref.nodePath,
75
76
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
76
77
  isSelected = _ref.isSelected,
@@ -141,14 +142,24 @@ var Item = function Item(_ref) {
141
142
  _react2.default.createElement('path', { d: svgPath })
142
143
  ),
143
144
  _react2.default.createElement(
144
- _Typography2.default,
145
+ _.Tooltip,
145
146
  {
146
- 'data-testid': testId + '_value_' + id,
147
- color: 'inherit',
148
- variant: 'body2',
149
- className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6))
147
+ title: R.isNil(description) ? '' : description,
148
+ tabIndex: 0,
149
+ 'aria-label': description,
150
+ 'aria-hidden': false,
151
+ placement: 'top'
150
152
  },
151
- label
153
+ _react2.default.createElement(
154
+ _Typography2.default,
155
+ {
156
+ 'data-testid': testId + '_value_' + id,
157
+ color: 'inherit',
158
+ variant: 'body2',
159
+ className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
160
+ },
161
+ label
162
+ )
152
163
  ),
153
164
  R.not(R.isNil(count)) && _react2.default.createElement(
154
165
  _Typography2.default,
@@ -219,6 +230,7 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
219
230
  classes: _propTypes2.default.object,
220
231
  id: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
221
232
  label: _propTypes2.default.string,
233
+ description: _propTypes2.default.string,
222
234
  parentId: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.number]),
223
235
  nodePath: _propTypes2.default.array,
224
236
  ariaLabel: _propTypes2.default.string,
@@ -149,6 +149,9 @@ var useStyles = exports.useStyles = (0, _styles.makeStyles)(function (theme) {
149
149
  },
150
150
  bulkSelectionIcon: {
151
151
  minWidth: 50
152
+ },
153
+ tooltipNotice: {
154
+ textDecoration: 'underline dotted'
152
155
  }
153
156
  };
154
157
  });
@@ -59,16 +59,24 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
59
59
  },
60
60
  rtl: {
61
61
  textAlign: 'right'
62
+ },
63
+ fixed: {
64
+ position: 'fixed',
65
+ bottom: 0,
66
+ left: 0,
67
+ width: '100%',
68
+ zIndex: 0
62
69
  }
63
70
  };
64
71
  });
65
72
 
66
- var SisccFooter = function SisccFooter(_ref) {
67
- var _cx, _cx2;
73
+ var SisccFooter = _react2.default.forwardRef(function (_ref, ref) {
74
+ var _cx, _cx2, _cx3;
68
75
 
69
76
  var leftLabel = _ref.leftLabel,
70
77
  _ref$rightLabel = _ref.rightLabel,
71
- rightLabel = _ref$rightLabel === undefined ? [] : _ref$rightLabel;
78
+ rightLabel = _ref$rightLabel === undefined ? [] : _ref$rightLabel,
79
+ isFixed = _ref.isFixed;
72
80
 
73
81
  var classes = useStyles();
74
82
  var theme = (0, _styles.useTheme)();
@@ -76,7 +84,12 @@ var SisccFooter = function SisccFooter(_ref) {
76
84
 
77
85
  return _react2.default.createElement(
78
86
  _AppBar2.default,
79
- { 'data-testid': 'footer-bar-test-id', position: 'static', className: classes.appBar },
87
+ {
88
+ ref: ref,
89
+ 'data-testid': 'footer-bar-test-id',
90
+ position: 'static',
91
+ className: (0, _classnames2.default)(classes.appBar, (_cx = {}, _cx[classes.fixed] = isFixed, _cx))
92
+ },
80
93
  _react2.default.createElement(
81
94
  _Toolbar2.default,
82
95
  { classes: { root: classes.root, gutters: classes.gutters } },
@@ -85,7 +98,7 @@ var SisccFooter = function SisccFooter(_ref) {
85
98
  { xs: 4, item: true, container: true, justifyContent: 'flex-start', alignItems: 'flex-start' },
86
99
  _react2.default.createElement(
87
100
  _Typography2.default,
88
- { variant: 'body2', className: (0, _classnames2.default)(classes.leftLabel, (_cx = {}, _cx[classes.rtl] = isRtl, _cx)) },
101
+ { variant: 'body2', className: (0, _classnames2.default)(classes.leftLabel, (_cx2 = {}, _cx2[classes.rtl] = isRtl, _cx2)) },
89
102
  leftLabel
90
103
  )
91
104
  ),
@@ -94,17 +107,18 @@ var SisccFooter = function SisccFooter(_ref) {
94
107
  { xs: 8, item: true, container: true, justifyContent: 'flex-end', alignItems: 'flex-start' },
95
108
  _react2.default.createElement(
96
109
  _Typography2.default,
97
- { variant: 'body2', className: (0, _classnames2.default)(classes.rightLabel, (_cx2 = {}, _cx2[classes.rtl] = !isRtl, _cx2)) },
110
+ { variant: 'body2', className: (0, _classnames2.default)(classes.rightLabel, (_cx3 = {}, _cx3[classes.rtl] = !isRtl, _cx3)) },
98
111
  rightLabel
99
112
  )
100
113
  )
101
114
  )
102
115
  );
103
- };
116
+ });
104
117
 
105
118
  SisccFooter.propTypes = process.env.NODE_ENV !== "production" ? {
106
119
  leftLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
107
- rightLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element])
120
+ rightLabel: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
121
+ isFixed: _propTypes2.default.bool
108
122
  } : {};
109
123
 
110
124
  exports.default = SisccFooter;
@@ -63,6 +63,9 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
63
63
  link: {
64
64
  position: 'inherit',
65
65
  userSelect: 'inherit'
66
+ },
67
+ value: {
68
+ overflow: 'inherit'
66
69
  }
67
70
  };
68
71
  });
@@ -114,7 +117,7 @@ var Cell = function Cell(_ref) {
114
117
  _react2.default.createElement(
115
118
  _Typography2.default,
116
119
  { variant: 'body1', tabIndex: 0, noWrap: hasFlag },
117
- !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: sideProps }),
120
+ !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: sideProps, className: classes.value }),
118
121
  hasFlag && _react2.default.createElement(_flags2.default, { flags: flags }),
119
122
  uiValue
120
123
  )
@@ -47,7 +47,6 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
47
47
  margin: 0
48
48
  }, theme.typography.body1),
49
49
  flags: _extends({
50
- verticalAlign: 'super',
51
50
  borderBottom: '1px dotted',
52
51
  borderColor: 'inherit',
53
52
  margin: theme.spacing(0, 0.5),
@@ -55,7 +54,9 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
55
54
  display: 'inline',
56
55
  fontWeight: 'bold',
57
56
  fontStyle: 'normal',
58
- textTransform: 'uppercase'
57
+ textTransform: 'uppercase',
58
+ position: 'relative',
59
+ top: '-4px'
59
60
  }, R.pathOr({}, ['mixins', 'table', 'flag'], theme)),
60
61
  svg: {
61
62
  verticalAlign: 'middle'
@@ -70,9 +70,6 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
70
70
  fontStyle: 'inherit',
71
71
  fontWeight: 'bold'
72
72
  },
73
- topCell: {
74
- paddingTop: 0
75
- },
76
73
  stickyLabel: {
77
74
  position: 'sticky'
78
75
  }
@@ -96,8 +93,6 @@ var Header = function Header(_ref) {
96
93
 
97
94
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(headerData)) return null;
98
95
  return timesIndexed(function (index) {
99
- var _cx;
100
-
101
96
  var flags = R.path([0, 'data', index, 'dimension', 'flags'], headerData);
102
97
  var id = 'header_' + index;
103
98
  return _react2.default.createElement(
@@ -109,7 +104,7 @@ var Header = function Header(_ref) {
109
104
  component: 'th',
110
105
  padding: 'none',
111
106
  align: 'center',
112
- className: (0, _classnames2.default)(classes.tableHeadCell, (_cx = {}, _cx[classes.topCell] = R.not(R.isEmpty(flags)), _cx)),
107
+ className: classes.tableHeadCell,
113
108
  colSpan: R.inc(xLayoutDataLength),
114
109
  id: id,
115
110
  tabIndex: 0,
@@ -127,7 +122,7 @@ var Header = function Header(_ref) {
127
122
  )
128
123
  ),
129
124
  mapIndexed(function (headerItem, idx) {
130
- var _cx2;
125
+ var _cx;
131
126
 
132
127
  var flags = R.prop('flags', headerItem);
133
128
  return _react2.default.createElement(
@@ -135,7 +130,7 @@ var Header = function Header(_ref) {
135
130
  {
136
131
  key: R.prop('id', headerItem) + '-' + idx,
137
132
  component: 'th',
138
- className: (0, _classnames2.default)(classes.tableHeadCell, (_cx2 = {}, _cx2[classes.topCell] = R.not(R.isEmpty(flags)), _cx2)),
133
+ className: (0, _classnames2.default)(classes.tableHeadCell, (_cx = {}, _cx[classes.topCell] = R.not(R.isEmpty(flags)), _cx)),
139
134
  id: idx + '_' + index,
140
135
  headers: 'header_' + index,
141
136
  colSpan: R.prop('spanCount', headerItem),
@@ -75,7 +75,8 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
75
75
  borderBottom: '1px solid ' + theme.palette.grey[500],
76
76
  borderRight: '1px solid ' + theme.palette.grey[500],
77
77
  padding: theme.spacing(0.5) + 'px ' + theme.spacing(1) + 'px',
78
- position: 'sticky'
78
+ position: 'sticky',
79
+ zIndex: 1
79
80
  },
80
81
  cellContent: {
81
82
  display: 'flex',
@@ -16,6 +16,10 @@ var _propTypes = require('prop-types');
16
16
 
17
17
  var _propTypes2 = _interopRequireDefault(_propTypes);
18
18
 
19
+ var _classnames = require('classnames');
20
+
21
+ var _classnames2 = _interopRequireDefault(_classnames);
22
+
19
23
  var _Typography = require('@material-ui/core/Typography');
20
24
 
21
25
  var _Typography2 = _interopRequireDefault(_Typography);
@@ -51,7 +55,7 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
51
55
  border: 'inherit',
52
56
  borderBottom: '1px solid ' + theme.palette.grey[500],
53
57
  borderRight: '1px solid ' + theme.palette.grey[500],
54
- padding: theme.spacing(0.5) + 'px ' + theme.spacing(1) + 'px',
58
+ padding: theme.spacing(0, 1),
55
59
  color: theme.palette.grey['A700'],
56
60
  verticalAlign: 'middle'
57
61
  },
@@ -65,18 +69,26 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
65
69
  marginRight: theme.spacing(0.5)
66
70
  },
67
71
  containerSection: {
68
- alignItems: 'baseline',
69
- display: 'flex'
72
+ display: 'flex',
73
+ justifyContent: 'space-between',
74
+ alignItems: 'center'
70
75
  },
71
76
  stickyHeaderSection: {
72
77
  position: 'sticky'
73
78
  },
74
- containerTextSection: {
75
- display: 'flex',
76
- alignItems: 'center'
77
- },
78
- flags: {
79
+ flag: {
80
+ height: '100%',
81
+ backgroundColor: (0, _utils.getDark)(theme) || theme.palette.secondary.dark,
79
82
  paddingLeft: 12
83
+ },
84
+ leftLabelPosition: {
85
+ left: theme.spacing(1)
86
+ },
87
+ rightLabelPosition: {
88
+ right: theme.spacing(1)
89
+ },
90
+ sectionLabelsContainer: {
91
+ padding: theme.spacing(0.5, 0)
80
92
  }
81
93
  };
82
94
  });
@@ -110,10 +122,12 @@ var SectionHeader = function SectionHeader(_ref) {
110
122
  },
111
123
  _react2.default.createElement(
112
124
  _Typography2.default,
113
- { noWrap: true, variant: 'body1', component: 'div', className: classes.containerSection },
125
+ { variant: 'body1', component: 'div', className: classes.containerSection },
114
126
  _react2.default.createElement(
115
- 'div',
116
- null,
127
+ 'span',
128
+ {
129
+ className: (0, _classnames2.default)(classes.stickyHeaderSection, classes.leftLabelPosition, classes.sectionLabelsContainer)
130
+ },
117
131
  mapIndexed(function (sectionHeader, index) {
118
132
  return _react2.default.createElement(
119
133
  _react.Fragment,
@@ -134,15 +148,17 @@ var SectionHeader = function SectionHeader(_ref) {
134
148
  _react2.default.createElement(
135
149
  _Typography2.default,
136
150
  { noWrap: true, variant: 'body1', component: 'span', tabIndex: 0 },
137
- R.path(['value', 'label'], sectionHeader),
138
- _react2.default.createElement(_flags2.default, { flags: R.path(['value', 'flags'], sectionHeader) })
139
- )
151
+ R.path(['value', 'label'], sectionHeader)
152
+ ),
153
+ _react2.default.createElement(_flags2.default, { flags: R.path(['value', 'flags'], sectionHeader) })
140
154
  );
141
155
  }, R.path([0, 'data'], section))
142
156
  ),
143
157
  _react2.default.createElement(
144
158
  'div',
145
- { className: classes.flags },
159
+ {
160
+ className: (0, _classnames2.default)(classes.flag, classes.stickyHeaderSection, classes.rightLabelPosition, classes.sectionLabelsContainer)
161
+ },
146
162
  !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: R.path([0, 'sideProps'], section) }),
147
163
  _react2.default.createElement(_flags2.default, { flags: R.path([0, 'flags'], section) })
148
164
  )
package/lib/theme.js CHANGED
@@ -290,8 +290,7 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
290
290
  },
291
291
  table: {
292
292
  flag: {
293
- fontFamily: "'PT Sans Narrow', 'Helvetica Neue', Helvetica, Arial, sans-serif",
294
- fontSize: 12,
293
+ fontSize: 10,
295
294
  color: outerPalette.textLight || innerPalette.textLight
296
295
  },
297
296
  dot: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "7.4.0",
3
+ "version": "7.5.0",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",