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
This commit is contained in:
parent
298ebee7dd
commit
1a0d1d6e84
|
@ -27,9 +27,10 @@ export default class DiscourseAiBotConversations extends Controller {
|
||||||
}
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
updateInputValue(event) {
|
updateInputValue(value) {
|
||||||
this._autoExpandTextarea();
|
this._autoExpandTextarea();
|
||||||
this.aiBotConversationsHiddenSubmit.inputValue = event.target.value;
|
this.aiBotConversationsHiddenSubmit.inputValue =
|
||||||
|
value.target?.value || value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
|
import { hash } from "@ember/helper";
|
||||||
import { on } from "@ember/modifier";
|
import { on } from "@ember/modifier";
|
||||||
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
|
import didInsert from "@ember/render-modifiers/modifiers/did-insert";
|
||||||
import RouteTemplate from "ember-route-template";
|
import RouteTemplate from "ember-route-template";
|
||||||
import ConditionalLoadingSpinner from "discourse/components/conditional-loading-spinner";
|
|
||||||
import DButton from "discourse/components/d-button";
|
import DButton from "discourse/components/d-button";
|
||||||
|
import PluginOutlet from "discourse/components/plugin-outlet";
|
||||||
import { i18n } from "discourse-i18n";
|
import { i18n } from "discourse-i18n";
|
||||||
import AiPersonaLlmSelector from "discourse/plugins/discourse-ai/discourse/components/ai-persona-llm-selector";
|
import AiPersonaLlmSelector from "discourse/plugins/discourse-ai/discourse/components/ai-persona-llm-selector";
|
||||||
|
|
||||||
|
@ -16,31 +17,36 @@ export default RouteTemplate(
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<div class="ai-bot-conversations__content-wrapper">
|
<div class="ai-bot-conversations__content-wrapper">
|
||||||
<ConditionalLoadingSpinner @condition={{@controller.loading}}>
|
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
|
||||||
<h1>{{i18n "discourse_ai.ai_bot.conversations.header"}}</h1>
|
<PluginOutlet
|
||||||
<div class="ai-bot-conversations__input-wrapper">
|
@name="ai-bot-conversations-above-input"
|
||||||
<textarea
|
@outletArgs={{hash
|
||||||
{{didInsert @controller.setTextArea}}
|
updateInput=@controller.updateInputValue
|
||||||
{{on "input" @controller.updateInputValue}}
|
submit=@controller.aiBotConversationsHiddenSubmit.submitToBot
|
||||||
{{on "keydown" @controller.handleKeyDown}}
|
}}
|
||||||
id="ai-bot-conversations-input"
|
/>
|
||||||
placeholder={{i18n
|
<div class="ai-bot-conversations__input-wrapper">
|
||||||
"discourse_ai.ai_bot.conversations.placeholder"
|
<textarea
|
||||||
}}
|
{{didInsert @controller.setTextArea}}
|
||||||
minlength="10"
|
{{on "input" @controller.updateInputValue}}
|
||||||
rows="1"
|
{{on "keydown" @controller.handleKeyDown}}
|
||||||
/>
|
id="ai-bot-conversations-input"
|
||||||
<DButton
|
placeholder={{i18n "discourse_ai.ai_bot.conversations.placeholder"}}
|
||||||
@action={{@controller.aiBotConversationsHiddenSubmit.submitToBot}}
|
minlength="10"
|
||||||
@icon="paper-plane"
|
disabled={{@controller.loading}}
|
||||||
@title="discourse_ai.ai_bot.conversations.header"
|
rows="1"
|
||||||
class="ai-bot-button btn-primary ai-conversation-submit"
|
/>
|
||||||
/>
|
<DButton
|
||||||
</div>
|
@action={{@controller.aiBotConversationsHiddenSubmit.submitToBot}}
|
||||||
<p class="ai-disclaimer">
|
@icon="paper-plane"
|
||||||
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
|
@isLoading={{@controller.loading}}
|
||||||
</p>
|
@title="discourse_ai.ai_bot.conversations.header"
|
||||||
</ConditionalLoadingSpinner>
|
class="ai-bot-button btn-primary ai-conversation-submit"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<p class="ai-disclaimer">
|
||||||
|
{{i18n "discourse_ai.ai_bot.conversations.disclaimer"}}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -217,9 +217,16 @@ body.has-ai-conversations-sidebar {
|
||||||
max-width: 46em;
|
max-width: 46em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-primary {
|
.ai-conversation-submit {
|
||||||
align-self: end;
|
align-self: end;
|
||||||
min-height: 2.5em;
|
min-height: 2.5em;
|
||||||
|
max-height: 2.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spinner {
|
||||||
|
margin: 0;
|
||||||
|
width: 2em;
|
||||||
|
height: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ai-bot-conversations-input {
|
#ai-bot-conversations-input {
|
||||||
|
@ -228,6 +235,7 @@ body.has-ai-conversations-sidebar {
|
||||||
resize: none;
|
resize: none;
|
||||||
border-radius: var(--d-button-border-radius);
|
border-radius: var(--d-button-border-radius);
|
||||||
max-height: 30vh;
|
max-height: 30vh;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
|
|
Loading…
Reference in New Issue