From b9f3ba143eb7f2d170f53725be774eea681d3a21 Mon Sep 17 00:00:00 2001 From: Javier Romero Castro Date: Mon, 23 Jan 2023 19:41:32 +0100 Subject: [PATCH] overridable: enable components to be overriden * namespaces search apps * closes https://github.com/inveniosoftware/invenio-app-rdm/issues/2018 --- .../administration/communities.py | 2 +- .../administration/search.js | 18 ++++-- .../invenio_communities/community/search.js | 31 +++++---- .../details_search/components.js | 9 ++- .../details_search/index.js | 46 +++++++++---- .../members/invitations/index.js | 34 +++++----- .../members/members/manager_view/index.js | 24 ++++--- .../members/members/member_view/index.js | 24 ++++--- .../members/members/public_view/index.js | 28 +++++--- .../js/invenio_communities/requests/index.js | 64 +++++++++++-------- .../invenio_communities/requests/requests.js | 9 ++- .../details/members/invitations.html | 2 +- .../details/members/members.html | 8 +-- .../details/requests/index.html | 2 +- .../invenio_communities/search.html | 2 +- 15 files changed, 190 insertions(+), 113 deletions(-) diff --git a/invenio_communities/administration/communities.py b/invenio_communities/administration/communities.py index b08aa9386..c040364e2 100644 --- a/invenio_communities/administration/communities.py +++ b/invenio_communities/administration/communities.py @@ -28,7 +28,7 @@ class CommunityListView(AdminResourceListView): pid_path = "id" icon = "users" template = "invenio_communities/administration/community_search.html" - + app_id = "InvenioCommunities.Administration" display_search = True display_delete = False display_create = False diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/administration/search.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/administration/search.js index e66ce9029..d36eacd5f 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/administration/search.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/administration/search.js @@ -7,27 +7,31 @@ import { initDefaultSearchComponents } from "@js/invenio_administration"; import { createSearchAppInit } from "@js/invenio_search_ui"; import { FeatureModal } from "./FeatureModal"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { NotificationController, BoolFormatter } from "@js/invenio_administration"; const domContainer = document.getElementById("invenio-search-config"); -const defaultComponents = initDefaultSearchComponents(domContainer); +const appName = "InvenioCommunities.Administration"; + +const defaultComponents = initDefaultSearchComponents(domContainer, appName); const CustomBoolFormatter = parametrize(BoolFormatter, { icon: "star", color: "yellow", }); -const overridenComponents = { +const overriddenDefaultComponents = { ...defaultComponents, - "InvenioAdministration.BoolFormatter": CustomBoolFormatter, - "InvenioAdministration.ActionModal": FeatureModal, + [`${appName}.InvenioAdministration.BoolFormatter`]: CustomBoolFormatter, + [`${appName}.InvenioAdministration.ActionModal`]: FeatureModal, }; +const overriddenComponents = overrideStore.getAll(); + createSearchAppInit( - overridenComponents, + { ...overriddenDefaultComponents, ...overriddenComponents }, true, "invenio-search-config", - false, + true, NotificationController ); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js index 39a3cc4de..cf09db937 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/search.js @@ -15,7 +15,7 @@ import { import { i18next } from "@translations/invenio_communities/i18next"; import React from "react"; import { GridResponsiveSidebarColumn } from "react-invenio-forms"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { Count, ResultsList, SearchBar, Sort, withState } from "react-searchkit"; import { Button, Card, Container, Grid, Input, Segment } from "semantic-ui-react"; import { ComputerTabletCommunitiesItem } from "./communities_items/ComputerTabletCommunitiesItem"; @@ -26,6 +26,8 @@ import { } from "@js/invenio_search_ui/components"; import PropTypes from "prop-types"; +const appName = "InvenioCommunities.Search"; + function ResultsGridItemTemplate({ result }) { return ( @@ -228,7 +230,7 @@ export const CommunitiesSearchLayout = (props) => { open={sidebarVisible} onHideClick={() => setSidebarVisible(false)} // eslint-disable-next-line react/no-children-prop - children={} + children={} /> @@ -248,15 +250,22 @@ const ContribSearchAppFacetsWithConfig = parametrize(ContribSearchAppFacets, { }); const defaultComponents = { - "BucketAggregation.element": RDMBucketAggregationElement, - "BucketAggregationValues.element": ContribBucketAggregationValuesElement, - "SearchApp.facets": ContribSearchAppFacetsWithConfig, - "ResultsList.item": ResultsItemTemplate, - "ResultsGrid.item": ResultsGridItemTemplate, - "SearchApp.layout": CommunitiesSearchLayout, - "SearchBar.element": CommunitiesSearchBarElement, - "SearchApp.results": CommunitiesResults, + [`${appName}.BucketAggregation.element`]: RDMBucketAggregationElement, + [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement, + [`${appName}.SearchApp.facets`]: ContribSearchAppFacetsWithConfig, + [`${appName}.ResultsList.item`]: ResultsItemTemplate, + [`${appName}.ResultsGrid.item`]: ResultsGridItemTemplate, + [`${appName}.SearchApp.layout`]: CommunitiesSearchLayout, + [`${appName}.SearchBar.element`]: CommunitiesSearchBarElement, + [`${appName}.SearchApp.results`]: CommunitiesResults, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app -createSearchAppInit(defaultComponents); +createSearchAppInit( + { ...defaultComponents, ...overriddenComponents }, + true, + "invenio-search-config", + true +); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js index 11bcb4ea5..749124a56 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/components.js @@ -124,7 +124,7 @@ CommunityRecordResultsGridItem.propTypes = { result: PropTypes.object.isRequired, }; -export const CommunityRecordSearchAppLayout = ({ config }) => { +export const CommunityRecordSearchAppLayout = ({ config, appName }) => { const [sidebarVisible, setSidebarVisible] = React.useState(false); return ( @@ -174,7 +174,7 @@ export const CommunityRecordSearchAppLayout = ({ config }) => { open={sidebarVisible} onHideClick={() => setSidebarVisible(false)} // eslint-disable-next-line react/no-children-prop - children={} + children={} /> @@ -187,6 +187,11 @@ export const CommunityRecordSearchAppLayout = ({ config }) => { CommunityRecordSearchAppLayout.propTypes = { config: PropTypes.object.isRequired, + appName: PropTypes.string +}; + +CommunityRecordSearchAppLayout.defaultProps = { + appName: undefined, }; export const CommunityRecordSingleSearchBarElement = withState( diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js index f80fe4396..db54f2287 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/details_search/index.js @@ -15,27 +15,45 @@ import { CommunityRecordSearchBarElement, CommunityToggleComponent, } from "./components"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { ContribSearchAppFacets, ContribBucketAggregationElement, ContribBucketAggregationValuesElement, } from "@js/invenio_search_ui/components"; +const appName = "InvenioCommunities.DetailsSearch"; + const ContribSearchAppFacetsWithConfig = parametrize(ContribSearchAppFacets, { toogle: true, }); -createSearchAppInit({ - "BucketAggregation.element": ContribBucketAggregationElement, - "BucketAggregationValues.element": ContribBucketAggregationValuesElement, - "ResultsGrid.item": CommunityRecordResultsGridItem, - "EmptyResults.element": CommunityEmptyResults, - "ResultsList.item": CommunityRecordResultsListItem, - "SearchApp.facets": ContribSearchAppFacetsWithConfig, - "SearchApp.layout": CommunityRecordSearchAppLayout, - "SearchBar.element": CommunityRecordSearchBarElement, - "Count.element": CommunityCountComponent, - "Error.element": CommunityErrorComponent, - "SearchFilters.Toggle.element": CommunityToggleComponent, -}); +const CommunityRecordSearchAppLayoutWAppName = parametrize( + CommunityRecordSearchAppLayout, + { + appName: appName, + } +); + +const defaultComponents = { + [`${appName}.BucketAggregation.element`]: ContribBucketAggregationElement, + [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement, + [`${appName}.ResultsGrid.item`]: CommunityRecordResultsGridItem, + [`${appName}.EmptyResults.element`]: CommunityEmptyResults, + [`${appName}.ResultsList.item`]: CommunityRecordResultsListItem, + [`${appName}.SearchApp.facets`]: ContribSearchAppFacetsWithConfig, + [`${appName}.SearchApp.layout`]: CommunityRecordSearchAppLayoutWAppName, + [`${appName}.SearchBar.element`]: CommunityRecordSearchBarElement, + [`${appName}.Count.element`]: CommunityCountComponent, + [`${appName}.Error.element`]: CommunityErrorComponent, + [`${appName}.SearchFilters.Toggle.element`]: CommunityToggleComponent, +}; + +const overriddenComponents = overrideStore.getAll(); + +createSearchAppInit( + { ...defaultComponents, ...overriddenComponents }, + true, + "invenio-search-config", + true +); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js index fb55a3ad5..76136b189 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/invitations/index.js @@ -7,7 +7,7 @@ */ import { createSearchAppInit } from "@js/invenio_search_ui"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { DropdownSort } from "@js/invenio_search_ui/components"; import { InvitationsContextProvider as ContextProvider } from "../../api/invitations/InvitationsContextProvider"; import { InvitationResultItem } from "./InvitationResultItem"; @@ -30,6 +30,8 @@ const communitiesAllRoles = JSON.parse(dataAttr.communitiesAllRoles); const communitiesRolesCanInvite = JSON.parse(dataAttr.communitiesRolesCanInvite); const permissions = JSON.parse(dataAttr.permissions); +const appName = "InvenioCommunities.InvitationsSearch"; + const communityGroupsEnabled = JSON.parse(dataAttr.communityGroupsEnabled); const InvitationResultItemWithConfig = parametrize(InvitationResultItem, { @@ -50,25 +52,27 @@ const InvitationsContextProvider = parametrize(ContextProvider, { }); const defaultComponents = { - "ResultsList.item": InvitationResultItemWithConfig, - "SearchApp.layout": InvitationsSearchLayoutWithConfig, - "SearchBar.element": InvitationsSearchBarElement, - "SearchApp.results": InvitationsResults, - "ResultsList.container": InvitationsResultsContainer, - "Sort.element": DropdownSort, - "RequestStatus.layout.submitted": SubmitStatus, - "RequestStatus.layout.deleted": DeleteStatus, - "RequestStatus.layout.accepted": AcceptStatus, - "RequestStatus.layout.declined": DeclineStatus, - "RequestStatus.layout.cancelled": CancelStatus, - "RequestStatus.layout.expired": ExpireStatus, + [`${appName}.ResultsList.item`]: InvitationResultItemWithConfig, + [`${appName}.SearchApp.layout`]: InvitationsSearchLayoutWithConfig, + [`${appName}.SearchBar.element`]: InvitationsSearchBarElement, + [`${appName}.SearchApp.results`]: InvitationsResults, + [`${appName}.ResultsList.container`]: InvitationsResultsContainer, + [`${appName}.Sort.element`]: DropdownSort, + [`${appName}.RequestStatus.layout.submitted`]: SubmitStatus, + [`${appName}.RequestStatus.layout.deleted`]: DeleteStatus, + [`${appName}.RequestStatus.layout.accepted`]: AcceptStatus, + [`${appName}.RequestStatus.layout.declined`]: DeclineStatus, + [`${appName}.RequestStatus.layout.cancelled`]: CancelStatus, + [`${appName}.RequestStatus.layout.expired`]: ExpireStatus, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app createSearchAppInit( - defaultComponents, + { ...defaultComponents, ...overriddenComponents }, true, "invenio-search-config", - false, + true, InvitationsContextProvider ); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js index f671dd6c0..87cd8fa0c 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/manager_view/index.js @@ -7,7 +7,7 @@ */ import { createSearchAppInit } from "@js/invenio_search_ui"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { DropdownSort } from "@js/invenio_search_ui/components"; import { memberVisibilityTypes } from "../"; import { MembersSearchBarElement } from "../../components/MembersSearchBarElement"; @@ -24,6 +24,8 @@ const communitiesAllRoles = JSON.parse(dataAttr.communitiesAllRoles); const community = JSON.parse(dataAttr.community); const permissions = JSON.parse(dataAttr.permissions); +const appName = "InvenioCommunities.ManagerSearch"; + const ManagerMembersResultItemWithConfig = parametrize(ManagerMembersResultItem, { config: { rolesCanUpdate: communitiesRolesCanUpdate, @@ -53,20 +55,22 @@ const MembersSearchLayoutWithConfig = parametrize(MembersSearchLayout, { }); const defaultComponents = { - "ResultsList.item": ManagerMembersResultItemWithConfig, - "ResultsGrid.item": MembersResultsGridItem, - "SearchApp.layout": MembersSearchLayoutWithConfig, - "SearchBar.element": MembersSearchBarElement, - "SearchApp.results": MembersResults, - "ResultsList.container": ManagerMembersResultContainerWithCommunity, - "Sort.element": DropdownSort, + [`${appName}.ResultsList.item`]: ManagerMembersResultItemWithConfig, + [`${appName}.ResultsGrid.item`]: MembersResultsGridItem, + [`${appName}.SearchApp.layout`]: MembersSearchLayoutWithConfig, + [`${appName}.SearchBar.element`]: MembersSearchBarElement, + [`${appName}.SearchApp.results`]: MembersResults, + [`${appName}.ResultsList.container`]: ManagerMembersResultContainerWithCommunity, + [`${appName}.Sort.element`]: DropdownSort, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app createSearchAppInit( - defaultComponents, + { ...defaultComponents, ...overriddenComponents }, true, "invenio-search-config", - false, + true, MembersSearchAppContext ); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js index f6e8bd5aa..acc2bc7af 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/member_view/index.js @@ -7,7 +7,7 @@ */ import { createSearchAppInit } from "@js/invenio_search_ui"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { DropdownSort } from "@js/invenio_search_ui/components"; import { memberVisibilityTypes } from "../"; import { MembersSearchBarElement } from "../../components/MembersSearchBarElement"; @@ -24,6 +24,8 @@ const communitiesRolesCanUpdate = JSON.parse(dataAttr.communitiesRolesCanUpdate) const permissions = JSON.parse(dataAttr.permissions); const community = JSON.parse(dataAttr.community); +const appName = "InvenioCommunities.MemberSearch"; + const ManagerMembersResultItemWithConfig = parametrize(ManagerMembersResultItem, { config: { rolesCanUpdate: communitiesRolesCanUpdate, @@ -41,20 +43,22 @@ const MembersSearchLayoutWithConfig = parametrize(MembersSearchLayout, { }); const defaultComponents = { - "ResultsList.item": ManagerMembersResultItemWithConfig, - "ResultsGrid.item": MembersResultsGridItem, - "SearchApp.layout": MembersSearchLayoutWithConfig, - "SearchBar.element": MembersSearchBarElement, - "SearchApp.results": MembersResults, - "ResultsList.container": MembersResultsContainer, - "Sort.element": DropdownSort, + [`${appName}.ResultsList.item`]: ManagerMembersResultItemWithConfig, + [`${appName}.ResultsGrid.item`]: MembersResultsGridItem, + [`${appName}.SearchApp.layout`]: MembersSearchLayoutWithConfig, + [`${appName}.SearchBar.element`]: MembersSearchBarElement, + [`${appName}.SearchApp.results`]: MembersResults, + [`${appName}.ResultsList.container`]: MembersResultsContainer, + [`${appName}.Sort.element`]: DropdownSort, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app createSearchAppInit( - defaultComponents, + { ...defaultComponents, ...overriddenComponents }, true, "invenio-search-config", - false, + true, MembersSearchAppContext ); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js index 5e92cd332..aa8e95d04 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/members/members/public_view/index.js @@ -8,6 +8,7 @@ import { createSearchAppInit } from "@js/invenio_search_ui"; import { DropdownSort } from "@js/invenio_search_ui/components"; +import { overrideStore } from "react-overridable"; import { PublicMembersResultsItem } from "./PublicMembersResultItem"; import { MembersSearchBarElement } from "../../components/MembersSearchBarElement"; @@ -17,16 +18,25 @@ import { PublicMembersResultsContainer } from "./PublicMembersResultContainer"; import { PublicMembersSearchLayout } from "./PublicMembersSearchLayout"; import MembersEmptyResults from "../components/MembersEmptyResults"; +const appName = "InvenioCommunities.PublicSearch"; + const defaultComponents = { - "ResultsList.item": PublicMembersResultsItem, - "ResultsGrid.item": MembersResultsGridItem, - "SearchApp.layout": PublicMembersSearchLayout, - "SearchBar.element": MembersSearchBarElement, - "SearchApp.results": MembersResults, - "ResultsList.container": PublicMembersResultsContainer, - "EmptyResults.element": MembersEmptyResults, - "Sort.element": DropdownSort, + [`${appName}.ResultsList.item`]: PublicMembersResultsItem, + [`${appName}.ResultsGrid.item`]: MembersResultsGridItem, + [`${appName}.SearchApp.layout`]: PublicMembersSearchLayout, + [`${appName}.SearchBar.element`]: MembersSearchBarElement, + [`${appName}.SearchApp.results`]: MembersResults, + [`${appName}.ResultsList.container`]: PublicMembersResultsContainer, + [`${appName}.EmptyResults.element`]: MembersEmptyResults, + [`${appName}.Sort.element`]: DropdownSort, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app -createSearchAppInit(defaultComponents); +createSearchAppInit( + { ...defaultComponents, ...overriddenComponents }, + true, + "invenio-search-config", + true +); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js index 12e3eb080..e2f942311 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/index.js @@ -8,7 +8,7 @@ import React from "react"; import { createSearchAppInit } from "@js/invenio_search_ui"; -import { parametrize } from "react-overridable"; +import { parametrize, overrideStore } from "react-overridable"; import { LabelTypeSubmission, LabelTypeInvitation, @@ -45,6 +45,8 @@ import { const domContainer = document.getElementById("communities-request-search-root"); +const appName = "InvenioCommunities.RequestSearch"; + const community = JSON.parse(domContainer.dataset.community); const RequestsResultsGridItemTemplateWithCommunity = parametrize( @@ -75,6 +77,10 @@ const RequestCancelModalTriggerWithConfig = parametrize(RequestCancelModalTrigge className: "ml-5", }); +const RequestsSearchLayoutWAppName = parametrize(RequestsSearchLayout, { + appName: appName, +}); + const CommunitySubmission = () => ( ); @@ -96,30 +102,38 @@ const Cancelled = () => ; const Expired = () => ; const defaultComponents = { - "BucketAggregation.element": ContribBucketAggregationElement, - "BucketAggregationValues.element": ContribBucketAggregationValuesElement, - "SearchApp.facets": ContribSearchAppFacets, - "ResultsList.item": RequestsResultsItemTemplateWithCommunity, - "ResultsGrid.item": RequestsResultsGridItemTemplateWithCommunity, - "SearchApp.layout": RequestsSearchLayout, - "SearchApp.results": RequestsResults, - "SearchBar.element": RecordSearchBarElement, - "EmptyResults.element": RequestsEmptyResultsWithState, - "RequestTypeLabel.layout.community-submission": CommunitySubmission, - "RequestTypeLabel.layout.community-invitation": CommunityInvitation, - "RequestStatusLabel.layout.submitted": Submitted, - "RequestStatusLabel.layout.deleted": Deleted, - "RequestStatusLabel.layout.accepted": Accepted, - "RequestStatusLabel.layout.declined": Declined, - "RequestStatusLabel.layout.cancelled": Cancelled, - "RequestStatusLabel.layout.expired": Expired, - "RequestActionModalTrigger.accept": RequestAcceptModalTriggerWithConfig, - "RequestActionModalTrigger.decline": RequestDeclineModalTriggerWithConfig, - "RequestActionModalTrigger.cancel": RequestCancelModalTriggerWithConfig, - "RequestActionButton.cancel": RequestCancelButton, - "RequestActionButton.decline": RequestDeclineButton, - "RequestActionButton.accept": RequestAcceptButton, + [`${appName}.BucketAggregation.element`]: ContribBucketAggregationElement, + [`${appName}.BucketAggregationValues.element`]: ContribBucketAggregationValuesElement, + [`${appName}.SearchApp.facets`]: ContribSearchAppFacets, + [`${appName}.ResultsList.item`]: RequestsResultsItemTemplateWithCommunity, + [`${appName}.ResultsGrid.item`]: RequestsResultsGridItemTemplateWithCommunity, + [`${appName}.SearchApp.layout`]: RequestsSearchLayoutWAppName, + [`${appName}.SearchApp.results`]: RequestsResults, + [`${appName}.SearchBar.element`]: RecordSearchBarElement, + [`${appName}.EmptyResults.element`]: RequestsEmptyResultsWithState, + [`${appName}.RequestTypeLabel.layout.community-submission`]: CommunitySubmission, + [`${appName}.RequestTypeLabel.layout.community-invitation`]: CommunityInvitation, + [`${appName}.RequestStatusLabel.layout.submitted`]: Submitted, + [`${appName}.RequestStatusLabel.layout.deleted`]: Deleted, + [`${appName}.RequestStatusLabel.layout.accepted`]: Accepted, + [`${appName}.RequestStatusLabel.layout.declined`]: Declined, + [`${appName}.RequestStatusLabel.layout.cancelled`]: Cancelled, + [`${appName}.RequestStatusLabel.layout.expired`]: Expired, + [`${appName}.RequestActionModalTrigger.accept`]: RequestAcceptModalTriggerWithConfig, + [`${appName}.RequestActionModalTrigger.decline`]: + RequestDeclineModalTriggerWithConfig, + [`${appName}.RequestActionModalTrigger.cancel`]: RequestCancelModalTriggerWithConfig, + [`${appName}.RequestActionButton.cancel`]: RequestCancelButton, + [`${appName}.RequestActionButton.decline`]: RequestDeclineButton, + [`${appName}.RequestActionButton.accept`]: RequestAcceptButton, }; +const overriddenComponents = overrideStore.getAll(); + // Auto-initialize search app -createSearchAppInit(defaultComponents); +createSearchAppInit( + { ...defaultComponents, ...overriddenComponents }, + true, + "invenio-search-config", + true +); diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js index d2599d53b..5374b5bde 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/requests/requests.js @@ -253,7 +253,7 @@ export const RequestStatusFilter = withState(RequestStatusFilterComponent); export const RequestsSearchLayout = (props) => { const [sidebarVisible, setSidebarVisible] = React.useState(false); - const { config } = props; + const { config, appName } = props; return ( @@ -291,7 +291,7 @@ export const RequestsSearchLayout = (props) => { open={sidebarVisible} onHideClick={() => setSidebarVisible(false)} // eslint-disable-next-line react/no-children-prop - children={} + children={} /> @@ -304,6 +304,11 @@ export const RequestsSearchLayout = (props) => { RequestsSearchLayout.propTypes = { config: PropTypes.object.isRequired, + appName: PropTypes.string, +}; + +RequestsSearchLayout.defaultProps = { + appName: undefined, }; export const RequestsEmptyResults = ({ diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html index 23a56e3d1..8b598c6a3 100644 --- a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html +++ b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/invitations.html @@ -28,7 +28,7 @@ data-communities-roles-can-invite='{{ roles_can_invite | tojson }}' data-permissions='{{ permissions | tojson }}' data-invenio-search-config='{{ - search_app_communities_invitations_config(app_id="communities-invitations-search", + search_app_communities_invitations_config(app_id="InvenioCommunities.InvitationsSearch", endpoint=community["links"]["invitations"]) | tojson }}'> diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html index dfd2f55cb..ba0eeef08 100644 --- a/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html +++ b/invenio_communities/templates/semantic-ui/invenio_communities/details/members/members.html @@ -10,14 +10,14 @@ {% extends "invenio_communities/details/members/base.html" %} {% if permissions.can_members_manage %} - {% set bundle = webpack['invenio-communities-members-manager.js'] %} {% set search_endpoint = community["links"]["members"] %} + {% set app_id = "InvenioCommunities.ManagerSearch" %} {% elif permissions.can_members_search %} - {% set bundle = webpack['invenio-communities-members.js'] %} {% set search_endpoint = community["links"]["members"] %} + {% set app_id = "InvenioCommunities.MemberSearch" %} {% elif permissions.can_members_search_public %} - {% set bundle = webpack['invenio-communities-members-public.js'] %} {% set search_endpoint = community["links"]["public_members"] %} + {% set app_id = "InvenioCommunities.PublicSearch" %} {% endif %} @@ -38,7 +38,7 @@ {% block settings_body %}
+ data-invenio-search-config='{{ search_app_communities_requests_config(app_id="InvenioCommunities.RequestSearch", endpoint=community.links.requests) | tojson }}'>
{%- endblock requests_body %} {%- endblock page_body %} diff --git a/invenio_communities/templates/semantic-ui/invenio_communities/search.html b/invenio_communities/templates/semantic-ui/invenio_communities/search.html index 2414a6a31..2f8425979 100644 --- a/invenio_communities/templates/semantic-ui/invenio_communities/search.html +++ b/invenio_communities/templates/semantic-ui/invenio_communities/search.html @@ -23,6 +23,6 @@

{{_("Communities")}}

{%- endblock page_body %}