Skip to content

Commit 81a664b

Browse files
authored
UX: put full page search discoveries in sidebar (#1289)
1 parent 7dc3c30 commit 81a664b

File tree

4 files changed

+186
-20
lines changed

4 files changed

+186
-20
lines changed

assets/javascripts/discourse/components/ai-full-page-search.gjs

+5-2
Original file line numberDiff line numberDiff line change
@@ -213,8 +213,11 @@ export default class AiFullPageSearch extends Component {
213213
}
214214

215215
<template>
216-
<span {{didUpdate this.sortChanged @sortOrder}}></span>
217-
<div class="semantic-search__container search-results" role="region">
216+
<div
217+
{{didUpdate this.sortChanged @sortOrder}}
218+
class="semantic-search__container search-results"
219+
role="region"
220+
>
218221
<div class="semantic-search__results">
219222
<div
220223
class={{concatClass "semantic-search__searching" this.searchClass}}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Component from "@glimmer/component";
22
import { service } from "@ember/service";
3+
import bodyClass from "discourse/helpers/body-class";
34
import icon from "discourse/helpers/d-icon";
45
import { i18n } from "discourse-i18n";
56
import AiSearchDiscoveries from "../../components/ai-search-discoveries";
@@ -15,23 +16,39 @@ export default class AiFullPageDiscobotDiscoveries extends Component {
1516
}
1617

1718
@service discobotDiscoveries;
19+
@service site;
1820

19-
<template>
20-
{{#if this.discobotDiscoveries.showDiscoveryTitle}}
21-
<h3
22-
class="ai-search-discoveries__discoveries-title full-page-discoveries"
23-
>
24-
<span>
25-
{{icon "discobot"}}
26-
{{i18n "discourse_ai.discobot_discoveries.main_title"}}
27-
</span>
21+
get previewLength() {
22+
// todo: replace with js breakpoint API
23+
// https://github.com/discourse/discourse/pull/32060
24+
if (this.site.mobileView || this.site.narrowDesktopView) {
25+
return 50;
26+
} else {
27+
return 10000;
28+
}
29+
}
2830

29-
<AiSearchDiscoveriesTooltip />
30-
</h3>
31-
{{/if}}
31+
<template>
32+
{{bodyClass "has-discoveries"}}
33+
<div class="ai-search-discoveries__discoveries-wrapper">
34+
{{#if this.discobotDiscoveries.showDiscoveryTitle}}
35+
<h3
36+
class="ai-search-discoveries__discoveries-title full-page-discoveries"
37+
>
38+
<span>
39+
{{icon "discobot"}}
40+
{{i18n "discourse_ai.discobot_discoveries.main_title"}}
41+
</span>
42+
<AiSearchDiscoveriesTooltip />
43+
</h3>
44+
{{/if}}
3245

33-
<div class="full-page-discoveries">
34-
<AiSearchDiscoveries @searchTerm={{@outletArgs.search}} />
46+
<div class="full-page-discoveries">
47+
<AiSearchDiscoveries
48+
@discoveryPreviewLength={{this.previewLength}}
49+
@searchTerm={{@outletArgs.search}}
50+
/>
51+
</div>
3552
</div>
3653
</template>
3754
}

assets/stylesheets/modules/ai-bot/common/ai-discobot-discoveries.scss

+117-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@use "lib/viewport";
2+
13
@keyframes fade-in {
24
from {
35
opacity: 0;
@@ -99,7 +101,11 @@
99101
}
100102

101103
.full-page-discoveries {
102-
padding: 1em 10%;
104+
padding: 0 1rem;
105+
106+
@include viewport.until(md) {
107+
padding: 0.25rem 1rem 0 1rem;
108+
}
103109
}
104110

105111
.d-icon-discobot {
@@ -167,3 +173,113 @@
167173
}
168174
}
169175
}
176+
177+
.search-page .ai-search-discoveries__discoveries-wrapper {
178+
padding-bottom: 0.5rem;
179+
}
180+
181+
.ai-search-discoveries__discoveries-title.full-page-discoveries {
182+
border: none;
183+
padding-top: 1rem;
184+
}
185+
186+
@mixin discoveries-sidebar {
187+
.full-page-discoveries {
188+
padding: 1em 10%;
189+
}
190+
191+
&.search-page.has-discoveries {
192+
.semantic-search__container {
193+
background: transparent;
194+
margin: 0;
195+
}
196+
197+
.semantic-search__container .semantic-search__results {
198+
.semantic-search__searching {
199+
margin-left: 0;
200+
}
201+
202+
.semantic-search__searching-text {
203+
margin-left: 1.25em;
204+
}
205+
}
206+
207+
.search-container .search-header {
208+
padding: 1em 2em;
209+
}
210+
211+
.semantic-search__container .search-results,
212+
.search-container .search-advanced .search-results,
213+
.search-container .search-advanced .search-info {
214+
padding: 1em 2em;
215+
}
216+
217+
.search-results .fps-result {
218+
padding: 0;
219+
margin-bottom: 2.5em;
220+
}
221+
222+
.search-advanced {
223+
display: grid;
224+
grid-template-columns: 70% 30%;
225+
grid-auto-rows: auto;
226+
227+
> * {
228+
grid-column: 1;
229+
align-self: start;
230+
}
231+
}
232+
233+
.search-info {
234+
grid-row: 1;
235+
}
236+
237+
.ai-search-discoveries__discoveries-title {
238+
border: none;
239+
margin-bottom: 0;
240+
padding-bottom: 0;
241+
}
242+
243+
.ai-search-discoveries__discoveries-wrapper {
244+
grid-column: 2 / -1;
245+
grid-row: 1 / 5;
246+
border-left: 1px solid var(--primary-low);
247+
align-self: stretch;
248+
249+
.cooked {
250+
color: var(--primary-high);
251+
}
252+
}
253+
}
254+
}
255+
256+
body:not(.has-sidebar-page) {
257+
@include viewport.from(md) {
258+
@include discoveries-sidebar;
259+
}
260+
}
261+
262+
body.has-sidebar-page {
263+
@include viewport.from(lg) {
264+
@include discoveries-sidebar;
265+
}
266+
267+
@include viewport.between(md, lg) {
268+
.ai-search-discoveries__discoveries-wrapper {
269+
padding-bottom: 0;
270+
}
271+
272+
.ai-search-discoveries__discoveries-title {
273+
padding-top: 1rem;
274+
}
275+
276+
.search-container .search-advanced .search-info,
277+
.semantic-search__container.search-results {
278+
padding-inline: 10%;
279+
}
280+
281+
.full-page-discoveries {
282+
padding-inline: 10%;
283+
}
284+
}
285+
}

assets/stylesheets/modules/embeddings/common/semantic-search.scss

+33-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,19 @@
1+
@use "lib/viewport";
2+
13
.semantic-search__container {
2-
background: var(--primary-very-low);
3-
margin: 1rem 0 1rem 0;
4+
margin: 1rem 0 0 0;
5+
6+
.has-sidebar-page & {
7+
@include viewport.until(lg) {
8+
border-top: 1px solid var(--primary-low);
9+
}
10+
}
11+
12+
body:not(.has-sidebar-page) & {
13+
@include viewport.until(md) {
14+
border-top: 1px solid var(--primary-low);
15+
}
16+
}
417

518
.semantic-search__results {
619
display: flex;
@@ -15,14 +28,18 @@
1528
&__searching {
1629
display: flex;
1730
align-items: center;
18-
margin-left: 5px;
1931

2032
&.in-progress,
2133
&.unavailable {
2234
.semantic-search__searching-text {
2335
color: var(--primary-medium);
2436
}
2537
}
38+
39+
svg {
40+
font-size: var(--font-down-1);
41+
color: var(--primary-high);
42+
}
2643
}
2744

2845
&__searching-text {
@@ -72,3 +89,16 @@
7289
display: none;
7390
}
7491
}
92+
93+
@include viewport.until(md) {
94+
.search-container .search-advanced .semantic-search__container {
95+
+ .search-info {
96+
padding-inline: 1rem;
97+
}
98+
99+
&.search-results {
100+
margin-bottom: 0;
101+
padding-inline: 1rem;
102+
}
103+
}
104+
}

0 commit comments

Comments
 (0)