Skip to content

Commit

Permalink
Merge branch 'master' into UIIN-2452
Browse files Browse the repository at this point in the history
  • Loading branch information
mariia-aloshyna authored Oct 13, 2023
2 parents 22d2dc9 + f951cb3 commit ae50bd4
Show file tree
Hide file tree
Showing 50 changed files with 1,450 additions and 323 deletions.
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# Change history for ui-inventory

## 10.0.1 IN PROGRESS
* Enable/disable consortial holdings/item actions based on User permissions. Refs UIIN-2452.

## 10.0.0 IN PROGRESS
* Added a new option in the "Actions" dropdown within the Inventory app search page for "+New MARC Bib Record". Refs UIIN-2356.
* Change the url for the "New MARC Bib Record" page. Refs UIIN-2380.
Expand Down Expand Up @@ -100,7 +103,11 @@
* Instance 3rd pane: Add consortial holdings/item accordion. Refs UIIN-2410.
* Consortial Central Tenant: Handling Holdings and Item actions on the Instance detail view. Refs UIIN-2523.
* Hide Held by facet in Inventory contributor and subject browse. Refs UIIN-2591.
* Enable/disable consortial holdings/item actions based on User permissions. Refs UIIN-2452.
* Use `==` for exact phrase search in Advanced Search for all full-text and term fields. Refs UIIN-2612.
* Provide an instance `tenantId` to the PO line form when creating an order from the instance. Refs UIIN-2614.
* Bump @folio/stripes-acq-components dependency version to 5.0.0. Refs UIIN-2620.
* ECS: Check when sharing instance with source=MARC is complete before re-fetching it. Refs UIIN-2605.
* Update all facets after changing a term or selecting a facet option. Refs UIIN-2610.

## [9.4.12](https://github.com/folio-org/ui-inventory/tree/v9.4.12) (2023-09-21)
[Full Changelog](https://github.com/folio-org/ui-inventory/compare/v9.4.11...v9.4.12)
Expand Down
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -871,7 +871,7 @@
"eslint-plugin-filenames": "^1.3.2",
"eslint-plugin-import": "^2.22.1",
"eslint-plugin-jest": "^24.0.0",
"inflected": "^2.0.4",
"inflected": "^2.1.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-intl": "^6.4.4",
Expand All @@ -883,7 +883,7 @@
},
"dependencies": {
"@folio/quick-marc": "^7.0.0",
"@folio/stripes-acq-components": "^4.0.0",
"@folio/stripes-acq-components": "^5.0.0",
"classnames": "^2.3.2",
"file-saver": "^2.0.0",
"final-form": "^4.18.2",
Expand Down
76 changes: 68 additions & 8 deletions src/Instance/InstanceDetails/InstanceDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
PaneMenu,
Row,
MessageBanner,
Icon,
} from '@folio/stripes/components';

import { InstanceTitle } from './InstanceTitle';
Expand All @@ -36,9 +37,17 @@ import { InstanceNewHolding } from './InstanceNewHolding';
import { InstanceAcquisition } from './InstanceAcquisition';
import HelperApp from '../../components/HelperApp';

import { getAccordionState } from './utils';
import { DataContext } from '../../contexts';
import { ConsortialHoldings } from './ConsortialHoldings';
import {
getAccordionState,
getPublishingInfo,
} from './utils';
import {
getDate,
isInstanceShadowCopy,
isUserInConsortiumMode,
} from '../../utils';

const accordions = {
administrative: 'acc01',
Expand All @@ -57,23 +66,25 @@ const accordions = {
const InstanceDetails = forwardRef(({
children,
instance,
paneTitle,
paneSubtitle,
onClose,
actionMenu,
tagsEnabled,
userTenantPermissions,
isShared,
isLoading,
...rest
}, ref) => {
const intl = useIntl();
const stripes = useStripes();
const { okapi: { tenant: tenantId } } = stripes;
const intl = useIntl();

const location = useLocation();
const searchParams = new URLSearchParams(location.search);

const referenceData = useContext(DataContext);
const accordionState = useMemo(() => getAccordionState(instance, accordions), [instance]);
const [helperApp, setHelperApp] = useState();

const tags = instance?.tags?.tagList;
const isUserInCentralTenant = checkIfUserInCentralTenant(stripes);

Expand All @@ -97,14 +108,61 @@ const InstanceDetails = forwardRef(({
);
}, [tagsEnabled, tags, intl]);

if (isLoading) {
return (
<Pane
id="pane-instancedetails"
defaultWidth="fill"
paneTitle={intl.formatMessage({ id: 'ui-inventory.edit' })}
appIcon={<AppIcon app="inventory" iconKey="instance" />}
dismissible
onClose={onClose}
>
<div style={{ paddingTop: '1rem' }}>
<Icon
icon="spinner-ellipsis"
width="100px"
/>
</div>
</Pane>
);
}

const renderPaneTitle = () => {
const isInstanceShared = Boolean(isShared || isInstanceShadowCopy(instance?.source));

return (
<FormattedMessage
id={`ui-inventory.${isUserInConsortiumMode(stripes) ? 'consortia.' : ''}instanceRecordTitle`}
values={{
isShared: isInstanceShared,
title: instance?.title,
publisherAndDate: getPublishingInfo(instance),
}}
/>
);
};

const renderPaneSubtitle = () => {
return (
<FormattedMessage
id="ui-inventory.instanceRecordSubtitle"
values={{
hrid: instance?.hrid,
updatedDate: getDate(instance?.metadata?.updatedDate),
}}
/>
);
};

return (
<>
<Pane
{...rest}
data-test-instance-details
appIcon={<AppIcon app="inventory" iconKey="instance" />}
paneTitle={paneTitle}
paneSub={paneSubtitle}
paneTitle={renderPaneTitle()}
paneSub={renderPaneSubtitle()}
dismissible
onClose={onClose}
actionMenu={actionMenu}
Expand Down Expand Up @@ -243,16 +301,18 @@ InstanceDetails.propTypes = {
actionMenu: PropTypes.func,
onClose: PropTypes.func.isRequired,
instance: PropTypes.object,
paneTitle: PropTypes.object,
paneSubtitle: PropTypes.oneOfType([PropTypes.string, PropTypes.element]),
tagsToggle: PropTypes.func,
tagsEnabled: PropTypes.bool,
userTenantPermissions: PropTypes.arrayOf(PropTypes.object),
isLoading: PropTypes.bool,
isShared: PropTypes.bool,
};

InstanceDetails.defaultProps = {
instance: {},
tagsEnabled: false,
isLoading: false,
isShared: false,
};

export default InstanceDetails;
12 changes: 6 additions & 6 deletions src/Instance/InstanceDetails/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export const getPublishingInfo = instance => {
return undefined;
};

export const getAccordionState = (instance, accordions) => {
export const getAccordionState = (instance = {}, accordions = {}) => {
const instanceData = pick(
instance,
['hrid', 'source', 'catalogedDate', 'statusId', 'statusUpdatedDate', 'modeOfIssuanceId', 'statisticalCodeIds'],
Expand Down Expand Up @@ -48,13 +48,13 @@ export const getAccordionState = (instance, accordions) => {
return ({
[accordions.administrative]: !areAllFieldsEmpty(values(instanceData)),
[accordions.title]: !areAllFieldsEmpty(values(titleData)),
[accordions.identifiers]: !areAllFieldsEmpty([instance.identifiers ?? []]),
[accordions.contributors]: !areAllFieldsEmpty([instance.contributors ?? []]),
[accordions.identifiers]: !areAllFieldsEmpty([instance?.identifiers ?? []]),
[accordions.contributors]: !areAllFieldsEmpty([instance?.contributors ?? []]),
[accordions.descriptiveData]: !areAllFieldsEmpty(values(descriptiveData)),
[accordions.notes]: !areAllFieldsEmpty([instance?.notes ?? []]),
[accordions.electronicAccess]: !areAllFieldsEmpty([instance.electronicAccess ?? []]),
[accordions.subjects]: !areAllFieldsEmpty([instance.subjects ?? []]),
[accordions.classifications]: !areAllFieldsEmpty([instance.classifications ?? []]),
[accordions.electronicAccess]: !areAllFieldsEmpty([instance?.electronicAccess ?? []]),
[accordions.subjects]: !areAllFieldsEmpty([instance?.subjects ?? []]),
[accordions.classifications]: !areAllFieldsEmpty([instance?.classifications ?? []]),
[accordions.relationship]: !areAllFieldsEmpty(values(instanceRelationship)),
});
};
Loading

0 comments on commit ae50bd4

Please sign in to comment.