From c7170ba80ed8d3732addc0671974cac824b43eb7 Mon Sep 17 00:00:00 2001 From: Denys Bohdan Date: Fri, 13 Oct 2023 11:07:42 +0200 Subject: [PATCH 1/8] Release v9.0.0 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d20aa8bab..66c1ec5ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change history for ui-eholdings -## [9.0.0] IN PROGRESS +## [9.0.0] (https://github.com/folio-org/ui-eholdings/tree/v9.0.0) (2023-10-13) * Custom labels | Remove a dashes below labels. (UIEH-1361) * Titles tab: Add a Packages facet. (UIEH-1350) From 4838d862a43ff71e4fdbda41c41fb100f492d053 Mon Sep 17 00:00:00 2001 From: Dmytro-Melnyshyn <77053927+Dmytro-Melnyshyn@users.noreply.github.com> Date: Thu, 26 Oct 2023 14:38:17 +0300 Subject: [PATCH 2/8] UIEH-1394: Fix deleting and then saving custom embargo. (#1691) --- CHANGELOG.md | 4 ++++ .../custom-embargo/custom-embargo-fields.js | 2 +- .../custom-embargo/custom-embargo.test.js | 15 +++++++++++++ .../resource-edit-route.js | 2 +- .../resource-edit-route.test.js | 22 +++++++++++++++++++ 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 66c1ec5ee..ead9ad1b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change history for ui-eholdings +## [9.0.1] (IN PROGRESS) + +* Fix deleting and then saving custom embargo. (UIEH-1394) + ## [9.0.0] (https://github.com/folio-org/ui-eholdings/tree/v9.0.0) (2023-10-13) * Custom labels | Remove a dashes below labels. (UIEH-1361) diff --git a/src/components/resource/_fields/custom-embargo/custom-embargo-fields.js b/src/components/resource/_fields/custom-embargo/custom-embargo-fields.js index f17ffae68..75c1690cd 100644 --- a/src/components/resource/_fields/custom-embargo/custom-embargo-fields.js +++ b/src/components/resource/_fields/custom-embargo/custom-embargo-fields.js @@ -176,7 +176,7 @@ export default class CustomEmbargoFields extends Component { initialValues, ]; - return fields.value.length + return fields.value?.length ? this.renderInputs(...fieldsData) : this.renderAddButton(...fieldsData); } diff --git a/src/components/resource/_fields/custom-embargo/custom-embargo.test.js b/src/components/resource/_fields/custom-embargo/custom-embargo.test.js index 94a0c4a5b..d6bb12e80 100644 --- a/src/components/resource/_fields/custom-embargo/custom-embargo.test.js +++ b/src/components/resource/_fields/custom-embargo/custom-embargo.test.js @@ -126,4 +126,19 @@ describe('Given CustomEmbargoFields', () => { expect(getByTestId('custom-embargo-value')).toBeDefined(); }); }); + + describe('when the user deleted the embargo period', () => { + it('should see the "Add custom embargo period" button', () => { + const { getByRole } = renderCustomEmbargoFields({ + customEmbargoPeriod: [{ embargoUnit: 'Days', embargoValue: 33 }], + }); + + const deleteEmbargoBtn = getByRole('button', { name: 'ui-eholdings.resource.embargoPeriod.clear' }); + fireEvent.click(deleteEmbargoBtn); + + const addEmbargoBtn = getByRole('button', { name: 'ui-eholdings.resource.embargoPeriod.addCustom' }); + + expect(addEmbargoBtn).toBeDefined(); + }); + }); }); diff --git a/src/routes/resource-edit-route/resource-edit-route.js b/src/routes/resource-edit-route/resource-edit-route.js index b0bef9823..433bca766 100644 --- a/src/routes/resource-edit-route/resource-edit-route.js +++ b/src/routes/resource-edit-route/resource-edit-route.js @@ -153,7 +153,7 @@ class ResourceEditRoute extends Component { url: customUrl, visibilityData: { isHidden: !isVisible }, coverageStatement, - customEmbargoPeriod: customEmbargoPeriod[0] || defaultEmbargoPeriod, + customEmbargoPeriod: customEmbargoPeriod?.[0] || defaultEmbargoPeriod, proxy: { id: proxyId }, accessTypeId: newAccessTypeId, userDefinedField1, diff --git a/src/routes/resource-edit-route/resource-edit-route.test.js b/src/routes/resource-edit-route/resource-edit-route.test.js index 4aea3944d..281f24f33 100644 --- a/src/routes/resource-edit-route/resource-edit-route.test.js +++ b/src/routes/resource-edit-route/resource-edit-route.test.js @@ -331,4 +331,26 @@ describe('Given ResourceEditRoute', () => { expect(mockUpdateResource).toHaveBeenCalled(); }); }); + + describe('when user clicks on Save & close button', () => { + it('should call updateResource with default embargo period', () => { + const defaultEmbargoPeriod = { embargoValue: 0 }; + + const { getByRole } = renderResourceEditRoute({ + model: { + ...model, + isSelected: true, + }, + }); + + const deleteEmbargoBtn = getByRole('button', { name: 'ui-eholdings.resource.embargoPeriod.clear' }); + fireEvent.click(deleteEmbargoBtn); + + fireEvent.submit(getByRole('button', { name: 'stripes-components.saveAndClose' })); + + expect(mockUpdateResource).toHaveBeenCalledWith(expect.objectContaining({ + customEmbargoPeriod: defaultEmbargoPeriod, + })); + }); + }); }); From dfa167ecf8f28e123f99dc97ddc72073b0ed8696 Mon Sep 17 00:00:00 2001 From: Denys Bohdan Date: Thu, 26 Oct 2023 17:16:31 +0200 Subject: [PATCH 3/8] UIEH-1382 Make package select field container have relative position to fix packages dropdown list not displayed with the label (#1692) --- CHANGELOG.md | 1 + .../title/_fields/package-select/package-select-field.css | 3 +++ .../title/_fields/package-select/package-select-field.js | 7 ++++++- 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 src/components/title/_fields/package-select/package-select-field.css diff --git a/CHANGELOG.md b/CHANGELOG.md index ead9ad1b5..3c64755b8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ## [9.0.1] (IN PROGRESS) * Fix deleting and then saving custom embargo. (UIEH-1394) +* Fix Create custom title > Packages dropdown list does not display with the label. (UIEH-1382) ## [9.0.0] (https://github.com/folio-org/ui-eholdings/tree/v9.0.0) (2023-10-13) diff --git a/src/components/title/_fields/package-select/package-select-field.css b/src/components/title/_fields/package-select/package-select-field.css new file mode 100644 index 000000000..b51b6cf00 --- /dev/null +++ b/src/components/title/_fields/package-select/package-select-field.css @@ -0,0 +1,3 @@ +.packageSelectFieldContainer { + position: relative; +} diff --git a/src/components/title/_fields/package-select/package-select-field.js b/src/components/title/_fields/package-select/package-select-field.js index c883228b9..f767e69e9 100644 --- a/src/components/title/_fields/package-select/package-select-field.js +++ b/src/components/title/_fields/package-select/package-select-field.js @@ -11,6 +11,8 @@ import { Icon, } from '@folio/stripes/components'; +import css from './package-select-field.css'; + function validate(value) { return value ? undefined : ; } @@ -33,7 +35,10 @@ const PackageSelectField = ({ }; return ( -
+
Date: Mon, 30 Oct 2023 14:26:56 +0200 Subject: [PATCH 4/8] UIEH-1383: Fix deleting last date range when creating a new package or editing title. (#1693) --- CHANGELOG.md | 1 + .../package-coverage-fields.js | 2 +- .../resource/_fields/validate-date-range.js | 2 +- .../package-create-route.js | 2 +- .../package-create-route.test.js | 24 +++++++++++++++++++ .../resource-edit-route.test.js | 18 ++++++++++++++ 6 files changed, 46 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c64755b8..67d240cdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Fix deleting and then saving custom embargo. (UIEH-1394) * Fix Create custom title > Packages dropdown list does not display with the label. (UIEH-1382) +* Fix deleting last date range when creating a new package or editing title. (UIEH-1383) ## [9.0.0] (https://github.com/folio-org/ui-eholdings/tree/v9.0.0) (2023-10-13) diff --git a/src/components/package/_fields/custom-coverage/package-coverage-fields.js b/src/components/package/_fields/custom-coverage/package-coverage-fields.js index 5d21e684f..af7a267c1 100644 --- a/src/components/package/_fields/custom-coverage/package-coverage-fields.js +++ b/src/components/package/_fields/custom-coverage/package-coverage-fields.js @@ -29,7 +29,7 @@ class PackageCoverageFields extends Component { validateDateRange = (values) => { const errorArray = []; - values.forEach(({ beginCoverage, endCoverage }) => { + values?.forEach(({ beginCoverage, endCoverage }) => { const errors = {}; if (endCoverage && !moment.utc(endCoverage).isAfter(moment.utc(beginCoverage))) { diff --git a/src/components/resource/_fields/validate-date-range.js b/src/components/resource/_fields/validate-date-range.js index d520092a4..54acdd640 100644 --- a/src/components/resource/_fields/validate-date-range.js +++ b/src/components/resource/_fields/validate-date-range.js @@ -156,7 +156,7 @@ const validateWithinPackageRange = (resourceDateRange, packageDateRange) => { const validateDateRange = (values, locale, packageDateRange) => { const errors = []; - values.forEach((dateRange, index) => { + values?.forEach((dateRange, index) => { const dateRangeErrors = validateDateFormat(dateRange, locale) || validateStartDateBeforeEndDate(dateRange) diff --git a/src/routes/package-create-route/package-create-route.js b/src/routes/package-create-route/package-create-route.js index c004f9d92..4a5635a52 100644 --- a/src/routes/package-create-route/package-create-route.js +++ b/src/routes/package-create-route/package-create-route.js @@ -38,7 +38,7 @@ export default class PackageCreateRoute extends Component { packageCreateSubmitted = (values) => { const attrs = {}; - if (values.customCoverages[0]) { + if (values?.customCoverages?.[0]) { attrs.customCoverage = { beginCoverage: !values.customCoverages[0].beginCoverage ? '' : moment.utc(values.customCoverages[0].beginCoverage).format('YYYY-MM-DD'), diff --git a/src/routes/package-create-route/package-create-route.test.js b/src/routes/package-create-route/package-create-route.test.js index 618e023a6..d75cf31bf 100644 --- a/src/routes/package-create-route/package-create-route.test.js +++ b/src/routes/package-create-route/package-create-route.test.js @@ -164,4 +164,28 @@ describe('Given PackageCreateRoute', () => { expect(mockCreatePackage).toHaveBeenCalled(); }); }); + + describe('when user adds a name, adds and delete date rage and clicks on Save&close button', () => { + it('should call updateResource', () => { + const { + getByRole, + getByText, + } = renderPackageCreateRoute(); + + const packageNameInput = getByRole('textbox', { name: 'ui-eholdings.label.name' }); + + fireEvent.change(packageNameInput, { target: { value: 'New package name' } }); + + const addCoverageSettingsButton = getByText('ui-eholdings.package.coverage.addDateRange'); + + fireEvent.click(addCoverageSettingsButton); + + const deleteEmbargoBtn = getByRole('button', { name: 'stripes-components.deleteThisItem' }); + fireEvent.click(deleteEmbargoBtn); + + fireEvent.click(getByRole('button', { name: 'stripes-components.saveAndClose' })); + + expect(mockCreatePackage).toHaveBeenCalled(); + }); + }); }); diff --git a/src/routes/resource-edit-route/resource-edit-route.test.js b/src/routes/resource-edit-route/resource-edit-route.test.js index 281f24f33..e1c061c8f 100644 --- a/src/routes/resource-edit-route/resource-edit-route.test.js +++ b/src/routes/resource-edit-route/resource-edit-route.test.js @@ -353,4 +353,22 @@ describe('Given ResourceEditRoute', () => { })); }); }); + + describe('when user deletes last date range row and clicks on Save&close button', () => { + it('should call updateResource', () => { + const { getByRole } = renderResourceEditRoute({ + model: { + ...model, + isSelected: true, + }, + }); + + const deleteItem = getByRole('button', { name: 'stripes-components.deleteThisItem' }); + fireEvent.click(deleteItem); + + fireEvent.submit(getByRole('button', { name: 'stripes-components.saveAndClose' })); + + expect(mockUpdateResource).toHaveBeenCalled(); + }); + }); }); From 622e08f17643f8d4ce3ed1fffa013fa812b4d410 Mon Sep 17 00:00:00 2001 From: Dmytro-Melnyshyn <77053927+Dmytro-Melnyshyn@users.noreply.github.com> Date: Tue, 31 Oct 2023 19:22:49 +0200 Subject: [PATCH 5/8] UIEH-1383: Don't display the deleted date range. (#1695) --- .../resource-edit-managed-title.js | 1 - .../package-edit-route/package-edit-route.js | 1 + .../package-edit-route.test.js | 24 +++++++++++ .../resource-edit-route.js | 1 + .../resource-edit-route.test.js | 42 +++++++++++-------- 5 files changed, 50 insertions(+), 19 deletions(-) diff --git a/src/components/resource/edit-managed-title/resource-edit-managed-title.js b/src/components/resource/edit-managed-title/resource-edit-managed-title.js index 36bcdebb1..26c4de8a7 100644 --- a/src/components/resource/edit-managed-title/resource-edit-managed-title.js +++ b/src/components/resource/edit-managed-title/resource-edit-managed-title.js @@ -209,7 +209,6 @@ const ResourceEditManagedTitle = ({ resourceIsCustom={false} resourceSelected={managedResourceSelected} isSelectInFlight={isSelectInFlight} - handleToggleResourceHoldings={handleToggleResourceHoldings} /> {model.isSelected && ( diff --git a/src/routes/package-edit-route/package-edit-route.js b/src/routes/package-edit-route/package-edit-route.js index d74c60e51..97a2be45b 100644 --- a/src/routes/package-edit-route/package-edit-route.js +++ b/src/routes/package-edit-route/package-edit-route.js @@ -124,6 +124,7 @@ class PackageEditRoute extends Component { model.isSelected = true; model.allowKbToAddTitles = true; + model.customCoverage = {}; updatePackage(model); }; diff --git a/src/routes/package-edit-route/package-edit-route.test.js b/src/routes/package-edit-route/package-edit-route.test.js index 601a2a333..f48fc411c 100644 --- a/src/routes/package-edit-route/package-edit-route.test.js +++ b/src/routes/package-edit-route/package-edit-route.test.js @@ -322,6 +322,30 @@ describe('Given PackageEditRoute', () => { }); }); + describe('when date range in the "Coverage Settings" section is removed', () => { + describe('and user clicks Save&Close button', () => { + it('should update package with the empty customCoverage', () => { + const { getByRole } = renderPackageEditRoute({ + model: { + ...model, + isSelected: true, + customCoverage: { + beginCoverage: '2023-10-30', + endCoverage: '2023-10-31', + }, + }, + }); + + fireEvent.click(getByRole('button', { name: 'stripes-components.deleteThisItem' })); + fireEvent.click(getByRole('button', { name: 'stripes-components.saveAndClose' })); + + expect(mockUpdatePackage).toHaveBeenCalledWith(expect.objectContaining({ + customCoverage: {}, + })); + }); + }); + }); + describe('when a custom package is deselected', () => { it('should call destroyPackage', () => { const { getByText } = renderPackageEditRoute(); diff --git a/src/routes/resource-edit-route/resource-edit-route.js b/src/routes/resource-edit-route/resource-edit-route.js index 433bca766..92fb71b9b 100644 --- a/src/routes/resource-edit-route/resource-edit-route.js +++ b/src/routes/resource-edit-route/resource-edit-route.js @@ -132,6 +132,7 @@ class ResourceEditRoute extends Component { })); } else if (values.isSelected && !values.customCoverages) { updateResource(Object.assign(model, { + customCoverages: [], isSelected: true, })); } else { diff --git a/src/routes/resource-edit-route/resource-edit-route.test.js b/src/routes/resource-edit-route/resource-edit-route.test.js index e1c061c8f..f57e8866f 100644 --- a/src/routes/resource-edit-route/resource-edit-route.test.js +++ b/src/routes/resource-edit-route/resource-edit-route.test.js @@ -298,24 +298,6 @@ describe('Given ResourceEditRoute', () => { }); }); - describe('when package is added to holdings', () => { - it('should update resource', () => { - const { getByText } = renderResourceEditRoute({ - model: { - ...model, - isSelected: false, - }, - }); - - fireEvent.click(getByText('ui-eholdings.addToHoldings')); - - expect(mockUpdateResource).toHaveBeenCalledWith({ - ...model, - isSelected: true, - }); - }); - }); - describe('when a managed package is deselected', () => { it('should handle mockUpdateResource', () => { const { getByText } = renderResourceEditRoute({ @@ -371,4 +353,28 @@ describe('Given ResourceEditRoute', () => { expect(mockUpdateResource).toHaveBeenCalled(); }); }); + + describe('when date range in the "Coverage Settings" section is removed', () => { + describe('and user clicks Save&Close button', () => { + it('should update package with the empty customCoverage', () => { + const { getByRole } = renderResourceEditRoute({ + model: { + ...model, + isSelected: true, + customCoverage: [{ + beginCoverage: '2023-10-30', + endCoverage: '2023-10-31' + }], + }, + }); + + fireEvent.click(getByRole('button', { name: 'stripes-components.deleteThisItem' })); + fireEvent.click(getByRole('button', { name: 'stripes-components.saveAndClose' })); + + expect(mockUpdateResource).toHaveBeenCalledWith(expect.objectContaining({ + customCoverages: [], + })); + }); + }); + }); }); From bcdb0ed7e7a8478eb6f219405f6b4eea2022c81b Mon Sep 17 00:00:00 2001 From: Denys Bohdan Date: Fri, 3 Nov 2023 11:55:37 +0100 Subject: [PATCH 6/8] Release v9.0.1 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67d240cdf..ab805f4c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change history for ui-eholdings -## [9.0.1] (IN PROGRESS) +## [9.0.1] (https://github.com/folio-org/ui-eholdings/tree/v9.0.1) (2023-11-03) * Fix deleting and then saving custom embargo. (UIEH-1394) * Fix Create custom title > Packages dropdown list does not display with the label. (UIEH-1382) diff --git a/package.json b/package.json index 9391ca4f1..492cc262b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@folio/eholdings", - "version": "9.0.0", + "version": "9.0.1", "description": "FOLIO UI module for eHoldings", "main": "src/index.js", "repository": "https://github.com/folio-org/ui-eholdings", From 889fff325b18453d2a603a1aa1aa30c661908453 Mon Sep 17 00:00:00 2001 From: Dmytro-Melnyshyn <77053927+Dmytro-Melnyshyn@users.noreply.github.com> Date: Fri, 3 Nov 2023 15:30:26 +0200 Subject: [PATCH 7/8] UIEH-1397: The list of packages is no longer cut off in the modal window. (#1697) --- CHANGELOG.md | 4 ++++ .../package-select/package-select-field.css | 3 --- .../package-select/package-select-field.js | 18 ++++-------------- src/components/title/show/title-show.css | 4 ++++ src/components/title/show/title-show.js | 1 + 5 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 src/components/title/_fields/package-select/package-select-field.css diff --git a/CHANGELOG.md b/CHANGELOG.md index ab805f4c9..9596e4658 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Change history for ui-eholdings +## [9.0.2] (IN PROGRESS) + +* The list of packages is no longer cut off in the modal window. (UIEH-1397) + ## [9.0.1] (https://github.com/folio-org/ui-eholdings/tree/v9.0.1) (2023-11-03) * Fix deleting and then saving custom embargo. (UIEH-1394) diff --git a/src/components/title/_fields/package-select/package-select-field.css b/src/components/title/_fields/package-select/package-select-field.css deleted file mode 100644 index b51b6cf00..000000000 --- a/src/components/title/_fields/package-select/package-select-field.css +++ /dev/null @@ -1,3 +0,0 @@ -.packageSelectFieldContainer { - position: relative; -} diff --git a/src/components/title/_fields/package-select/package-select-field.js b/src/components/title/_fields/package-select/package-select-field.js index f767e69e9..1ffb945b3 100644 --- a/src/components/title/_fields/package-select/package-select-field.js +++ b/src/components/title/_fields/package-select/package-select-field.js @@ -11,8 +11,6 @@ import { Icon, } from '@folio/stripes/components'; -import css from './package-select-field.css'; - function validate(value) { return value ? undefined : ; } @@ -35,13 +33,13 @@ const PackageSelectField = ({ }; return ( -
+
} - tether={{ - constraints: [ - { - to: 'window', - attachment: 'together', - }, - ], - }} />
); diff --git a/src/components/title/show/title-show.css b/src/components/title/show/title-show.css index 11e6f5fe5..85454e1f4 100644 --- a/src/components/title/show/title-show.css +++ b/src/components/title/show/title-show.css @@ -1,3 +1,7 @@ .add-to-custom-package-button { margin: 1rem 0 0; } + +.addTitleModalContent { + overflow: visible; +} diff --git a/src/components/title/show/title-show.js b/src/components/title/show/title-show.js index 60ba3932a..954f73001 100644 --- a/src/components/title/show/title-show.js +++ b/src/components/title/show/title-show.js @@ -501,6 +501,7 @@ class TitleShow extends Component { id="eholdings-custom-package-modal" wrappingElement="form" enforceFocus={false} + contentClass={styles.addTitleModalContent} footer={(