diff --git a/.github/workflows/code_review.yaml b/.github/workflows/code_review.yaml index ef958180..777992c3 100644 --- a/.github/workflows/code_review.yaml +++ b/.github/workflows/code_review.yaml @@ -5,7 +5,7 @@ on: pull_request: types: [opened, synchronize] paths: - - "*" + - "**/*" - "!infra/*" - "!.github/*" @@ -14,7 +14,7 @@ env: jobs: code_review: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 steps: - name: Check-out code diff --git a/package.json b/package.json index a4007c73..ee6b9b12 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "@mui/x-data-grid": "^5.0.1", "@mui/x-data-grid-generator": "^5.0.1", "@pagopa/mui-italia": "^1.6.1", - "@pagopa/selfcare-common-frontend": "^1.34.63", + "@pagopa/selfcare-common-frontend": "^1.34.65", "@types/react": "^18.2.0", "@types/react-dom": "^18.2.0", "@types/react-router-dom": "^5.1.8", diff --git a/src/locale/it.ts b/src/locale/it.ts index ebcfeb24..bf4bd9c4 100644 --- a/src/locale/it.ts +++ b/src/locale/it.ts @@ -1,4 +1,8 @@ export default { + accessibility: { + filterUsers: 'Filtri applicati. Risultati aggiornati.', + removeFilters: 'Filtri rimossi. Tutti i risultati sono visibili.', + }, session: { expired: { title: 'Sessione scaduta', @@ -248,7 +252,8 @@ export default { backHome: 'Torna alla home', moreInformationOnRoles: 'Più informazioni sui ruoli', requiredError: 'Campo obbligatorio', - duplicateTaxCodeDifferentEmail: 'L’indirizzo email inserito è diverso da quello comunicato in precedenza' + duplicateTaxCodeDifferentEmail: + 'L’indirizzo email inserito è diverso da quello comunicato in precedenza', }, backButton: 'Indietro', continueButton: 'Continua', diff --git a/src/pages/dashboardUsers/components/MobileFilter.tsx b/src/pages/dashboardUsers/components/MobileFilter.tsx index 47d43279..8548fe63 100644 --- a/src/pages/dashboardUsers/components/MobileFilter.tsx +++ b/src/pages/dashboardUsers/components/MobileFilter.tsx @@ -118,7 +118,7 @@ export default function MobileFilter({ setSearchByName, disableRemoveFiltersButton, setDisableRemoveFiltersButton, -}: Props) { +}: Readonly) { const { t } = useTranslation(); const isMobile = useIsMobile('md'); diff --git a/src/pages/dashboardUsers/components/UsersTableActions/UsersTableActions.tsx b/src/pages/dashboardUsers/components/UsersTableActions/UsersTableActions.tsx index a08195b0..55df63e0 100644 --- a/src/pages/dashboardUsers/components/UsersTableActions/UsersTableActions.tsx +++ b/src/pages/dashboardUsers/components/UsersTableActions/UsersTableActions.tsx @@ -34,7 +34,7 @@ export default function UsersTableActions({ setSearchByName, disableRemoveFiltersButton, setDisableRemoveFiltersButton, -}: UsersSearchProps) { +}: Readonly) { return ( ) { const productRolesList: Array = Object.values(productsRolesMap).flatMap( (p) => p.list ); diff --git a/src/pages/dashboardUsers/components/UsersTableActions/UsersTableRolesFilter.tsx b/src/pages/dashboardUsers/components/UsersTableActions/UsersTableRolesFilter.tsx index 3b02f4c3..d726f6ee 100644 --- a/src/pages/dashboardUsers/components/UsersTableActions/UsersTableRolesFilter.tsx +++ b/src/pages/dashboardUsers/components/UsersTableActions/UsersTableRolesFilter.tsx @@ -3,8 +3,9 @@ import Checkbox from '@mui/material/Checkbox'; import FormControlLabel from '@mui/material/FormControlLabel'; import { styled } from '@mui/system'; import { ButtonNaked } from '@pagopa/mui-italia'; +import { useLiveAnnouncerWithRegion } from '@pagopa/selfcare-common-frontend/lib'; import { isEqual } from 'lodash'; -import React, { useEffect, useMemo } from 'react'; +import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useIsMobile } from '../../../../hooks/useIsMobile'; import { UserRole, UserRoleFilters } from '../../../../model/Party'; @@ -53,7 +54,7 @@ export default function UsersTableRolesFilter({ setSearchByName, disableRemoveFiltersButton, setDisableRemoveFiltersButton, -}: Props) { +}: Readonly) { const { t } = useTranslation(); // const theme = useTheme(); const isMobile = useIsMobile('md'); @@ -62,10 +63,12 @@ export default function UsersTableRolesFilter({ const productFiltered = useMemo(() => productList(productRolesSelected), [productRolesSelected]); const selcGroups = Object.keys(selcRoleGroup) as Array; - const [productRoleCheckedBySelcRole, setProductRoleCheckedBySelcRole] = React.useState<{ + const [productRoleCheckedBySelcRole, setProductRoleCheckedBySelcRole] = useState<{ [selcRole in UserRoleFilters]: ProductRolesGroupByTitle; }>(emptySelcRoleGroup); + const { announce, LiveRegion } = useLiveAnnouncerWithRegion(); + const nextProductRolesFilter = useMemo( () => Object.values(productRoleCheckedBySelcRole) @@ -178,6 +181,23 @@ export default function UsersTableRolesFilter({ [selcRoleGroup, productRoleCheckedBySelcRole] ); + const handleSubmit = () => { + onFiltersChange({ + ...filters, + productIds: nextProductRolesFilter.map((f) => f.productId), + productRoles: nextProductRolesFilter, + }); + setDisableRemoveFiltersButton(false); + announce(t('accessibility.filterUsers')); + }; + + const handleResetFilters = () => { + onFiltersChange({ ...filters, productIds: [], productRoles: [] }); + setSearchByName(''); + setDisableRemoveFiltersButton(true); + announce(t('accessibility.removeFilters')); + }; + return ( + {LiveRegion} { - onFiltersChange({ - ...filters, - productIds: nextProductRolesFilter.map((f) => f.productId), - productRoles: nextProductRolesFilter, - }); - setDisableRemoveFiltersButton(false); - }} + onClick={handleSubmit} > {t('usersTable.filterRole.addFilters')} @@ -325,11 +339,7 @@ export default function UsersTableRolesFilter({ color="primary" fullWidth size="small" - onClick={() => { - onFiltersChange({ ...filters, productIds: [], productRoles: [] }); - setSearchByName(''); - setDisableRemoveFiltersButton(true); - }} + onClick={handleResetFilters} > {t('usersTable.filterRole.deleteFilters')} diff --git a/yarn.lock b/yarn.lock index ba17121a..198db67e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2197,10 +2197,10 @@ write-yaml-file "^4.1.3" yargs "^15.0.1" -"@pagopa/selfcare-common-frontend@^1.34.63": - version "1.34.63" - resolved "https://registry.npmjs.org/@pagopa/selfcare-common-frontend/-/selfcare-common-frontend-1.34.63.tgz#3743bb4d7d7d5f7986de5549ab6d4fbf82180cc6" - integrity sha512-Nr62403YhM1VFJgIAs/I341NiRFq6iBjm3Yvza5TLTj+bnO2hY0uSHEZqUD4PVifYBbY6dj61P8GIcilG4qkew== +"@pagopa/selfcare-common-frontend@^1.34.65": + version "1.34.65" + resolved "https://registry.yarnpkg.com/@pagopa/selfcare-common-frontend/-/selfcare-common-frontend-1.34.65.tgz#4ee87222921b0a4c6b031d8ca9270bb14636bc2f" + integrity sha512-ChEFLWDAZcVf8ttgkh35yX8Mn0mwR5tDWWdoPl1Nu5KDCDKrtO8Al+AogrzEKijA9qmVMO4sR5LaOtEiieMD2Q== dependencies: "@emotion/react" "^11.11.1" "@emotion/styled" "^11.11.0"