Zum Inhalt
r/ rittek uiDOCS

RITTEK BLOCKS / Datenverwaltung

Datenverwaltung. Direkt einsetzbar.

Eigenständige Bausteine für HTML und PHP. Jedes Beispiel hat seinen vollständigen Quellcode direkt darunter. Farben, Hell/Dunkel, Dichte und Schrift folgen deiner Docs-Ansicht.

Interaktionen bleiben lokale Demos. Formulare senden keine Nachrichten; es gibt keine Zahlung oder Server-Synchronisation. Beim mehrfachen Einfügen IDs eindeutig vergeben und den jeweiligen Initialisierer einmal nach dem Markup aufrufen.

Datenverwaltung

Lokale Bestandsverwaltung

Anlegen, Bearbeiten, Details und bestätigtes Löschen mit Undo. Native Dialoge, Suche und aufsteigende Sortierung.

Vollständiges HTML herunterladen ↧

Operations / Bestand

Alles an seinem Platz.

Sechs fiktive Artikel. Änderungen gelten bis zum Neuladen oder Neuinitialisieren.

Fiktiver Demo-Bestand
ArtikelKategorieStatusPreisStückAktionen

Lokale Demo. Kein Server und keine Speicherung.

Artikel anlegen

Artikeldetails

Artikel wirklich löschen?

wird nur aus dieser lokalen Vorschau entfernt.

HTML · inklusive Stylesheets und Modul-Einbindung
<!doctype html>
<html lang="de" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Lokale Bestandsverwaltung · Rittek UI</title>
<link rel="stylesheet" href="https://ui.rittek.de/assets/rittek.css">
<link rel="stylesheet" href="https://ui.rittek.de/assets/blocks-management.css">
</head>
<body data-r-scheme="lime" data-r-size="standard" data-r-font="standard">
<section class="bmg-block" data-bmg-block="inventory" aria-labelledby="bmg-inventory-title">
<header class="bmg-header">
<div>
<p class="bmg-eyebrow">Operations / Bestand</p>
<h3 id="bmg-inventory-title">Alles an seinem Platz.</h3>
<p class="bmg-muted">Sechs fiktive Artikel. Änderungen gelten bis zum Neuladen oder Neuinitialisieren.</p>
</div>
<button class="r-button r-button-primary" type="button" data-bmg-create>Artikel anlegen</button>
</header>
<div class="bmg-controls">
<label>Artikel suchen<input class="r-input" data-bmg-search type="search" placeholder="Name eingeben">
</label>
<label>Status<select class="r-input" data-bmg-filter>
<option value="">Alle Status</option>
<option value="active">Verfügbar</option>
<option value="planned">Geplant</option>
<option value="paused">Pausiert</option>
</select>
</label>
<label>Sortieren<select class="r-input" data-bmg-sort>
<option value="name">Name A–Z</option>
<option value="price">Preis aufsteigend</option>
<option value="stock">Bestand aufsteigend</option>
</select>
</label>
<button type="button" class="r-button" data-bmg-clear>Suche und Status leeren</button>
</div>
<div class="bmg-table">
<table class="r-table">
<caption>Fiktiver Demo-Bestand</caption>
<thead>
<tr>
<th scope="col">Artikel</th>
<th scope="col">Kategorie</th>
<th scope="col">Status</th>
<th scope="col">Preis</th>
<th scope="col">Stück</th>
<th scope="col">Aktionen</th>
</tr>
</thead>
<tbody data-bmg-rows>
</tbody>
</table>
</div>
<p class="bmg-muted" data-bmg-count aria-live="polite">
</p>
<p data-bmg-empty hidden>Keine Artikel passen zu diesen Filtern.</p>
<p class="bmg-status" data-bmg-status role="status">Lokale Demo. Kein Server und keine Speicherung.</p>
<button class="r-button" type="button" data-bmg-undo hidden>Letztes Löschen rückgängig</button>
<dialog class="bmg-dialog" data-bmg-editor aria-labelledby="bmg-editor-title">
<h4 id="bmg-editor-title" data-bmg-editor-title>Artikel anlegen</h4>
<form method="dialog" class="bmg-form">
<label for="bmg-name">Name<input class="r-input" id="bmg-name" name="name" required maxlength="80">
</label>
<label for="bmg-category">Kategorie<select class="r-input" id="bmg-category" name="category">
<option>Technik</option>
<option>Büro</option>
<option>Zubehör</option>
</select>
</label>
<label for="bmg-item-status">Status<select class="r-input" id="bmg-item-status" name="status">
<option value="active">Verfügbar</option>
<option value="planned">Geplant</option>
<option value="paused">Pausiert</option>
</select>
</label>
<label for="bmg-price">Preis in EUR<input class="r-input" id="bmg-price" name="price" type="number" min="0" max="100000" step="0.01" value="0" required>
</label>
<label for="bmg-stock">Bestand in Stück<input class="r-input" id="bmg-stock" name="stock" type="number" min="0" max="10000" step="1" value="0" required>
</label>
<p data-bmg-error role="alert">
</p>
<div class="bmg-actions">
<button class="r-button r-button-primary" type="submit">Speichern</button>
<button class="r-button" type="button" data-bmg-close>Schließen</button>
</div>
</form>
</dialog>
<dialog class="bmg-dialog" data-bmg-details aria-labelledby="bmg-details-title">
<h4 id="bmg-details-title" data-bmg-details-title>Artikeldetails</h4>
<p data-bmg-details-text>
</p>
<button class="r-button" type="button" data-bmg-close>Schließen</button>
</dialog>
<dialog class="bmg-dialog" data-bmg-confirm aria-labelledby="bmg-confirm-title">
<h4 id="bmg-confirm-title">Artikel wirklich löschen?</h4>
<p>
<strong data-bmg-delete-name>
</strong> wird nur aus dieser lokalen Vorschau entfernt.</p>
<div class="bmg-actions">
<button class="r-button" type="button" data-bmg-delete-confirm>Löschen bestätigen</button>
<button class="r-button" type="button" data-bmg-close>Schließen</button>
</div>
</dialog>
</section>
<script type="module">
import {initManagementBlocks} from 'https://ui.rittek.de/assets/modules/blocks-management.js';
const managementBlocks = initManagementBlocks(document);
// Beim Entfernen der Ansicht: managementBlocks.destroy();
</script>
</body>
</html>

Datenverwaltung

Facettierte Suche im Drawer

Seitlicher nativer Dialog mit Kategorien, Status und validiertem Preisbereich. Anwenden aktualisiert lokale Ergebniskarten.

Vollständiges HTML herunterladen ↧

Katalog / Entdecken

Finde, was du brauchst.

Kategorien und Preisbereich kombinieren. Alle Ergebnisse sind fiktiv.

Lokale Demo. Kein Server und keine Speicherung.

Ergebnisse eingrenzen

Kategorien · mehrere möglich

Schließen verwirft nicht angewendete Änderungen. Zurücksetzen wirkt sofort; der Suchtext bleibt erhalten.

HTML · inklusive Stylesheets und Modul-Einbindung
<!doctype html>
<html lang="de" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Facettierte Suche im Drawer · Rittek UI</title>
<link rel="stylesheet" href="https://ui.rittek.de/assets/rittek.css">
<link rel="stylesheet" href="https://ui.rittek.de/assets/blocks-management.css">
</head>
<body data-r-scheme="lime" data-r-size="standard" data-r-font="standard">
<section class="bmg-block" data-bmg-block="facets" aria-labelledby="bmg-facets-title">
<header class="bmg-header">
<div>
<p class="bmg-eyebrow">Katalog / Entdecken</p>
<h3 id="bmg-facets-title">Finde, was du brauchst.</h3>
<p class="bmg-muted">Kategorien und Preisbereich kombinieren. Alle Ergebnisse sind fiktiv.</p>
</div>
<button class="r-button" type="button" data-bmg-open-facets>Filter öffnen</button>
</header>
<label for="bmg-catalog-search">Artikel suchen<input id="bmg-catalog-search" class="r-input" type="search" data-bmg-search>
</label>
<div class="bmg-results" data-bmg-cards>
</div>
<p class="bmg-muted" data-bmg-count aria-live="polite">
</p>
<p data-bmg-empty hidden>Keine Artikel passen zu diesen Filtern.</p>
<p class="bmg-status" data-bmg-status role="status">Lokale Demo. Kein Server und keine Speicherung.</p>
<dialog class="bmg-dialog bmg-drawer" data-bmg-drawer aria-labelledby="bmg-drawer-title">
<h4 id="bmg-drawer-title">Ergebnisse eingrenzen</h4>
<form method="dialog" class="bmg-form">
<fieldset>
<legend>Kategorien · mehrere möglich</legend>
<label>
<input type="checkbox" value="Technik" data-bmg-category> Technik</label>
<label>
<input type="checkbox" value="Büro" data-bmg-category> Büro</label>
<label>
<input type="checkbox" value="Zubehör" data-bmg-category> Zubehör</label>
</fieldset>
<label for="bmg-facet-status">Status<select class="r-input" id="bmg-facet-status" name="status">
<option value="">Alle Status</option>
<option value="active">Verfügbar</option>
<option value="planned">Geplant</option>
<option value="paused">Pausiert</option>
</select>
</label>
<label for="bmg-min">Minimalpreis in EUR<input id="bmg-min" name="min" class="r-input" type="number" min="0" max="100000" step="0.01">
</label>
<label for="bmg-max">Maximalpreis in EUR<input id="bmg-max" name="max" class="r-input" type="number" min="0" max="100000" step="0.01">
</label>
<p role="alert" data-bmg-facet-error>
</p>
<div class="bmg-actions">
<button class="r-button r-button-primary" type="submit">Filter anwenden</button>
<button class="r-button" type="button" data-bmg-reset-facets>Facetten zurücksetzen</button>
<button class="r-button" type="button" data-bmg-close>Schließen</button>
</div>
<p class="bmg-muted">Schließen verwirft nicht angewendete Änderungen. Zurücksetzen wirkt sofort; der Suchtext bleibt erhalten.</p>
</form>
</dialog>
</section>
<script type="module">
import {initManagementBlocks} from 'https://ui.rittek.de/assets/modules/blocks-management.js';
const managementBlocks = initManagementBlocks(document);
// Beim Entfernen der Ansicht: managementBlocks.destroy();
</script>
</body>
</html>

Datenverwaltung

Auswahl und CSV-Export

Zeilen auswählen, sichtbare Auswahl gesammelt setzen und ausschließlich ausgewählte Artikel herunterladen.

Vollständiges HTML herunterladen ↧

Daten / Export

Nur deine Auswahl.

CSV mit ausgewählten Zeilen. Ausgeblendete ausgewählte Zeilen bleiben ausgewählt und werden ebenfalls exportiert. Der Kopf-Schalter betrifft nur sichtbare Zeilen.

Fiktiver Demo-Bestand
ArtikelKategorieStatusPreisStück

Lokale Demo. Kein Server und keine Speicherung.

Semikolon-CSV mit UTF-8-Kennung. Formelähnliche Zellanfänge werden mit einem Apostroph neutralisiert. Es werden keine Dateien hochgeladen.

HTML · inklusive Stylesheets und Modul-Einbindung
<!doctype html>
<html lang="de" data-theme="light">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Auswahl und CSV-Export · Rittek UI</title>
<link rel="stylesheet" href="https://ui.rittek.de/assets/rittek.css">
<link rel="stylesheet" href="https://ui.rittek.de/assets/blocks-management.css">
</head>
<body data-r-scheme="lime" data-r-size="standard" data-r-font="standard">
<section class="bmg-block" data-bmg-block="export" aria-labelledby="bmg-export-title">
<header class="bmg-header">
<div>
<p class="bmg-eyebrow">Daten / Export</p>
<h3 id="bmg-export-title">Nur deine Auswahl.</h3>
<p class="bmg-muted">CSV mit ausgewählten Zeilen. Ausgeblendete ausgewählte Zeilen bleiben ausgewählt und werden ebenfalls exportiert. Der Kopf-Schalter betrifft nur sichtbare Zeilen.</p>
</div>
</header>
<div class="bmg-controls">
<label>Artikel suchen<input class="r-input" data-bmg-search type="search" placeholder="Name eingeben">
</label>
<label>Status<select class="r-input" data-bmg-filter>
<option value="">Alle Status</option>
<option value="active">Verfügbar</option>
<option value="planned">Geplant</option>
<option value="paused">Pausiert</option>
</select>
</label>
<button type="button" class="r-button" data-bmg-clear>Suche und Status leeren</button>
</div>
<div class="bmg-table">
<table class="r-table">
<caption>Fiktiver Demo-Bestand</caption>
<thead>
<tr>
<th scope="col">
<input type="checkbox" data-bmg-select-all aria-label="Alle sichtbaren Zeilen auswählen">
</th>
<th scope="col">Artikel</th>
<th scope="col">Kategorie</th>
<th scope="col">Status</th>
<th scope="col">Preis</th>
<th scope="col">Stück</th>
</tr>
</thead>
<tbody data-bmg-rows>
</tbody>
</table>
</div>
<p class="bmg-muted" data-bmg-count aria-live="polite">
</p>
<p data-bmg-empty hidden>Keine Artikel passen zu diesen Filtern.</p>
<p class="bmg-status" data-bmg-status role="status">Lokale Demo. Kein Server und keine Speicherung.</p>
<div class="bmg-actions">
<button class="r-button r-button-primary" type="button" data-bmg-download>Auswahl als CSV herunterladen</button>
<button class="r-button" type="button" data-bmg-clear-selection>Auswahl leeren</button>
</div>
<p class="bmg-muted">Semikolon-CSV mit UTF-8-Kennung. Formelähnliche Zellanfänge werden mit einem Apostroph neutralisiert. Es werden keine Dateien hochgeladen.</p>
</section>
<script type="module">
import {initManagementBlocks} from 'https://ui.rittek.de/assets/modules/blocks-management.js';
const managementBlocks = initManagementBlocks(document);
// Beim Entfernen der Ansicht: managementBlocks.destroy();
</script>
</body>
</html>