The open and composable observability and data visualization platform. Visualize metrics, logs, and traces from multiple sources like Prometheus, Loki, Elasticsearch, InfluxDB, Postgres and many more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
grafana/style_guides/frontend.md

1.4 KiB

Frontend Style Guide

Generally we follow the Airbnb React Style Guide.

Table of Contents

  1. Basic Rules
  2. File & Component Organization
  3. Naming
  4. Declaration
  5. Props
  6. Refs
  7. Methods
  8. Ordering

Basic rules

  • Try to keep files small and focused and break large components up into sub components.

Organization

  • Components and types that needs to be used by external plugins needs to go into @grafana/ui
  • Components should get their own folder under features/xxx/components
    • Sub components can live in that component folders, so not small component needs their own folder
    • Place test next to their component file (same dir)
    • Mocks in mocks dir
    • Test utils in tests dir
    • Component sass should live in the same folder as component code
  • State logic & domain models should live in features/xxx/state
  • Containers (pages) can live in feature root features/xxx
    • up for debate?

Props

  • Name callback props & handlers with a "on" prefix.
// good
onChange = () => {

};

render() {
  return (
    <MyComponent onChange={this.onChange} />
  );
}

// bad
handleChange = () => {

};

render() {
  return (
    <MyComponent changed={this.handleChange} />
  );
}