@sis-cc/dotstatsuite-visions 7.6.1 → 7.8.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.
@@ -158,6 +158,7 @@ var DataHeader = function DataHeader(_ref4) {
158
158
  className: cx(classes.title, classes.disclaimer),
159
159
  title: disclaimer,
160
160
  tabIndex: 0,
161
+ 'data-testid': 'data-header-disclaimer',
161
162
  variant: 'warning',
162
163
  'aria-hidden': false,
163
164
  placement: 'bottom',
@@ -1,5 +1,7 @@
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
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
4
+
3
5
  import React, { useState } from 'react';
4
6
  import PropTypes from 'prop-types';
5
7
  import * as R from 'ramda';
@@ -119,21 +121,34 @@ var useStyles = makeStyles(function (theme) {
119
121
  };
120
122
  });
121
123
 
122
- var Dataflow = function Dataflow(_ref) {
124
+ var BasicHTMLRenderer = function BasicHTMLRenderer(_ref) {
125
+ var html = _ref.html,
126
+ rest = _objectWithoutProperties(_ref, ['html']);
127
+
128
+ return React.createElement('span', _extends({ dangerouslySetInnerHTML: { __html: html } }, rest));
129
+ };
130
+
131
+ BasicHTMLRenderer.propTypes = process.env.NODE_ENV !== "production" ? {
132
+ html: PropTypes.string
133
+ } : {};
134
+
135
+ var Dataflow = function Dataflow(_ref2) {
123
136
  var _cx, _cx2, _cx3;
124
137
 
125
- var testId = _ref.testId,
126
- title = _ref.title,
127
- body = _ref.body,
128
- url = _ref.url,
129
- handleUrl = _ref.handleUrl,
130
- label = _ref.label,
131
- labels = _ref.labels,
132
- _ref$highlights = _ref.highlights,
133
- highlights = _ref$highlights === undefined ? [] : _ref$highlights,
134
- _ref$categories = _ref.categories,
135
- categories = _ref$categories === undefined ? [] : _ref$categories,
136
- children = _ref.children;
138
+ var testId = _ref2.testId,
139
+ title = _ref2.title,
140
+ body = _ref2.body,
141
+ url = _ref2.url,
142
+ handleUrl = _ref2.handleUrl,
143
+ label = _ref2.label,
144
+ labels = _ref2.labels,
145
+ _ref2$highlights = _ref2.highlights,
146
+ highlights = _ref2$highlights === undefined ? [] : _ref2$highlights,
147
+ _ref2$categories = _ref2.categories,
148
+ categories = _ref2$categories === undefined ? [] : _ref2$categories,
149
+ children = _ref2.children,
150
+ _ref2$HTMLRenderer = _ref2.HTMLRenderer,
151
+ HTMLRenderer = _ref2$HTMLRenderer === undefined ? BasicHTMLRenderer : _ref2$HTMLRenderer;
137
152
 
138
153
  var classes = useStyles();
139
154
 
@@ -174,7 +189,7 @@ var Dataflow = function Dataflow(_ref) {
174
189
  color: 'primary',
175
190
  underline: 'none'
176
191
  },
177
- React.createElement('span', { dangerouslySetInnerHTML: { __html: title } })
192
+ React.createElement(HTMLRenderer, { html: title })
178
193
  )
179
194
  )
180
195
  )
@@ -198,7 +213,7 @@ var Dataflow = function Dataflow(_ref) {
198
213
  align: 'justify',
199
214
  className: cx(classes.container, classes.mutedText, (_cx2 = {}, _cx2[classes.unmutedText] = isExpanded, _cx2))
200
215
  },
201
- React.createElement('span', { dangerouslySetInnerHTML: { __html: description } })
216
+ React.createElement(HTMLRenderer, { html: description })
202
217
  ),
203
218
  !isExpanded && React.createElement('div', { className: classes.fading })
204
219
  )
@@ -209,8 +224,8 @@ var Dataflow = function Dataflow(_ref) {
209
224
  React.createElement(
210
225
  Typography,
211
226
  { variant: 'body2', align: 'justify', className: classes.container },
212
- React.createElement('span', {
213
- dangerouslySetInnerHTML: { __html: R.prop('highlightDescription')(body) },
227
+ React.createElement(HTMLRenderer, {
228
+ html: R.propOr('', 'highlightDescription')(body),
214
229
  className: cx((_cx3 = {}, _cx3[classes.noDisplay] = isExpanded, _cx3))
215
230
  })
216
231
  )
@@ -218,9 +233,9 @@ var Dataflow = function Dataflow(_ref) {
218
233
  React.createElement(
219
234
  CardContent,
220
235
  { className: classes.cardContent },
221
- R.map(function (_ref2) {
222
- var field = _ref2[0],
223
- highlight = _ref2[1];
236
+ R.map(function (_ref3) {
237
+ var field = _ref3[0],
238
+ highlight = _ref3[1];
224
239
  return React.createElement(
225
240
  Typography,
226
241
  {
@@ -237,16 +252,16 @@ var Dataflow = function Dataflow(_ref) {
237
252
  ':\xA0'
238
253
  ),
239
254
  ' ',
240
- React.createElement('span', { dangerouslySetInnerHTML: { __html: highlight } })
255
+ React.createElement(HTMLRenderer, { html: highlight })
241
256
  );
242
257
  })(highlights),
243
258
  React.createElement(
244
259
  Collapse,
245
260
  { 'in': isExpanded },
246
261
  React.createElement(Divider, { className: classes.divider }),
247
- R.map(function (_ref3) {
248
- var field = _ref3[0],
249
- categorie = _ref3[1];
262
+ R.map(function (_ref4) {
263
+ var field = _ref4[0],
264
+ categorie = _ref4[1];
250
265
  return React.createElement(
251
266
  Typography,
252
267
  {
@@ -357,13 +372,14 @@ Dataflow.propTypes = process.env.NODE_ENV !== "production" ? {
357
372
  }),
358
373
  highlights: PropTypes.array,
359
374
  categories: PropTypes.array,
360
- children: PropTypes.node
375
+ children: PropTypes.node,
376
+ HTMLRenderer: PropTypes.func
361
377
  } : {};
362
378
 
363
- export default withBlank(function (_ref4) {
364
- var isBlank = _ref4.isBlank,
365
- _ref4$title = _ref4.title,
366
- title = _ref4$title === undefined ? '' : _ref4$title;
379
+ export default withBlank(function (_ref5) {
380
+ var isBlank = _ref5.isBlank,
381
+ _ref5$title = _ref5.title,
382
+ title = _ref5$title === undefined ? '' : _ref5$title;
367
383
  return {
368
384
  isBlank: R.or(isBlank, R.isEmpty(title))
369
385
  };
@@ -28,6 +28,7 @@
28
28
  * }),
29
29
  * highlights: PropTypes.array,
30
30
  * categories: PropTypes.array,
31
+ * HTMLRenderer: PropTypes.func,
31
32
  * };
32
33
  *
33
34
  * @theme
@@ -15,15 +15,21 @@ var useStyles = makeStyles(function (theme) {
15
15
  alignItems: 'center'
16
16
  },
17
17
  progress: {
18
- margin: theme.spacing(2)
18
+ margin: theme.spacing(2),
19
+ color: function color(_ref) {
20
+ var isWarning = _ref.isWarning;
21
+ return isWarning ? theme.palette.warning.main : theme.palette.primary.main;
22
+ }
19
23
  }
20
24
  };
21
25
  });
22
26
 
23
- var Loading = function Loading(_ref) {
24
- var message = _ref.message;
27
+ var Loading = function Loading(_ref2) {
28
+ var message = _ref2.message,
29
+ _ref2$isWarning = _ref2.isWarning,
30
+ isWarning = _ref2$isWarning === undefined ? false : _ref2$isWarning;
25
31
 
26
- var classes = useStyles();
32
+ var classes = useStyles({ isWarning: isWarning });
27
33
 
28
34
  return React.createElement(
29
35
  'div',
@@ -38,7 +44,8 @@ var Loading = function Loading(_ref) {
38
44
  };
39
45
 
40
46
  Loading.propTypes = process.env.NODE_ENV !== "production" ? {
41
- message: PropTypes.oneOfType([PropTypes.string, PropTypes.element])
47
+ message: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
48
+ isWarning: PropTypes.bool
42
49
  } : {};
43
50
 
44
51
  export default Loading;
@@ -33,7 +33,8 @@ 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
+ _ref$description = _ref.description,
37
+ description = _ref$description === undefined ? '' : _ref$description,
37
38
  _ref$nodePath = _ref.nodePath,
38
39
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
39
40
  isSelected = _ref.isSelected,
@@ -52,7 +53,13 @@ var Item = function Item(_ref) {
52
53
  isRtl = _ref.isRtl,
53
54
  accessibility = _ref.accessibility,
54
55
  index = _ref.index,
55
- labelRenderer = _ref.labelRenderer;
56
+ labelRenderer = _ref.labelRenderer,
57
+ HTMLRenderer = _ref.HTMLRenderer;
58
+
59
+ var _React$useState = React.useState(false),
60
+ isTooltipShown = _React$useState[0],
61
+ setIsTooltipShown = _React$useState[1];
62
+
56
63
  return React.createElement(
57
64
  ListItem,
58
65
  {
@@ -61,9 +68,9 @@ var Item = function Item(_ref) {
61
68
  className: cx(classes.listItemContainer, (_cx = {}, _cx[classes.disableSecondaryAction] = R.not(hasChild), _cx)),
62
69
  disabled: isDisabled,
63
70
  onClick: isDisabled ? null : changeSelection(id, index),
64
- onMouseDown: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(index, { isDown: true }) : null,
65
- onMouseUp: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(null, { isUp: true }) : null,
66
- onMouseOver: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(index, { isOver: true }) : null,
71
+ onMouseDown: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(index, { isDown: true }) : null,
72
+ onMouseUp: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(null, { isUp: true }) : null,
73
+ onMouseOver: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(index, { isOver: true }) : null,
67
74
  onKeyPress: function onKeyPress(e) {
68
75
  if (e.key === 'Enter' && R.not(isDisabled)) {
69
76
  changeSelection(id, index)(e);
@@ -106,11 +113,23 @@ var Item = function Item(_ref) {
106
113
  React.createElement(
107
114
  Tooltip,
108
115
  {
109
- title: R.isNil(description) ? '' : description,
116
+ title: R.or(R.isNil(HTMLRenderer), R.isEmpty(description)) ? description : React.createElement(HTMLRenderer, { html: description, onClick: function onClick(e) {
117
+ return e.stopPropagation();
118
+ } }),
119
+ PopperProps: {
120
+ onMouseEnter: function onMouseEnter() {
121
+ return setIsTooltipShown(true);
122
+ },
123
+ onMouseLeave: function onMouseLeave() {
124
+ return setIsTooltipShown(false);
125
+ }
126
+ },
127
+ enterDelay: 400,
110
128
  tabIndex: 0,
111
129
  'aria-label': description,
112
130
  'aria-hidden': false,
113
- placement: 'top'
131
+ placement: 'top',
132
+ interactive: Boolean(HTMLRenderer)
114
133
  },
115
134
  React.createElement(
116
135
  Typography,
@@ -118,7 +137,7 @@ var Item = function Item(_ref) {
118
137
  'data-testid': testId + '_value_' + id,
119
138
  color: 'inherit',
120
139
  variant: 'body2',
121
- className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
140
+ className: cx(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isEmpty(description), _cx6))
122
141
  },
123
142
  label
124
143
  )
@@ -212,7 +231,8 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
212
231
  testId: PropTypes.string,
213
232
  accessibility: PropTypes.bool,
214
233
  index: PropTypes.number,
215
- labelRenderer: PropTypes.func
234
+ labelRenderer: PropTypes.func,
235
+ HTMLRenderer: PropTypes.func
216
236
  } : {};
217
237
 
218
238
  export default Item;
@@ -52,7 +52,8 @@ var ScopeList = function ScopeList(props) {
52
52
  changeMouseSelection = props.changeMouseSelection,
53
53
  _props$labelRenderer = props.labelRenderer,
54
54
  labelRenderer = _props$labelRenderer === undefined ? R.prop('label') : _props$labelRenderer,
55
- disableAccessor = props.disableAccessor;
55
+ disableAccessor = props.disableAccessor,
56
+ HTMLRenderer = props.HTMLRenderer;
56
57
 
57
58
  var _useState = useState(false),
58
59
  isMenuOpen = _useState[0],
@@ -236,6 +237,7 @@ var ScopeList = function ScopeList(props) {
236
237
  //if (isScrolling) return <div style={style}>...</div>
237
238
  var item = R.nth(index, list);
238
239
  return React.createElement(Item, _extends({
240
+ HTMLRenderer: HTMLRenderer,
239
241
  labelRenderer: labelRenderer,
240
242
  index: index,
241
243
  style: style,
@@ -298,7 +300,8 @@ ScopeList.propTypes = process.env.NODE_ENV !== "production" ? {
298
300
  labelRenderer: PropTypes.func,
299
301
  disableAccessor: PropTypes.func,
300
302
  items: PropTypes.array,
301
- itemsById: PropTypes.object
303
+ itemsById: PropTypes.object,
304
+ HTMLRenderer: PropTypes.func
302
305
  } : {};
303
306
 
304
307
  export default R.compose(withBlank(function (_ref3) {
@@ -71,7 +71,8 @@ var TableHtml5 = function TableHtml5(_ref) {
71
71
  activeCellHandler = _ref.activeCellHandler,
72
72
  SideIcon = _ref.SideIcon,
73
73
  _ref$testId = _ref.testId,
74
- testId = _ref$testId === undefined ? 'vis-table' : _ref$testId;
74
+ testId = _ref$testId === undefined ? 'vis-table' : _ref$testId,
75
+ HTMLRenderer = _ref.HTMLRenderer;
75
76
 
76
77
  var classes = useStyles();
77
78
 
@@ -107,7 +108,12 @@ var TableHtml5 = function TableHtml5(_ref) {
107
108
  }, []);
108
109
 
109
110
  var isSingleObs = R.hasPath(['', '', '', 0], cells);
110
- if (isSingleObs) return React.createElement(Cell, _extends({}, R.pathOr({}, ['', '', '', 0], cells), { cellHandler: cellHandler, isOne: true }));
111
+ if (isSingleObs) return React.createElement(Cell, _extends({
112
+ HTMLRenderer: HTMLRenderer
113
+ }, R.pathOr({}, ['', '', '', 0], cells), {
114
+ cellHandler: cellHandler,
115
+ isOne: true
116
+ }));
111
117
 
112
118
  var xLayoutData = R.pathOr([], [0, 1, 0, 'data'], sectionsData);
113
119
  var xLayoutDataLength = R.length(xLayoutData);
@@ -129,7 +135,8 @@ var TableHtml5 = function TableHtml5(_ref) {
129
135
  headerData: headerData,
130
136
  valuesHeaderData: valuesHeaderData,
131
137
  xLayoutDataLength: xLayoutDataLength,
132
- subHeadCellsWidth: subHeadCellsWidth
138
+ subHeadCellsWidth: subHeadCellsWidth,
139
+ HTMLRenderer: HTMLRenderer
133
140
  }),
134
141
  React.createElement(SubHeader, {
135
142
  headerData: headerData,
@@ -137,7 +144,8 @@ var TableHtml5 = function TableHtml5(_ref) {
137
144
  activeCellIds: activeCellIds,
138
145
  SideIcon: SideIcon,
139
146
  ref: subHeadCellsRef,
140
- subHeadCellsWidth: subHeadCellsWidth
147
+ subHeadCellsWidth: subHeadCellsWidth,
148
+ HTMLRenderer: HTMLRenderer
141
149
  })
142
150
  ),
143
151
  mapIndexed(function (section, index) {
@@ -154,7 +162,8 @@ var TableHtml5 = function TableHtml5(_ref) {
154
162
  activeCellIds: activeCellIds,
155
163
  activeCellHandler: activeCellHandler,
156
164
  SideIcon: SideIcon,
157
- subHeadCellsWidth: subHeadCellsWidth
165
+ subHeadCellsWidth: subHeadCellsWidth,
166
+ HTMLRenderer: HTMLRenderer
158
167
  });
159
168
  }, sectionsData)
160
169
  );
@@ -168,7 +177,8 @@ TableHtml5.propTypes = process.env.NODE_ENV !== "production" ? {
168
177
  activeCellHandler: PropTypes.func,
169
178
  activeCellIds: PropTypes.object,
170
179
  SideIcon: PropTypes.func,
171
- testId: PropTypes.string
180
+ testId: PropTypes.string,
181
+ HTMLRenderer: PropTypes.func
172
182
  } : {};
173
183
 
174
184
  export default TableHtml5;
@@ -56,7 +56,8 @@ var Cell = function Cell(_ref) {
56
56
  isActive = _ref.isActive,
57
57
  isHighlight = _ref.isHighlight,
58
58
  sideProps = _ref.sideProps,
59
- SideIcon = _ref.SideIcon;
59
+ SideIcon = _ref.SideIcon,
60
+ HTMLRenderer = _ref.HTMLRenderer;
60
61
 
61
62
  var classes = useStyles();
62
63
  var hasFlag = R.not(R.isEmpty(flags));
@@ -72,8 +73,8 @@ var Cell = function Cell(_ref) {
72
73
  },
73
74
  className: classes.link
74
75
  },
75
- value
76
- ) : value;
76
+ R.is(Function, HTMLRenderer) ? React.createElement(HTMLRenderer, { html: value }) : value
77
+ ) : R.is(Function, HTMLRenderer) ? React.createElement(HTMLRenderer, { html: value }) : value;
77
78
 
78
79
  return React.createElement(
79
80
  TableCell,
@@ -90,7 +91,7 @@ var Cell = function Cell(_ref) {
90
91
  Typography,
91
92
  { variant: 'body1', tabIndex: 0, noWrap: hasFlag },
92
93
  !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: sideProps, className: classes.value }),
93
- hasFlag && React.createElement(Flags, { flags: flags }),
94
+ hasFlag && React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: flags }),
94
95
  uiValue
95
96
  )
96
97
  )
@@ -108,7 +109,8 @@ Cell.propTypes = process.env.NODE_ENV !== "production" ? {
108
109
  isHighlight: PropTypes.bool,
109
110
  activeCellHandler: PropTypes.func,
110
111
  sideProps: PropTypes.object,
111
- SideIcon: PropTypes.func
112
+ SideIcon: PropTypes.func,
113
+ HTMLRenderer: PropTypes.func
112
114
  } : {};
113
115
 
114
116
  export default Cell;
@@ -45,7 +45,8 @@ var Flags = function Flags(_ref) {
45
45
 
46
46
  var _ref$flags = _ref.flags,
47
47
  flags = _ref$flags === undefined ? [] : _ref$flags,
48
- isHeader = _ref.isHeader;
48
+ isHeader = _ref.isHeader,
49
+ HTMLRenderer = _ref.HTMLRenderer;
49
50
 
50
51
  var classes = useStyles();
51
52
  var noFlags = R.isNil(flags) || R.isEmpty(flags);
@@ -55,7 +56,6 @@ var Flags = function Flags(_ref) {
55
56
  var codedIcons = R.pipe(R.reduce(function (acc, flag) {
56
57
  return R.when(R.always(R.has('code', flag)), R.append(flag.code))(acc);
57
58
  }, []), R.join(','))(flags);
58
-
59
59
  var content = React.createElement(
60
60
  'ul',
61
61
  { className: classes.content },
@@ -64,7 +64,7 @@ var Flags = function Flags(_ref) {
64
64
  return React.createElement(
65
65
  'li',
66
66
  { key: index },
67
- label
67
+ R.is(Function, HTMLRenderer) ? React.createElement(HTMLRenderer, { html: label }) : label
68
68
  );
69
69
  }, flags)
70
70
  );
@@ -106,7 +106,8 @@ var Flags = function Flags(_ref) {
106
106
 
107
107
  Flags.propTypes = process.env.NODE_ENV !== "production" ? {
108
108
  flags: PropTypes.array,
109
- isHeader: PropTypes.bool
109
+ isHeader: PropTypes.bool,
110
+ HTMLRenderer: PropTypes.func
110
111
  } : {};
111
112
 
112
113
  export default Flags;
@@ -50,7 +50,8 @@ var Header = function Header(_ref) {
50
50
  var headerData = _ref.headerData,
51
51
  valuesHeaderData = _ref.valuesHeaderData,
52
52
  xLayoutDataLength = _ref.xLayoutDataLength,
53
- subHeadCellsWidth = _ref.subHeadCellsWidth;
53
+ subHeadCellsWidth = _ref.subHeadCellsWidth,
54
+ HTMLRenderer = _ref.HTMLRenderer;
54
55
 
55
56
  var classes = useStyles();
56
57
  var theme = useTheme();
@@ -84,7 +85,7 @@ var Header = function Header(_ref) {
84
85
  Typography,
85
86
  { variant: 'body1', className: classes.cellLabelHeader },
86
87
  R.path([0, 'data', index, 'dimension', 'label'], headerData),
87
- React.createElement(Flags, { flags: flags, isHeader: true })
88
+ React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: flags, isHeader: true })
88
89
  )
89
90
  )
90
91
  ),
@@ -117,7 +118,7 @@ var Header = function Header(_ref) {
117
118
  variant: 'body1'
118
119
  },
119
120
  R.prop('label', headerItem),
120
- React.createElement(Flags, { flags: flags, isHeader: true })
121
+ React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: flags, isHeader: true })
121
122
  )
122
123
  )
123
124
  );
@@ -130,7 +131,8 @@ Header.propTypes = process.env.NODE_ENV !== "production" ? {
130
131
  headerData: PropTypes.array,
131
132
  valuesHeaderData: PropTypes.array,
132
133
  xLayoutDataLength: PropTypes.number,
133
- subHeadCellsWidth: PropTypes.array
134
+ subHeadCellsWidth: PropTypes.array,
135
+ HTMLRenderer: PropTypes.func
134
136
  } : {};
135
137
 
136
138
  export default Header;
@@ -72,7 +72,8 @@ var Section = function Section(_ref) {
72
72
  sectionIndex = _ref.sectionIndex,
73
73
  nbColumnsByRows = _ref.nbColumnsByRows,
74
74
  SideIcon = _ref.SideIcon,
75
- subHeadCellsWidth = _ref.subHeadCellsWidth;
75
+ subHeadCellsWidth = _ref.subHeadCellsWidth,
76
+ HTMLRenderer = _ref.HTMLRenderer;
76
77
 
77
78
  var classes = useStyles();
78
79
  var currentSection = R.path([0, 'key'], section);
@@ -90,7 +91,8 @@ var Section = function Section(_ref) {
90
91
  currentSection: currentSection,
91
92
  xLayoutDataLength: xLayoutDataLength,
92
93
  headerHeight: headerHeight,
93
- SideIcon: SideIcon
94
+ SideIcon: SideIcon,
95
+ HTMLRenderer: HTMLRenderer
94
96
  }),
95
97
  R.map(function (sectionbody) {
96
98
  var _cx2;
@@ -137,7 +139,7 @@ var Section = function Section(_ref) {
137
139
  Typography,
138
140
  { variant: 'body1', tabIndex: 0 },
139
141
  R.path(['value', 'label'], cell),
140
- React.createElement(Flags, { flags: flags })
142
+ React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: flags })
141
143
  )
142
144
  )
143
145
  );
@@ -152,7 +154,7 @@ var Section = function Section(_ref) {
152
154
  'div',
153
155
  { className: classes.flagContainer },
154
156
  !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: R.prop('sideProps', sectionbody) }),
155
- React.createElement(Flags, { flags: R.prop('flags', sectionbody) })
157
+ React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: R.prop('flags', sectionbody) })
156
158
  )
157
159
  ),
158
160
  mapIndexed(function (item, columnIndex) {
@@ -168,6 +170,7 @@ var Section = function Section(_ref) {
168
170
  }, R.pathOr({ value: '..' }, [item.key, currentSection, sectionbody.key, 0], cells), {
169
171
  headers: rowIds + ' ' + columnIds + ' ' + currentSection,
170
172
  cellHandler: cellHandler,
173
+ HTMLRenderer: HTMLRenderer,
171
174
  SideIcon: SideIcon,
172
175
  isActive: isActive,
173
176
  isHighlight: R.any(R.identity)([R.prop(rowId)(activeCellIds), R.prop(columnIndex)(activeCellIds)]),
@@ -197,7 +200,8 @@ Section.propTypes = process.env.NODE_ENV !== "production" ? {
197
200
  nbColumnsByRows: PropTypes.array,
198
201
  maxColumns: PropTypes.number,
199
202
  SideIcon: PropTypes.func,
200
- subHeadCellsWidth: PropTypes.arrayOf(PropTypes.number)
203
+ subHeadCellsWidth: PropTypes.arrayOf(PropTypes.number),
204
+ HTMLRenderer: PropTypes.func
201
205
  } : {};
202
206
 
203
207
  export default Section;
@@ -65,7 +65,8 @@ var SectionHeader = function SectionHeader(_ref) {
65
65
  currentSection = _ref.currentSection,
66
66
  xLayoutDataLength = _ref.xLayoutDataLength,
67
67
  headerHeight = _ref.headerHeight,
68
- SideIcon = _ref.SideIcon;
68
+ SideIcon = _ref.SideIcon,
69
+ HTMLRenderer = _ref.HTMLRenderer;
69
70
 
70
71
  var classes = useStyles();
71
72
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(section)) return null;
@@ -125,7 +126,7 @@ var SectionHeader = function SectionHeader(_ref) {
125
126
  className: cx(classes.flag, classes.stickyHeaderSection, classes.rightLabelPosition, classes.sectionLabelsContainer)
126
127
  },
127
128
  !R.isNil(SideIcon) && React.createElement(SideIcon, { sideProps: R.path([0, 'sideProps'], section) }),
128
- React.createElement(Flags, { flags: R.path([0, 'flags'], section) })
129
+ React.createElement(Flags, { HTMLRenderer: HTMLRenderer, flags: R.path([0, 'flags'], section) })
129
130
  )
130
131
  )
131
132
  )
@@ -138,7 +139,8 @@ SectionHeader.propTypes = process.env.NODE_ENV !== "production" ? {
138
139
  currentSection: PropTypes.string,
139
140
  xLayoutDataLength: PropTypes.number,
140
141
  headerHeight: PropTypes.number,
141
- SideIcon: PropTypes.func
142
+ SideIcon: PropTypes.func,
143
+ HTMLRenderer: PropTypes.func
142
144
  } : {};
143
145
 
144
146
  export default SectionHeader;
@@ -51,7 +51,8 @@ var SubHeader = React.forwardRef(function (_ref, refs) {
51
51
  xLayoutData = _ref.xLayoutData,
52
52
  activeCellIds = _ref.activeCellIds,
53
53
  subHeadCellsWidth = _ref.subHeadCellsWidth,
54
- SideIcon = _ref.SideIcon;
54
+ SideIcon = _ref.SideIcon,
55
+ HTMLRenderer = _ref.HTMLRenderer;
55
56
 
56
57
  var classes = useStyles();
57
58
  var theme = useTheme();
@@ -79,7 +80,10 @@ var SubHeader = React.forwardRef(function (_ref, refs) {
79
80
  Typography,
80
81
  { variant: 'body1', tabIndex: 0, className: classes.label },
81
82
  R.path(['dimension', 'label'], rowItem),
82
- React.createElement(Flags, { flags: R.path(['dimension', 'flags'], rowItem) })
83
+ React.createElement(Flags, {
84
+ HTMLRenderer: HTMLRenderer,
85
+ flags: R.path(['dimension', 'flags'], rowItem)
86
+ })
83
87
  )
84
88
  )
85
89
  );
@@ -109,7 +113,8 @@ SubHeader.propTypes = process.env.NODE_ENV !== "production" ? {
109
113
  headerData: PropTypes.array,
110
114
  xLayoutData: PropTypes.array,
111
115
  SideIcon: PropTypes.func,
112
- subHeadCellsWidth: PropTypes.arrayOf(PropTypes.number)
116
+ subHeadCellsWidth: PropTypes.arrayOf(PropTypes.number),
117
+ HTMLRenderer: PropTypes.func
113
118
  } : {};
114
119
 
115
120
  export default SubHeader;
@@ -198,6 +198,7 @@ var DataHeader = function DataHeader(_ref4) {
198
198
  className: (0, _classnames2.default)(classes.title, classes.disclaimer),
199
199
  title: disclaimer,
200
200
  tabIndex: 0,
201
+ 'data-testid': 'data-header-disclaimer',
201
202
  variant: 'warning',
202
203
  'aria-hidden': false,
203
204
  placement: 'bottom',
@@ -72,6 +72,8 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
72
72
 
73
73
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
74
74
 
75
+ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
76
+
75
77
  var useStyles = (0, _styles.makeStyles)(function (theme) {
76
78
  return {
77
79
  card: {
@@ -173,21 +175,34 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
173
175
  };
174
176
  });
175
177
 
176
- var Dataflow = function Dataflow(_ref) {
178
+ var BasicHTMLRenderer = function BasicHTMLRenderer(_ref) {
179
+ var html = _ref.html,
180
+ rest = _objectWithoutProperties(_ref, ['html']);
181
+
182
+ return _react2.default.createElement('span', _extends({ dangerouslySetInnerHTML: { __html: html } }, rest));
183
+ };
184
+
185
+ BasicHTMLRenderer.propTypes = process.env.NODE_ENV !== "production" ? {
186
+ html: _propTypes2.default.string
187
+ } : {};
188
+
189
+ var Dataflow = function Dataflow(_ref2) {
177
190
  var _cx, _cx2, _cx3;
178
191
 
179
- var testId = _ref.testId,
180
- title = _ref.title,
181
- body = _ref.body,
182
- url = _ref.url,
183
- handleUrl = _ref.handleUrl,
184
- label = _ref.label,
185
- labels = _ref.labels,
186
- _ref$highlights = _ref.highlights,
187
- highlights = _ref$highlights === undefined ? [] : _ref$highlights,
188
- _ref$categories = _ref.categories,
189
- categories = _ref$categories === undefined ? [] : _ref$categories,
190
- children = _ref.children;
192
+ var testId = _ref2.testId,
193
+ title = _ref2.title,
194
+ body = _ref2.body,
195
+ url = _ref2.url,
196
+ handleUrl = _ref2.handleUrl,
197
+ label = _ref2.label,
198
+ labels = _ref2.labels,
199
+ _ref2$highlights = _ref2.highlights,
200
+ highlights = _ref2$highlights === undefined ? [] : _ref2$highlights,
201
+ _ref2$categories = _ref2.categories,
202
+ categories = _ref2$categories === undefined ? [] : _ref2$categories,
203
+ children = _ref2.children,
204
+ _ref2$HTMLRenderer = _ref2.HTMLRenderer,
205
+ HTMLRenderer = _ref2$HTMLRenderer === undefined ? BasicHTMLRenderer : _ref2$HTMLRenderer;
191
206
 
192
207
  var classes = useStyles();
193
208
 
@@ -228,7 +243,7 @@ var Dataflow = function Dataflow(_ref) {
228
243
  color: 'primary',
229
244
  underline: 'none'
230
245
  },
231
- _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: title } })
246
+ _react2.default.createElement(HTMLRenderer, { html: title })
232
247
  )
233
248
  )
234
249
  )
@@ -252,7 +267,7 @@ var Dataflow = function Dataflow(_ref) {
252
267
  align: 'justify',
253
268
  className: (0, _classnames2.default)(classes.container, classes.mutedText, (_cx2 = {}, _cx2[classes.unmutedText] = isExpanded, _cx2))
254
269
  },
255
- _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: description } })
270
+ _react2.default.createElement(HTMLRenderer, { html: description })
256
271
  ),
257
272
  !isExpanded && _react2.default.createElement('div', { className: classes.fading })
258
273
  )
@@ -263,8 +278,8 @@ var Dataflow = function Dataflow(_ref) {
263
278
  _react2.default.createElement(
264
279
  _Typography2.default,
265
280
  { variant: 'body2', align: 'justify', className: classes.container },
266
- _react2.default.createElement('span', {
267
- dangerouslySetInnerHTML: { __html: R.prop('highlightDescription')(body) },
281
+ _react2.default.createElement(HTMLRenderer, {
282
+ html: R.propOr('', 'highlightDescription')(body),
268
283
  className: (0, _classnames2.default)((_cx3 = {}, _cx3[classes.noDisplay] = isExpanded, _cx3))
269
284
  })
270
285
  )
@@ -272,9 +287,9 @@ var Dataflow = function Dataflow(_ref) {
272
287
  _react2.default.createElement(
273
288
  _CardContent2.default,
274
289
  { className: classes.cardContent },
275
- R.map(function (_ref2) {
276
- var field = _ref2[0],
277
- highlight = _ref2[1];
290
+ R.map(function (_ref3) {
291
+ var field = _ref3[0],
292
+ highlight = _ref3[1];
278
293
  return _react2.default.createElement(
279
294
  _Typography2.default,
280
295
  {
@@ -291,16 +306,16 @@ var Dataflow = function Dataflow(_ref) {
291
306
  ':\xA0'
292
307
  ),
293
308
  ' ',
294
- _react2.default.createElement('span', { dangerouslySetInnerHTML: { __html: highlight } })
309
+ _react2.default.createElement(HTMLRenderer, { html: highlight })
295
310
  );
296
311
  })(highlights),
297
312
  _react2.default.createElement(
298
313
  _Collapse2.default,
299
314
  { 'in': isExpanded },
300
315
  _react2.default.createElement(_Divider2.default, { className: classes.divider }),
301
- R.map(function (_ref3) {
302
- var field = _ref3[0],
303
- categorie = _ref3[1];
316
+ R.map(function (_ref4) {
317
+ var field = _ref4[0],
318
+ categorie = _ref4[1];
304
319
  return _react2.default.createElement(
305
320
  _Typography2.default,
306
321
  {
@@ -411,13 +426,14 @@ Dataflow.propTypes = process.env.NODE_ENV !== "production" ? {
411
426
  }),
412
427
  highlights: _propTypes2.default.array,
413
428
  categories: _propTypes2.default.array,
414
- children: _propTypes2.default.node
429
+ children: _propTypes2.default.node,
430
+ HTMLRenderer: _propTypes2.default.func
415
431
  } : {};
416
432
 
417
- exports.default = (0, _utils.withBlank)(function (_ref4) {
418
- var isBlank = _ref4.isBlank,
419
- _ref4$title = _ref4.title,
420
- title = _ref4$title === undefined ? '' : _ref4$title;
433
+ exports.default = (0, _utils.withBlank)(function (_ref5) {
434
+ var isBlank = _ref5.isBlank,
435
+ _ref5$title = _ref5.title,
436
+ title = _ref5$title === undefined ? '' : _ref5$title;
421
437
  return {
422
438
  isBlank: R.or(isBlank, R.isEmpty(title))
423
439
  };
@@ -33,15 +33,21 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
33
33
  alignItems: 'center'
34
34
  },
35
35
  progress: {
36
- margin: theme.spacing(2)
36
+ margin: theme.spacing(2),
37
+ color: function color(_ref) {
38
+ var isWarning = _ref.isWarning;
39
+ return isWarning ? theme.palette.warning.main : theme.palette.primary.main;
40
+ }
37
41
  }
38
42
  };
39
43
  });
40
44
 
41
- var Loading = function Loading(_ref) {
42
- var message = _ref.message;
45
+ var Loading = function Loading(_ref2) {
46
+ var message = _ref2.message,
47
+ _ref2$isWarning = _ref2.isWarning,
48
+ isWarning = _ref2$isWarning === undefined ? false : _ref2$isWarning;
43
49
 
44
- var classes = useStyles();
50
+ var classes = useStyles({ isWarning: isWarning });
45
51
 
46
52
  return _react2.default.createElement(
47
53
  'div',
@@ -56,7 +62,8 @@ var Loading = function Loading(_ref) {
56
62
  };
57
63
 
58
64
  Loading.propTypes = process.env.NODE_ENV !== "production" ? {
59
- message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element])
65
+ message: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.element]),
66
+ isWarning: _propTypes2.default.bool
60
67
  } : {};
61
68
 
62
69
  exports.default = Loading;
@@ -71,7 +71,8 @@ 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
+ _ref$description = _ref.description,
75
+ description = _ref$description === undefined ? '' : _ref$description,
75
76
  _ref$nodePath = _ref.nodePath,
76
77
  nodePath = _ref$nodePath === undefined ? [] : _ref$nodePath,
77
78
  isSelected = _ref.isSelected,
@@ -90,7 +91,13 @@ var Item = function Item(_ref) {
90
91
  isRtl = _ref.isRtl,
91
92
  accessibility = _ref.accessibility,
92
93
  index = _ref.index,
93
- labelRenderer = _ref.labelRenderer;
94
+ labelRenderer = _ref.labelRenderer,
95
+ HTMLRenderer = _ref.HTMLRenderer;
96
+
97
+ var _React$useState = _react2.default.useState(false),
98
+ isTooltipShown = _React$useState[0],
99
+ setIsTooltipShown = _React$useState[1];
100
+
94
101
  return _react2.default.createElement(
95
102
  _ListItem2.default,
96
103
  {
@@ -99,9 +106,9 @@ var Item = function Item(_ref) {
99
106
  className: (0, _classnames2.default)(classes.listItemContainer, (_cx = {}, _cx[classes.disableSecondaryAction] = R.not(hasChild), _cx)),
100
107
  disabled: isDisabled,
101
108
  onClick: isDisabled ? null : changeSelection(id, index),
102
- onMouseDown: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(index, { isDown: true }) : null,
103
- onMouseUp: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(null, { isUp: true }) : null,
104
- onMouseOver: R.is(Function, changeMouseSelection) && R.not(isDisabled) ? changeMouseSelection(index, { isOver: true }) : null,
109
+ onMouseDown: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(index, { isDown: true }) : null,
110
+ onMouseUp: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(null, { isUp: true }) : null,
111
+ onMouseOver: R.is(Function, changeMouseSelection) && R.not(isDisabled) && !isTooltipShown ? changeMouseSelection(index, { isOver: true }) : null,
105
112
  onKeyPress: function onKeyPress(e) {
106
113
  if (e.key === 'Enter' && R.not(isDisabled)) {
107
114
  changeSelection(id, index)(e);
@@ -144,11 +151,23 @@ var Item = function Item(_ref) {
144
151
  _react2.default.createElement(
145
152
  _.Tooltip,
146
153
  {
147
- title: R.isNil(description) ? '' : description,
154
+ title: R.or(R.isNil(HTMLRenderer), R.isEmpty(description)) ? description : _react2.default.createElement(HTMLRenderer, { html: description, onClick: function onClick(e) {
155
+ return e.stopPropagation();
156
+ } }),
157
+ PopperProps: {
158
+ onMouseEnter: function onMouseEnter() {
159
+ return setIsTooltipShown(true);
160
+ },
161
+ onMouseLeave: function onMouseLeave() {
162
+ return setIsTooltipShown(false);
163
+ }
164
+ },
165
+ enterDelay: 400,
148
166
  tabIndex: 0,
149
167
  'aria-label': description,
150
168
  'aria-hidden': false,
151
- placement: 'top'
169
+ placement: 'top',
170
+ interactive: Boolean(HTMLRenderer)
152
171
  },
153
172
  _react2.default.createElement(
154
173
  _Typography2.default,
@@ -156,7 +175,7 @@ var Item = function Item(_ref) {
156
175
  'data-testid': testId + '_value_' + id,
157
176
  color: 'inherit',
158
177
  variant: 'body2',
159
- className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isNil(description), _cx6))
178
+ className: (0, _classnames2.default)(classes.label, (_cx6 = {}, _cx6[classes.disabledLabel] = isDisabled, _cx6[classes.tooltipNotice] = !R.isEmpty(description), _cx6))
160
179
  },
161
180
  label
162
181
  )
@@ -250,7 +269,8 @@ Item.propTypes = process.env.NODE_ENV !== "production" ? {
250
269
  testId: _propTypes2.default.string,
251
270
  accessibility: _propTypes2.default.bool,
252
271
  index: _propTypes2.default.number,
253
- labelRenderer: _propTypes2.default.func
272
+ labelRenderer: _propTypes2.default.func,
273
+ HTMLRenderer: _propTypes2.default.func
254
274
  } : {};
255
275
 
256
276
  exports.default = Item;
@@ -105,7 +105,8 @@ var ScopeList = function ScopeList(props) {
105
105
  changeMouseSelection = props.changeMouseSelection,
106
106
  _props$labelRenderer = props.labelRenderer,
107
107
  labelRenderer = _props$labelRenderer === undefined ? R.prop('label') : _props$labelRenderer,
108
- disableAccessor = props.disableAccessor;
108
+ disableAccessor = props.disableAccessor,
109
+ HTMLRenderer = props.HTMLRenderer;
109
110
 
110
111
  var _useState = (0, _react.useState)(false),
111
112
  isMenuOpen = _useState[0],
@@ -289,6 +290,7 @@ var ScopeList = function ScopeList(props) {
289
290
  //if (isScrolling) return <div style={style}>...</div>
290
291
  var item = R.nth(index, list);
291
292
  return _react2.default.createElement(_Item2.default, _extends({
293
+ HTMLRenderer: HTMLRenderer,
292
294
  labelRenderer: labelRenderer,
293
295
  index: index,
294
296
  style: style,
@@ -351,7 +353,8 @@ ScopeList.propTypes = process.env.NODE_ENV !== "production" ? {
351
353
  labelRenderer: _propTypes2.default.func,
352
354
  disableAccessor: _propTypes2.default.func,
353
355
  items: _propTypes2.default.array,
354
- itemsById: _propTypes2.default.object
356
+ itemsById: _propTypes2.default.object,
357
+ HTMLRenderer: _propTypes2.default.func
355
358
  } : {};
356
359
 
357
360
  exports.default = R.compose((0, _utils.withBlank)(function (_ref3) {
@@ -104,7 +104,8 @@ var TableHtml5 = function TableHtml5(_ref) {
104
104
  activeCellHandler = _ref.activeCellHandler,
105
105
  SideIcon = _ref.SideIcon,
106
106
  _ref$testId = _ref.testId,
107
- testId = _ref$testId === undefined ? 'vis-table' : _ref$testId;
107
+ testId = _ref$testId === undefined ? 'vis-table' : _ref$testId,
108
+ HTMLRenderer = _ref.HTMLRenderer;
108
109
 
109
110
  var classes = useStyles();
110
111
 
@@ -140,7 +141,12 @@ var TableHtml5 = function TableHtml5(_ref) {
140
141
  }, []);
141
142
 
142
143
  var isSingleObs = R.hasPath(['', '', '', 0], cells);
143
- if (isSingleObs) return _react2.default.createElement(_cell2.default, _extends({}, R.pathOr({}, ['', '', '', 0], cells), { cellHandler: cellHandler, isOne: true }));
144
+ if (isSingleObs) return _react2.default.createElement(_cell2.default, _extends({
145
+ HTMLRenderer: HTMLRenderer
146
+ }, R.pathOr({}, ['', '', '', 0], cells), {
147
+ cellHandler: cellHandler,
148
+ isOne: true
149
+ }));
144
150
 
145
151
  var xLayoutData = R.pathOr([], [0, 1, 0, 'data'], sectionsData);
146
152
  var xLayoutDataLength = R.length(xLayoutData);
@@ -162,7 +168,8 @@ var TableHtml5 = function TableHtml5(_ref) {
162
168
  headerData: headerData,
163
169
  valuesHeaderData: valuesHeaderData,
164
170
  xLayoutDataLength: xLayoutDataLength,
165
- subHeadCellsWidth: subHeadCellsWidth
171
+ subHeadCellsWidth: subHeadCellsWidth,
172
+ HTMLRenderer: HTMLRenderer
166
173
  }),
167
174
  _react2.default.createElement(_subHeader2.default, {
168
175
  headerData: headerData,
@@ -170,7 +177,8 @@ var TableHtml5 = function TableHtml5(_ref) {
170
177
  activeCellIds: activeCellIds,
171
178
  SideIcon: SideIcon,
172
179
  ref: subHeadCellsRef,
173
- subHeadCellsWidth: subHeadCellsWidth
180
+ subHeadCellsWidth: subHeadCellsWidth,
181
+ HTMLRenderer: HTMLRenderer
174
182
  })
175
183
  ),
176
184
  mapIndexed(function (section, index) {
@@ -187,7 +195,8 @@ var TableHtml5 = function TableHtml5(_ref) {
187
195
  activeCellIds: activeCellIds,
188
196
  activeCellHandler: activeCellHandler,
189
197
  SideIcon: SideIcon,
190
- subHeadCellsWidth: subHeadCellsWidth
198
+ subHeadCellsWidth: subHeadCellsWidth,
199
+ HTMLRenderer: HTMLRenderer
191
200
  });
192
201
  }, sectionsData)
193
202
  );
@@ -201,7 +210,8 @@ TableHtml5.propTypes = process.env.NODE_ENV !== "production" ? {
201
210
  activeCellHandler: _propTypes2.default.func,
202
211
  activeCellIds: _propTypes2.default.object,
203
212
  SideIcon: _propTypes2.default.func,
204
- testId: _propTypes2.default.string
213
+ testId: _propTypes2.default.string,
214
+ HTMLRenderer: _propTypes2.default.func
205
215
  } : {};
206
216
 
207
217
  exports.default = TableHtml5;
@@ -88,7 +88,8 @@ var Cell = function Cell(_ref) {
88
88
  isActive = _ref.isActive,
89
89
  isHighlight = _ref.isHighlight,
90
90
  sideProps = _ref.sideProps,
91
- SideIcon = _ref.SideIcon;
91
+ SideIcon = _ref.SideIcon,
92
+ HTMLRenderer = _ref.HTMLRenderer;
92
93
 
93
94
  var classes = useStyles();
94
95
  var hasFlag = R.not(R.isEmpty(flags));
@@ -104,8 +105,8 @@ var Cell = function Cell(_ref) {
104
105
  },
105
106
  className: classes.link
106
107
  },
107
- value
108
- ) : value;
108
+ R.is(Function, HTMLRenderer) ? _react2.default.createElement(HTMLRenderer, { html: value }) : value
109
+ ) : R.is(Function, HTMLRenderer) ? _react2.default.createElement(HTMLRenderer, { html: value }) : value;
109
110
 
110
111
  return _react2.default.createElement(
111
112
  _TableCell2.default,
@@ -122,7 +123,7 @@ var Cell = function Cell(_ref) {
122
123
  _Typography2.default,
123
124
  { variant: 'body1', tabIndex: 0, noWrap: hasFlag },
124
125
  !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: sideProps, className: classes.value }),
125
- hasFlag && _react2.default.createElement(_flags2.default, { flags: flags }),
126
+ hasFlag && _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: flags }),
126
127
  uiValue
127
128
  )
128
129
  )
@@ -140,7 +141,8 @@ Cell.propTypes = process.env.NODE_ENV !== "production" ? {
140
141
  isHighlight: _propTypes2.default.bool,
141
142
  activeCellHandler: _propTypes2.default.func,
142
143
  sideProps: _propTypes2.default.object,
143
- SideIcon: _propTypes2.default.func
144
+ SideIcon: _propTypes2.default.func,
145
+ HTMLRenderer: _propTypes2.default.func
144
146
  } : {};
145
147
 
146
148
  exports.default = Cell;
@@ -72,7 +72,8 @@ var Flags = function Flags(_ref) {
72
72
 
73
73
  var _ref$flags = _ref.flags,
74
74
  flags = _ref$flags === undefined ? [] : _ref$flags,
75
- isHeader = _ref.isHeader;
75
+ isHeader = _ref.isHeader,
76
+ HTMLRenderer = _ref.HTMLRenderer;
76
77
 
77
78
  var classes = useStyles();
78
79
  var noFlags = R.isNil(flags) || R.isEmpty(flags);
@@ -82,7 +83,6 @@ var Flags = function Flags(_ref) {
82
83
  var codedIcons = R.pipe(R.reduce(function (acc, flag) {
83
84
  return R.when(R.always(R.has('code', flag)), R.append(flag.code))(acc);
84
85
  }, []), R.join(','))(flags);
85
-
86
86
  var content = _react2.default.createElement(
87
87
  'ul',
88
88
  { className: classes.content },
@@ -91,7 +91,7 @@ var Flags = function Flags(_ref) {
91
91
  return _react2.default.createElement(
92
92
  'li',
93
93
  { key: index },
94
- label
94
+ R.is(Function, HTMLRenderer) ? _react2.default.createElement(HTMLRenderer, { html: label }) : label
95
95
  );
96
96
  }, flags)
97
97
  );
@@ -133,7 +133,8 @@ var Flags = function Flags(_ref) {
133
133
 
134
134
  Flags.propTypes = process.env.NODE_ENV !== "production" ? {
135
135
  flags: _propTypes2.default.array,
136
- isHeader: _propTypes2.default.bool
136
+ isHeader: _propTypes2.default.bool,
137
+ HTMLRenderer: _propTypes2.default.func
137
138
  } : {};
138
139
 
139
140
  exports.default = Flags;
@@ -83,7 +83,8 @@ var Header = function Header(_ref) {
83
83
  var headerData = _ref.headerData,
84
84
  valuesHeaderData = _ref.valuesHeaderData,
85
85
  xLayoutDataLength = _ref.xLayoutDataLength,
86
- subHeadCellsWidth = _ref.subHeadCellsWidth;
86
+ subHeadCellsWidth = _ref.subHeadCellsWidth,
87
+ HTMLRenderer = _ref.HTMLRenderer;
87
88
 
88
89
  var classes = useStyles();
89
90
  var theme = (0, _styles.useTheme)();
@@ -117,7 +118,7 @@ var Header = function Header(_ref) {
117
118
  _Typography2.default,
118
119
  { variant: 'body1', className: classes.cellLabelHeader },
119
120
  R.path([0, 'data', index, 'dimension', 'label'], headerData),
120
- _react2.default.createElement(_flags2.default, { flags: flags, isHeader: true })
121
+ _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: flags, isHeader: true })
121
122
  )
122
123
  )
123
124
  ),
@@ -150,7 +151,7 @@ var Header = function Header(_ref) {
150
151
  variant: 'body1'
151
152
  },
152
153
  R.prop('label', headerItem),
153
- _react2.default.createElement(_flags2.default, { flags: flags, isHeader: true })
154
+ _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: flags, isHeader: true })
154
155
  )
155
156
  )
156
157
  );
@@ -163,7 +164,8 @@ Header.propTypes = process.env.NODE_ENV !== "production" ? {
163
164
  headerData: _propTypes2.default.array,
164
165
  valuesHeaderData: _propTypes2.default.array,
165
166
  xLayoutDataLength: _propTypes2.default.number,
166
- subHeadCellsWidth: _propTypes2.default.array
167
+ subHeadCellsWidth: _propTypes2.default.array,
168
+ HTMLRenderer: _propTypes2.default.func
167
169
  } : {};
168
170
 
169
171
  exports.default = Header;
@@ -114,7 +114,8 @@ var Section = function Section(_ref) {
114
114
  sectionIndex = _ref.sectionIndex,
115
115
  nbColumnsByRows = _ref.nbColumnsByRows,
116
116
  SideIcon = _ref.SideIcon,
117
- subHeadCellsWidth = _ref.subHeadCellsWidth;
117
+ subHeadCellsWidth = _ref.subHeadCellsWidth,
118
+ HTMLRenderer = _ref.HTMLRenderer;
118
119
 
119
120
  var classes = useStyles();
120
121
  var currentSection = R.path([0, 'key'], section);
@@ -132,7 +133,8 @@ var Section = function Section(_ref) {
132
133
  currentSection: currentSection,
133
134
  xLayoutDataLength: xLayoutDataLength,
134
135
  headerHeight: headerHeight,
135
- SideIcon: SideIcon
136
+ SideIcon: SideIcon,
137
+ HTMLRenderer: HTMLRenderer
136
138
  }),
137
139
  R.map(function (sectionbody) {
138
140
  var _cx2;
@@ -179,7 +181,7 @@ var Section = function Section(_ref) {
179
181
  _Typography2.default,
180
182
  { variant: 'body1', tabIndex: 0 },
181
183
  R.path(['value', 'label'], cell),
182
- _react2.default.createElement(_flags2.default, { flags: flags })
184
+ _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: flags })
183
185
  )
184
186
  )
185
187
  );
@@ -194,7 +196,7 @@ var Section = function Section(_ref) {
194
196
  'div',
195
197
  { className: classes.flagContainer },
196
198
  !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: R.prop('sideProps', sectionbody) }),
197
- _react2.default.createElement(_flags2.default, { flags: R.prop('flags', sectionbody) })
199
+ _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: R.prop('flags', sectionbody) })
198
200
  )
199
201
  ),
200
202
  mapIndexed(function (item, columnIndex) {
@@ -210,6 +212,7 @@ var Section = function Section(_ref) {
210
212
  }, R.pathOr({ value: '..' }, [item.key, currentSection, sectionbody.key, 0], cells), {
211
213
  headers: rowIds + ' ' + columnIds + ' ' + currentSection,
212
214
  cellHandler: cellHandler,
215
+ HTMLRenderer: HTMLRenderer,
213
216
  SideIcon: SideIcon,
214
217
  isActive: isActive,
215
218
  isHighlight: R.any(R.identity)([R.prop(rowId)(activeCellIds), R.prop(columnIndex)(activeCellIds)]),
@@ -239,7 +242,8 @@ Section.propTypes = process.env.NODE_ENV !== "production" ? {
239
242
  nbColumnsByRows: _propTypes2.default.array,
240
243
  maxColumns: _propTypes2.default.number,
241
244
  SideIcon: _propTypes2.default.func,
242
- subHeadCellsWidth: _propTypes2.default.arrayOf(_propTypes2.default.number)
245
+ subHeadCellsWidth: _propTypes2.default.arrayOf(_propTypes2.default.number),
246
+ HTMLRenderer: _propTypes2.default.func
243
247
  } : {};
244
248
 
245
249
  exports.default = Section;
@@ -101,7 +101,8 @@ var SectionHeader = function SectionHeader(_ref) {
101
101
  currentSection = _ref.currentSection,
102
102
  xLayoutDataLength = _ref.xLayoutDataLength,
103
103
  headerHeight = _ref.headerHeight,
104
- SideIcon = _ref.SideIcon;
104
+ SideIcon = _ref.SideIcon,
105
+ HTMLRenderer = _ref.HTMLRenderer;
105
106
 
106
107
  var classes = useStyles();
107
108
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(section)) return null;
@@ -161,7 +162,7 @@ var SectionHeader = function SectionHeader(_ref) {
161
162
  className: (0, _classnames2.default)(classes.flag, classes.stickyHeaderSection, classes.rightLabelPosition, classes.sectionLabelsContainer)
162
163
  },
163
164
  !R.isNil(SideIcon) && _react2.default.createElement(SideIcon, { sideProps: R.path([0, 'sideProps'], section) }),
164
- _react2.default.createElement(_flags2.default, { flags: R.path([0, 'flags'], section) })
165
+ _react2.default.createElement(_flags2.default, { HTMLRenderer: HTMLRenderer, flags: R.path([0, 'flags'], section) })
165
166
  )
166
167
  )
167
168
  )
@@ -174,7 +175,8 @@ SectionHeader.propTypes = process.env.NODE_ENV !== "production" ? {
174
175
  currentSection: _propTypes2.default.string,
175
176
  xLayoutDataLength: _propTypes2.default.number,
176
177
  headerHeight: _propTypes2.default.number,
177
- SideIcon: _propTypes2.default.func
178
+ SideIcon: _propTypes2.default.func,
179
+ HTMLRenderer: _propTypes2.default.func
178
180
  } : {};
179
181
 
180
182
  exports.default = SectionHeader;
@@ -84,7 +84,8 @@ var SubHeader = _react2.default.forwardRef(function (_ref, refs) {
84
84
  xLayoutData = _ref.xLayoutData,
85
85
  activeCellIds = _ref.activeCellIds,
86
86
  subHeadCellsWidth = _ref.subHeadCellsWidth,
87
- SideIcon = _ref.SideIcon;
87
+ SideIcon = _ref.SideIcon,
88
+ HTMLRenderer = _ref.HTMLRenderer;
88
89
 
89
90
  var classes = useStyles();
90
91
  var theme = (0, _styles.useTheme)();
@@ -112,7 +113,10 @@ var SubHeader = _react2.default.forwardRef(function (_ref, refs) {
112
113
  _Typography2.default,
113
114
  { variant: 'body1', tabIndex: 0, className: classes.label },
114
115
  R.path(['dimension', 'label'], rowItem),
115
- _react2.default.createElement(_flags2.default, { flags: R.path(['dimension', 'flags'], rowItem) })
116
+ _react2.default.createElement(_flags2.default, {
117
+ HTMLRenderer: HTMLRenderer,
118
+ flags: R.path(['dimension', 'flags'], rowItem)
119
+ })
116
120
  )
117
121
  )
118
122
  );
@@ -142,7 +146,8 @@ SubHeader.propTypes = process.env.NODE_ENV !== "production" ? {
142
146
  headerData: _propTypes2.default.array,
143
147
  xLayoutData: _propTypes2.default.array,
144
148
  SideIcon: _propTypes2.default.func,
145
- subHeadCellsWidth: _propTypes2.default.arrayOf(_propTypes2.default.number)
149
+ subHeadCellsWidth: _propTypes2.default.arrayOf(_propTypes2.default.number),
150
+ HTMLRenderer: _propTypes2.default.func
146
151
  } : {};
147
152
 
148
153
  exports.default = SubHeader;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "7.6.1",
3
+ "version": "7.8.0",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",
@@ -80,6 +80,7 @@
80
80
  "react-helmet": "^5.2.1",
81
81
  "react-scrollable-anchor": "^0.6.1",
82
82
  "react-syntax-highlighter": "^10.2.1",
83
+ "sanitize-html": "^2.7.0",
83
84
  "webpack": "^5.68.0",
84
85
  "webpack-cli": "^4.9.2",
85
86
  "webpack-dev-server": "^4.7.4"