@sis-cc/dotstatsuite-visions 12.1.0 → 12.3.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.
@@ -107,6 +107,7 @@ var Item = function Item(_ref) {
107
107
  e.stopPropagation();
108
108
  },
109
109
  tabIndex: 0,
110
+ underline: 'none',
110
111
  style: { display: 'list-item' }
111
112
  },
112
113
  labelAccessor(subtopic, parentId)
@@ -23,7 +23,7 @@ var useStyles = makeStyles(function (theme) {
23
23
  margin: '0px 10px 0 10px'
24
24
  },
25
25
  input: {
26
- padding: '4px 12px 4px 16px',
26
+ padding: '4px 4px',
27
27
  height: 27,
28
28
  '&[type=number]::-webkit-inner-spin-button, &[type=number]::-webkit-outer-spin-button': {
29
29
  '-webkit-appearance': 'none',
@@ -63,7 +63,7 @@ var Header = function Header(_ref) {
63
63
  var theme = useTheme();
64
64
  var isRtl = getIsRtl(theme);
65
65
 
66
- var stickyLabelPosition = R.last(subHeadCellsWidth) + 30 + theme.spacing(1);
66
+ var stickyLabelPosition = R.last(subHeadCellsWidth) + 'px + 30px + ' + theme.spacing(1);
67
67
 
68
68
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(headerData)) return null;
69
69
  return timesIndexed(function (index) {
@@ -5,31 +5,55 @@ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in ob
5
5
  /* eslint react/prop-types: 0 */
6
6
  import * as R from 'ramda';
7
7
  import React, { useEffect, useMemo, useState } from 'react';
8
- import { getHierarchicalId } from './utils';
8
+ import { getDescendants, getHierarchicalId } from './utils';
9
9
 
10
10
  export var spotlightFilter = function spotlightFilter(term) {
11
11
  var labelRenderer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : R.prop('label');
12
+ var displayChildren = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
12
13
  return function (items) {
13
14
  if (R.isEmpty(term) || R.isNil(term)) {
14
15
  return items;
15
16
  }
16
17
 
17
18
  var groupedItemsByParentId = R.groupBy(R.propOr('#ROOT', 'parentId'), items);
18
- var recurse = R.filter(function (item) {
19
- var isValidItem = R.isEmpty(term) || R.isNil(term) ? true : R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
19
+
20
+ var findParents = function findParents(item) {
21
+ var acc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
22
+
23
+ var parentId = R.prop('parentId', item);
24
+ if (parentId && parentId !== '#ROOT') {
25
+ var parent = R.find(R.either(R.propEq('id', parentId), R.propEq('hierarchicalId', parentId)), items);
26
+ if (parent) {
27
+ return findParents(parent, [parent].concat(acc));
28
+ }
29
+ }
30
+ return acc;
31
+ };
32
+
33
+ var recurse = function recurse(item) {
34
+ var isValidItem = R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
35
+
36
+ var result = [];
37
+
20
38
  if (isValidItem) {
21
- return true;
39
+ var parents = findParents(item);
40
+ result = [].concat(parents, [item]);
41
+ if (displayChildren) {
42
+ var children = getDescendants(R.prop('id', item), groupedItemsByParentId);
43
+ return [].concat(parents, [item], children);
44
+ }
22
45
  }
23
46
  if (R.has(getHierarchicalId(item), groupedItemsByParentId)) {
24
- var filtered = recurse(R.prop(getHierarchicalId(item), groupedItemsByParentId));
25
- if (!R.isEmpty(filtered)) {
26
- return true;
27
- }
47
+ var childItems = groupedItemsByParentId[getHierarchicalId(item)] || [];
48
+ var matchingChildren = R.chain(recurse, childItems);
49
+
50
+ // res with any matching children
51
+ return R.uniq([].concat(result, matchingChildren));
28
52
  }
29
- return false;
30
- });
53
+ return result;
54
+ };
31
55
 
32
- return recurse(items);
56
+ return R.uniq(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
33
57
  };
34
58
  };
35
59
 
@@ -38,7 +62,8 @@ var withSpotlight = function withSpotlight(Component) {
38
62
  var items = _ref.items,
39
63
  defaultSpotlight = _ref.defaultSpotlight,
40
64
  labelRenderer = _ref.labelRenderer,
41
- rest = _objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer']);
65
+ displayChildren = _ref.displayChildren,
66
+ rest = _objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer', 'displayChildren']);
42
67
 
43
68
  var _useState = useState({ term: '' }),
44
69
  term = _useState[0].term,
@@ -51,7 +76,7 @@ var withSpotlight = function withSpotlight(Component) {
51
76
  }, [defaultSpotlight]);
52
77
 
53
78
  var filteredItems = useMemo(function () {
54
- return spotlightFilter(term, labelRenderer)(items);
79
+ return spotlightFilter(term, labelRenderer, displayChildren)(items);
55
80
  }, [term, items]);
56
81
 
57
82
  return React.createElement(Component, _extends({}, rest, {
package/es/theme.js CHANGED
@@ -1,3 +1,5 @@
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
+
1
3
  export var innerPalette = {
2
4
  highlight1: '#f7a42c',
3
5
  highlight2: '#8CC841',
@@ -13,7 +15,8 @@ export var innerPalette = {
13
15
 
14
16
  export var sisccTheme = function sisccTheme(_ref) {
15
17
  var rtl = _ref.rtl,
16
- isA11y = _ref.isA11y,
18
+ _ref$isA11y = _ref.isA11y,
19
+ isA11y = _ref$isA11y === undefined ? false : _ref$isA11y,
17
20
  _ref$outerPalette = _ref.outerPalette,
18
21
  outerPalette = _ref$outerPalette === undefined ? {} : _ref$outerPalette;
19
22
 
@@ -21,9 +24,9 @@ export var sisccTheme = function sisccTheme(_ref) {
21
24
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1
22
25
  };
23
26
 
24
- var buttonBaseFocus = {
27
+ var buttonBaseFocus = isA11y && {
25
28
  borderColor: outerPalette.highlight1 || innerPalette.highlight1,
26
- '&.Mui-focused': {
29
+ '&:focus': {
27
30
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1,
28
31
  outlineWidth: 1,
29
32
  outlineStyle: 'auto'
@@ -44,7 +47,11 @@ export var sisccTheme = function sisccTheme(_ref) {
44
47
  disableRipple: true
45
48
  },
46
49
  styleOverrides: {
47
- root: isA11y && buttonBaseFocus
50
+ root: _extends({
51
+ '&:focus': {
52
+ outline: 'none'
53
+ }
54
+ }, buttonBaseFocus)
48
55
  }
49
56
  },
50
57
  MuiUseMediaQuery: {
@@ -79,7 +86,7 @@ export var sisccTheme = function sisccTheme(_ref) {
79
86
  MuiAccordion: {
80
87
  styleOverrides: {
81
88
  root: {
82
- '&$expanded': {
89
+ '&.Mui-expanded': {
83
90
  margin: 0
84
91
  }
85
92
  }
@@ -88,7 +95,10 @@ export var sisccTheme = function sisccTheme(_ref) {
88
95
  MuiButton: {
89
96
  styleOverrides: {
90
97
  root: {
91
- textTransform: 'none'
98
+ textTransform: 'none',
99
+ '&:focus': {
100
+ outline: 'none'
101
+ }
92
102
  },
93
103
  textPrimary: {
94
104
  '&:hover': {
@@ -125,6 +135,9 @@ export var sisccTheme = function sisccTheme(_ref) {
125
135
  }
126
136
  },
127
137
  MuiLink: {
138
+ defaultProps: {
139
+ underline: 'none'
140
+ },
128
141
  styleOverrides: {
129
142
  root: {
130
143
  color: outerPalette.primaryMain || innerPalette.primaryMain,
@@ -134,7 +147,7 @@ export var sisccTheme = function sisccTheme(_ref) {
134
147
  '&.Mui-focused': isA11y && focus
135
148
  },
136
149
  button: {
137
- '&.Mui-focused': isA11y && focus
150
+ '&:focus': isA11y && focus
138
151
  }
139
152
  }
140
153
  },
@@ -138,6 +138,7 @@ var Item = function Item(_ref) {
138
138
  e.stopPropagation();
139
139
  },
140
140
  tabIndex: 0,
141
+ underline: 'none',
141
142
  style: { display: 'list-item' }
142
143
  },
143
144
  labelAccessor(subtopic, parentId)
@@ -58,7 +58,7 @@ var useStyles = (0, _makeStyles2.default)(function (theme) {
58
58
  margin: '0px 10px 0 10px'
59
59
  },
60
60
  input: {
61
- padding: '4px 12px 4px 16px',
61
+ padding: '4px 4px',
62
62
  height: 27,
63
63
  '&[type=number]::-webkit-inner-spin-button, &[type=number]::-webkit-outer-spin-button': {
64
64
  '-webkit-appearance': 'none',
@@ -100,7 +100,7 @@ var Header = function Header(_ref) {
100
100
  var theme = (0, _styles.useTheme)();
101
101
  var isRtl = (0, _utils.getIsRtl)(theme);
102
102
 
103
- var stickyLabelPosition = R.last(subHeadCellsWidth) + 30 + theme.spacing(1);
103
+ var stickyLabelPosition = R.last(subHeadCellsWidth) + 'px + 30px + ' + theme.spacing(1);
104
104
 
105
105
  if (R.compose(R.anyPass([R.isNil, R.isEmpty]), R.path([0, 'data']))(headerData)) return null;
106
106
  return timesIndexed(function (index) {
@@ -24,27 +24,51 @@ function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in ob
24
24
 
25
25
  var spotlightFilter = exports.spotlightFilter = function spotlightFilter(term) {
26
26
  var labelRenderer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : R.prop('label');
27
+ var displayChildren = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
27
28
  return function (items) {
28
29
  if (R.isEmpty(term) || R.isNil(term)) {
29
30
  return items;
30
31
  }
31
32
 
32
33
  var groupedItemsByParentId = R.groupBy(R.propOr('#ROOT', 'parentId'), items);
33
- var recurse = R.filter(function (item) {
34
- var isValidItem = R.isEmpty(term) || R.isNil(term) ? true : R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
34
+
35
+ var findParents = function findParents(item) {
36
+ var acc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
37
+
38
+ var parentId = R.prop('parentId', item);
39
+ if (parentId && parentId !== '#ROOT') {
40
+ var parent = R.find(R.either(R.propEq('id', parentId), R.propEq('hierarchicalId', parentId)), items);
41
+ if (parent) {
42
+ return findParents(parent, [parent].concat(acc));
43
+ }
44
+ }
45
+ return acc;
46
+ };
47
+
48
+ var recurse = function recurse(item) {
49
+ var isValidItem = R.includes(R.toLower(term), R.toLower(labelRenderer(item)));
50
+
51
+ var result = [];
52
+
35
53
  if (isValidItem) {
36
- return true;
54
+ var parents = findParents(item);
55
+ result = [].concat(parents, [item]);
56
+ if (displayChildren) {
57
+ var children = (0, _utils.getDescendants)(R.prop('id', item), groupedItemsByParentId);
58
+ return [].concat(parents, [item], children);
59
+ }
37
60
  }
38
61
  if (R.has((0, _utils.getHierarchicalId)(item), groupedItemsByParentId)) {
39
- var filtered = recurse(R.prop((0, _utils.getHierarchicalId)(item), groupedItemsByParentId));
40
- if (!R.isEmpty(filtered)) {
41
- return true;
42
- }
62
+ var childItems = groupedItemsByParentId[(0, _utils.getHierarchicalId)(item)] || [];
63
+ var matchingChildren = R.chain(recurse, childItems);
64
+
65
+ // res with any matching children
66
+ return R.uniq([].concat(result, matchingChildren));
43
67
  }
44
- return false;
45
- });
68
+ return result;
69
+ };
46
70
 
47
- return recurse(items);
71
+ return R.uniq(R.chain(recurse, groupedItemsByParentId['#ROOT'] || []));
48
72
  };
49
73
  };
50
74
 
@@ -53,7 +77,8 @@ var withSpotlight = function withSpotlight(Component) {
53
77
  var items = _ref.items,
54
78
  defaultSpotlight = _ref.defaultSpotlight,
55
79
  labelRenderer = _ref.labelRenderer,
56
- rest = _objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer']);
80
+ displayChildren = _ref.displayChildren,
81
+ rest = _objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer', 'displayChildren']);
57
82
 
58
83
  var _useState = (0, _react.useState)({ term: '' }),
59
84
  term = _useState[0].term,
@@ -66,7 +91,7 @@ var withSpotlight = function withSpotlight(Component) {
66
91
  }, [defaultSpotlight]);
67
92
 
68
93
  var filteredItems = (0, _react.useMemo)(function () {
69
- return spotlightFilter(term, labelRenderer)(items);
94
+ return spotlightFilter(term, labelRenderer, displayChildren)(items);
70
95
  }, [term, items]);
71
96
 
72
97
  return _react2.default.createElement(Component, _extends({}, rest, {
package/lib/theme.js CHANGED
@@ -1,6 +1,9 @@
1
1
  'use strict';
2
2
 
3
3
  exports.__esModule = true;
4
+
5
+ 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; };
6
+
4
7
  var innerPalette = exports.innerPalette = {
5
8
  highlight1: '#f7a42c',
6
9
  highlight2: '#8CC841',
@@ -16,7 +19,8 @@ var innerPalette = exports.innerPalette = {
16
19
 
17
20
  var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
18
21
  var rtl = _ref.rtl,
19
- isA11y = _ref.isA11y,
22
+ _ref$isA11y = _ref.isA11y,
23
+ isA11y = _ref$isA11y === undefined ? false : _ref$isA11y,
20
24
  _ref$outerPalette = _ref.outerPalette,
21
25
  outerPalette = _ref$outerPalette === undefined ? {} : _ref$outerPalette;
22
26
 
@@ -24,9 +28,9 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
24
28
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1
25
29
  };
26
30
 
27
- var buttonBaseFocus = {
31
+ var buttonBaseFocus = isA11y && {
28
32
  borderColor: outerPalette.highlight1 || innerPalette.highlight1,
29
- '&.Mui-focused': {
33
+ '&:focus': {
30
34
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1,
31
35
  outlineWidth: 1,
32
36
  outlineStyle: 'auto'
@@ -47,7 +51,11 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
47
51
  disableRipple: true
48
52
  },
49
53
  styleOverrides: {
50
- root: isA11y && buttonBaseFocus
54
+ root: _extends({
55
+ '&:focus': {
56
+ outline: 'none'
57
+ }
58
+ }, buttonBaseFocus)
51
59
  }
52
60
  },
53
61
  MuiUseMediaQuery: {
@@ -82,7 +90,7 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
82
90
  MuiAccordion: {
83
91
  styleOverrides: {
84
92
  root: {
85
- '&$expanded': {
93
+ '&.Mui-expanded': {
86
94
  margin: 0
87
95
  }
88
96
  }
@@ -91,7 +99,10 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
91
99
  MuiButton: {
92
100
  styleOverrides: {
93
101
  root: {
94
- textTransform: 'none'
102
+ textTransform: 'none',
103
+ '&:focus': {
104
+ outline: 'none'
105
+ }
95
106
  },
96
107
  textPrimary: {
97
108
  '&:hover': {
@@ -128,6 +139,9 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
128
139
  }
129
140
  },
130
141
  MuiLink: {
142
+ defaultProps: {
143
+ underline: 'none'
144
+ },
131
145
  styleOverrides: {
132
146
  root: {
133
147
  color: outerPalette.primaryMain || innerPalette.primaryMain,
@@ -137,7 +151,7 @@ var sisccTheme = exports.sisccTheme = function sisccTheme(_ref) {
137
151
  '&.Mui-focused': isA11y && focus
138
152
  },
139
153
  button: {
140
- '&.Mui-focused': isA11y && focus
154
+ '&:focus': isA11y && focus
141
155
  }
142
156
  }
143
157
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sis-cc/dotstatsuite-visions",
3
- "version": "12.1.0",
3
+ "version": "12.3.0",
4
4
  "description": "Library of visual components",
5
5
  "author": "OECD",
6
6
  "homepage": "https://visions-qa.siscc.org/#o",
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @sis-cc/dotstatsuite-visions v12.1.0 - https://visions-qa.siscc.org/#o
2
+ * @sis-cc/dotstatsuite-visions v12.3.0 - https://visions-qa.siscc.org/#o
3
3
  * MIT Licensed
4
4
  */
5
5
  (function webpackUniversalModuleDefinition(root, factory) {
@@ -9187,7 +9187,7 @@ if (true) {
9187
9187
  /* 166 */
9188
9188
  /***/ (function(module) {
9189
9189
 
9190
- module.exports = {"name":"@sis-cc/dotstatsuite-visions","version":"12.1.0","description":"Library of visual components","author":"OECD","homepage":"https://visions-qa.siscc.org/#o","license":"MIT","repository":"https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-visions","main":"lib/index.js","module":"es/index.js","engines":{"node":">=14"},"files":["css","es","lib","umd"],"scripts":{"build":"nwb build-react-component --copy-files --no-demo && node scripts/doc && nwb build-demo","build:dev":"nwb build-react-component --copy-files --no-demo","clean":"nwb clean-module && nwb clean-demo","prepublishOnly":"npm run build","start":"nwb serve-react-demo","test":"jest","test:watch":"jest --watch --no-cache","lint":"eslint src/ --color","precommit":"lint-staged"},"dependencies":{"@emotion/react":"^11.13.0","@emotion/styled":"^11.13.0","@hello-pangea/dnd":"^16.6.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@mui/styles":"^5.16.5","@react-hook/size":"^2.1.1","classnames":"^2.2.6","cross-env":"^7.0.3","date-fns":"^1.30.1","isemail":"^3.2.0","numeral":"^2.0.6","prop-types":"^15.7.2","ramda":"^0.27.0","react-draggable":"^4.4.5","react-error-boundary":"^4.0.10","react-virtualized":"^9.21.2"},"peerDependencies":{"@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","react":"^18","react-dom":"^18"},"devDependencies":{"@babel/eslint-parser":"^7.5.4","@babel/plugin-syntax-dynamic-import":"^7.2.0","@cfaester/enzyme-adapter-react-18":"^0.7.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^14.0.0","babel-jest":"^24.8.0","babel-preset-react-app":"^9.0.0","dox":"^0.9.0","eslint":"^8.39.0","eslint-plugin-import":"^2.27.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","husky":"^2.7.0","identity-obj-proxy":"^3.0.0","jest":"^24.8.0","jss":"^10.10.0","jss-rtl":"^0.2.3","lint-staged":"^8.2.1","mutationobserver-shim":"^0.3.7","nwb":"0.23.0","prettier":"^2.8.8","pretty-quick":"^3.1.3","react":"^18","react-a11y":"^1.1.0","react-dom":"^18","react-helmet":"^5.2.1","react-scrollable-anchor":"^0.6.1","react-syntax-highlighter":"^10.2.1","sanitize-html":"2.7.0","webpack":"^5.68.0","webpack-cli":"^4.9.2","webpack-dev-server":"^4.7.4"},"jest":{"verbose":true,"coverageDirectory":"coverage","collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/ScopeList/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"testMatch":["**/tests/**/*.{spec,test}.{js,jsx,ts,tsx}","!**/tests/ScopeList.test.js"],"testEnvironment":"jsdom","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy","\\.(jpg|jpeg|png)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"]},"babel":{"presets":["react-app"],"plugins":["@babel/plugin-syntax-dynamic-import"]},"eslintConfig":{"env":{"browser":true,"jest":true,"node":true,"es6":true},"extends":["eslint:recommended","plugin:react/recommended","plugin:jsx-a11y/recommended"],"parser":"@babel/eslint-parser","parserOptions":{"babelOptions":{"presets":[["babel-preset-react-app",false],"babel-preset-react-app/test"]},"ecmaFeatures":{"experimentalObjectRestSpread":true,"jsx":true},"sourceType":"module"},"plugins":["prettier","react","import","react-hooks","jsx-a11y"],"rules":{"no-console":"warn","no-unused-vars":"error","react/display-name":"off","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn","no-use-before-define":"error"}},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"src/**/*.{js,css}":["prettier --write","git add","yarn lint"]},"prettier":{"endOfLine":"lf","useTabs":false,"printWidth":100,"tabWidth":2,"singleQuote":true,"trailingComma":"all","bracketSameLine":false,"bracketSpacing":true,"parser":"babel","semi":true,"arrowParens":"avoid"}};
9190
+ module.exports = {"name":"@sis-cc/dotstatsuite-visions","version":"12.3.0","description":"Library of visual components","author":"OECD","homepage":"https://visions-qa.siscc.org/#o","license":"MIT","repository":"https://gitlab.com/sis-cc/.stat-suite/dotstatsuite-visions","main":"lib/index.js","module":"es/index.js","engines":{"node":">=14"},"files":["css","es","lib","umd"],"scripts":{"build":"nwb build-react-component --copy-files --no-demo && node scripts/doc && nwb build-demo","build:dev":"nwb build-react-component --copy-files --no-demo","clean":"nwb clean-module && nwb clean-demo","prepublishOnly":"npm run build","start":"nwb serve-react-demo","test":"jest","test:watch":"jest --watch --no-cache","lint":"eslint src/ --color","precommit":"lint-staged"},"dependencies":{"@emotion/react":"^11.13.0","@emotion/styled":"^11.13.0","@hello-pangea/dnd":"^16.6.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@mui/styles":"^5.16.5","@react-hook/size":"^2.1.1","classnames":"^2.2.6","cross-env":"^7.0.3","date-fns":"^1.30.1","isemail":"^3.2.0","numeral":"^2.0.6","prop-types":"^15.7.2","ramda":"^0.27.0","react-draggable":"^4.4.5","react-error-boundary":"^4.0.10","react-virtualized":"^9.21.2"},"peerDependencies":{"@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","react":"^18","react-dom":"^18"},"devDependencies":{"@babel/eslint-parser":"^7.5.4","@babel/plugin-syntax-dynamic-import":"^7.2.0","@cfaester/enzyme-adapter-react-18":"^0.7.0","@mui/icons-material":"^5.16.5","@mui/material":"^5.16.5","@testing-library/jest-dom":"^5.16.5","@testing-library/react":"^14.0.0","babel-jest":"^24.8.0","babel-preset-react-app":"^9.0.0","dox":"^0.9.0","eslint":"^8.39.0","eslint-plugin-import":"^2.27.5","eslint-plugin-jsx-a11y":"^6.7.1","eslint-plugin-prettier":"^4.2.1","eslint-plugin-react":"^7.32.2","eslint-plugin-react-hooks":"^4.6.0","husky":"^2.7.0","identity-obj-proxy":"^3.0.0","jest":"^24.8.0","jss":"^10.10.0","jss-rtl":"^0.2.3","lint-staged":"^8.2.1","mutationobserver-shim":"^0.3.7","nwb":"0.23.0","prettier":"^2.8.8","pretty-quick":"^3.1.3","react":"^18","react-a11y":"^1.1.0","react-dom":"^18","react-helmet":"^5.2.1","react-scrollable-anchor":"^0.6.1","react-syntax-highlighter":"^10.2.1","sanitize-html":"2.7.0","webpack":"^5.68.0","webpack-cli":"^4.9.2","webpack-dev-server":"^4.7.4"},"jest":{"verbose":true,"coverageDirectory":"coverage","collectCoverageFrom":["src/**/*.{js,jsx,ts,tsx}","!src/ScopeList/*.{js,jsx,ts,tsx}","!src/**/*.d.ts"],"setupFilesAfterEnv":["<rootDir>/tests/setup.js"],"testMatch":["**/tests/**/*.{spec,test}.{js,jsx,ts,tsx}","!**/tests/ScopeList.test.js"],"testEnvironment":"jsdom","transform":{"^.+\\.(js|jsx|ts|tsx)$":"<rootDir>/node_modules/babel-jest"},"transformIgnorePatterns":["[/\\\\]node_modules[/\\\\].+\\.(js|jsx|ts|tsx)$","^.+\\.module\\.(css|sass|scss)$"],"modulePaths":[],"moduleNameMapper":{"^react-native$":"react-native-web","^.+\\.module\\.(css|sass|scss)$":"identity-obj-proxy","\\.(jpg|jpeg|png)$":"identity-obj-proxy"},"moduleFileExtensions":["web.js","js","web.ts","ts","web.tsx","tsx","json","web.jsx","jsx","node"]},"babel":{"presets":["react-app"],"plugins":["@babel/plugin-syntax-dynamic-import"]},"eslintConfig":{"env":{"browser":true,"jest":true,"node":true,"es6":true},"extends":["eslint:recommended","plugin:react/recommended","plugin:jsx-a11y/recommended"],"parser":"@babel/eslint-parser","parserOptions":{"babelOptions":{"presets":[["babel-preset-react-app",false],"babel-preset-react-app/test"]},"ecmaFeatures":{"experimentalObjectRestSpread":true,"jsx":true},"sourceType":"module"},"plugins":["prettier","react","import","react-hooks","jsx-a11y"],"rules":{"no-console":"warn","no-unused-vars":"error","react/display-name":"off","react-hooks/rules-of-hooks":"error","react-hooks/exhaustive-deps":"warn","no-use-before-define":"error"}},"browserslist":{"production":[">0.2%","not dead","not op_mini all"],"development":["last 1 chrome version","last 1 firefox version","last 1 safari version"]},"husky":{"hooks":{"pre-commit":"lint-staged"}},"lint-staged":{"src/**/*.{js,css}":["prettier --write","git add","yarn lint"]},"prettier":{"endOfLine":"lf","useTabs":false,"printWidth":100,"tabWidth":2,"singleQuote":true,"trailingComma":"all","bracketSameLine":false,"bracketSpacing":true,"parser":"babel","semi":true,"arrowParens":"avoid"}};
9191
9191
 
9192
9192
  /***/ }),
9193
9193
  /* 167 */
@@ -52137,6 +52137,7 @@ var Item_Item = function Item(_ref) {
52137
52137
  e.stopPropagation();
52138
52138
  },
52139
52139
  tabIndex: 0,
52140
+ underline: 'none',
52140
52141
  style: { display: 'list-item' }
52141
52142
  },
52142
52143
  labelAccessor(subtopic, parentId)
@@ -56128,6 +56129,8 @@ var Info = __webpack_require__(227);
56128
56129
  var Info_default = /*#__PURE__*/__webpack_require__.n(Info);
56129
56130
 
56130
56131
  // CONCATENATED MODULE: ./src/theme.js
56132
+ var theme_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; };
56133
+
56131
56134
  var innerPalette = {
56132
56135
  highlight1: '#f7a42c',
56133
56136
  highlight2: '#8CC841',
@@ -56143,7 +56146,8 @@ var innerPalette = {
56143
56146
 
56144
56147
  var sisccTheme = function sisccTheme(_ref) {
56145
56148
  var rtl = _ref.rtl,
56146
- isA11y = _ref.isA11y,
56149
+ _ref$isA11y = _ref.isA11y,
56150
+ isA11y = _ref$isA11y === undefined ? false : _ref$isA11y,
56147
56151
  _ref$outerPalette = _ref.outerPalette,
56148
56152
  outerPalette = _ref$outerPalette === undefined ? {} : _ref$outerPalette;
56149
56153
 
@@ -56151,9 +56155,9 @@ var sisccTheme = function sisccTheme(_ref) {
56151
56155
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1
56152
56156
  };
56153
56157
 
56154
- var buttonBaseFocus = {
56158
+ var buttonBaseFocus = isA11y && {
56155
56159
  borderColor: outerPalette.highlight1 || innerPalette.highlight1,
56156
- '&.Mui-focused': {
56160
+ '&:focus': {
56157
56161
  outlineColor: outerPalette.highlight1 || innerPalette.highlight1,
56158
56162
  outlineWidth: 1,
56159
56163
  outlineStyle: 'auto'
@@ -56174,7 +56178,11 @@ var sisccTheme = function sisccTheme(_ref) {
56174
56178
  disableRipple: true
56175
56179
  },
56176
56180
  styleOverrides: {
56177
- root: isA11y && buttonBaseFocus
56181
+ root: theme_extends({
56182
+ '&:focus': {
56183
+ outline: 'none'
56184
+ }
56185
+ }, buttonBaseFocus)
56178
56186
  }
56179
56187
  },
56180
56188
  MuiUseMediaQuery: {
@@ -56209,7 +56217,7 @@ var sisccTheme = function sisccTheme(_ref) {
56209
56217
  MuiAccordion: {
56210
56218
  styleOverrides: {
56211
56219
  root: {
56212
- '&$expanded': {
56220
+ '&.Mui-expanded': {
56213
56221
  margin: 0
56214
56222
  }
56215
56223
  }
@@ -56218,7 +56226,10 @@ var sisccTheme = function sisccTheme(_ref) {
56218
56226
  MuiButton: {
56219
56227
  styleOverrides: {
56220
56228
  root: {
56221
- textTransform: 'none'
56229
+ textTransform: 'none',
56230
+ '&:focus': {
56231
+ outline: 'none'
56232
+ }
56222
56233
  },
56223
56234
  textPrimary: {
56224
56235
  '&:hover': {
@@ -56255,6 +56266,9 @@ var sisccTheme = function sisccTheme(_ref) {
56255
56266
  }
56256
56267
  },
56257
56268
  MuiLink: {
56269
+ defaultProps: {
56270
+ underline: 'none'
56271
+ },
56258
56272
  styleOverrides: {
56259
56273
  root: {
56260
56274
  color: outerPalette.primaryMain || innerPalette.primaryMain,
@@ -56264,7 +56278,7 @@ var sisccTheme = function sisccTheme(_ref) {
56264
56278
  '&.Mui-focused': isA11y && focus
56265
56279
  },
56266
56280
  button: {
56267
- '&.Mui-focused': isA11y && focus
56281
+ '&:focus': isA11y && focus
56268
56282
  }
56269
56283
  }
56270
56284
  },
@@ -58804,7 +58818,7 @@ var InputNumber_useStyles = makeStyles(function (theme) {
58804
58818
  margin: '0px 10px 0 10px'
58805
58819
  },
58806
58820
  input: {
58807
- padding: '4px 12px 4px 16px',
58821
+ padding: '4px 4px',
58808
58822
  height: 27,
58809
58823
  '&[type=number]::-webkit-inner-spin-button, &[type=number]::-webkit-outer-spin-button': {
58810
58824
  '-webkit-appearance': 'none',
@@ -63725,7 +63739,7 @@ var header_Header = function Header(_ref) {
63725
63739
  var theme = styles_useTheme_useTheme();
63726
63740
  var isRtl = utils_getIsRtl(theme);
63727
63741
 
63728
- var stickyLabelPosition = es_last(subHeadCellsWidth) + 30 + theme.spacing(1);
63742
+ var stickyLabelPosition = es_last(subHeadCellsWidth) + 'px + 30px + ' + theme.spacing(1);
63729
63743
 
63730
63744
  if (compose(es_anyPass([es_isNil, es_isEmpty]), es_path([0, 'data']))(headerData)) return null;
63731
63745
  return timesIndexed(function (index) {
@@ -80724,27 +80738,51 @@ function withSpotlight_objectWithoutProperties(obj, keys) { var target = {}; for
80724
80738
 
80725
80739
  var withSpotlight_spotlightFilter = function spotlightFilter(term) {
80726
80740
  var labelRenderer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : es_prop('label');
80741
+ var displayChildren = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
80727
80742
  return function (items) {
80728
80743
  if (es_isEmpty(term) || es_isNil(term)) {
80729
80744
  return items;
80730
80745
  }
80731
80746
 
80732
80747
  var groupedItemsByParentId = es_groupBy(es_propOr('#ROOT', 'parentId'), items);
80733
- var recurse = es_filter(function (item) {
80734
- var isValidItem = es_isEmpty(term) || es_isNil(term) ? true : es_includes(es_toLower(term), es_toLower(labelRenderer(item)));
80748
+
80749
+ var findParents = function findParents(item) {
80750
+ var acc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
80751
+
80752
+ var parentId = es_prop('parentId', item);
80753
+ if (parentId && parentId !== '#ROOT') {
80754
+ var parent = es_find(es_either(es_propEq('id', parentId), es_propEq('hierarchicalId', parentId)), items);
80755
+ if (parent) {
80756
+ return findParents(parent, [parent].concat(acc));
80757
+ }
80758
+ }
80759
+ return acc;
80760
+ };
80761
+
80762
+ var recurse = function recurse(item) {
80763
+ var isValidItem = es_includes(es_toLower(term), es_toLower(labelRenderer(item)));
80764
+
80765
+ var result = [];
80766
+
80735
80767
  if (isValidItem) {
80736
- return true;
80768
+ var parents = findParents(item);
80769
+ result = [].concat(parents, [item]);
80770
+ if (displayChildren) {
80771
+ var children = utils_getDescendants(es_prop('id', item), groupedItemsByParentId);
80772
+ return [].concat(parents, [item], children);
80773
+ }
80737
80774
  }
80738
80775
  if (es_has(utils_getHierarchicalId(item), groupedItemsByParentId)) {
80739
- var filtered = recurse(es_prop(utils_getHierarchicalId(item), groupedItemsByParentId));
80740
- if (!es_isEmpty(filtered)) {
80741
- return true;
80742
- }
80776
+ var childItems = groupedItemsByParentId[utils_getHierarchicalId(item)] || [];
80777
+ var matchingChildren = es_chain(recurse, childItems);
80778
+
80779
+ // res with any matching children
80780
+ return es_uniq([].concat(result, matchingChildren));
80743
80781
  }
80744
- return false;
80745
- });
80782
+ return result;
80783
+ };
80746
80784
 
80747
- return recurse(items);
80785
+ return es_uniq(es_chain(recurse, groupedItemsByParentId['#ROOT'] || []));
80748
80786
  };
80749
80787
  };
80750
80788
 
@@ -80753,7 +80791,8 @@ var withSpotlight_withSpotlight = function withSpotlight(Component) {
80753
80791
  var items = _ref.items,
80754
80792
  defaultSpotlight = _ref.defaultSpotlight,
80755
80793
  labelRenderer = _ref.labelRenderer,
80756
- rest = withSpotlight_objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer']);
80794
+ displayChildren = _ref.displayChildren,
80795
+ rest = withSpotlight_objectWithoutProperties(_ref, ['items', 'defaultSpotlight', 'labelRenderer', 'displayChildren']);
80757
80796
 
80758
80797
  var _useState = Object(react["useState"])({ term: '' }),
80759
80798
  term = _useState[0].term,
@@ -80766,7 +80805,7 @@ var withSpotlight_withSpotlight = function withSpotlight(Component) {
80766
80805
  }, [defaultSpotlight]);
80767
80806
 
80768
80807
  var filteredItems = Object(react["useMemo"])(function () {
80769
- return withSpotlight_spotlightFilter(term, labelRenderer)(items);
80808
+ return withSpotlight_spotlightFilter(term, labelRenderer, displayChildren)(items);
80770
80809
  }, [term, items]);
80771
80810
 
80772
80811
  return react_default.a.createElement(Component, withSpotlight_extends({}, rest, {