From c13bc0f7ceb1345656b499e762d2c6d6e7628f5e Mon Sep 17 00:00:00 2001 From: RubenPX Date: Sun, 22 May 2022 18:20:04 +0200 Subject: [PATCH] fix dropdown not works when try to search DOM element --- ereuse_devicehub/static/js/main.js | 10 ++++-- .../static/js/main_inventory.build.js | 31 ++++++++++++++++++- 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/ereuse_devicehub/static/js/main.js b/ereuse_devicehub/static/js/main.js index 996d8b23..bc869519 100644 --- a/ereuse_devicehub/static/js/main.js +++ b/ereuse_devicehub/static/js/main.js @@ -218,9 +218,13 @@ /** * Avoid hide dropdown when user clicked inside */ - document.getElementById("dropDownLotsSelector").addEventListener("click", event => { - event.stopPropagation(); - }) + const dropdownLotSelector = document.getElementById("dropDownLotsSelector") + if (dropdownLotSelector != null) { // If exists selector it will set click event + dropdownLotSelector.addEventListener("click", event => { + event.stopPropagation(); + }) + } + /** * Search form functionality diff --git a/ereuse_devicehub/static/js/main_inventory.build.js b/ereuse_devicehub/static/js/main_inventory.build.js index 48ab00a7..68ed50a7 100644 --- a/ereuse_devicehub/static/js/main_inventory.build.js +++ b/ereuse_devicehub/static/js/main_inventory.build.js @@ -1,5 +1,7 @@ "use strict"; +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) { _classCheckPrivateStaticAccess(receiver, classConstructor); _classCheckPrivateStaticFieldDescriptor(descriptor, "get"); return _classApplyDescriptorGet(receiver, descriptor); } function _classCheckPrivateStaticFieldDescriptor(descriptor, action) { if (descriptor === undefined) { throw new TypeError("attempted to " + action + " private static field before its declaration"); } } @@ -328,11 +330,38 @@ function export_file(type_file) { $("#exportAlertModal").click(); } } + +class lotsSearcher { + /** + * do search when lot change in the search input + */ + static doSearch(inputSearch) { + const lotsList = document.getElementById("LotsSelector").children; + + for (let i = 0; i < lotsList.length; i++) { + const lot = lotsList[i].querySelector("label"); + + if (lot.innerText.toLowerCase().includes(inputSearch.toLowerCase())) { + lot.parentElement.style.display = ""; + } else { + lot.parentElement.style.display = "none"; + } + } + } + +} + +_defineProperty(lotsSearcher, "lots", []); + +document.addEventListener("DOMContentLoaded", () => { + document.getElementById("lots-search").addEventListener("input", e => { + lotsSearcher.doSearch(e.target.value); + }); +}); /** * Reactive lots button */ - async function processSelectedDevices() { class Actions { constructor() {