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

Commit 1ecb76a

Browse files
committed
DEV: Add ai-bot-conversations-above-input plugin outlet and update loading animation
1 parent b7b9179 commit 1ecb76a

File tree

3 files changed

+38
-22
lines changed

3 files changed

+38
-22
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: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
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";
45
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
56
import DButton from "discourse/components/d-button";
7+
import PluginOutlet from "discourse/components/plugin-outlet";
68
import { i18n } from "discourse-i18n";
79
import AiPersonaLlmSelector from "discourse/plugins/discourse-ai/discourse/components/ai-persona-llm-selector";
810

@@ -16,31 +18,36 @@ export default RouteTemplate(
1618
/>
1719

1820
<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-
/>
21+
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
22+
<PluginOutlet
23+
@name="ai-bot-conversations-above-input"
24+
@outletArgs={{hash
25+
updateInput=@controller.updateInputValue
26+
submit=@controller.aiBotConversationsHiddenSubmit.submitToBot
27+
}}
28+
/>
29+
<div class="ai-bot-conversations__input-wrapper">
30+
<textarea
31+
{{didInsert @controller.setTextArea}}
32+
{{on "input" @controller.updateInputValue}}
33+
{{on "keydown" @controller.handleKeyDown}}
34+
id="ai-bot-conversations-input"
35+
placeholder={{i18n "discourse_ai.ai_bot.conversations.placeholder"}}
36+
minlength="10"
37+
rows="1"
38+
/>
39+
<ConditionalLoadingSpinner @condition={{@controller.loading}}>
3340
<DButton
3441
@action={{@controller.aiBotConversationsHiddenSubmit.submitToBot}}
3542
@icon="paper-plane"
3643
@title="discourse_ai.ai_bot.conversations.header"
3744
class="ai-bot-button btn-primary ai-conversation-submit"
3845
/>
39-
</div>
40-
<p class="ai-disclaimer">
41-
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
42-
</p>
43-
</ConditionalLoadingSpinner>
46+
</ConditionalLoadingSpinner>
47+
</div>
48+
<p class="ai-disclaimer">
49+
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
50+
</p>
4451
</div>
4552
</div>
4653
</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)