Skip to content

A collection of vanilla JavaScript components used in Odopod projects.

License

Notifications You must be signed in to change notification settings

odopod/code-library

Repository files navigation

Odopod Code Library (Odo) Build Status

A collection of vanilla JavaScript components used in Odopod projects.

Want to contribute to Odo?

Take a look at CONTRIBUTING.md.

Packages

The Odo repo is managed as a monorepo; it's composed of many npm packages.

Package Version
@odopod/odo-affix npm
@odopod/odo-background-video npm
@odopod/odo-base-component npm
@odopod/odo-carousel npm
@odopod/odo-device npm
@odopod/odo-dialog npm
@odopod/odo-draggable npm
@odopod/odo-dropdown npm
@odopod/odo-dual-viewer npm
@odopod/odo-expandable npm
@odopod/odo-helpers npm
@odopod/odo-hotspots npm
@odopod/odo-module npm
@odopod/odo-object-fit npm
@odopod/odo-on-swipe npm
@odopod/odo-pointer npm
@odopod/odo-responsive-attributes npm
@odopod/odo-responsive-classes npm
@odopod/odo-responsive-images npm
@odopod/odo-reveal npm
@odopod/odo-sassplate npm
@odopod/odo-scroll-animation npm
@odopod/odo-scroll-feedback npm
@odopod/odo-share npm
@odopod/odo-sticky-headers npm
@odopod/odo-tabs npm
@odopod/odo-tap npm
@odopod/odo-video npm
@odopod/odo-viewport npm
@odopod/odo-window-events npm

Tips for advanced webpack configuration

If you use webpack (or another bundler) for your project and are already using a compiler for your JavaScript (like babel), you have the option of using odo component source files and compiling them with your project.

This has a couple benefits:

  • No dependencies for odo are bundled with their dist files. For example, the debounce package is bundled in a couple odo components.
  • Use the same babel preset for your app's code and odo components. Maybe you're using babel-preset-env so that you can compile less.

Use the alias object to map requests for odo components to their source files instead of dist files. This configuration is intended for webpack 2, 3, or 4.

// Webpack config
{
  resolve: {
    alias: {
      '@odopod/odo-carousel$': '@odopod/odo-carousel/src/carousel.js',
      '@odopod/odo-device$': '@odopod/odo-device/src/device.js',
      '@odopod/odo-draggable$': '@odopod/odo-draggable/src/draggable.js',
      '@odopod/odo-helpers$': '@odopod/odo-helpers/src/helpers.js',
      '@odopod/odo-pointer$': '@odopod/odo-pointer/src/pointer.js',
    },
  },
}

Don't exclude odo components from being compiled with babel.

module: {
  rules: [
    {
      test: /\.js$/,
      exclude: /node_modules\/(?!@odopod\/odo-)/,
      loader: 'babel-loader',
    },
  }
]