GithubHelp home page GithubHelp logo

isabella232 / ivy-tabs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ivyapp/ivy-tabs

0.0 0.0 0.0 5.69 MB

WAI-ARIA accessible tabs for Ember.

Home Page: https://ivyapp.github.io/ivy-tabs/

License: MIT License

JavaScript 79.11% HTML 2.96% CSS 0.86% Handlebars 17.08%

ivy-tabs's Introduction

ivy-tabs

Build Status Dependabot Status Ember Observer Score

A group of Ember.js Components that interact to create a WAI-ARIA tab interface.

Special thanks to ic-tabs, which this addon is based on.

NOTE: This addon uses contextual components, which require Ember >= 2.3. For older versions of Ember, use the 1.x release series of this addon.

  • Ember.js v3.12 or above
  • Ember CLI v2.13 or above
  • Node.js v10 or above

Installation

$ ember install ivy-tabs

Usage

Templates

{{#ivy-tabs selection=selection as |tabs|}}
  {{#tabs.tablist tagName="ul" as |tablist|}}
    <li>
      {{#tablist.tab "TabA" on-select=(action (mut selection))}}Foo{{/tablist.tab}}
    </li>
    <li>
      {{#tablist.tab "TabB" on-select=(action (mut selection))}}Bar{{/tablist.tab}}
    </li>
    <li>
      {{#tablist.tab "TabC" on-select=(action (mut selection))}}Baz{{/tablist.tab}}
    </li>
  {{/tabs.tablist}}

  {{#tabs.tabpanel "TabA"}}
    <h2>Foo</h2>
  {{/tabs.tabpanel}}

  {{#tabs.tabpanel "TabB"}}
    <h2>Bar</h2>
  {{/tabs.tabpanel}}

  {{#tabs.tabpanel "TabC"}}
    <h2>Baz</h2>
  {{/tabs.tabpanel}}
{{/ivy-tabs}}

Some things to note:

  • Associations between tabs and panels are explicitly defined by the "models" (the first positional parameter) given to them. In the above example, the given tab models are "TabA", "TabB", and "TabC". This model could be any JavaScript Object that you'd like, they are not required to be strings.
  • An on-select action is sent when a tab is selected. As an argument, it receives the model defined on the tab (for example, when the Foo tab is selected, the on-select event will carry "TabA" as an argument).

Presentation

ivy-tabs does not make any assumptions about how you will present your tabs. Specifically, this means that ivy-tabs will not automatically hide unselected tab panels. Rather, you should update your application styles to reflect your needs.

In an ideal world, your application would carry a CSS rule similar to the following:

[aria-hidden="true"] {
  display: none;
}

If, for some reason, your target audience does not support CSS attribute selectors, you may also opt to instead rely on the ivy-tabs classes by defaulting all panels to being hidden and only displaying the active panel using CSS rules similar to (remember, .active will be different if you override the activeClass property of your ivy-tabs-tabpanel):

.ivy-tabs-tabpanel {
  display: none;
}

.ivy-tabs-tabpanel.active {
  display: block;
}

Contributing

Fork this repo, make a new branch, and send a pull request. Make sure your change is tested or it won't be merged.

Installation

git clone [email protected]:IvyApp/ivy-tabs.git
cd ivy-tabs
npm install

Running

ember server

Then visit your app at http://localhost:4200.

Running Tests

ember test

Or, to start a test server:

ember test --server

Linting

  • npm run lint:js
  • npm run lint:js -- --fix

Building

ember build

For more information on using ember-cli, visit http://ember-cli.com/.

ivy-tabs's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar fsmanuel avatar jonathannewman avatar nbibler avatar omghax avatar smfoote avatar yoranbrondsema avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.