@internetarchive/ia-menu-slider

Menu slider used in ia-topnav

Usage no npm install needed!

<script type="module">
  import internetarchiveIaMenuSlider from 'https://cdn.skypack.dev/@internetarchive/ia-menu-slider';
</script>

README

Build Status codecov

<ia-menu-slider>

This webcomponent follows the open-wc recommendation.

Installation

npm i @internetarchive/ia-menu-slider

or

yarn add @internetarchive/ia-menu-slider

Usage

<script type="module">
  import '@internetarchive/ia-menu-slider/ia-menu-slider.js';
</script>

<ia-menu-slider></ia-menu-slider>

Supply the element with an array of objects representing the menu items and their submenu components. Each menu item can have these properties:

{
  icon: html``, // The LitHtml literal to render within the menu button
  label: 'Label', // Screen reader label
  id: 'label', // Unique identifier used to track which menu item is selected
  component: html``, // The LitHtml literal to render to the submenu content element. Not needed if followable is true.
  followable: true, // Whether to follow the URL supplied in the href property. Optional.
  href: '#' // If followable is true, URL followed when menu button clicked
}

To toggle the menu open or closed, set the open property on the component.

Styling

ia-menu-slider {
  --menuButtonLabelDisplay: none;
  --menuSliderBg: #151515;
  --primaryTextColor: #fff;
  --menuWidth: 320px;
  --animationTiming: .25s;
  --iconFillColor: #fff;
  --iconStrokeColor: #fff;
  --activeButtonBg: #282828;
}

Linting with ESLint, Prettier, and Types

To scan the project for linting errors, run

yarn lint

Testing with Karma

To run the suite of karma tests, run

yarn test

To run the tests in watch mode (for TDD, for example), run

yarn test:watch

Demoing with Storybook

To run a local instance of Storybook for your component, run

yarn storybook

To build a production version of Storybook, run

yarn storybook:build

Tooling configs

For most of the tools, the configuration is in the package.json to reduce the amount of files in your project.

If you customize the configuration a lot, you can consider moving them to individual files.

Local Demo with es-dev-server

yarn start

To run a local development server that serves the basic demo located in demo/index.html