diff --git a/assets/scripts/collection.js b/assets/scripts/collection.js index 0acda75..b26b828 100644 --- a/assets/scripts/collection.js +++ b/assets/scripts/collection.js @@ -238,7 +238,23 @@ export const newCollection = (selector, type, setup) => { }); }; + const applyFilter = (filterStr) => { + const multiWhitespacesRgx = new RegExp(/\s+/g); + filterStr = filterStr || ""; + const cleanFilterStr = filterStr.trim().replace(multiWhitespacesRgx).toLowerCase(); + + collection.data.forEach((element) => { + const row = element.row; + const cleanName = row.name.trim().replace(multiWhitespacesRgx).toLowerCase(); + + element.visible = cleanName.includes(cleanFilterStr); + }); + + render(); + } + return { + applyFilter, setData, updateItem, deleteItem, diff --git a/assets/styles/components.css b/assets/styles/components.css index 62fe991..7c3dbe3 100644 --- a/assets/styles/components.css +++ b/assets/styles/components.css @@ -7,3 +7,4 @@ @import "./components/managementNav.css"; @import "./components/errorBox.css"; @import "./components/card.css"; +@import "./components/searchbar.css"; \ No newline at end of file diff --git a/assets/styles/components/searchbar.css b/assets/styles/components/searchbar.css new file mode 100644 index 0000000..a33e39a --- /dev/null +++ b/assets/styles/components/searchbar.css @@ -0,0 +1,15 @@ +.searchbar-wrapper { + +} + +.searchbar { + border: none; + text-decoration: none; + outline: none; +} + +.searchbar:hover, .searchbar:focus { + border: none; + text-decoration: none; + outline: none; + } \ No newline at end of file diff --git a/views/heightmaps.ejs b/views/heightmaps.ejs index f5d6f46..643854a 100644 --- a/views/heightmaps.ejs +++ b/views/heightmaps.ejs @@ -14,6 +14,10 @@