Siirry sisältöön
Luonnos

useSelectionLasso

React Hook valintalasson toteuttamiseen.

Käyttötarkoitus

Käytä valintalassoa, kun haluat mahdollistaa esimerkiksi useamman valintaruudun valinnan yhdellä kertaa. Valintalasso on tarkoitettu käytettäväksi asiantuntijoiden käyttöliittymissä apuvälineenä valintojen teon nopeuttamiseen.

Rajoitukset

  • Valintalasso ei toimi pelkällä näppäimistöllä, eikä kosketuslaitteissa.
  • Valintalasso estää oletuksena tekstin valitsemisen.
    • Jos tekstin valinta on tärkeää, voi valintalasson rajoittaa tietyn elementin sisään tai laittaa sen aktivoitumaan ainoastaan jonkin näppäimen kanssa.
    • Interaktiot voi myös palauttaa preventInteraction-parametrilla. Tällöin lasso ja tekstin valinta toimivat yhtäaikaa.

Konfigurointi

Valintalassotyökalu koostuu SelectionLasso-komponentista ja useammasta React-hookista:

  • useSelectionLasso: Määrittää valintalasson näyttämisen, koon ja sijainnin ruudulla.
  • useSelectionLassoSelect: Mahdollistaa kohteiden valinnan valmiiden sääntöjen pohjalta (vapaaehtoinen).
  • useSelectionLassoScroll: Mahdollistaa sivun vierittämisen valinnan mukana, kun hiiri siirtyy näytön ylä- tai alareunaan (vapaaehtoinen).

Valintalasson voi siirtää Portal-komponentilla sivun loppuun, jos ympäröivien elementtien tyylimääritykset häiritsevät sen toimintaa.

useSelectionLassoScroll

const { onMouseMove, onMouseUp } = useSelectionLassoScroll({ scrollSpeed: 20, scrollThreshold: 50 });

useSelectionLassoSelect

const { select, onChange } = useSelectionLassoSelect({
selectItem(item) {
item.checked = true;
},
deselectItem(item) {
item.checked = false;
},
multiSelectKey: "Control",
selectableItems,
});

useSelectionLasso

const ref = useRef<HTMLDivElement>(null);
const { props } = useSelectionLasso(ref, {
container: document.documentElement,
enabled: true,
onMouseDown: undefined,
onMouseMove: (e, insideItems, outsideItems) => {
onMouseMove(e);
select(insideItems, outsideItems);
},
onMouseUp,
preventInteraction: true,
root: document.documentElement,
selectableItems,
selectionThreshold: 3,
});

Esimerkit

Valintaruutujen valinta

Useamman erillisen valintaruudun valitseminen onnistuu pitämällä ctrl-painiketta pohjassa.

Taulukon rivien valinta

Esimerkki taulukon rivien valinnasta. Useamman erillisen valintaruudun valitseminen onnistuu pitämällä ctrl-painiketta pohjassa.

Valintalasson rajoittaminen tietyn elementin sisään

Esimerkissä valintalasso aktivoituu pitämällä ctrl-painiketta pohjassa. Useampien valintojen tekeminen tapahtuu ctrl- ja alt-painikkeilla.

Valintalasso on myös asetettu valitsemaan ainoastaan valintaruutuja ympäröivän elementin sisällä root- ja container-parametrien avulla.

  • root-parametri asettaa elementin, jonka sisällä muiden elementtien interaktiot estetään lasson ollessa aktiivisena (esimerkiksi tekstin valinta, hover-efektit).
  • container-parametri asettaa valintalasson aktivoitumaan ja valitsemaan vain annetun HTML-elementin sisällä.

Huomioitavaa selaintuessa