npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@boewa-software/react-select

v2.0.0

Published

React Select Form Input

Downloads

9

Readme

React Select

Diese React-Komponente ermöglicht die Erzeugung eines dynamischen 'select'-Feldes mit integrierter Suche, Asynchroner-Datenabfrage uvm.

Instalation

$ npm install --save @boewa-software/react-select

Select

Die Nutzung erfolgt als klassische React-Komponente. Wie auch bei den klassischen React Formular-Komponenten, gibt es das Select in der Variante einer normalen Komponente und einer Controlled Component.

import React from 'react';
import {createRoot} from "react-dom/client";

import {Select} from '@boewa-software/react-select';

// target ist das DOM-Element, für das die React-Komponente eingesetzt wird
const target = getElementById('my-target');

const choices = ['First Choice', 'Second Choice', 'Last Choice'];

const root = createRoot(target);
root.render(<Select choices={choices} />);

Das Select bietet eine Standard-Implementierung zur Handhabung einfacher Werte als Array.

Sollen komplexere Daten (z.B. Objekte) gehandhabt werden, ist dies möglich. Dafür muss allerdings die Behandlung in der Ausgabe angepasst werden:

import React from 'react';
import {createRoot} from "react-dom/client";

import {Select} from '@boewa-software/react-select';

// target ist das DOM-Element, für das die React-Komponente eingesetzt wird
const target = getElementById('my-target');

const choices = [
    { id: 1, name: 'First Choice' },
    { id: 2, name: 'Second Choice' },
    { id: 3, name: 'Last Choice' }
];

// Komponente zur Anzeige des ausgewählten Werts übeschreiben
const ValueLabel = ({ value }) => `${value.name} (ID: ${value.id})`;

// Komponente zur Anzeige eines Listeneintrags zur Auswahl überschreiben
const ChoiceItem = ({ choice }) => choice.name;

const root = createRoot(target);
root.render(
    <Select choices={choices}
            valueLabelComponent={ValueLabel}
            choiceListProps={{
                choiceItemComponent: ChoiceItem
            }} />
);

Hinweis: Das ChoiceItem muss in das choiceListProps-Property übergeben werden, da die Auswahlliste intern eine eigene, ebenfalls vollständig überschreibbare Komponente ist.

Attribute

  • choices: array

    Array mit auswählbaren Listen-Einträgen.

  • onChange: function(any: newValue): void (optional)

    Callback-Methode die bei einer Werte-Änderung aufgerufen wird.

  • value: any (optional)

    Aktueller Value-Wert. Wenn dieser übergeben wird, wird diese Komponente wie eine Controlled Component behandelt! Die Aktualisierung des Value-Werts muss dann über einen eigenen onChange-Handler erfolgen.

  • initialValue: any (optional)

    Initialer Value-Wert, wenn es sich nicht um eine Controlled Component handelt.

  • disabled: bool (default: false, optional)

    Attribut zum Deaktivieren.

  • multiple: bool (default: false, optional)

    Ermöglicht die Auswahl mehrerer Werte. intialValue bzw. value müssen dann vom Typ array sein.

  • compareTo: function(choice, selectedValue): bool (optional)

    Falls multiple auf true gesetzt ist, vergleicht diese Methode die übergebenen Optionen mit der Auswahl auf deren gleichheit. Diese Methode soll true zurückgeben, bei allen Optionen die gleich der Auswahl sind, ansonsten false.

    Wird die Methode nicht gesetzt, während multiple auf true ist, kann es zu undefinierten Verhalten kommen.

  • showSearchBar: bool (default: true, optional)

    Anzeige der Suchleiste steuern.

  • showResetButton: bool (default: true, optional)

    Anzeige des Reset-Buttons steuern.

  • className string (optional)

    Klassen-Bezeichner für das äußerste Element.

  • valueFieldClassName string (optional)

    Klassen-Bezeichner für das Element zur Anzeige der Ausgewählten Werte.

  • filterChoice: function(any: choice, string: searchString): bool (optional)

    Zur Client-Seitigen Filterung der Choices anhand der Such-Eingabe (searchString).

  • onSearchStringChange function(string: searchString): void (optional)

    Callback zur Nachverfolgung, wenn sich die Sucheingabe ändert.

  • onOpenMenu function (optional)

    Callback zur Nachverfolgung, wenn sich das Menü offnet.

  • onCloseMenu function (optional)

    Callback zur Nachverfolgung, wenn sich das Menü schließt.

  • valueLabelComponent: function|React.Component (optional)

    Komponente zur Anzeige der Auswahl-Werte. Muss bei der Nutzung von Objekten oder anderen Datentypen als Value-Werte überschrieben werden.

  • placeholderComponent: function|React.Component|null (optional)

    Platzhalter-Komponente.

  • placeholderProps: object (optional)

    Properties der Placeholder-Komponente.

    HINWEIS: Wenn die Standard-Komponente genutzt wird, kann der Platzhalter-Text über placeholderProps: { text: "Eigener Placeholder" } überschrieben werden.

    Callback zur Nachverfolgung, wenn sich das Menü schließt.

  • choiceListComponent: function|React.Component (optional)

    Komponente zur Anzeige der Auswahl-Optionen (Liste). Der Komponente stehen u.a. folgende props zur Verfügung:

    • choices: array
    • toggleChoice: function(choice, bool: closeMenu): bool
    • showResetButton bool
    • isChoiceSelected bool
    • isChoiceActive bool
  • choiceListProps: object (optional)

    Properties der choiceListComponent-Komponente.

  • searchBarComponent: function|React.Component (optional)

    Komponente zur Anzeige der Suchleiste.

  • searchBarProps: object (optional)

    Properties der searchBarComponent-Komponente.

  • footerComponent: function|React.Component (optional)

    Footer-Komponente in dem Auswahl-Menü.

  • footerProps: object (optional)

    Properties der footerComponent-Komponente.

AsyncSelect

Diese Komponente kapselt die select-Komponente und ermöglicht die asynchrone Abfrage von Ergebnissen:

import React from 'react';
import {createRoot} from "react-dom/client";

import {AsyncSelect} from '@boewa-software/react-select';

// target ist das DOM-Element, für das die React-Komponente eingesetzt wird
const target = getElementById('my-target');

const urlGenerator = (searchString) => `/my-api-route?search=${searchString}`;

const root = createRoot(target);
root.render(<AsyncSelect generateRequestUrl={urlGenerator} />);

Attribute

Die AsyncSelect-Komponente unterstützt abgesehen von choices alle Konfigurations-Attribute wie auch das select. Außerdem gibt es die folgenden zusätzlichen Attribute:

  • generateRequestUrl: function(string: searchString): string

    Generator-Methode zur Generierung des Pfads für die Abfrage der Suchergebnisse je nach Eingabe im Suchfeld.

  • responseToChoices: function(response): array (optional)

    Callback-Methode zur Generierung der Auswahl-Elemente aus der Antwort vom Server.

  • intialChoices: array (optional)

    Initiale Auswahl-Optionen

  • triggerRequestTimeout int (default: 500, optional)

    Wartezeit bei der Eingabe eines Suchbegriffs in Millisekunden, bis die Abfrage ausgeführt wird.

  • clearOnRequestStart bool (default: true, optional)

    Flag, ob die aktuellen Optionen bereits beim Abschicken der Such-Anfrage resettet werden sollen.

  • clearOnMenuOpen bool (default: false, optional)

    Zusätzliches Flag was steuert ob beim Öffnen des Menüs eine neue Suchanfrage gesendet werden soll.
    Dieses Flag wird als Vorschlag verwendet. Das Menü kann also eine Suchanfrage starten,
    auch wenn dieser Parameter auf false gesetzt ist, wie z.B. für einen initialen Request,
    oder wenn sich der Suchstring ändert. Andersherum, falls dieses prop auf true gesetzt wird,
    wird die Liste immer neu geladen.

Beispiele