eionet2-dashboard 3.2.2 → 3.2.4

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.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file. Dates are d
4
4
 
5
5
  Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
6
6
 
7
+ ### [3.2.4](https://github.com/eea/eionet2-dashboard/compare/3.2.3...3.2.4) - 14 May 2026
8
+
9
+ #### :house: Internal changes
10
+
11
+ - chore: sonar fix [Mihai Nicolae - [`8f86721`](https://github.com/eea/eionet2-dashboard/commit/8f8672179694b26bd95ca2fc8c5092e2eca0bc7a)]
12
+ - chore: sonar [Mihai Nicolae - [`12a2a41`](https://github.com/eea/eionet2-dashboard/commit/12a2a41084b8dcc4c11ae5e3149a8a359bf5369c)]
13
+
14
+ ### [3.2.3](https://github.com/eea/eionet2-dashboard/compare/3.2.2...3.2.3) - 24 April 2026
15
+
16
+ #### :bug: Bug Fixes
17
+
18
+ - fix: grid toolbar issue (Refs #302855) [Mihai Nicolae - [`f50c4ee`](https://github.com/eea/eionet2-dashboard/commit/f50c4ee8a6160c91d39cbfa4b8d12832b609348f)]
19
+
20
+ #### :house: Internal changes
21
+
22
+ - chore: sonar [Mihai Nicolae - [`d531c58`](https://github.com/eea/eionet2-dashboard/commit/d531c587d99ed740ceb83ddbcbf3651bf5a82283)]
23
+ - chore: coverage on master [Mihai Nicolae - [`d0a7925`](https://github.com/eea/eionet2-dashboard/commit/d0a79254460ffe9d06bf597d2bb1c3c24b1d42d5)]
24
+ - chore: coverage on master [Mihai Nicolae - [`364faf4`](https://github.com/eea/eionet2-dashboard/commit/364faf432bd637b1e1782942161eafe4a450a648)]
25
+
7
26
  ### [3.2.2](https://github.com/eea/eionet2-dashboard/compare/3.2.1...3.2.2) - 12 March 2026
8
27
 
9
28
  #### :rocket: New Features
@@ -24,6 +43,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
24
43
  - chore: code format [Mihai Nicolae - [`a593c60`](https://github.com/eea/eionet2-dashboard/commit/a593c6030a550a37d159ca864ed689663b1a8456)]
25
44
  - chore: jenking unit test [Mihai Nicolae - [`24bb98d`](https://github.com/eea/eionet2-dashboard/commit/24bb98d821adbceb9f231aaf9c3451eea8df3502)]
26
45
  - chore: code format [Mihai Nicolae - [`eea17da`](https://github.com/eea/eionet2-dashboard/commit/eea17da6d0b41610a2bcc1e4c4852ad2b60c893c)]
46
+ - chore: [JENKINSFILE] use sonarqube branches [EEA Jenkins - [`438a9fb`](https://github.com/eea/eionet2-dashboard/commit/438a9fb90c90501e69fbf70651a0080fc17cd18a)]
27
47
 
28
48
  ### [3.2.1](https://github.com/eea/eionet2-dashboard/compare/3.2.0...3.2.1) - 18 February 2026
29
49
 
package/Jenkinsfile CHANGED
@@ -31,7 +31,6 @@ pipeline {
31
31
  allOf {
32
32
  environment name: 'CHANGE_ID', value: ''
33
33
  not { changelog '.*^Automated release [0-9\\.]+$' }
34
- not { branch 'master' }
35
34
  }
36
35
  }
37
36
  steps {
@@ -49,7 +48,6 @@ pipeline {
49
48
  allOf {
50
49
  environment name: 'CHANGE_ID', value: ''
51
50
  not { changelog '.*^Automated release [0-9\\.]+$' }
52
- not { branch 'master' }
53
51
  }
54
52
  }
55
53
  steps {
@@ -64,7 +62,6 @@ pipeline {
64
62
  allOf {
65
63
  environment name: 'CHANGE_ID', value: ''
66
64
  not { changelog '.*^Automated release [0-9\\.]+$' }
67
- not { branch 'master' }
68
65
  }
69
66
  }
70
67
  steps {
@@ -101,19 +98,17 @@ pipeline {
101
98
  when {
102
99
  allOf {
103
100
  environment name: 'CHANGE_ID', value: ''
101
+ not { changelog '.*^Automated release [0-9\\.]+$' }
104
102
  anyOf {
105
103
  branch 'master'
106
- allOf {
107
- branch 'develop'
108
- not { changelog '.*^Automated release [0-9\\.]+$' }
109
- }
104
+ branch 'develop'
110
105
  }
111
106
  }
112
107
  }
113
108
  steps {
114
109
  script{
115
110
  withSonarQubeEnv('Sonarqube') {
116
- sh "sonar-scanner -Dsonar.javascript.lcov.reportPaths=./tabs/coverage/lcov.info -Dsonar.sources=./tabs,./api -Dsonar.projectKey=$GIT_NAME -Dsonar.projectName=$GIT_NAME -Dsonar.branch.name=$BRANCH_NAME"
111
+ sh "sonar-scanner -Dsonar.javascript.lcov.reportPaths=./tabs/coverage/lcov.info -Dsonar.sources=./tabs,./api -Dsonar.exclusions=**/__tests__/**,**/*.test.*,**/*.spec.* -Dsonar.issue.ignore.multicriteria=e1 -Dsonar.issue.ignore.multicriteria.e1.ruleKey=javascript:S6774 -Dsonar.issue.ignore.multicriteria.e1.resourceKey=**/*.jsx -Dsonar.projectKey=$GIT_NAME -Dsonar.projectName=$GIT_NAME -Dsonar.branch.name=$BRANCH_NAME"
117
112
  sh '''try=2; while [ \$try -gt 0 ]; do curl -s -XPOST -u "${SONAR_AUTH_TOKEN}:" "${SONAR_HOST_URL}api/project_tags/set?project=${GIT_NAME}&tags=${SONARQUBE_TAGS}" > set_tags_result; if [ \$(grep -ic error set_tags_result ) -eq 0 ]; then try=0; else cat set_tags_result; echo "... Will retry"; sleep 60; try=\$(( \$try - 1 )); fi; done'''
118
113
  }
119
114
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eionet2-dashboard",
3
- "version": "3.2.2",
3
+ "version": "3.2.4",
4
4
  "description": "",
5
5
  "author": "",
6
6
  "scripts": {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@eeacms/eionet2-dashboard",
3
- "version": "3.2.1",
3
+ "version": "3.2.3",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@eeacms/eionet2-dashboard",
9
- "version": "3.2.1",
9
+ "version": "3.2.3",
10
10
  "license": "SEE LICENSE IN LICENSE.md",
11
11
  "dependencies": {
12
12
  "@emotion/react": "^11.14.0",
package/tabs/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@eeacms/eionet2-dashboard",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
4
4
  "license": "SEE LICENSE IN LICENSE.md",
5
5
  "description": "MS Teams app for accessing Eionet activity and managing account information.",
6
6
  "dependencies": {
@@ -52,7 +52,7 @@ export default function CustomColumnResizeIcon({ onWidthChanged, id }) {
52
52
  let timeout;
53
53
  if (resizeInfo) {
54
54
  timeout = setTimeout(() => {
55
- onWidthChanged && onWidthChanged(resizeInfo.width, resizeInfo.index);
55
+ onWidthChanged?.(resizeInfo.width, resizeInfo.index);
56
56
  }, 100);
57
57
  }
58
58
  return () => {
@@ -335,10 +335,9 @@ export function DataReporters({ configuration, country, users }) {
335
335
  </Box>
336
336
  <Box className="grid-container">
337
337
  <ResizableGrid
338
- showToolbar
339
338
  rows={flows}
340
- components={{
341
- Toolbar: customToolbar,
339
+ slots={{
340
+ toolbar: customToolbar,
342
341
  }}
343
342
  columns={gridColumns}
344
343
  pageSizeOptions={[25, 50, 100]}
@@ -76,7 +76,6 @@ describe('DataReporters', () => {
76
76
  );
77
77
 
78
78
  const gridProps = mockResizableGrid.mock.calls[0][0];
79
- expect(gridProps.showToolbar).toBe(true);
80
79
  expect(gridProps.pageSizeOptions).toEqual([25, 50, 100]);
81
80
  expect(gridProps.hideFooterSelectedRowCount).toBe(true);
82
81
  expect(gridProps.initialState.pagination.paginationModel.pageSize).toBe(25);
@@ -86,7 +85,7 @@ describe('DataReporters', () => {
86
85
  });
87
86
  expect(gridProps.getRowHeight()).toBe('auto');
88
87
 
89
- const toolbarHtml = renderToStaticMarkup(<gridProps.components.Toolbar />);
88
+ const toolbarHtml = renderToStaticMarkup(<gridProps.slots.toolbar />);
90
89
  expect(toolbarHtml).toContain('filter');
91
90
  expect(toolbarHtml).toContain('export');
92
91
 
@@ -1,202 +0,0 @@
1
- // import * as React from 'react';
2
- // import { styled } from '@mui/material/styles';
3
- // import {
4
- // DataGrid,
5
- // Toolbar,
6
- // ToolbarButton,
7
- // ColumnsPanelTrigger,
8
- // FilterPanelTrigger,
9
- // ExportCsv,
10
- // ExportPrint,
11
- // QuickFilter,
12
- // QuickFilterControl,
13
- // QuickFilterClear,
14
- // QuickFilterTrigger,
15
- // } from '@mui/x-data-grid';
16
- // import { useDemoData } from '@mui/x-data-grid-generator';
17
- // import Tooltip from '@mui/material/Tooltip';
18
- // import Menu from '@mui/material/Menu';
19
- // import Badge from '@mui/material/Badge';
20
- // import ViewColumnIcon from '@mui/icons-material/ViewColumn';
21
- // import FilterListIcon from '@mui/icons-material/FilterList';
22
- // import FileDownloadIcon from '@mui/icons-material/FileDownload';
23
- // import MenuItem from '@mui/material/MenuItem';
24
- // import Divider from '@mui/material/Divider';
25
- // import TextField from '@mui/material/TextField';
26
- // import InputAdornment from '@mui/material/InputAdornment';
27
- // import CancelIcon from '@mui/icons-material/Cancel';
28
- // import SearchIcon from '@mui/icons-material/Search';
29
- // import Typography from '@mui/material/Typography';
30
-
31
- // type OwnerState = {
32
- // expanded: boolean;
33
- // };
34
-
35
- // const StyledQuickFilter = styled(QuickFilter)({
36
- // display: 'grid',
37
- // alignItems: 'center',
38
- // });
39
-
40
- // const StyledToolbarButton = styled(ToolbarButton)<{ ownerState: OwnerState }>(
41
- // ({ theme, ownerState }) => ({
42
- // gridArea: '1 / 1',
43
- // width: 'min-content',
44
- // height: 'min-content',
45
- // zIndex: 1,
46
- // opacity: ownerState.expanded ? 0 : 1,
47
- // pointerEvents: ownerState.expanded ? 'none' : 'auto',
48
- // transition: theme.transitions.create(['opacity']),
49
- // }),
50
- // );
51
-
52
- // const StyledTextField = styled(TextField)<{
53
- // ownerState: OwnerState;
54
- // }>(({ theme, ownerState }) => ({
55
- // gridArea: '1 / 1',
56
- // overflowX: 'clip',
57
- // width: ownerState.expanded ? 260 : 'var(--trigger-width)',
58
- // opacity: ownerState.expanded ? 1 : 0,
59
- // transition: theme.transitions.create(['width', 'opacity']),
60
- // }));
61
-
62
- // function CustomToolbar() {
63
- // const [exportMenuOpen, setExportMenuOpen] = React.useState(false);
64
- // const exportMenuTriggerRef = React.useRef<HTMLButtonElement>(null);
65
-
66
- // return (
67
- // <Toolbar>
68
- // <Typography fontWeight="medium" sx={{ flex: 1, mx: 0.5 }}>
69
- // Toolbar
70
- // </Typography>
71
-
72
- // <Tooltip title="Columns">
73
- // <ColumnsPanelTrigger render={<ToolbarButton />}>
74
- // <ViewColumnIcon fontSize="small" />
75
- // </ColumnsPanelTrigger>
76
- // </Tooltip>
77
-
78
- // <Tooltip title="Filters">
79
- // <FilterPanelTrigger
80
- // render={(props, state) => (
81
- // <ToolbarButton {...props} color="default">
82
- // <Badge badgeContent={state.filterCount} color="primary" variant="dot">
83
- // <FilterListIcon fontSize="small" />
84
- // </Badge>
85
- // </ToolbarButton>
86
- // )}
87
- // />
88
- // </Tooltip>
89
-
90
- // <Divider orientation="vertical" variant="middle" flexItem sx={{ mx: 0.5 }} />
91
-
92
- // <Tooltip title="Export">
93
- // <ToolbarButton
94
- // ref={exportMenuTriggerRef}
95
- // id="export-menu-trigger"
96
- // aria-controls="export-menu"
97
- // aria-haspopup="true"
98
- // aria-expanded={exportMenuOpen ? 'true' : undefined}
99
- // onClick={() => setExportMenuOpen(true)}
100
- // >
101
- // <FileDownloadIcon fontSize="small" />
102
- // </ToolbarButton>
103
- // </Tooltip>
104
-
105
- // <Menu
106
- // id="export-menu"
107
- // anchorEl={exportMenuTriggerRef.current}
108
- // open={exportMenuOpen}
109
- // onClose={() => setExportMenuOpen(false)}
110
- // anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
111
- // transformOrigin={{ vertical: 'top', horizontal: 'right' }}
112
- // slotProps={{
113
- // list: {
114
- // 'aria-labelledby': 'export-menu-trigger',
115
- // },
116
- // }}
117
- // >
118
- // <ExportPrint render={<MenuItem />} onClick={() => setExportMenuOpen(false)}>
119
- // Print
120
- // </ExportPrint>
121
- // <ExportCsv render={<MenuItem />} onClick={() => setExportMenuOpen(false)}>
122
- // Download as CSV
123
- // </ExportCsv>
124
- // {/* Available to MUI X Premium users */}
125
- // {/* <ExportExcel render={<MenuItem />}>
126
- // Download as Excel
127
- // </ExportExcel> */}
128
- // </Menu>
129
-
130
- // <StyledQuickFilter>
131
- // <QuickFilterTrigger
132
- // render={(triggerProps, state) => (
133
- // <Tooltip title="Search" enterDelay={0}>
134
- // <StyledToolbarButton
135
- // {...triggerProps}
136
- // ownerState={{ expanded: state.expanded }}
137
- // color="default"
138
- // aria-disabled={state.expanded}
139
- // >
140
- // <SearchIcon fontSize="small" />
141
- // </StyledToolbarButton>
142
- // </Tooltip>
143
- // )}
144
- // />
145
- // <QuickFilterControl
146
- // render={({ ref, ...controlProps }, state) => (
147
- // <StyledTextField
148
- // {...controlProps}
149
- // ownerState={{ expanded: state.expanded }}
150
- // inputRef={ref}
151
- // aria-label="Search"
152
- // placeholder="Search..."
153
- // size="small"
154
- // slotProps={{
155
- // input: {
156
- // startAdornment: (
157
- // <InputAdornment position="start">
158
- // <SearchIcon fontSize="small" />
159
- // </InputAdornment>
160
- // ),
161
- // endAdornment: state.value ? (
162
- // <InputAdornment position="end">
163
- // <QuickFilterClear
164
- // edge="end"
165
- // size="small"
166
- // aria-label="Clear search"
167
- // material={{ sx: { marginRight: -0.75 } }}
168
- // >
169
- // <CancelIcon fontSize="small" />
170
- // </QuickFilterClear>
171
- // </InputAdornment>
172
- // ) : null,
173
- // ...controlProps.slotProps?.input,
174
- // },
175
- // ...controlProps.slotProps,
176
- // }}
177
- // />
178
- // )}
179
- // />
180
- // </StyledQuickFilter>
181
- // </Toolbar>
182
- // );
183
- // }
184
-
185
- // export default function GridToolbar() {
186
- // const { data, loading } = useDemoData({
187
- // dataSet: 'Commodity',
188
- // rowLength: 10,
189
- // maxColumns: 10,
190
- // });
191
-
192
- // return (
193
- // <div style={{ height: 400, width: '100%' }}>
194
- // <DataGrid
195
- // {...data}
196
- // loading={loading}
197
- // slots={{ toolbar: CustomToolbar }}
198
- // showToolbar
199
- // />
200
- // </div>
201
- // );
202
- // }
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
-
3
- describe('CustomGridToolbar', () => {
4
- test('loads module even if exports are commented out', () => {
5
- const mod = require('./CustomGridToolbar');
6
- expect(mod).toBeDefined();
7
- });
8
- });