Characters list top panel touchup (#4282)
* Move search bar under buttons Closes #4275 * Remove horizontal rules from right menu * Add toggle for search form * Add container for extension rm buttons * Be square or be there * Adjust font sizes * Square enlargement program * Adjust margins * Remove margin from pagination outlet buttons * Adjust margin on tag controls * Collapse 1px margins * Update public/script.js Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Remove variable assignment --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -470,14 +470,6 @@
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
/*used to fix smallness of certain FontAwesome glyph which break button squareness*/
|
||||
/*currently used on: CharList Import*/
|
||||
|
||||
.faSmallFontSquareFix {
|
||||
font-size: calc(var(--mainFontSize) *1.25);
|
||||
width: calc(var(--mainFontSize) *1.95);
|
||||
}
|
||||
|
||||
.textarea_compact {
|
||||
font-size: calc(var(--mainFontSize) * 0.95);
|
||||
line-height: 1.2;
|
||||
|
||||
+1
-1
@@ -157,7 +157,7 @@
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
align-items: flex-start;
|
||||
margin: 5px;
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.rm_tag_filter .tag {
|
||||
|
||||
+14
-10
@@ -5522,7 +5522,6 @@
|
||||
<div id="HotSwapWrapper" class="alignitemscenter flex-container margin0auto wide100p">
|
||||
<div class="hotswap avatars_inline scroll-reset-container expander" data-i18n="[no_favs]Favorite characters to add them to HotSwaps" no_favs="Favorite characters to add them to HotSwaps">
|
||||
</div>
|
||||
<hr class="wide100p">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -5850,13 +5849,15 @@
|
||||
</div>
|
||||
<div name="Character List Panel" id="rm_characters_block" class="right_menu">
|
||||
<div id="charListFixedTop">
|
||||
<form id="form_character_search_form" action="javascript:void(null);">
|
||||
<div id="rm_button_create" title="Create New Character" data-i18n="[title]Create New Character" class="menu_button fa-solid fa-user-plus "></div>
|
||||
<div id="character_import_button" title="Import Character from File" data-i18n="[title]Import Character from File" class="menu_button fa-solid fa-file-import faSmallFontSquareFix"></div>
|
||||
<div id="external_import_button" title="Import content from external URL" data-i18n="[title]Import content from external URL" class="menu_button fa-solid fa-cloud-arrow-down faSmallFontSquareFix"></div>
|
||||
<div id="rm_button_group_chats" title="Create New Chat Group" data-i18n="[title]Create New Chat Group" class="menu_button fa-solid fa-users-gear "></div>
|
||||
<input id="character_search_bar" class="text_pole width100p" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." />
|
||||
<select id="character_sort_order" title="Characters sorting order" data-i18n="[title]Characters sorting order">
|
||||
<div id="rm_button_bar">
|
||||
<div id="rm_button_create" title="Create New Character" data-i18n="[title]Create New Character" class="menu_button fa-solid fa-user-plus"></div>
|
||||
<div id="character_import_button" title="Import Character from File" data-i18n="[title]Import Character from File" class="menu_button fa-solid fa-file-import"></div>
|
||||
<div id="external_import_button" title="Import content from external URL" data-i18n="[title]Import content from external URL" class="menu_button fa-solid fa-cloud-arrow-down"></div>
|
||||
<div id="rm_button_group_chats" title="Create New Chat Group" data-i18n="[title]Create New Chat Group" class="menu_button fa-solid fa-users-gear"></div>
|
||||
<div id="rm_buttons_container">
|
||||
<!-- Container for additional buttons added by extensions -->
|
||||
</div>
|
||||
<select id="character_sort_order" class="flex1 text_pole textarea_compact" title="Characters sorting order" data-i18n="[title]Characters sorting order">
|
||||
<option data-field="search" data-order="desc" data-i18n="Search" hidden>Search</option>
|
||||
<option data-field="name" data-order="asc" data-i18n="A-Z">A-Z</option>
|
||||
<option data-field="name" data-order="desc" data-i18n="Z-A">Z-A</option>
|
||||
@@ -5870,12 +5871,15 @@
|
||||
<option data-field="data_size" data-order="asc" data-i18n="Least tokens">Least tokens</option>
|
||||
<option data-field="name" data-order="random" data-i18n="Random">Random</option>
|
||||
</select>
|
||||
</form>
|
||||
<div id="rm_button_search" class="right_menu_button fa-fw fa-solid fa-search" title="Toggle search bar" data-i18n="[title]Toggle search bar"></div>
|
||||
</div>
|
||||
<div id="form_character_search_form">
|
||||
<input id="character_search_bar" class="text_pole textarea_compact width100p" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." />
|
||||
</div>
|
||||
<div class="rm_tag_controls">
|
||||
<div class="tags rm_tag_filter"></div>
|
||||
<div class="tags rm_tag_bogus_drilldown"></div>
|
||||
</div>
|
||||
<hr>
|
||||
</div>
|
||||
|
||||
<div id="rm_print_characters_pagination">
|
||||
|
||||
+33
-7
@@ -9367,6 +9367,38 @@ API Settings: ${JSON.stringify(getSettingsContents[getSettingsContents.main_api
|
||||
});
|
||||
}
|
||||
|
||||
function initCharacterSearch() {
|
||||
const debouncedCharacterSearch = debounce((searchQuery) => {
|
||||
entitiesFilter.setFilterData(FILTER_TYPES.SEARCH, searchQuery);
|
||||
});
|
||||
|
||||
const searchForm = $('#form_character_search_form');
|
||||
const searchInput = $('#character_search_bar');
|
||||
const searchButton = $('#rm_button_search');
|
||||
|
||||
const storageKey = 'characterSearchFormVisible';
|
||||
|
||||
searchInput.on('input', function () {
|
||||
const searchQuery = String($(this).val());
|
||||
debouncedCharacterSearch(searchQuery);
|
||||
});
|
||||
|
||||
searchButton.on('click', function () {
|
||||
const newVisibility = !searchForm.is(':visible');
|
||||
searchForm.toggle(newVisibility);
|
||||
searchButton.toggleClass('active', newVisibility);
|
||||
accountStorage.setItem(storageKey, String(newVisibility));
|
||||
if (newVisibility) {
|
||||
searchInput.trigger('focus');
|
||||
}
|
||||
});
|
||||
|
||||
eventSource.on(event_types.APP_READY, () => {
|
||||
const isVisible = accountStorage.getItem(storageKey) === 'true';
|
||||
searchForm.toggle(isVisible);
|
||||
searchButton.toggleClass('active', isVisible);
|
||||
});
|
||||
}
|
||||
|
||||
// MARK: DOM Handlers Start
|
||||
jQuery(async function () {
|
||||
@@ -9417,13 +9449,7 @@ jQuery(async function () {
|
||||
$(document).on('click', '.last_mes .swipe_right', swipe_right);
|
||||
$(document).on('click', '.last_mes .swipe_left', swipe_left);
|
||||
|
||||
const debouncedCharacterSearch = debounce((searchQuery) => {
|
||||
entitiesFilter.setFilterData(FILTER_TYPES.SEARCH, searchQuery);
|
||||
});
|
||||
$('#character_search_bar').on('input', function () {
|
||||
const searchQuery = String($(this).val());
|
||||
debouncedCharacterSearch(searchQuery);
|
||||
});
|
||||
initCharacterSearch();
|
||||
|
||||
$('#mes_impersonate').on('click', function () {
|
||||
$('#option_impersonate').trigger('click');
|
||||
|
||||
+35
-8
@@ -2643,7 +2643,7 @@ input[type="file"] {
|
||||
align-items: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 10px;
|
||||
padding: 0px 10px 0px 5px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#chartokenwarning.menu_button {
|
||||
@@ -2667,6 +2667,7 @@ input[type="file"] {
|
||||
transition: all var(--animation-duration-3x) ease-in-out;
|
||||
}
|
||||
|
||||
.right_menu_button.active,
|
||||
.right_menu_button:hover {
|
||||
filter: brightness(150%);
|
||||
}
|
||||
@@ -2771,6 +2772,11 @@ input[type="file"] {
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#rm_print_characters_pagination .menu_button {
|
||||
margin: 0;
|
||||
padding: 4px 5px;
|
||||
}
|
||||
|
||||
.bulk_select_checkbox {
|
||||
align-self: center;
|
||||
}
|
||||
@@ -2822,6 +2828,22 @@ input[type="file"] {
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
#rm_button_bar {
|
||||
display: flex;
|
||||
gap: 5px;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#rm_button_bar .menu_button {
|
||||
width: calc(var(--mainFontSize) * 1.8);
|
||||
aspect-ratio: 1;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#rm_buttons_container {
|
||||
display: contents;
|
||||
}
|
||||
|
||||
#floatingPrompt,
|
||||
#cfgConfig {
|
||||
overflow-y: auto;
|
||||
@@ -3060,15 +3082,17 @@ select option:not(:checked) {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
#charListFixedTop {
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#form_character_search_form {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: stretch;
|
||||
margin: 5px;
|
||||
column-gap: 5px;
|
||||
}
|
||||
|
||||
#form_character_search_form .menu_button,
|
||||
#GroupFavDelOkBack .menu_button {
|
||||
margin: 0;
|
||||
height: fit-content;
|
||||
@@ -3078,17 +3102,20 @@ select option:not(:checked) {
|
||||
}
|
||||
|
||||
#character_sort_order {
|
||||
margin: 0;
|
||||
flex: 1;
|
||||
border-radius: 5px;
|
||||
height: auto;
|
||||
margin: 0;
|
||||
padding: 4px 5px;
|
||||
}
|
||||
|
||||
#character_search_bar {
|
||||
margin: 0;
|
||||
flex: 1;
|
||||
/* padding-left: 0.75em; */
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#rm_button_search {
|
||||
align-self: center;
|
||||
font-size: 1.1em;
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
#persona_search_bar {
|
||||
|
||||
Reference in New Issue
Block a user