Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 1a0d1d6

Browse files
authored
DEV: Add ai-bot-conversations-above-input plugin outlet and update loading animation (#1284)
Update loading animation https://github.com/user-attachments/assets/f3bb6ca7-5d84-4231-8ea1-fa49fa402eae - Add plugin outlet - update `updateInputValue` so that it can be used by plugins to update the input value
1 parent 298ebee commit 1a0d1d6

File tree

3 files changed

+44
-29
lines changed

3 files changed

+44
-29
lines changed

assets/javascripts/discourse/controllers/discourse-ai-bot-conversations.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ export default class DiscourseAiBotConversations extends Controller {
2727
}
2828

2929
@action
30-
updateInputValue(event) {
30+
updateInputValue(value) {
3131
this._autoExpandTextarea();
32-
this.aiBotConversationsHiddenSubmit.inputValue = event.target.value;
32+
this.aiBotConversationsHiddenSubmit.inputValue =
33+
value.target?.value || value;
3334
}
3435

3536
@action

assets/javascripts/discourse/templates/discourse-ai-bot-conversations.gjs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1+
import { hash } from "@ember/helper";
12
import { on } from "@ember/modifier";
23
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
34
import RouteTemplate from "ember-route-template";
4-
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
55
import DButton from "discourse/components/d-button";
6+
import PluginOutlet from "discourse/components/plugin-outlet";
67
import { i18n } from "discourse-i18n";
78
import AiPersonaLlmSelector from "discourse/plugins/discourse-ai/discourse/components/ai-persona-llm-selector";
89

@@ -16,31 +17,36 @@ export default RouteTemplate(
1617
/>
1718

1819
<div class="ai-bot-conversations__content-wrapper">
19-
<ConditionalLoadingSpinner @condition={{@controller.loading}}>
20-
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
21-
<div class="ai-bot-conversations__input-wrapper">
22-
<textarea
23-
{{didInsert @controller.setTextArea}}
24-
{{on "input" @controller.updateInputValue}}
25-
{{on "keydown" @controller.handleKeyDown}}
26-
id="ai-bot-conversations-input"
27-
placeholder={{i18n
28-
"discourse_ai.ai_bot.conversations.placeholder"
29-
}}
30-
minlength="10"
31-
rows="1"
32-
/>
33-
<DButton
34-
@action={{@controller.aiBotConversationsHiddenSubmit.submitToBot}}
35-
@icon="paper-plane"
36-
@title="discourse_ai.ai_bot.conversations.header"
37-
class="ai-bot-button btn-primary ai-conversation-submit"
38-
/>
39-
</div>
40-
<p class="ai-disclaimer">
41-
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
42-
</p>
43-
</ConditionalLoadingSpinner>
20+
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
21+
<PluginOutlet
22+
@name="ai-bot-conversations-above-input"
23+
@outletArgs={{hash
24+
updateInput=@controller.updateInputValue
25+
submit=@controller.aiBotConversationsHiddenSubmit.submitToBot
26+
}}
27+
/>
28+
<div class="ai-bot-conversations__input-wrapper">
29+
<textarea
30+
{{didInsert @controller.setTextArea}}
31+
{{on "input" @controller.updateInputValue}}
32+
{{on "keydown" @controller.handleKeyDown}}
33+
id="ai-bot-conversations-input"
34+
placeholder={{i18n "discourse_ai.ai_bot.conversations.placeholder"}}
35+
minlength="10"
36+
disabled={{@controller.loading}}
37+
rows="1"
38+
/>
39+
<DButton
40+
@action={{@controller.aiBotConversationsHiddenSubmit.submitToBot}}
41+
@icon="paper-plane"
42+
@isLoading={{@controller.loading}}
43+
@title="discourse_ai.ai_bot.conversations.header"
44+
class="ai-bot-button btn-primary ai-conversation-submit"
45+
/>
46+
</div>
47+
<p class="ai-disclaimer">
48+
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
49+
</p>
4450
</div>
4551
</div>
4652
</template>

assets/stylesheets/modules/ai-bot-conversations/common.scss

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,16 @@ body.has-ai-conversations-sidebar {
217217
max-width: 46em;
218218
}
219219

220-
.btn-primary {
220+
.ai-conversation-submit {
221221
align-self: end;
222222
min-height: 2.5em;
223+
max-height: 2.5em;
224+
}
225+
226+
.spinner {
227+
margin: 0;
228+
width: 2em;
229+
height: 2em;
223230
}
224231

225232
#ai-bot-conversations-input {
@@ -228,6 +235,7 @@ body.has-ai-conversations-sidebar {
228235
resize: none;
229236
border-radius: var(--d-button-border-radius);
230237
max-height: 30vh;
238+
overflow: hidden;
231239

232240
&:focus {
233241
outline: none;

0 commit comments

Comments
 (0)