From 7693c00701081a5f5b87a23c6a50ef2898f2e2b0 Mon Sep 17 00:00:00 2001 From: Denys Bohdan Date: Tue, 9 Dec 2025 14:38:36 +0100 Subject: [PATCH 1/2] UIIN-3750 Focus on the Close Instance pane button when returning from MARC edit/create/derive page --- CHANGELOG.md | 1 + src/Instance/ViewInstance/ViewInstance.js | 12 +++++++++--- .../ViewInstancePane/ViewInstancePane.js | 10 ++++------ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45eedaf4a..1a3e41850 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,7 @@ UIIN-3437. * ECS | Affiliation dropdown does not display available tenants in the “Update Ownership” modal. Fixes UIIN-3535. * Escape backslashes in Classification and Item Call number browse to search redirect links. Refs UIIN-3552. * ECS | Display item data when user tries to open it from another tenant in the new tab. Fixes UIIN-3528. +* Focus on the Close Instance pane button when returning from MARC edit/create/derive page. Fixes UIIN-3570. ## [13.0.10](https://github.com/folio-org/ui-inventory/tree/v13.0.10) (2025-09-01) [Full Changelog](https://github.com/folio-org/ui-inventory/compare/v13.0.9...v13.0.10) diff --git a/src/Instance/ViewInstance/ViewInstance.js b/src/Instance/ViewInstance/ViewInstance.js index 552db7625..05035d09f 100644 --- a/src/Instance/ViewInstance/ViewInstance.js +++ b/src/Instance/ViewInstance/ViewInstance.js @@ -88,6 +88,7 @@ const ViewInstance = (props) => { const history = useHistory(); const location = useLocation(); const paneTitleRef = useRef(null); + const closeButtonRef = useRef(null); const accordionStatusRef = useRef(); const centralTenantId = stripes.user.user?.consortium?.centralTenantId; @@ -170,10 +171,14 @@ const ViewInstance = (props) => { }, [stripes.user?.user?.tenants]); useEffect(() => { - if (!isLoading && instance?.id && focusTitleOnInstanceLoad && !isCentralTenantPermissionsLoading) { - paneTitleRef.current?.focus(); + if (!isLoading && instance?.id && !isCentralTenantPermissionsLoading) { + if (location.state?.isClosingFocused) { + closeButtonRef.current?.focus(); + } else if (focusTitleOnInstanceLoad) { + paneTitleRef.current?.focus(); + } } - }, [isLoading, instance, focusTitleOnInstanceLoad, isCentralTenantPermissionsLoading]); + }, [isLoading, instance, focusTitleOnInstanceLoad, isCentralTenantPermissionsLoading, location.state?.isClosingFocused]); const { isItemsMovement, @@ -344,6 +349,7 @@ const ViewInstance = (props) => { isInstanceSharing={isInstanceSharing} holdingsSection={holdingsSection} paneTitleRef={paneTitleRef} + closeButtonRef={closeButtonRef} userTenantPermissions={userTenantPermissions} accordionStatusRef={accordionStatusRef} isRecordImporting={isImporting} diff --git a/src/Instance/ViewInstance/ViewInstancePane/ViewInstancePane.js b/src/Instance/ViewInstance/ViewInstancePane/ViewInstancePane.js index 322c9f772..e5ce66b24 100644 --- a/src/Instance/ViewInstance/ViewInstancePane/ViewInstancePane.js +++ b/src/Instance/ViewInstance/ViewInstancePane/ViewInstancePane.js @@ -6,10 +6,7 @@ import { FormattedMessage, useIntl, } from 'react-intl'; -import { - useLocation, - useParams, -} from 'react-router-dom'; +import { useParams } from 'react-router-dom'; import PropTypes from 'prop-types'; import { @@ -64,13 +61,13 @@ const ViewInstancePane = ({ isInstanceSharing = false, holdingsSection, paneTitleRef, + closeButtonRef, accordionStatusRef, isRecordImporting, }) => { const intl = useIntl(); const stripes = useStripes(); const { id: instanceId } = useParams(); - const location = useLocation(); const tags = instance?.tags?.tagList; const [helperApp, setHelperApp] = useState(); @@ -185,9 +182,9 @@ const ViewInstancePane = ({ actionMenu={actionMenu} firstMenu={( )} defaultWidth="fill" @@ -243,6 +240,7 @@ ViewInstancePane.propTypes = { isInstanceSharing: PropTypes.bool, holdingsSection: PropTypes.node, paneTitleRef: PropTypes.object, + closeButtonRef: PropTypes.object, accordionStatusRef: PropTypes.object, isRecordImporting: PropTypes.bool }; From 41ab69f5c3f2af9fe585f25a5bf1c24dd376b446 Mon Sep 17 00:00:00 2001 From: Denys Bohdan Date: Tue, 9 Dec 2025 15:47:08 +0100 Subject: [PATCH 2/2] UIIN-3570 fix test --- src/Instance/ViewInstance/ViewInstance.test.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Instance/ViewInstance/ViewInstance.test.js b/src/Instance/ViewInstance/ViewInstance.test.js index 8884f6dd7..c870bad8a 100644 --- a/src/Instance/ViewInstance/ViewInstance.test.js +++ b/src/Instance/ViewInstance/ViewInstance.test.js @@ -11,7 +11,9 @@ import { ViewInstance } from './index'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), - useLocation: jest.fn(), + useLocation: jest.fn().mockReturnValue({ + state: {}, + }), useHistory: jest.fn(), useParams: jest.fn().mockReturnValue({ id: 'instance-id' }), }));