From 9967c36196213543cadcd5c80523944d1fe9eb94 Mon Sep 17 00:00:00 2001 From: alejandromumo Date: Wed, 23 Oct 2024 10:33:51 +0200 Subject: [PATCH 1/8] subcommunities: improve search page --- .../community/header/index.js | 1 + .../CommunitySelectionSearch.js | 253 ++++++++++++++++++ .../community/searchComponents/index.js | 1 + .../subcommunity/SubcommunityResults.js | 75 ++++++ .../invenio_communities/subcommunity/index.js | 0 .../subcommunity/search.js | 52 ++-- .../details/subcommunity/index.html | 6 +- 7 files changed, 362 insertions(+), 26 deletions(-) create mode 100644 invenio_communities/assets/semantic-ui/js/invenio_communities/community/searchComponents/CommunitySelectionSearch.js create mode 100644 invenio_communities/assets/semantic-ui/js/invenio_communities/subcommunity/SubcommunityResults.js create mode 100644 invenio_communities/assets/semantic-ui/js/invenio_communities/subcommunity/index.js diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/header/index.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/header/index.js index 6c80ba230..d4de58bb6 100644 --- a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/header/index.js +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/header/index.js @@ -25,6 +25,7 @@ if (organizationsContainer) { const domContainer = document.getElementById("request-membership-app"); if (domContainer) { + console.log(domContainer.dataset.community); const community = JSON.parse(domContainer.dataset.community); ReactDOM.render(, domContainer); } diff --git a/invenio_communities/assets/semantic-ui/js/invenio_communities/community/searchComponents/CommunitySelectionSearch.js b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/searchComponents/CommunitySelectionSearch.js new file mode 100644 index 000000000..d31cbbf4b --- /dev/null +++ b/invenio_communities/assets/semantic-ui/js/invenio_communities/community/searchComponents/CommunitySelectionSearch.js @@ -0,0 +1,253 @@ +// This file is part of Invenio-RDM-Records +// Copyright (C) 2020-2024 CERN. +// Copyright (C) 2020-2022 Northwestern University. +// +// Invenio-RDM-Records is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + +import { i18next } from "@translations/invenio_rdm_records/i18next"; +import React, { Component } from "react"; +import { OverridableContext } from "react-overridable"; +import { InvenioSearchApi, ReactSearchKit, SearchBar, buildUID } from "react-searchkit"; +import { Button, Grid, Icon, Menu } from "semantic-ui-react"; +import PropTypes from "prop-types"; +import { + SearchConfigurationContext, + SearchAppFacets, + SearchAppResultsPane, +} from "@js/invenio_search_ui/components"; +import { GridResponsiveSidebarColumn, InvenioPopup } from "react-invenio-forms"; + +export class CommunitySelectionSearch extends Component { + constructor(props) { + super(props); + const { + apiConfigs: { allCommunities }, + } = this.props; + + this.state = { + selectedConfig: allCommunities, + sidebarVisible: false, + }; + } + + prefixAppID(components, appID) { + // iterate components and prefix them with ".appID" + return Object.fromEntries( + Object.entries(components).map(([key, value]) => [`${appID}.${key}`, value]) + ); + } + + render() { + const { + selectedConfig: { + searchApi: selectedSearchApi, + appId: selectedAppId, + initialQueryState: selectedInitialQueryState, + toggleText, + }, + sidebarVisible, + } = this.state; + + const { + apiConfigs: { allCommunities, myCommunities }, + autofocus, + overriddenComponents, + config, + userAnonymous, + } = this.props; + + const searchApi = new InvenioSearchApi(selectedSearchApi); + console.log(selectedSearchApi); + + const validatedComponents = this.prefixAppID(overriddenComponents, selectedAppId); + + const layoutOptions = { + listView: true, + gridView: false, + }; + + const context = { + selectedAppId, + buildUID: (element) => buildUID(element, "", selectedAppId), + ...config, + }; + + return ( + + + + + + {/* Start burguer menu for mobile and tablet only */} + +