Add optional click tracking to clickable components
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- react, typescript
Línea de trabajo
Comienza revisando los componentes interactivos enumerados—BBButton, BBBCheckbox, BBBToggle, BBBAccordion, BBBNavigation, BBBSelect, BBBSearch y BBBModal—y cómo están implementadas sus callbacks de interacción. Usa el módulo propuesto src/clickTracker.ts e inspecciona la ruta de exportación de la biblioteca. Se considera terminado cuando las interacciones con id generan el informe solicitado, resetClickReport lo borra y los componentes sin ids conservan el comportamiento existente.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Is your feature request related to a problem? Please describe.
Consumers of this library often need to track which components are being interacted with for analytics or usage telemetry purposes. Currently, they must manually wrap every component's onClick to collect this data, which is repetitive boilerplate that has to be maintained outside the library.
Describe the solution you'd like
An opt-in, zero-configuration click tracking system built into the library. When a consumer passes an id prop to any clickable component, clicks are automatically counted in an internal store. The consumer retrieves the report by calling a single exported function whenever needed.
// src/clickTracker.ts (new module)
export function getClickReport(): Record<string, number>
export function resetClickReport(): void
// internal — called by components
function trackClick(id: string): void
Describe alternatives you've considered
- Base class / class inheritance: Discarded — this library uses functional components with hooks throughout. A class hierarchy would require rewriting all components and goes against React's compositional model.
- Higher-Order Component (HOC): Would work but adds unnecessary wrapping complexity for a use case that doesn't require it.
- Context + Provider: Makes the system reactive (triggers re-renders), but requires consumers to wrap their app with a
<ClickTrackerProvider>, which is unnecessary overhead for a simple analytics report.
Affected component(s)
All components that have meaningful user interaction:
-
BBButton -
BBBCheckbox -
BBBToggle -
BBBAccordion(expand/collapse) -
BBBNavigation(item clicks) -
BBBSelect(option selection) -
BBBSearch(search action) -
BBBModal(action buttons)
Proposed API / Usage Example
import { BBButton, BBBToggle, getClickReport, resetClickReport } from '@mconf/bbb-ui-components-react';
// No setup required — tracking activates automatically when id is passed
function App() {
return (
<>
<BBButton id="confirm-btn" onClick={handleConfirm} label="Confirm" />
<BBBToggle id="notifications-toggle" onChange={handleToggle} />
</>
);
}
// Retrieve the report whenever needed (e.g. on page unload, on user logout)
const report = getClickReport();
// → { "confirm-btn": 14, "notifications-toggle": 3 }
sendToAnalytics(report);
resetClickReport(); // optional: reset counters
Components without an id prop are silently ignored — zero behavior change for existing consumers.
Screenshots or mockups
N/A
Additional context
- TypeScript type
ClickReport = Record<string, number>should be exported alongside the functions. resetClickReport()enables consumers to segment data by session or time window.- The module is a singleton (module-level
Map<string, number>), so it works across the entire component tree without any provider or context setup. - Easily testable: call
resetClickReport()between tests to isolate state.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2
- Forks
- 5
- Merge medio
- 2 d 5 h
- PR fusionados (30 d)
- 9
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bigbluebutton/bbb-ui-components-react
-
BBButton: subtle variant with neutral color has an opaque white background, so it renders white on white in dark modePosiblemente ocupada @nisatsama la tomó hace 2 días. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
bigbluebutton/bbb-ui-components-react#100 · 1 comentario ·
-
Add support for dark themeAbiertoenhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
-
enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
Add standard component for notifications (BBBToast)Posiblemente ocupada @Arthurk12 la tomó hace 34 días. Abiertoenhancement
bigbluebutton/bbb-ui-components-react#72 · 1 asignado ·
Todos los issues de bigbluebutton/bbb-ui-components-react
Issues similares
-
Flaky: mongodb-memory-server 'Port already in use' when another process starts a mongod concurrentlyAbiertoarea:testing bug effort:S priority:P2
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
lens:agent lens:process process
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
thebristolsound/birdbrain#1772 ·
Los mantenedores suelen responder en 1 día
-
bug priority:low ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Automattic/data-liberation-agent#685 ·
Los mantenedores suelen responder en 1 día
-
Business
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
Los mantenedores suelen responder en 1 día