Git Product home page Git Product logo

public-ui / kolibri Goto Github PK

View Code? Open in Web Editor NEW
135.0 0.0 30.0 412.58 MB

The accessible HTML-Standard

Home Page: https://public-ui.github.io

License: European Union Public License 1.2

JavaScript 2.07% TypeScript 25.39% CSS 20.09% HTML 29.82% Sass 0.02% Shell 0.13% SCSS 18.52% Handlebars 0.02% PHP 0.04% MDX 3.54% Less 0.24% Stylus 0.12% Mustache 0.01% Pug 0.01% Twig 0.01%
react vuejs a11y accessibility angular barrierefreiheit client-side-rendering csr solid-js ssg

kolibri's Introduction

Welcome to KoliBri

„The accessible HTML-Standard“

KoliBri stands for „Component library for the accessibility“ and was from the Informationstechnikzentrum Bund (ITZBund) open source released for reuse and further development.

Vision

Together we make HTML accessible using reusable web components to ensure usability and accessibility.

Mission

The HTML web standard is itself very “openly” specified in order to be as long-lasting and robust as possible. It therefore often happens that HTML compositions are not easily accessible, semantic and valid.

KoliBri is based directly on the Web standards of the W3C (framework-agnostic), and is generic Reference implementation of the WCAG standard and the BITV for accessibility and implemented as a multi-theming capable presentation layer. There is no technical reference and no data transfer functionality. This means that KoliBri is equally reusable for the realization of static websites as well as dynamic web applications with different corporate designs and style guides and is therefore very interesting for open source.

Collaboration and cooperation

The focus of KoliBri is on small (atomic), very flexible and highly reusable HTML compositions (e.g. buttons). We offer an accessible, semantic and valid standard implementation of such components that can be reused for any higher-level HTML structure or component (molecule, organism or template). These atomic components are where we should collaborate and cooperate to combine our skills and knowledge. The synergy effects on the basic components allow you to focus more on subject-specific content.

Let's make KoliBri better and more colorful together!

Continue to Documentation

Let's go

kolibri's People

Contributors

actions-user avatar anicyne avatar bastiw avatar cbraehmig avatar chrisalat avatar chrisdo82 avatar cyrdam avatar deleonio avatar dependabot[bot] avatar elvariablo avatar github-actions[bot] avatar joschakaisr avatar kawaiimochiahri avatar kironimmanuel avatar laske185 avatar lnk1812 avatar marienfeldtom avatar mello-r avatar mfranzke avatar schollkolade avatar sdvg avatar tim-laue avatar wolfram-zell avatar zweiseiten avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

kolibri's Issues

💡 Hinweis: Themes sind derzeit nicht tree shakeable

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Hilfreicher Hinweis

Die Themes-Datei (node_modules/@public-ui/themes/dist/index.mjs) ist derzeit 2,1 MB groß, und ist nicht tree shakeable da alle Themes in einer Datei enthalten sind. Bitte die Themes in einzelne Dateien aufsplitten.

🐞 Bug: Tabs does not work without _selected

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Fehlermeldung

Beschreibung des Fehlers

Eine klare und prägnante Beschreibung des Fehlers.

Reproduktion

Nutzen Sie die CodeSandbox, um ein reproduzierbares Beispiel zu erstellen.

  • Link zu CodeSandbox: '...'

Schritte zum Reproduzieren des Verhaltens:

  • Gehe zu '...'
  • Klicke auf '....'
  • Scrollen Sie nach unten zu '....'
  • Siehe Fehler

Erwartetes Verhalten

Eine klare und prägnante Beschreibung dessen, was Sie erwartet haben.

Screenshots

Fügen Sie gegebenenfalls Screenshots hinzu, um Ihr Problem zu erläutern.

Desktop (bitte vervollständigen Sie die folgenden Informationen):

  • Betriebssystem: [z.B. iOS]
  • Browser [z.B. Chrom, Safari]
  • Version [z.B. 22]

Smartphone (bitte ergänzen Sie folgende Angaben):

  • Gerät: [z.B. iPhone 6]
  • Betriebssystem: [z.B. iOS8.1]
  • Browser [z.B. Aktienbrowser, Safari]
  • Version [z.B. 22]

Zusätzlicher Kontext

Fügen Sie hier einen beliebigen anderen Kontext zum Problem hinzu.

💡 Hinweis: Cheat Sheet (HTML)

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Wir können aus der component.d.ts ein Cheat Sheet generieren und es um eine Hand voll Beispielen und der Register ergänzen.

  • geoutet werden
  • 3 kleine Einstiegsbeipiele - inline hinzufügen / Register
  • Einfache Seite im Storybook (HTML)

🛹 Feature: Toggle Button einführen

Funktion: Über die Toggle Badge soll das An- und Abwählen von Funktionen ermöglicht werden. Mit Klick ist es aktiviert und mit erneutem Klick wieder deaktiviert

image

CSS-Styles:
height: 32px;
width: 171px;
left: 26px;
top: 38px;
border-radius: 5px;
padding: 4px 12px 4px 8px;

🛹 Feature: KolButton type=submit funktioniert nicht mit Standard form-Tag

<KolButton type="submit" .../> triggert nicht den Submit der umliegenden Form, wenn nicht Leanup verwendet wird. Wir bauen unsere Formulare z.B. mit react-hook-form und der Form submit sollte hier genauso getriggert werden. Mit der Version 1.1.1 hat es noch funktioniert

Gleiches gilt auch beim Betätigen der Enter-Taste innerhalb eines Inputfeldes.

Bei Bedarf kann ich eine Codesandbox bereitstellen.

Opened by @Chrisdo82

💡 Hinweis: Rename Attribute from InputCheckbox _type to _variant

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Das Attribute _type wird bei den Inputs vom HTML-Attribute type abgeleitet. Lediglich beim KolInputCheckbox haben wir es für die Variante verwendet.

Um die Semantik zu wahren werden wir das Attribute für die Varianten checkbox oder switch auf das Attribut _variant verschieben. Das Attribut _type wird dann an der Komponente irrelevant (deprecated).

Fix ESM Bundles

Für das dynamische Laden von JavaScript-Dateien (ESM) müssen die Pakete speziell gebundled werden. Mit dem Release 1.1.9 ist vorgesehen, neue Bundles hierfür bereitzustellen.

🛹 Feature: Filter Badges

Funktion: Anzeige des gesetzten Filters + Aktion "Entfernen"

Fokusrahmen innerhalb der Klickfläche von 44px:
image

Fokusrahmen außerhalb der Klickfläche von 44px:
image

Anzeige Filterung:
height: 32px;
width: 99px;
left: 0px;
top: 0px;
padding: 4px 8px 4px 12px;
border-radius: 5px 0px 0px 5px;

"Close"-Button:
height: 32px;
width: 32px;
left: 26px;
top: 33.242919921875px;
padding: 4px;
border-radius: 0px 5px 5px 0px;

Sichtbare Klickfläche bei 32x32px, tatsächliche Klickfläche muss bei 44x44px sein.

📖 Help: Buttons mit eigenen Icons

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Hilfeanfrage

Ist es möglich für Buttons custom Images bzw. Icons zu benutzen?

💡 Hinweis: Radio-Buttons / Slot-Problem

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Hilfreicher Hinweis

Beim Radio gibt es mehrere Unterkomponenten mit Slots. Prüfen, ob diese korrekt befüllt werden. (Großer Abstand zu sehen)

🛹 Feature: 'ref' wird nicht durchgereicht

refs werden derzeit nicht forwarded. Das z.B. funktioniert derzeit nicht:

<KolButton ref={ref} ... />

Erwartetes Verhalten wäre, dass das ref an das button Element durchgereicht werden würde. Bei Bedarf kann ich noch ein detaillierteres Beispiel liefern

Opened by @Chrisdo82

🛹 Feature: CJS mit ausliefern

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Featureanfrage

Bezieht sich Ihre Feature-Anfrage auf ein Problem? Bitte beschreiben.

Bei Jest ist ESM leider noch experimental (https://jestjs.io/docs/ecmascript-modules). Alle Tests mit Jest schlagen mit der Version 1.1.9 nun leider fehl.

Beschreiben Sie die gewünschte Lösung

Den Build so anpassen, das cjs weiterhin mit ausgeliefert wird.

[Feature] Nav: `aria-current` bei aktuell ausgewähltem Menü-Item setzen

Featureanfrage

Bezieht sich Ihre Feature-Anfrage auf ein Problem? Bitte beschreiben.

In der Nav-Komponente ist für Screenreader nicht erkennbar, welches der Menüpunkte zur Zeit ausgewählt ist. Für Sehende ist dieser farblich hinterlegt, für Screenreader-NutzerInnen kann hier das aria-current Attribut gesetzt werden.

kolibri-menu-aria-current

Beschreiben Sie die gewünschte Lösung

Das aria-current Attribut wird automatisch korrekt gesetzt, wenn ein Menüpunkt ausgewählt wird.

Beschreiben Sie Alternativen, die Sie in Betracht gezogen haben

  • Die Menü-Elemente aus dem DOM fischen und das Attribut selbst setzen

Zusätzlicher Kontext

Wurde im Zuge eines BitV-Tests bemängelt.

🛹 Feature: Multiselect Felder setzen ersten Eintrag per Default

Description
Multiselect Felder (KolSelect mit mit _multiple) haben immer den ersten Wert vorausgewählt. Dies war ursprünglich einmal nicht so und lässt sich auch mit Übergabe einer leeren Wertemenge nicht ändern.

To Reproduce
Tritt sowohl mit als auch ohne LeanInputAdapter auf. MinBsp.:

export const MinTstMultiSelect = () => {
  const [list, setList] = useState([
    { label: 'Herr', value: 'Herr' },
    { label: 'Frau', value: 'Frau' },
  ]);
  return (
   <KolForm slot="content">
      <KolSelect 
        _list={list} 
        _multiple 
        _size={3} 
        _id={'test'} 
        _name={'test'} 
        //_value={[]}   <-- bewirkt nichts
        >
      </KolSelect>
    </KolForm>
  );
};

Expected behavior
Beim initialen Laden sollten Multiselect Felder per Default keinen Wert ausgewählt haben.

Screenshots
grafik

Desktop (please complete the following information):

  • Browser Chrome, Firefox, ...
  • Version 1.1.9

💡 Hinweis: BMF-Styleguide / Table Klärung der deutlicheren Darstellung

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Hilfreicher Hinweis

Der Sortierbutton im BMF ist meist weit weg von Header-Label - es fehlt auch etwas Struktur-in der Table.

Ohne Border (BMF):

image

Mit Border (MAPZ):

image

Oder näher zuordnen:

image

🛹 Feature: Hervorheben von "aktiver" Zeile in KolTable

Featureanfrage

Bezieht sich Ihre Feature-Anfrage auf ein Problem? Bitte beschreiben.

Wir haben in der Egebnismenge von Suchabfragen Tabellen mit sehr vielen Spalten, sodass idR nicht der gesamte Inhalt sichtbar ist und horizontal gescrollt werden muss.

Beschreiben Sie die gewünschte Lösung

Sobald in eine Zeile geklickt wird, soll diese als "aktive" Zeile gehighlightet werden. D.h. diese bekommt z.B. eine andere Hintergrundfarbe/Outline/... als die anderen Zeilen.

Beschreiben Sie Alternativen, die Sie in Betracht gezogen haben

Zeilen durch Checkbox-Spalte selektierbar machen. Siehe folgendes AntD Beispiel: https://codepen.io/pen?&editors=001&prefill_data_id=2caf7670-4c18-43a8-b837-dd82b57bab32

Zusätzlicher Kontext

AntD Beispiel:
grafik

[BUG]

⚠️ Achten Sie beim Erstellen von Tickets stets darauf, dass die technischen Fokus adressiert werden und keine fachlichen und unternehmensinternen Details preisgegeben werden.

Fehlermeldung

Beschreibung des Fehlers

Eine klare und prägnante Beschreibung des Fehlers.

Reproduktion

Schritte zum Reproduzieren des Verhaltens:

  • Gehe zu '...'
  • Klicke auf '....'
  • Scrollen Sie nach unten zu '....'
  • Siehe Fehler

Erwartetes Verhalten

Eine klare und prägnante Beschreibung dessen, was Sie erwartet haben.

Screenshots

Fügen Sie gegebenenfalls Screenshots hinzu, um Ihr Problem zu erläutern.

Desktop (bitte vervollständigen Sie die folgenden Informationen):

  • Betriebssystem: [z.B. iOS]
  • Browser [z.B. Chrom, Safari]
  • Version [z.B. 22]

Smartphone (bitte ergänzen Sie folgende Angaben):

  • Gerät: [z.B. iPhone 6]
  • Betriebssystem: [z.B. iOS8.1]
  • Browser [z.B. Aktienbrowser, Safari]
  • Version [z.B. 22]

Zusätzlicher Kontext

Fügen Sie hier einen beliebigen anderen Kontext zum Problem hinzu.

🛹 Feature: Wertebereich für das Datumsfeld

Das Datumsfeld soll durch Maxima in seinen gültigen Werten einschränkbar sein. Beim Setzen der Werte sollte die ungültigen Daten bereits nicht auswählbar sein.
Per Default soll der 31.12.9999 als Maximum gesetzt sein, um fünf- oder sechsstellige Jahreszahl zu verhindern.

Neue Eigenschaften am Feld

Name Beschreibung Standardwert
min Der kleinste gültige Datumswert (inklusive) ?
max Der größte gültige Datumswert (inklusive) 31.12.9999

🛹 Feature: Select All Property für MultiSelect

Is your feature request related to a problem? Please describe.
Wir haben MultiSelect Felder mit vielen Einträgen und es kommt häufig vor, dass der User sämtliche Werte auswählen/deselektieren möchte.

Describe the solution you'd like
Die KolSelect Props um ein "_selectAll" Flag erweitern, welches an erster Stelle einen zusätzlichen Eintrag "Alle auswählen" mit Checkbox (o.ä. hervorgehoben) einblendet.

Mögliche Darstellung:
grafik
https://i.stack.imgur.com/wb9Sd.png

🛹 Feature: Drag & Drop Sortierung für KolTable Spalten

Featureanfrage

Bezieht sich Ihre Feature-Anfrage auf ein Problem? Bitte beschreiben.

Wir haben in der Egebnismenge von Suchabfragen Tabellen mit sehr vielen Spalten, sodass idR nicht der gesamte Inhalt sichtbar ist und horizontal gescrollt werden muss. Die User haben unterschiedliche Priorisierungen bei der Reihenfolge der Spalten, bzw. würde diese je nach Ergebnismenge gerne umsortieren können.

Beschreiben Sie die gewünschte Lösung

Die Spaltenreihenfolge der KolTable Komponente via Drag&Drop sortierbar machen.

🐞 Bug: InputRadio - Überflüssige Abstände

Fehlermeldung

Beschreibung des Fehlers.

Die InputRadio-Komponente wird mit überflüssigen Abständen dargestellt. Diese entstehen durch leere div Elemente, die zwischen den Radio-Optionen eingefügt werden.

Reproduktion

Das Problem tritt bei jeder InputRadio-Komponente auf, die wir einsetzen. Diese werden immer aus Listen etc. dynamisch generiert:

Unbenannt2

Erwartetes Verhalten

InputRadio-Komponenten werden mit normalen Abständen dargestellt.

Screenshots

Unbenannt

Unbenannt3

Umgebung

  • Desktop
  • Windows 10
  • Chrome Version 100.0.4896.75
  • Kolibri und Kolibri-React Version 1.1.6-rc.11

Weiterer Kontext

Ich habe dieses Problem bereits im Entwickler-Meeting angesprochen, weiß aber nicht, ob schon eine Lösung in Arbeit ist oder in Betracht gezogen wird. Ich wäre auch bereit, selbst einen PR mit einer Lösung zu erstellen.

🐞 Bug: Counter für Anzahl der Zeichen in Text-Feld wird initial nicht korrekt geladen

Fehlermeldung

Beschreibung des Fehlers

Wenn bei der Anzeige von Zeichen (hasCounter) in einem Text-Feld (KolTextarea) ein Wert/Text initial geladen, wird trotzdem "0/xxx" angezeigt. Also steht im Counter initial immer eine Null, auch wenn bereits Text (mit einer Zeichenanzahl > 0) vorliegt.
Erst mit Bearbeiten des Textes wird die richtige Anzahl von Zeichen angezeigt, d.h. wir müssen in das Textfeld klicken und eine Taste drücken, damit der Counter sich aktualisiert.

Reproduktion

        <LeanInputAdapter _control={textCtrl}>
          <KolTextarea
            _id="text"
            _name="text"
            _placeholder="max. 4000 Zeichen"
            _rows={8}
            _maxLength={4000}
            _hasCounter={mode !== Mode.READONLY}
            _readOnly={
              mode === Mode.READONLY ||
              textbaustein.status !== Status.IN_BEARBEITUNG
            }
            _touched={touched}
          >
            Text
          </KolTextarea>
        </LeanInputAdapter>

Erwartetes Verhalten

Wir würden erwarten, dass sich der Counter auch schon beim initialen Laden/Anzeigen bereits auf den aktuellen Wert (Anzahl der Zeichen) setzt.

Screenshots

Habe einen Screenshot angehangen, wie der Counter initial aussieht:
TB_Textarea_Counter_Null
Und ein Screenshot, wenn man im Textfeld ein Zeichen hinzugefügt hat:
TB_Textarea_Counter_Aktualisiert

Zusätzlicher Kontext

Aktuell verwenden wir KoliBri Version 1.1.10 - in älteren Versionen war es aber auch schon so.

🛹 Feature: Tabs seitlich anordnen und nur Icons

Note

  • Ich achte beim Erstellen des Issues darauf, dass ich keine fachlichen und unternehmensinternen Details preisgegebe.

Featureanfrage

Bezieht sich Ihre Feature-Anfrage auf ein Problem? Bitte beschreiben.

Nein

Beschreiben Sie die gewünschte Lösung

Wir würden es toll finden wenn die Tabs Komponente auch Vertikal platziert werden könnte. Für eine Vertikale Platzierung würden wir auch bevorzugen, die Option zu haben nur Icons, ohne Text, zu verwenden.

Beschreiben Sie Alternativen, die Sie in Betracht gezogen haben

Keine

Zusätzlicher Kontext

Beispiel von Vertikalen Tabs.
vertikale-tabs

[DOC] Schreibfehler korrigieren

Komponente umbenennen
kol-input-adapter-leanup in lean-input-adapter oder
LeanInputAdapter in LeanInputAdapter
Importe entfernen und hinzufügen (nur React)
Hinzufügen: import { LeanInputAdapter } from '@leanup/kolibri-react';
Entfernen: import { LeanInputAdapter } from '@public-ui/react';

🛹 Feature: Zeichenzähler bei textbasierten Eingabefeldern

Anzeige der verfügbaren Zeichen für jedes Eingabefeld ermöglichen (nicht nur bei der Textarea)
Aktuelle Umsetzung in Kolibri:

image

Anzeige erst bei Fokkussierung
Anzeige über dem Eingabefeld oben rechts, neben dem Titel?
Wunsch UX/UI:

image

image

(Wunsch bei Maximaleingabe: fett)
Zunächst auch schon ohne rötliche Einfärbung sehr hilfreich.

Opened by @simonhesse

💡 Hinweis: _alert bei allen Inputs default auf false

⚠️ Achten Sie beim Erstellen von Tickets stets darauf, dass die technischen Fokus adressiert werden und keine fachlichen und unternehmensinternen Details preisgegeben werden.

Da werden doch dann die Fehlermeldungen nicht vorgelesen.

🐞 Bug: create-kolibri Angular Template ohne Logo und Zone.js

Fehlermeldung

Beschreibung des Fehlers

Nachdem via npm init kolibri@latest my-kolibri-app eine Angular erstellt wurde, startet diese nicht.

  • Es fehlt die Datei "logo.angular.png"
    -"zone.js": "^0.12.0" muss als Dependency in der package.json hinterlegt werden

Erwartetes Verhalten

Die App startet nach der Grundeinrichtung

Desktop (bitte vervollständigen Sie die folgenden Informationen):

  • Windows 11
  • Chrome

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.