Aller au contenu

FloatButton

Bouton d’action flottant qui reste fixe sur la page pour un accès rapide aux actions courantes.

import { FloatButton } from 'asterui'

De base

Simple bouton d'action flottant.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          onClick={() => alert('Button clicked!')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Avec infobulle

Bouton flottant avec infobulle au survol.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          tooltip="Add new item"
          type="primary"
          onClick={() => alert('Add clicked!')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Types

Types de boutons par défaut et primaire.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          type="default"
          className="!absolute !right-20 !bottom-4"
        />
        <FloatButton
          icon={<span className="text-lg">♥</span>}
          type="primary"
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Formes

Formes de boutons cercle et carré.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">+</span>}
          shape="circle"
          className="!absolute !right-20 !bottom-4"
        />
        <FloatButton
          icon={<span className="text-lg">+</span>}
          shape="square"
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Avec badge

Bouton flottant avec badge de notification.

5
import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg">
        <FloatButton
          icon={<span className="text-lg">💬</span>}
          badge={5}
          onClick={() => alert('You have 5 unread messages')}
          className="!absolute !right-4 !bottom-4"
        />
      </div>
    )
}

export default App

Groupe de boutons flottants

Groupe de boutons flottants qui s'étendent au clic.

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-48 bg-base-200 rounded-lg">
        <FloatButton.Group
          icon={<span className="text-lg">+</span>}
          className="!absolute !right-4 !bottom-4"
        >
          <FloatButton
            icon={<span>?</span>}
            onClick={() => alert('Help section')}
          />
          <FloatButton
            icon={<span>💬</span>}
            onClick={() => alert('Contact support')}
          />
          <FloatButton
            icon={<span>↻</span>}
            onClick={() => alert('Refreshing...')}
          />
        </FloatButton.Group>
      </div>
    )
}

export default App

Retour en haut

Bouton de défilement vers le haut qui apparaît après avoir fait défiler vers le bas.

BackTop button appears after scrolling down 400px

import { FloatButton } from 'asterui'

function App() {
  return (
      <div className="relative h-32 bg-base-200 rounded-lg flex items-center justify-center text-base-content/60">
        <p>BackTop button appears after scrolling down 400px</p>
      </div>
    )
}

export default App
PropriétéDescriptionTypeDéfaut
iconIcône à afficher dans le boutonReact.ReactNode-
descriptionTexte de description sous l’icôneReact.ReactNode-
typeType/couleur du bouton'default' | 'primary''default'
shapeForme du bouton'circle' | 'square''circle'
tooltipTexte d’infobulle au survolstring-
tooltipPlacementPosition de l’infobulle'left' | 'right' | 'top' | 'bottom''left'
badgeContenu du badge à affichernumber | React.ReactNode-
hrefURL du lien (rendu comme ancre)string-
targetCible du lienstring-
onClickGestionnaire d’événement de clic() => void-
classNameClasses CSS supplémentairesstring-
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
childrenComposants FloatButton à regrouperReact.ReactNode-
flowerOrganiser les boutons en disposition quart de cercle (radiale)booleanfalse
shapeForme du bouton pour les enfants'circle' | 'square''circle'
iconIcône du bouton déclencheur principalReact.ReactNode-
mainActionIcône du bouton d’action principal (remplace le déclencheur lorsque ouvert)React.ReactNode-
onMainActionGestionnaire de clic pour le bouton d’action principal() => void-
showCloseAfficher le bouton de fermeture lorsque ouvertbooleanfalse
typeType/couleur du bouton'default' | 'primary''default'
positionPosition à l’écran'bottom-right' | 'bottom-left' | 'top-right' | 'top-left''bottom-right'
offsetDistance du bord en pixelsnumber24
data-testidID de test pour les testsstring-
PropriétéDescriptionTypeDéfaut
visibilityHeightDistance de défilement avant l’apparition du bouton (pixels)number400
targetÉlément cible de défilement() => HTMLElement | Window-
onClickGestionnaire d’événement de clic (appelé avant le défilement)() => void-
iconIcône personnaliséeReact.ReactNode-
durationDurée de l’animation de défilement en msnumber450
positionPosition à l’écran'bottom-right' | 'bottom-left''bottom-right'
offsetDistance du bord en pixelsnumber24
data-testidID de test pour les testsstring-
  • Utilise l’élément <button> natif pour une prise en charge appropriée du clavier
  • Prend en charge la prop href pour rendre comme ancre pour la fonctionnalité de lien
  • Les infobulles fournissent un contexte pour les lecteurs d’écran lorsqu’elles sont présentes
  • Les états de focus sont clairement visibles pour la navigation au clavier
  • L’expansion du groupe est accessible au clavier
  • Le bouton BackTop apparaît/disparaît en fonction de la position de défilement