Siirry sisältöön

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