Schritte zur Umsetzung
1. Dateidownload
Das Script kannst du direkt von der Website herunterladen: tom-select.js.org
Du hast dabei die Wahl zwischen einem Komplettpaket inkl. aller Plugins oder der Basis-Variante. Die Basis-Variante ist für dieses Beispiel ausreichend.
2. Frontend-Modul anlegen und einbinden
Für unsere Suche legen wir ein Frontend-Modul von Typ Quick-Navigation an und binden es auf der Seite ein, auf der die Mini-Suche zu sehen sein soll. Als Referenzseite wählst du die entsprechende Oberseite aus, deren Unterseiten in der Suche aufgeführt werden sollen.
3. SCSS ins Projekt kopieren
Im folgenden Abschnitt findest du eine SCSS-Basisdatei, die ich in der Demo verwendet habe, um das Select-Feld auszublenden und stattdessen die Tom-Select Komponente zu gestalten:
// _tom-select.scss
//
// COMPONENTS/TOM-SELECT
// --------------------------------------------------
.nav--search {
max-width: 20rem;
&:has(.ts-wrapper) {
.widget-submit {
display: none;
}
}
.ts-hidden-accessible {
@include invisible;
}
.ts-wrapper {
position: relative;
&.has-items {
input {
display: none;
}
}
}
.ts-control {
border-radius: var(--base-border-radius);
border: var(--base-border);
overflow: hidden;
width: 100%;
background-color: var(--color-white);
padding: var(--base-spacing-unit-sm) var(--base-spacing-unit);
input {
width: 100%;
border: none;
background-color: transparent;
padding: 0;
&:focus {
outline: none;
}
}
.item {
white-space: nowrap;
padding: 0;
background-color: var(--color-white);
position: relative;
}
}
.ts-dropdown {
border: var(--base-border);
border-top: none;
background: var(--color-white);
max-height: calc(7rem * var(--base-line-height));
overflow-y: auto;
padding: 0 0 0.5rem;
border-radius: 0 0 var(--base-border-radius) var(--base-border-radius);
position: absolute;
z-index: 1001;
width: 100%;
.dropdown-header {
position: sticky;
top: 0;
background: var(--color-white);
color: var(--accent-color-dark);
padding: 0.5rem 1rem;
.dropdown-header-close {
display: none;
}
}
.no-results {
padding: 0.5rem 1rem 0;
}
.option {
cursor: pointer;
padding: 0.25rem 1rem;
}
.active {
background: var(--color-tint);
}
}
.dropdown-active .ts-control {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
}
4. Template anlegen und aktivieren
Im letzten Schritt legst du ein Template an, in dem du das heruntergeladene Tom Select Script lädst und über Parameter konfigurierst.
<?php
// Template: js_tom-select.html5
// hier den Pfad zum heruntergerladenen tom select script angeben
?>
<script src="/files/theme/js/_tom-select.js"></script>
<script>
document.addEventListener('DOMContentLoaded', function () {
let tomselect = document.querySelector('.nav--search');
if (tomselect) {
let tomSelectInstance = new TomSelect(
tomselect.querySelector('select.select'),
{
// Parameter
searchField: ['text', 'value'], //durchsucht Label und den Wert der Select-Option
placeholder: "Was suchen Sie?",
// Ausgabe für no results found anpassen
render: {
no_results: (data, escape) => {
return `<div class="no-results">Keine Ergebnisse gefunden.</div>`
},
},
// umlaute nicht verarbeiten
diacritics: false,
}
);
// automatischer Aufruf der Seite, wenn eine Auswahl getroffen wird
tomselect
.querySelector('.select')
.addEventListener('change', function () {
this.closest('form').submit();
});
}
});
</script>
Außerdem musst du das Template über das Seitenlayout aktivieren.
Wenn du nun die Seite neu lädst und alles korrekt eingestellt hast, dann sollte das Select-Feld der Quick-Navigation verschwinden und stattdessen Das gestaltete Suchfeld von Tom Select JS zu sehen sein.
Hast du Fragen oder Anmerkungen zur Verwendung von Tom Select JS? Schreib uns gerne eine Nachricht.