eionet2-dashboard 3.2.2 → 3.2.3

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,19 @@ 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.3](https://github.com/eea/eionet2-dashboard/compare/3.2.2...3.2.3) - 24 April 2026
8
+
9
+ #### :bug: Bug Fixes
10
+
11
+ - fix: grid toolbar issue (Refs #302855) [Mihai Nicolae - [`f50c4ee`](https://github.com/eea/eionet2-dashboard/commit/f50c4ee8a6160c91d39cbfa4b8d12832b609348f)]
12
+
13
+ #### :house: Internal changes
14
+
15
+ - chore: sonar [Mihai Nicolae - [`d531c58`](https://github.com/eea/eionet2-dashboard/commit/d531c587d99ed740ceb83ddbcbf3651bf5a82283)]
16
+ - chore: coverage on master [Mihai Nicolae - [`d0a7925`](https://github.com/eea/eionet2-dashboard/commit/d0a79254460ffe9d06bf597d2bb1c3c24b1d42d5)]
17
+ - chore: coverage on master [Mihai Nicolae - [`364faf4`](https://github.com/eea/eionet2-dashboard/commit/364faf432bd637b1e1782942161eafe4a450a648)]
18
+ - chore: build [Mihai Nicolae - [`fa47ba5`](https://github.com/eea/eionet2-dashboard/commit/fa47ba5764bfc49824d15c41da8df0ba3bea4855)]
19
+
7
20
  ### [3.2.2](https://github.com/eea/eionet2-dashboard/compare/3.2.1...3.2.2) - 12 March 2026
8
21
 
9
22
  #### :rocket: New Features
@@ -24,6 +37,7 @@ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
24
37
  - chore: code format [Mihai Nicolae - [`a593c60`](https://github.com/eea/eionet2-dashboard/commit/a593c6030a550a37d159ca864ed689663b1a8456)]
25
38
  - chore: jenking unit test [Mihai Nicolae - [`24bb98d`](https://github.com/eea/eionet2-dashboard/commit/24bb98d821adbceb9f231aaf9c3451eea8df3502)]
26
39
  - chore: code format [Mihai Nicolae - [`eea17da`](https://github.com/eea/eionet2-dashboard/commit/eea17da6d0b41610a2bcc1e4c4852ad2b60c893c)]
40
+ - chore: [JENKINSFILE] use sonarqube branches [EEA Jenkins - [`438a9fb`](https://github.com/eea/eionet2-dashboard/commit/438a9fb90c90501e69fbf70651a0080fc17cd18a)]
27
41
 
28
42
  ### [3.2.1](https://github.com/eea/eionet2-dashboard/compare/3.2.0...3.2.1) - 18 February 2026
29
43
 
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 {
@@ -113,7 +110,7 @@ pipeline {
113
110
  steps {
114
111
  script{
115
112
  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"
113
+ sh "sonar-scanner -Dsonar.javascript.lcov.reportPaths=./tabs/coverage/lcov.info -Dsonar.sources=./tabs,./api -Dsonar.exclusions=**/__tests__/**,**/*.test.*,**/*.spec.* -Dsonar.projectKey=$GIT_NAME -Dsonar.projectName=$GIT_NAME -Dsonar.branch.name=$BRANCH_NAME"
117
114
  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
115
  }
119
116
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eionet2-dashboard",
3
- "version": "3.2.2",
3
+ "version": "3.2.3",
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.2",
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.2",
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
- });