UX: put full page search discoveries in sidebar (#1289)

This commit is contained in:
Kris 2025-04-30 12:01:21 -04:00 committed by GitHub
parent 7dc3c30fa4
commit 81a664b3da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 186 additions and 20 deletions

View File

@ -213,8 +213,11 @@ export default class AiFullPageSearch extends Component {
}
<template>
<span {{didUpdate this.sortChanged @sortOrder}}></span>
<div class="semantic-search__container search-results" role="region">
<div
{{didUpdate this.sortChanged @sortOrder}}
class="semantic-search__container search-results"
role="region"
>
<div class="semantic-search__results">
<div
class={{concatClass "semantic-search__searching" this.searchClass}}

View File

@ -1,5 +1,6 @@
import Component from "@glimmer/component";
import { service } from "@ember/service";
import bodyClass from "discourse/helpers/body-class";
import icon from "discourse/helpers/d-icon";
import { i18n } from "discourse-i18n";
import AiSearchDiscoveries from "../../components/ai-search-discoveries";
@ -15,23 +16,39 @@ export default class AiFullPageDiscobotDiscoveries extends Component {
}
@service discobotDiscoveries;
@service site;
get previewLength() {
// todo: replace with js breakpoint API
// https://github.com/discourse/discourse/pull/32060
if (this.site.mobileView || this.site.narrowDesktopView) {
return 50;
} else {
return 10000;
}
}
<template>
{{#if this.discobotDiscoveries.showDiscoveryTitle}}
<h3
class="ai-search-discoveries__discoveries-title full-page-discoveries"
>
<span>
{{icon "discobot"}}
{{i18n "discourse_ai.discobot_discoveries.main_title"}}
</span>
{{bodyClass "has-discoveries"}}
<div class="ai-search-discoveries__discoveries-wrapper">
{{#if this.discobotDiscoveries.showDiscoveryTitle}}
<h3
class="ai-search-discoveries__discoveries-title full-page-discoveries"
>
<span>
{{icon "discobot"}}
{{i18n "discourse_ai.discobot_discoveries.main_title"}}
</span>
<AiSearchDiscoveriesTooltip />
</h3>
{{/if}}
<AiSearchDiscoveriesTooltip />
</h3>
{{/if}}
<div class="full-page-discoveries">
<AiSearchDiscoveries @searchTerm={{@outletArgs.search}} />
<div class="full-page-discoveries">
<AiSearchDiscoveries
@discoveryPreviewLength={{this.previewLength}}
@searchTerm={{@outletArgs.search}}
/>
</div>
</div>
</template>
}

View File

@ -1,3 +1,5 @@
@use "lib/viewport";
@keyframes fade-in {
from {
opacity: 0;
@ -99,7 +101,11 @@
}
.full-page-discoveries {
padding: 1em 10%;
padding: 0 1rem;
@include viewport.until(md) {
padding: 0.25rem 1rem 0 1rem;
}
}
.d-icon-discobot {
@ -167,3 +173,113 @@
}
}
}
.search-page .ai-search-discoveries__discoveries-wrapper {
padding-bottom: 0.5rem;
}
.ai-search-discoveries__discoveries-title.full-page-discoveries {
border: none;
padding-top: 1rem;
}
@mixin discoveries-sidebar {
.full-page-discoveries {
padding: 1em 10%;
}
&.search-page.has-discoveries {
.semantic-search__container {
background: transparent;
margin: 0;
}
.semantic-search__container .semantic-search__results {
.semantic-search__searching {
margin-left: 0;
}
.semantic-search__searching-text {
margin-left: 1.25em;
}
}
.search-container .search-header {
padding: 1em 2em;
}
.semantic-search__container .search-results,
.search-container .search-advanced .search-results,
.search-container .search-advanced .search-info {
padding: 1em 2em;
}
.search-results .fps-result {
padding: 0;
margin-bottom: 2.5em;
}
.search-advanced {
display: grid;
grid-template-columns: 70% 30%;
grid-auto-rows: auto;
> * {
grid-column: 1;
align-self: start;
}
}
.search-info {
grid-row: 1;
}
.ai-search-discoveries__discoveries-title {
border: none;
margin-bottom: 0;
padding-bottom: 0;
}
.ai-search-discoveries__discoveries-wrapper {
grid-column: 2 / -1;
grid-row: 1 / 5;
border-left: 1px solid var(--primary-low);
align-self: stretch;
.cooked {
color: var(--primary-high);
}
}
}
}
body:not(.has-sidebar-page) {
@include viewport.from(md) {
@include discoveries-sidebar;
}
}
body.has-sidebar-page {
@include viewport.from(lg) {
@include discoveries-sidebar;
}
@include viewport.between(md, lg) {
.ai-search-discoveries__discoveries-wrapper {
padding-bottom: 0;
}
.ai-search-discoveries__discoveries-title {
padding-top: 1rem;
}
.search-container .search-advanced .search-info,
.semantic-search__container.search-results {
padding-inline: 10%;
}
.full-page-discoveries {
padding-inline: 10%;
}
}
}

View File

@ -1,6 +1,19 @@
@use "lib/viewport";
.semantic-search__container {
background: var(--primary-very-low);
margin: 1rem 0 1rem 0;
margin: 1rem 0 0 0;
.has-sidebar-page & {
@include viewport.until(lg) {
border-top: 1px solid var(--primary-low);
}
}
body:not(.has-sidebar-page) & {
@include viewport.until(md) {
border-top: 1px solid var(--primary-low);
}
}
.semantic-search__results {
display: flex;
@ -15,7 +28,6 @@
&__searching {
display: flex;
align-items: center;
margin-left: 5px;
&.in-progress,
&.unavailable {
@ -23,6 +35,11 @@
color: var(--primary-medium);
}
}
svg {
font-size: var(--font-down-1);
color: var(--primary-high);
}
}
&__searching-text {
@ -72,3 +89,16 @@
display: none;
}
}
@include viewport.until(md) {
.search-container .search-advanced .semantic-search__container {
+ .search-info {
padding-inline: 1rem;
}
&.search-results {
margin-bottom: 0;
padding-inline: 1rem;
}
}
}