Preserve selected prompt index on render
This commit is contained in:
parent
c46c6f6c37
commit
0678777460
|
@ -1303,6 +1303,11 @@ class PromptManager {
|
||||||
* Empties, then re-assembles the container containing the prompt list.
|
* Empties, then re-assembles the container containing the prompt list.
|
||||||
*/
|
*/
|
||||||
renderPromptManager() {
|
renderPromptManager() {
|
||||||
|
let selectedPromptIndex = 0;
|
||||||
|
const existingAppendSelect = document.getElementById(`${this.configuration.prefix}prompt_manager_footer_append_prompt`);
|
||||||
|
if (existingAppendSelect instanceof HTMLSelectElement) {
|
||||||
|
selectedPromptIndex = existingAppendSelect.selectedIndex;
|
||||||
|
}
|
||||||
const promptManagerDiv = this.containerElement;
|
const promptManagerDiv = this.containerElement;
|
||||||
promptManagerDiv.innerHTML = '';
|
promptManagerDiv.innerHTML = '';
|
||||||
|
|
||||||
|
@ -1332,13 +1337,21 @@ class PromptManager {
|
||||||
if (null !== this.activeCharacter) {
|
if (null !== this.activeCharacter) {
|
||||||
const prompts = [...this.serviceSettings.prompts]
|
const prompts = [...this.serviceSettings.prompts]
|
||||||
.filter(prompt => prompt && !prompt?.system_prompt)
|
.filter(prompt => prompt && !prompt?.system_prompt)
|
||||||
.sort((promptA, promptB) => promptA.name.localeCompare(promptB.name))
|
.sort((promptA, promptB) => promptA.name.localeCompare(promptB.name));
|
||||||
.reduce((acc, prompt) => acc + `<option value="${prompt.identifier}">${escapeHtml(prompt.name)}</option>`, '');
|
const promptsHtml = prompts.reduce((acc, prompt) => acc + `<option value="${prompt.identifier}">${escapeHtml(prompt.name)}</option>`, '');
|
||||||
|
|
||||||
|
if (selectedPromptIndex > 0) {
|
||||||
|
selectedPromptIndex = Math.min(selectedPromptIndex, prompts.length - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selectedPromptIndex === -1 && prompts.length) {
|
||||||
|
selectedPromptIndex = 0;
|
||||||
|
}
|
||||||
|
|
||||||
const footerHtml = `
|
const footerHtml = `
|
||||||
<div class="${this.configuration.prefix}prompt_manager_footer">
|
<div class="${this.configuration.prefix}prompt_manager_footer">
|
||||||
<select id="${this.configuration.prefix}prompt_manager_footer_append_prompt" class="text_pole" name="append-prompt">
|
<select id="${this.configuration.prefix}prompt_manager_footer_append_prompt" class="text_pole" name="append-prompt">
|
||||||
${prompts}
|
${promptsHtml}
|
||||||
</select>
|
</select>
|
||||||
<a class="menu_button fa-chain fa-solid" title="Insert prompt" data-i18n="[title]Insert prompt"></a>
|
<a class="menu_button fa-chain fa-solid" title="Insert prompt" data-i18n="[title]Insert prompt"></a>
|
||||||
<a class="caution menu_button fa-x fa-solid" title="Delete prompt" data-i18n="[title]Delete prompt"></a>
|
<a class="caution menu_button fa-x fa-solid" title="Delete prompt" data-i18n="[title]Delete prompt"></a>
|
||||||
|
@ -1357,6 +1370,7 @@ class PromptManager {
|
||||||
footerDiv.querySelector('.menu_button:nth-child(2)').addEventListener('click', this.handleAppendPrompt);
|
footerDiv.querySelector('.menu_button:nth-child(2)').addEventListener('click', this.handleAppendPrompt);
|
||||||
footerDiv.querySelector('.caution').addEventListener('click', this.handleDeletePrompt);
|
footerDiv.querySelector('.caution').addEventListener('click', this.handleDeletePrompt);
|
||||||
footerDiv.querySelector('.menu_button:last-child').addEventListener('click', this.handleNewPrompt);
|
footerDiv.querySelector('.menu_button:last-child').addEventListener('click', this.handleNewPrompt);
|
||||||
|
footerDiv.querySelector('select').selectedIndex = selectedPromptIndex;
|
||||||
|
|
||||||
// Add prompt export dialogue and options
|
// Add prompt export dialogue and options
|
||||||
const exportForCharacter = `
|
const exportForCharacter = `
|
||||||
|
|
Loading…
Reference in New Issue