La recherche démarre à partir de 2 caractères et distingue les objets de base des objets persos.
+
La recherche démarre à partir de 2 caractères, distingue les objets de base des objets persos, et charge la suite au scroll pour accéder à tous les résultats sans agrandir le panneau.
@@ -1588,6 +1607,7 @@ $page_access_widget = auth_render_page_access_widget('scmanutention.php', 'Manut
function initPicker(root) {
var endpoint = root.getAttribute('data-endpoint') || 'scmanutention.php?ajax=item_suggestions';
var minQuery = parseInt(root.getAttribute('data-min-query') || '2', 10);
+ var pageSize = parseInt(root.getAttribute('data-page-size') || '25', 10);
var input = root.querySelector('[data-picker-input]');
var dropdown = root.querySelector('[data-picker-dropdown]');
var sourceInput = root.querySelector('[data-picker-source]');
@@ -1602,6 +1622,11 @@ $page_access_widget = auth_render_page_access_widget('scmanutention.php', 'Manut
var requestTimer = null;
var requestToken = 0;
var selectedItem = null;
+ var loadedItems = [];
+ var currentQuery = '';
+ var nextOffset = 0;
+ var hasMore = false;
+ var isFetchingMore = false;
if (!input || !dropdown || !sourceInput || !scobjsInput || !scitemcustomInput || !selection || !nameNode || !metaNode || !imageNode) {
return;
@@ -1618,6 +1643,11 @@ $page_access_widget = auth_render_page_access_widget('scmanutention.php', 'Manut
function hideDropdown() {
dropdown.innerHTML = '';
dropdown.classList.add('hidden');
+ loadedItems = [];
+ currentQuery = '';
+ nextOffset = 0;
+ hasMore = false;
+ isFetchingMore = false;
}
function showDropdown() {
@@ -1681,76 +1711,105 @@ $page_access_widget = auth_render_page_access_widget('scmanutention.php', 'Manut
}
}
- function renderItems(items, query) {
- if (!Array.isArray(items) || items.length === 0) {
+ function buildOptionHtml(item, index) {
+ var meta = [];
+ if (item.type) {
+ meta.push(escapeHtml(item.type));
+ }
+ if (item.subtype) {
+ meta.push(escapeHtml(item.subtype));
+ }
+ if (item.sourceLabel) {
+ meta.push(escapeHtml(item.sourceLabel));
+ }
+
+ var statsPreview = Array.isArray(item.statsPreview) ? item.statsPreview : [];
+ var statsHtml = '';
+ if ((item.source || '') === 'custom') {
+ if (statsPreview.length > 0) {
+ statsHtml = '