master 80ea04284bf2 cached
385 files
280.5 KB
87.2k tokens
157 symbols
1 requests
Download .txt
Showing preview only (361K chars total). Download the full file or copy to clipboard to get everything.
Repository: mike-north/ember-cli-materialize
Branch: master
Commit: 80ea04284bf2
Files: 385
Total size: 280.5 KB

Directory structure:
gitextract_pahd7ynm/

├── .bowerrc
├── .editorconfig
├── .ember-cli
├── .eslintignore
├── .eslintrc.js
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.md
│       └── feature_request.md
├── .gitignore
├── .jscsrc
├── .jshintrc
├── .npmignore
├── .prettierrc
├── .template-lintrc.js
├── .travis.yml
├── .vscode/
│   └── settings.json
├── .watchmanconfig
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── addon/
│   ├── components/
│   │   ├── -md-fixed-btn-base.js
│   │   ├── md-badge.js
│   │   ├── md-btn-dropdown.js
│   │   ├── md-btn-submit.js
│   │   ├── md-btn.js
│   │   ├── md-card-action.js
│   │   ├── md-card-collapsible.js
│   │   ├── md-card-content.js
│   │   ├── md-card-panel.js
│   │   ├── md-card-reveal.js
│   │   ├── md-card.js
│   │   ├── md-check.js
│   │   ├── md-checks-check.js
│   │   ├── md-checks.js
│   │   ├── md-collapsible.js
│   │   ├── md-collection.js
│   │   ├── md-copyright.js
│   │   ├── md-default-collection-header.js
│   │   ├── md-default-column-header.js
│   │   ├── md-fixed-btn.js
│   │   ├── md-fixed-btns.js
│   │   ├── md-input-date.js
│   │   ├── md-input-field.js
│   │   ├── md-input.js
│   │   ├── md-loader.js
│   │   ├── md-modal-container.js
│   │   ├── md-modal.js
│   │   ├── md-navbar.js
│   │   ├── md-pagination.js
│   │   ├── md-parallax.js
│   │   ├── md-radio.js
│   │   ├── md-radios-radio.js
│   │   ├── md-radios.js
│   │   ├── md-range.js
│   │   ├── md-select.js
│   │   ├── md-switch.js
│   │   ├── md-switches-switch.js
│   │   ├── md-switches.js
│   │   ├── md-tab.js
│   │   ├── md-table-col.js
│   │   ├── md-table.js
│   │   ├── md-tabs.js
│   │   ├── md-textarea.js
│   │   ├── selectable-item-group.js
│   │   └── selectable-item.js
│   ├── helpers/
│   │   └── bw-compat-icon.js
│   ├── mixins/
│   │   ├── group-selectable-item.js
│   │   └── uses-settings.js
│   ├── services/
│   │   └── md-settings.js
│   └── templates/
│       └── components/
│           ├── md-badge.hbs
│           ├── md-btn-dropdown.hbs
│           ├── md-btn.hbs
│           ├── md-card-collapsible.hbs
│           ├── md-card-content.hbs
│           ├── md-card-panel.hbs
│           ├── md-card-reveal.hbs
│           ├── md-card.hbs
│           ├── md-checkbox.hbs
│           ├── md-checks-check.hbs
│           ├── md-collapsible.hbs
│           ├── md-collection.hbs
│           ├── md-copyright.hbs
│           ├── md-default-collection-header.hbs
│           ├── md-default-column-header.hbs
│           ├── md-fixed-btn.hbs
│           ├── md-fixed-btns.hbs
│           ├── md-input-date.hbs
│           ├── md-input.hbs
│           ├── md-loader.hbs
│           ├── md-modal-container.hbs
│           ├── md-modal.hbs
│           ├── md-navbar.hbs
│           ├── md-pagination.hbs
│           ├── md-parallax.hbs
│           ├── md-radio.hbs
│           ├── md-radios-radio.hbs
│           ├── md-range.hbs
│           ├── md-select.hbs
│           ├── md-switch.hbs
│           ├── md-switches-switch.hbs
│           ├── md-tab.hbs
│           ├── md-table-col.hbs
│           ├── md-table.hbs
│           ├── md-tabs.hbs
│           ├── md-textarea.hbs
│           └── selectable-item-group.hbs
├── app/
│   ├── .gitkeep
│   ├── components/
│   │   ├── materialize-badge.js
│   │   ├── materialize-button-submit.js
│   │   ├── materialize-button.js
│   │   ├── materialize-card-action.js
│   │   ├── materialize-card-content.js
│   │   ├── materialize-card-panel.js
│   │   ├── materialize-card-reveal.js
│   │   ├── materialize-card.js
│   │   ├── materialize-checkbox.js
│   │   ├── materialize-checkboxes.js
│   │   ├── materialize-collapsible-card.js
│   │   ├── materialize-collapsible.js
│   │   ├── materialize-copyright.js
│   │   ├── materialize-date-input.js
│   │   ├── materialize-input-field.js
│   │   ├── materialize-input.js
│   │   ├── materialize-loader.js
│   │   ├── materialize-modal.js
│   │   ├── materialize-navbar.js
│   │   ├── materialize-pagination.js
│   │   ├── materialize-parallax.js
│   │   ├── materialize-radio.js
│   │   ├── materialize-radios.js
│   │   ├── materialize-range.js
│   │   ├── materialize-select.js
│   │   ├── materialize-switch.js
│   │   ├── materialize-switches.js
│   │   ├── materialize-tabs-tab.js
│   │   ├── materialize-tabs.js
│   │   ├── materialize-textarea.js
│   │   ├── md-badge.js
│   │   ├── md-btn-dropdown.js
│   │   ├── md-btn-submit.js
│   │   ├── md-btn.js
│   │   ├── md-card-action.js
│   │   ├── md-card-collapsible.js
│   │   ├── md-card-content.js
│   │   ├── md-card-panel.js
│   │   ├── md-card-reveal.js
│   │   ├── md-card.js
│   │   ├── md-check.js
│   │   ├── md-checks-check.js
│   │   ├── md-checks.js
│   │   ├── md-collapsible.js
│   │   ├── md-collection.js
│   │   ├── md-copyright.js
│   │   ├── md-default-collection-header.js
│   │   ├── md-default-column-header.js
│   │   ├── md-fixed-btn.js
│   │   ├── md-fixed-btns.js
│   │   ├── md-input-date.js
│   │   ├── md-input-field.js
│   │   ├── md-input.js
│   │   ├── md-loader.js
│   │   ├── md-modal-container.js
│   │   ├── md-modal.js
│   │   ├── md-navbar.js
│   │   ├── md-pagination.js
│   │   ├── md-parallax.js
│   │   ├── md-radio.js
│   │   ├── md-radios-radio.js
│   │   ├── md-radios.js
│   │   ├── md-range.js
│   │   ├── md-select.js
│   │   ├── md-switch.js
│   │   ├── md-switches-switch.js
│   │   ├── md-switches.js
│   │   ├── md-tab.js
│   │   ├── md-table-col.js
│   │   ├── md-table.js
│   │   ├── md-tabs.js
│   │   └── md-textarea.js
│   ├── helpers/
│   │   └── bw-compat-icon.js
│   ├── initializers/
│   │   ├── add-modals-container.js
│   │   └── md-settings.js
│   ├── services/
│   │   └── md-settings.js
│   └── styles/
│       ├── app.scss
│       └── ember-cli-materialize.scss
├── app.json
├── blueprints/
│   ├── .jshintrc
│   └── ember-cli-materialize/
│       └── index.js
├── bower.json
├── config/
│   ├── ember-try.js
│   ├── environment.js
│   └── release.js
├── ember-cli-build.js
├── index.js
├── jsconfig.json
├── lib/
│   └── try-generate-pages.sh
├── package.json
├── renovate.json
├── testem.js
├── tests/
│   ├── .jshintrc
│   ├── acceptance/
│   │   ├── badges-test.js
│   │   ├── buttons-test.js
│   │   ├── cards-test.js
│   │   ├── collapsible-test.js
│   │   ├── collection-test.js
│   │   ├── copyright-test.js
│   │   ├── forms-test.js
│   │   ├── index-test.js
│   │   ├── loader-test.js
│   │   ├── modal-test.js
│   │   ├── navbar-test.js
│   │   ├── pagination-test.js
│   │   ├── parallax-test.js
│   │   ├── table-test.js
│   │   └── tabs-test.js
│   ├── blanket-options.js
│   ├── dummy/
│   │   ├── app/
│   │   │   ├── app.js
│   │   │   ├── components/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── demo-nav.js
│   │   │   │   ├── example-snippet.js
│   │   │   │   ├── my-column-header.js
│   │   │   │   ├── my-custom-header.js
│   │   │   │   └── options-panel.js
│   │   │   ├── config/
│   │   │   │   └── environment.d.ts
│   │   │   ├── controllers/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── application.js
│   │   │   │   ├── buttons.js
│   │   │   │   ├── collapsible.js
│   │   │   │   ├── collection.js
│   │   │   │   ├── colors.js
│   │   │   │   ├── forms.js
│   │   │   │   ├── loader.js
│   │   │   │   ├── modal.js
│   │   │   │   ├── pagination.js
│   │   │   │   └── tabs.js
│   │   │   ├── helpers/
│   │   │   │   └── .gitkeep
│   │   │   ├── index.html
│   │   │   ├── models/
│   │   │   │   └── .gitkeep
│   │   │   ├── resolver.js
│   │   │   ├── router.js
│   │   │   ├── routes/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── buttons.js
│   │   │   │   ├── collection.js
│   │   │   │   ├── forms.js
│   │   │   │   └── tables.js
│   │   │   ├── styles/
│   │   │   │   ├── app.scss
│   │   │   │   ├── code.scss
│   │   │   │   └── tests.scss
│   │   │   └── templates/
│   │   │       ├── application.hbs
│   │   │       ├── badges.hbs
│   │   │       ├── buttons.hbs
│   │   │       ├── cards.hbs
│   │   │       ├── collapsible.hbs
│   │   │       ├── collection.hbs
│   │   │       ├── colors.hbs
│   │   │       ├── components/
│   │   │       │   ├── .gitkeep
│   │   │       │   ├── component-option.hbs
│   │   │       │   ├── demo-nav.hbs
│   │   │       │   ├── example-header.hbs
│   │   │       │   ├── example-snippet.hbs
│   │   │       │   └── options-panel.hbs
│   │   │       ├── copyright.hbs
│   │   │       ├── forms.hbs
│   │   │       ├── index.hbs
│   │   │       ├── loader.hbs
│   │   │       ├── modal.hbs
│   │   │       ├── navbar.hbs
│   │   │       ├── pagination.hbs
│   │   │       ├── parallax.hbs
│   │   │       ├── snippets/
│   │   │       │   ├── badges-simple.hbs
│   │   │       │   ├── buttons-disabled.hbs
│   │   │       │   ├── buttons-dropdown.hbs
│   │   │       │   ├── buttons-flat.hbs
│   │   │       │   ├── buttons-floating-group.hbs
│   │   │       │   ├── buttons-floating.hbs
│   │   │       │   ├── buttons-large.hbs
│   │   │       │   ├── buttons-raised.hbs
│   │   │       │   ├── buttons-submit.hbs
│   │   │       │   ├── cards-basic.hbs
│   │   │       │   ├── cards-image.hbs
│   │   │       │   ├── cards-panel.hbs
│   │   │       │   ├── cards-reveal.hbs
│   │   │       │   ├── collapsible-accordion.hbs
│   │   │       │   ├── collapsible-action.hbs
│   │   │       │   ├── collapsible-expandable.hbs
│   │   │       │   ├── collapsible-preselected.hbs
│   │   │       │   ├── collection-avatars.hbs
│   │   │       │   ├── collection-basic.hbs
│   │   │       │   ├── collection-header-custom.hbs
│   │   │       │   ├── collection-header.hbs
│   │   │       │   ├── collection-links.hbs
│   │   │       │   ├── collection-secondary-content.hbs
│   │   │       │   ├── copyright-basic.hbs
│   │   │       │   ├── form-validation-basic.hbs
│   │   │       │   ├── input-basic.hbs
│   │   │       │   ├── input-check-basic.hbs
│   │   │       │   ├── input-check-list.hbs
│   │   │       │   ├── input-date-basic.hbs
│   │   │       │   ├── input-radio-list.hbs
│   │   │       │   ├── input-range-basic.hbs
│   │   │       │   ├── input-switch-basic.hbs
│   │   │       │   ├── input-switch-list-exclusive.hbs
│   │   │       │   ├── input-switch-list.hbs
│   │   │       │   ├── input-types.hbs
│   │   │       │   ├── input-with-icon.hbs
│   │   │       │   ├── modal-basic.hbs
│   │   │       │   ├── my-column-header.hbs
│   │   │       │   ├── my-custom-header.hbs
│   │   │       │   ├── navbar-basic.hbs
│   │   │       │   ├── navbar-custom-home.hbs
│   │   │       │   ├── none.hbs
│   │   │       │   ├── pagination-basic.hbs
│   │   │       │   ├── parallax-basic.hbs
│   │   │       │   ├── progress-circular.hbs
│   │   │       │   ├── progress-determinate.hbs
│   │   │       │   ├── progress-indeterminate.hbs
│   │   │       │   ├── select-basic.hbs
│   │   │       │   ├── tables-basic.hbs
│   │   │       │   ├── tables-bordered.hbs
│   │   │       │   ├── tables-centered.hbs
│   │   │       │   ├── tables-custom-cell.hbs
│   │   │       │   ├── tables-custom-header.hbs
│   │   │       │   ├── tables-hoverable.hbs
│   │   │       │   ├── tables-responsive.hbs
│   │   │       │   ├── tables-striped.hbs
│   │   │       │   ├── tabs-basic.hbs
│   │   │       │   ├── tabs-declarative.hbs
│   │   │       │   ├── tabs-optionpaths.hbs
│   │   │       │   ├── text-color.hbs
│   │   │       │   └── textarea-basic.hbs
│   │   │       ├── tables.hbs
│   │   │       └── tabs.hbs
│   │   ├── config/
│   │   │   ├── environment.js
│   │   │   ├── optional-features.json
│   │   │   └── targets.js
│   │   └── public/
│   │       ├── crossdomain.xml
│   │       └── robots.txt
│   ├── helpers/
│   │   ├── destroy-app.js
│   │   ├── module-for-acceptance.js
│   │   ├── resolver.js
│   │   ├── selectable-item-group.js
│   │   ├── selectable-item.js
│   │   └── start-app.js
│   ├── index.html
│   ├── integration/
│   │   └── components/
│   │       ├── md-btn-dropdown-test.js
│   │       ├── md-pagination-test.js
│   │       └── md-select-test.js
│   ├── test-helper.js
│   └── unit/
│       ├── .gitkeep
│       ├── components/
│       │   ├── materialize-badge-test.js
│       │   ├── materialize-button-dropdown-test.js
│       │   ├── materialize-button-submit-test.js
│       │   ├── materialize-button-test.js
│       │   ├── materialize-card-action-test.js
│       │   ├── materialize-card-content-test.js
│       │   ├── materialize-card-panel-test.js
│       │   ├── materialize-card-reveal-test.js
│       │   ├── materialize-card-test.js
│       │   ├── materialize-checkbox-test.js
│       │   ├── materialize-checkboxes-test.js
│       │   ├── materialize-collapsible-card-test.js
│       │   ├── materialize-collapsible-test.js
│       │   ├── materialize-copyright-test.js
│       │   ├── materialize-date-input-test.js
│       │   ├── materialize-input-field-test.js
│       │   ├── materialize-input-test.js
│       │   ├── materialize-loader-test.js
│       │   ├── materialize-pagination-test.js
│       │   ├── materialize-parallax-test.js
│       │   ├── materialize-radios-test.js
│       │   ├── materialize-range-test.js
│       │   ├── materialize-switch-test.js
│       │   ├── materialize-switches-test.js
│       │   ├── materialize-tabs-tab-test.js
│       │   ├── materialize-tabs-test.js
│       │   ├── materialize-textarea-test.js
│       │   ├── md-collection-test.js
│       │   ├── md-fixed-btn-test.js
│       │   ├── md-fixed-btns-test.js
│       │   └── md-modal-container-test.js
│       ├── helpers/
│       │   └── bw-compat-icon-test.js
│       ├── initializers/
│       │   └── md-settings-test.js
│       └── services/
│           └── md-settings-test.js
└── vendor/
    ├── .gitkeep
    └── highlight.pack.js

================================================
FILE CONTENTS
================================================

================================================
FILE: .bowerrc
================================================
{
  "directory": "bower_components",
  "analytics": false
}


================================================
FILE: .editorconfig
================================================
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org

root = true


[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2

[*.hbs]
insert_final_newline = false

[*.{diff,md}]
trim_trailing_whitespace = false


================================================
FILE: .ember-cli
================================================
{
  /**
    Ember CLI sends analytics information by default. The data is completely
    anonymous, but there are times when you might want to disable this behavior.

    Setting `disableAnalytics` to true will prevent any data from being sent.
  */
  "disableAnalytics": false
}


================================================
FILE: .eslintignore
================================================
# unconventional js
/blueprints/*/files/
/vendor/

# compiled output
/dist/
/tmp/

# dependencies
/bower_components/

# misc
/coverage/
!.*

# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try


================================================
FILE: .eslintrc.js
================================================
/* eslint-env node */
module.exports = {
  root: true,
  parserOptions: {
    ecmaVersion: 2017,
    sourceType: 'module'
  },
  plugins: [
    'ember'
  ],
  extends: [
    'eslint:recommended',
    'plugin:ember/recommended'
  ],
  env: {
    browser: true
  },
  rules: {
    "ember/use-brace-expansion": 1,
    "ember/no-on-calls-in-components": 1,
    "ember/avoid-leaking-state-in-ember-objects": 1,
    "ember/closure-actions": 1,
    "ember/no-global-jquery": 1
  },
  overrides: [
    // node files
    {
      files: [
        'index.js',
        'testem.js',
        'ember-cli-build.js',
        'config/**/*.js',
        'tests/dummy/config/**/*.js'
      ],
      excludedFiles: [
        'app/**',
        'addon/**'
      ],
      parserOptions: {
        sourceType: 'script',
        ecmaVersion: 2015
      },
      env: {
        browser: false,
        node: true
      },
      plugins: ['node'],
      rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
        // add your custom rules and overrides for node files here
      })
    },

    // test files
    {
      files: ['tests/**/*.js'],
      excludedFiles: ['tests/dummy/**/*.js'],
      env: {
        embertest: true
      }
    }
  ]
};


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''

---

**Describe the bug**
A clear and concise description of what the bug is.

**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error

**Expected behavior**
A clear and concise description of what you expected to happen.

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Desktop (please complete the following information):**
 - Browser [e.g. chrome, safari]
 - Library Version [e.g. 22]

**Additional context**
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe the solution you'd like**
A clear and concise description of what you want to happen.

**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .gitignore
================================================
# See https://help.github.com/ignore-files/ for more about ignoring files.

# compiled output
/dist/
/tmp/

# dependencies
/bower_components/
/node_modules/

# misc
/.sass-cache
/connect.lock
/coverage/
/libpeerconnection.log
/npm-debug.log*
/testem.log
/yarn-error.log

# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try


================================================
FILE: .jscsrc
================================================
{
  "preset": "ember-suave",
  "excludeFiles": ["blanket-options.js"],
  "requireParenthesesAroundArrowParam": null,
  "disallowConstOutsideModuleScope": null
}


================================================
FILE: .jshintrc
================================================
{
  "predef": [
    "document",
    "window",
    "-Promise"
  ],
  "browser": true,
  "boss": true,
  "curly": true,
  "debug": false,
  "devel": true,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true,
  "unused": true
}


================================================
FILE: .npmignore
================================================
# compiled output
/dist/
/tmp/

# dependencies
/bower_components/

# misc
/.bowerrc
/.editorconfig
/.ember-cli
/.eslintignore
/.eslintrc.js
/.gitignore
/.template-lintrc.js
/.travis.yml
/.watchmanconfig
/bower.json
/config/ember-try.js
/ember-cli-build.js
/testem.js
/tests/
/yarn.lock
.gitkeep

# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try


================================================
FILE: .prettierrc
================================================
{
  "singleQuote": true,
  "bracketSpacing": true,
  "trailingComma": "none",
  "useTabs": false,
  "tabWidth": 2,
  "printWidth": 120,
  "semi": true
}


================================================
FILE: .template-lintrc.js
================================================
/* eslint-env node */
'use strict';

module.exports = {
  extends: 'recommended'
};


================================================
FILE: .travis.yml
================================================
language: node_js
node_js:
- '8'
sudo: false
dist: trusty
addons:
  chrome: stable
cache:
  yarn: true
yarn: true
env:
  global:
  - JOBS=1

stages:
  - 'Tests'
  - 'Additional Tests'
  - 'Canary Tests'
  - name: 'Deploy'
    if: branch = master AND type = push

jobs:
  fail_fast: true
  allow_failures:
  - env: EMBER_TRY_SCENARIO=ember-canary
  include:
  - stage: Tests
    name: Tests
    install:
    - yarn install --non-interactive && bower install
    script:
    - yarn lint:js && ember test
  - name: Floating Dependencies
    script:
    - ember test
  - stage: Additional Tests
    node_js: 10
    env: EMBER_TRY_SCENARIO=ember-1.13
  - env: EMBER_TRY_SCENARIO=ember-lts-2.16
  - env: EMBER_TRY_SCENARIO=ember-lts-2.18
  - env: EMBER_TRY_SCENARIO=ember-release
  - env: EMBER_TRY_SCENARIO=ember-beta
  - env: EMBER_TRY_SCENARIO=ember-default-with-jquery
  - stage: 'Canary Tests'
    script:
      - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO
    env: EMBER_TRY_SCENARIO=ember-canary
  - stage: 'Deploy'
    name: 'Publish to npm'
    install:
      - yarn install --non-interactive
    script: yarn semantic-release

before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash
- export PATH=$HOME/.yarn/bin:$PATH
- npm install -g bower
install:
- yarn install --no-lockfile --non-interactive && bower install
script:
- yarn lint:js && ember try:one $EMBER_TRY_SCENARIO
deploy:
  provider: heroku
  api_key:
    secure: MZDN5BsZUmmxIkOGDC1/fLem7B0E1xoTTX62P/UyzHaNTByQBEBilzhqxarfBVJ+jkrDHVLB4iPxeZKoQhphmdYCBDJvZlPTLmRcSaHBy+m80JfPvm9lkOuTVVklNjcJuwhSLC9rlRxNRL6sVbfJUgOwx/lFEKXyUYVc5Y1Cn6A=
  app: ember-materialize-demo
  on:
    repo: mike-north/ember-cli-materialize
    condition: "$EMBER_TRY_SCENARIO = ember-release"


================================================
FILE: .vscode/settings.json
================================================
{
  "javascript.implicitProjectConfig.checkJs": true,
  "editor.formatOnSave": false
}

================================================
FILE: .watchmanconfig
================================================
{
  "ignore_dirs": ["tmp", "dist"]
}


================================================
FILE: CHANGELOG.md
================================================
# [0.24.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.23.0...v0.24.0) (2019-03-03)


### Features

* remove ember-new-computed dependency ([e3ab9f4](https://github.com/mike-north/ember-cli-materialize/commit/e3ab9f4))

# [0.23.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.22.0...v0.23.0) (2019-02-14)


### Features

* trigger actions from md-select. ([#716](https://github.com/mike-north/ember-cli-materialize/issues/716)) ([b8e9821](https://github.com/mike-north/ember-cli-materialize/commit/b8e9821))

# [0.22.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.21.0...v0.22.0) (2018-11-10)


### Features

* upgrade to ember 3 ([d7a8d4c](https://github.com/mike-north/ember-cli-materialize/commit/d7a8d4c))

# Change Log

## [v0.18.1](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.1) (2015-08-17)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.18.0...v0.18.1)

**Fixed bugs:**

- md-btn isDisabled doesn't disable event [\#201](https://github.com/mike-north/ember-cli-materialize/issues/201)

- Upgraded to master & materialize 0.97 - modals have lost the translucent overlay, and have z-index issues [\#192](https://github.com/mike-north/ember-cli-materialize/issues/192)

- ember-radio-button v1.0.4 causing deprecation warning, updating breaks radio buttons [\#178](https://github.com/mike-north/ember-cli-materialize/issues/178)

- Update docs to reflect buttonType correctly [\#164](https://github.com/mike-north/ember-cli-materialize/issues/164)

- Override `waves-light` [\#157](https://github.com/mike-north/ember-cli-materialize/issues/157)

- Odd blue line showing up when using the datepicker [\#140](https://github.com/mike-north/ember-cli-materialize/issues/140)

**Merged pull requests:**

- Allow customization of button waves [\#210](https://github.com/mike-north/ember-cli-materialize/pull/210) ([mike-north](https://github.com/mike-north))

- Button actions shouldn't fire when in disabled state [\#209](https://github.com/mike-north/ember-cli-materialize/pull/209) ([mike-north](https://github.com/mike-north))

## [v0.18.0](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.0) (2015-08-17)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.4...v0.18.0)

**Closed issues:**

- Deprecation warnings [\#176](https://github.com/mike-north/ember-cli-materialize/issues/176)

**Merged pull requests:**

- Autofocus Support on input field [\#208](https://github.com/mike-north/ember-cli-materialize/pull/208) ([cmanou](https://github.com/cmanou))

- Kill deprecations [\#207](https://github.com/mike-north/ember-cli-materialize/pull/207) ([mike-north](https://github.com/mike-north))

- Use v0.4.0 of ember-key-responder [\#191](https://github.com/mike-north/ember-cli-materialize/pull/191) ([mike-north](https://github.com/mike-north))

## [v0.17.4](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.4) (2015-08-15)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.3...v0.17.4)

**Closed issues:**

- md-modal computed property with @each leaf causing assertion failure in canary [\#202](https://github.com/mike-north/ember-cli-materialize/issues/202)

- Installation of the addon breaks auto-generated tests [\#199](https://github.com/mike-north/ember-cli-materialize/issues/199)

- How can i use the md-input small validation message with ember-validations? [\#198](https://github.com/mike-north/ember-cli-materialize/issues/198)

- Remove {{bind-attr}} [\#168](https://github.com/mike-north/ember-cli-materialize/issues/168)

**Merged pull requests:**

- Style/Testing Cleanup [\#206](https://github.com/mike-north/ember-cli-materialize/pull/206) ([mike-north](https://github.com/mike-north))

- \[Canary\] Replaced '@each' computed property with '\[\]' \(fixes \#202\) [\#203](https://github.com/mike-north/ember-cli-materialize/pull/203) ([mdehoog](https://github.com/mdehoog))

- Switched md-btn-dropdown boolean attributes to use booleans [\#200](https://github.com/mike-north/ember-cli-materialize/pull/200) ([mdehoog](https://github.com/mdehoog))

- Using elementId in dropdown instead of element.id [\#196](https://github.com/mike-north/ember-cli-materialize/pull/196) ([unmanbearpig](https://github.com/unmanbearpig))

- Fixed closeModal action name \(fixes \#193\) [\#194](https://github.com/mike-north/ember-cli-materialize/pull/194) ([mdehoog](https://github.com/mdehoog))

## [v0.17.3](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.3) (2015-07-31)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.2...v0.17.3)

**Closed issues:**

- Modal only closes if close action is called 'closeModal' [\#193](https://github.com/mike-north/ember-cli-materialize/issues/193)

- No placeholder option for md-input [\#188](https://github.com/mike-north/ember-cli-materialize/issues/188)

- Recent changes to validations? [\#186](https://github.com/mike-north/ember-cli-materialize/issues/186)

- Switch and Check seem to have issue with missing ember-composability  [\#181](https://github.com/mike-north/ember-cli-materialize/issues/181)

**Merged pull requests:**

- Add ember-legacy-views [\#190](https://github.com/mike-north/ember-cli-materialize/pull/190) ([mike-north](https://github.com/mike-north))

- Remove Ember.keys deprecation warning [\#189](https://github.com/mike-north/ember-cli-materialize/pull/189) ([mdehoog](https://github.com/mdehoog))

- Observer timing issues [\#187](https://github.com/mike-north/ember-cli-materialize/pull/187) ([brandonparsons](https://github.com/brandonparsons))

- Make dat homeRoute customizable!!! [\#185](https://github.com/mike-north/ember-cli-materialize/pull/185) ([rtablada](https://github.com/rtablada))

- input type should be tel [\#184](https://github.com/mike-north/ember-cli-materialize/pull/184) ([basz](https://github.com/basz))

- Deprecation fixes - convert each-in to each-as [\#180](https://github.com/mike-north/ember-cli-materialize/pull/180) ([mike-north](https://github.com/mike-north))

## [v0.17.2](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.2) (2015-07-14)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.1...v0.17.2)

**Closed issues:**

- Error on new project: unbound variable $mdi-list-icons [\#171](https://github.com/mike-north/ember-cli-materialize/issues/171)

**Merged pull requests:**

- Fix leftover "disabled" debug legend on checkbox [\#182](https://github.com/mike-north/ember-cli-materialize/pull/182) ([LexLythius](https://github.com/LexLythius))

- fix-anchor [\#179](https://github.com/mike-north/ember-cli-materialize/pull/179) ([ladyleet](https://github.com/ladyleet))

- Removed blueprint temporary fix for materialize.css that is no longer [\#177](https://github.com/mike-north/ember-cli-materialize/pull/177) ([mnannola](https://github.com/mnannola))

- Feature/md btn dropdown [\#162](https://github.com/mike-north/ember-cli-materialize/pull/162) ([basz](https://github.com/basz))

## [v0.17.1](https://github.com/mike-north/ember-cli-materialize/tree/v0.17.1) (2015-07-12)

[Full Changelog](https://github.com/mike-north/ember-cli-materialize/compare/v0.17.0...v0.17.1)

**Merged pull requests:**

- Ember-composability [\#175](https://github.com/mike-north/ember-cli-materialize/pull/175) ([mike-north](https://github.com/mike-north))

## [v0.17.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.2) (2015-07-14)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.17.1...v0.17.2)

**Closed issues:**

- Error on new project: unbound variable $mdi-list-icons [\#171](https://github.com/truenorth/ember-cli-materialize/issues/171)

**Merged pull requests:**

- Fix leftover "disabled" debug legend on checkbox [\#182](https://github.com/truenorth/ember-cli-materialize/pull/182) ([LexLythius](https://github.com/LexLythius))

- fix-anchor [\#179](https://github.com/truenorth/ember-cli-materialize/pull/179) ([ladyleet](https://github.com/ladyleet))

- Removed blueprint temporary fix for materialize.css that is no longer [\#177](https://github.com/truenorth/ember-cli-materialize/pull/177) ([mnannola](https://github.com/mnannola))

- Feature/md btn dropdown [\#162](https://github.com/truenorth/ember-cli-materialize/pull/162) ([basz](https://github.com/basz))

## [v0.17.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.1) (2015-07-12)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.17.0...v0.17.1)

**Merged pull requests:**

- Ember-composability [\#175](https://github.com/truenorth/ember-cli-materialize/pull/175) ([truenorth](https://github.com/truenorth))

## [v0.17.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.17.0) (2015-07-11)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.4...v0.17.0)

**Merged pull requests:**

- minor-color-edits-and-colors-page-additions [\#174](https://github.com/truenorth/ember-cli-materialize/pull/174) ([ladyleet](https://github.com/ladyleet))

- colors-page [\#173](https://github.com/truenorth/ember-cli-materialize/pull/173) ([ladyleet](https://github.com/ladyleet))

- Remove all instances of bind-attr [\#169](https://github.com/truenorth/ember-cli-materialize/pull/169) ([MattMSumner](https://github.com/MattMSumner))

## [v0.16.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.4) (2015-07-11)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.3...v0.16.4)

**Merged pull requests:**

- Update to ember-cli 1.13.1 [\#170](https://github.com/truenorth/ember-cli-materialize/pull/170) ([truenorth](https://github.com/truenorth))

## [v0.16.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.3) (2015-07-05)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.2...v0.16.3)

**Fixed bugs:**

- issue with modal not being on top [\#166](https://github.com/truenorth/ember-cli-materialize/issues/166)

**Merged pull requests:**

- Modal fixes, blueprint update [\#167](https://github.com/truenorth/ember-cli-materialize/pull/167) ([truenorth](https://github.com/truenorth))

## [v0.16.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.2) (2015-07-03)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.1...v0.16.2)

**Merged pull requests:**

- Configurable default values [\#165](https://github.com/truenorth/ember-cli-materialize/pull/165) ([truenorth](https://github.com/truenorth))

## [v0.16.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.1) (2015-07-03)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.16.0...v0.16.1)

**Implemented enhancements:**

- Sending an action argument within a button action [\#153](https://github.com/truenorth/ember-cli-materialize/issues/153)

- Actions can not be passed to SelectableItem sub classes [\#102](https://github.com/truenorth/ember-cli-materialize/issues/102)

**Closed issues:**

- Support projects using broccoli-less [\#146](https://github.com/truenorth/ember-cli-materialize/issues/146)

- LinkView deprecation [\#144](https://github.com/truenorth/ember-cli-materialize/issues/144)

- cannot find module 'handlebars' [\#123](https://github.com/truenorth/ember-cli-materialize/issues/123)

- consider making collapsibles actionable [\#112](https://github.com/truenorth/ember-cli-materialize/issues/112)

- Get ember-canary on critical CI path again [\#71](https://github.com/truenorth/ember-cli-materialize/issues/71)

**Merged pull requests:**

- Pass argument along with action, when md-btn fires  [\#161](https://github.com/truenorth/ember-cli-materialize/pull/161) ([truenorth](https://github.com/truenorth))

## [v0.16.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.16.0) (2015-07-03)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.11...v0.16.0)

**Merged pull requests:**

- Tables [\#160](https://github.com/truenorth/ember-cli-materialize/pull/160) ([truenorth](https://github.com/truenorth))

- Collections [\#159](https://github.com/truenorth/ember-cli-materialize/pull/159) ([truenorth](https://github.com/truenorth))

## [v0.15.11](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.11) (2015-07-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.10...v0.15.11)

**Closed issues:**

- Ember 1.13 [\#156](https://github.com/truenorth/ember-cli-materialize/issues/156)

**Merged pull requests:**

- Redo all examples on demo site as code snippets [\#158](https://github.com/truenorth/ember-cli-materialize/pull/158) ([truenorth](https://github.com/truenorth))

## [v0.15.10](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.10) (2015-06-30)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.9...v0.15.10)

## [v0.15.9](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.9) (2015-06-30)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.8...v0.15.9)

## [v0.15.8](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.8) (2015-06-30)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.7...v0.15.8)

## [v0.15.7](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.7) (2015-06-30)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.6...v0.15.7)

## [v0.15.6](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.6) (2015-06-30)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.5...v0.15.6)

**Closed issues:**

- Sidnav mobile - links don't work on iOS / Mobile Safari [\#147](https://github.com/truenorth/ember-cli-materialize/issues/147)

**Merged pull requests:**

- Enable CI testing against ember release channel [\#155](https://github.com/truenorth/ember-cli-materialize/pull/155) ([truenorth](https://github.com/truenorth))

- Cleanup to finish repository transfer [\#154](https://github.com/truenorth/ember-cli-materialize/pull/154) ([truenorth](https://github.com/truenorth))

- Ember 1.13 workarounds [\#152](https://github.com/truenorth/ember-cli-materialize/pull/152) ([truenorth](https://github.com/truenorth))

- fix typo in md-input-date [\#151](https://github.com/truenorth/ember-cli-materialize/pull/151) ([nflbeezy](https://github.com/nflbeezy))

- md-check, md-radio, md-switch fire actions on state change [\#138](https://github.com/truenorth/ember-cli-materialize/pull/138) ([truenorth](https://github.com/truenorth))

- Add example of snippet-based demo page [\#137](https://github.com/truenorth/ember-cli-materialize/pull/137) ([truenorth](https://github.com/truenorth))

## [v0.15.5](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.5) (2015-06-22)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.4...v0.15.5)

**Fixed bugs:**

- \[Bug\] Navbar unresonsible on iPad [\#141](https://github.com/truenorth/ember-cli-materialize/issues/141)

**Closed issues:**

- How did you guys manage to get a logo in the nav bar on the demo page? [\#143](https://github.com/truenorth/ember-cli-materialize/issues/143)

- Help with dropdown nav bar? [\#135](https://github.com/truenorth/ember-cli-materialize/issues/135)

- Cannot deselect item with md-checks and others if multiple=false [\#133](https://github.com/truenorth/ember-cli-materialize/issues/133)

- /Users/username/appName/tmp/tree\_merger-tmp\_dest\_dir-NKY037BG.tmp/app/styles/app.\[scss|sass\] does not exist [\#132](https://github.com/truenorth/ember-cli-materialize/issues/132)

**Merged pull requests:**

- Update modal.hbs [\#145](https://github.com/truenorth/ember-cli-materialize/pull/145) ([samselikoff](https://github.com/samselikoff))

- Fix demo's sidenav for mobile  [\#142](https://github.com/truenorth/ember-cli-materialize/pull/142) ([truenorth](https://github.com/truenorth))

- Revert "Move sassOptions to Brocfile" [\#139](https://github.com/truenorth/ember-cli-materialize/pull/139) ([truenorth](https://github.com/truenorth))

- Fix issue \#133 [\#134](https://github.com/truenorth/ember-cli-materialize/pull/134) ([LexLythius](https://github.com/LexLythius))

## [v0.15.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.4) (2015-06-08)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.3...v0.15.4)

**Fixed bugs:**

- Deprecation on ember-cli 0.2.6 [\#125](https://github.com/truenorth/ember-cli-materialize/issues/125)

**Merged pull requests:**

- Sidenav instead of navbar for demo app [\#129](https://github.com/truenorth/ember-cli-materialize/pull/129) ([truenorth](https://github.com/truenorth))

- make md-collapsible actionable [\#128](https://github.com/truenorth/ember-cli-materialize/pull/128) ([foxnewsnetwork](https://github.com/foxnewsnetwork))

## [v0.15.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.3) (2015-06-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.2...v0.15.3)

**Merged pull requests:**

- Ember-cli 0.2.6 [\#127](https://github.com/truenorth/ember-cli-materialize/pull/127) ([truenorth](https://github.com/truenorth))

## [v0.15.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.2) (2015-06-01)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.1...v0.15.2)

**Merged pull requests:**

- Adds "demoURL" to package.json [\#126](https://github.com/truenorth/ember-cli-materialize/pull/126) ([gcollazo](https://github.com/gcollazo))

## [v0.15.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.1) (2015-05-28)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.15.0...v0.15.1)

**Closed issues:**

- Get rid of the pyramid of doom [\#110](https://github.com/truenorth/ember-cli-materialize/issues/110)

**Merged pull requests:**

- \[Bugfix\] md-tabs Indicator position not updated if content set after selection [\#122](https://github.com/truenorth/ember-cli-materialize/pull/122) ([truenorth](https://github.com/truenorth))

## [v0.15.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.15.0) (2015-05-27)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.14.1...v0.15.0)

**Closed issues:**

- \(roadmap || priority\) to include slider [\#121](https://github.com/truenorth/ember-cli-materialize/issues/121)

- md-card: passing a handlebars expression inside title hash [\#100](https://github.com/truenorth/ember-cli-materialize/issues/100)

## [v0.14.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.14.1) (2015-05-25)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.14.0...v0.14.1)

**Fixed bugs:**

- \[Glimmer\] Card titles do not render [\#113](https://github.com/truenorth/ember-cli-materialize/issues/113)

**Merged pull requests:**

- \[BUGFIX\] Glimmer fixes [\#119](https://github.com/truenorth/ember-cli-materialize/pull/119) ([truenorth](https://github.com/truenorth))

## [v0.14.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.14.0) (2015-05-25)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.7...v0.14.0)

**Fixed bugs:**

- Deprecation warning: sassOptions should be moved to your Brocfile [\#109](https://github.com/truenorth/ember-cli-materialize/issues/109)

**Closed issues:**

- md-checks optionLabelPath appears dysfunctional [\#120](https://github.com/truenorth/ember-cli-materialize/issues/120)

- Update ember-modal-dialog to 0.7.0 [\#115](https://github.com/truenorth/ember-cli-materialize/issues/115)

- Bad contrast on demo page's hero unit [\#105](https://github.com/truenorth/ember-cli-materialize/issues/105)

**Merged pull requests:**

- Move sassOptions to Brocfile [\#118](https://github.com/truenorth/ember-cli-materialize/pull/118) ([truenorth](https://github.com/truenorth))

- \[Enhancement\] Floating button group [\#117](https://github.com/truenorth/ember-cli-materialize/pull/117) ([truenorth](https://github.com/truenorth))

- Update ember-modal-dialog to 0.7.0 [\#116](https://github.com/truenorth/ember-cli-materialize/pull/116) ([truenorth](https://github.com/truenorth))

## [v0.13.7](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.7) (2015-05-21)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.6...v0.13.7)

**Closed issues:**

- Installation fails on ember-cli 0.2.3 [\#101](https://github.com/truenorth/ember-cli-materialize/issues/101)

**Merged pull requests:**

- Fixed floating button group example in docs [\#114](https://github.com/truenorth/ember-cli-materialize/pull/114) ([truenorth](https://github.com/truenorth))

- First revamp of demo page [\#111](https://github.com/truenorth/ember-cli-materialize/pull/111) ([truenorth](https://github.com/truenorth))

- Ember-cli 0.2.5 [\#108](https://github.com/truenorth/ember-cli-materialize/pull/108) ([truenorth](https://github.com/truenorth))

- Fixed possible XSS bug in md-loader style binding [\#107](https://github.com/truenorth/ember-cli-materialize/pull/107) ([truenorth](https://github.com/truenorth))

## [v0.13.6](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.6) (2015-05-16)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.5...v0.13.6)

**Fixed bugs:**

- Navbar problem [\#90](https://github.com/truenorth/ember-cli-materialize/issues/90)

**Closed issues:**

- Uncaught TypeError: Cannot read property 'indexOf' of undefined [\#103](https://github.com/truenorth/ember-cli-materialize/issues/103)

- Improve documentation for forms [\#95](https://github.com/truenorth/ember-cli-materialize/issues/95)

**Merged pull requests:**

- Update to ember-cli 0.2.4 [\#104](https://github.com/truenorth/ember-cli-materialize/pull/104) ([truenorth](https://github.com/truenorth))

## [v0.13.5](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.5) (2015-04-27)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.4...v0.13.5)

**Closed issues:**

- addon changed my application.hbs and my arrangement in config/environment  :-\( [\#89](https://github.com/truenorth/ember-cli-materialize/issues/89)

- Publish v0.13.4 to NPM [\#88](https://github.com/truenorth/ember-cli-materialize/issues/88)

- Modal issue [\#81](https://github.com/truenorth/ember-cli-materialize/issues/81)

**Merged pull requests:**

- Fix deprecation in navbar docs [\#91](https://github.com/truenorth/ember-cli-materialize/pull/91) ([truenorth](https://github.com/truenorth))

## [v0.13.4](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.4) (2015-04-24)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.3...v0.13.4)

**Closed issues:**

- Trouble with buttons [\#79](https://github.com/truenorth/ember-cli-materialize/issues/79)

- Simple arrays [\#74](https://github.com/truenorth/ember-cli-materialize/issues/74)

- Binding value [\#28](https://github.com/truenorth/ember-cli-materialize/issues/28)

**Merged pull requests:**

- Modal container component, modal documentation improvements [\#83](https://github.com/truenorth/ember-cli-materialize/pull/83) ([truenorth](https://github.com/truenorth))

- \[Bugfix\] Handle nested addons properly [\#80](https://github.com/truenorth/ember-cli-materialize/pull/80) ([truenorth](https://github.com/truenorth))

- \[Bugfix\] Select - simple array case [\#78](https://github.com/truenorth/ember-cli-materialize/pull/78) ([truenorth](https://github.com/truenorth))

- \[Refactor\] Remove liquid fire [\#77](https://github.com/truenorth/ember-cli-materialize/pull/77) ([truenorth](https://github.com/truenorth))

## [v0.13.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.3) (2015-04-23)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.2...v0.13.3)

**Closed issues:**

- Style broken in Safari [\#73](https://github.com/truenorth/ember-cli-materialize/issues/73)

**Merged pull requests:**

- \[Bugfix\] Datepicker input now updates bound value [\#76](https://github.com/truenorth/ember-cli-materialize/pull/76) ([truenorth](https://github.com/truenorth))

## [v0.13.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.2) (2015-04-22)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.1...v0.13.2)

**Merged pull requests:**

- Fixed classnamebinding in md-select [\#75](https://github.com/truenorth/ember-cli-materialize/pull/75) ([pajter](https://github.com/pajter))

## [v0.13.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.1) (2015-04-21)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.13.0...v0.13.1)

**Merged pull requests:**

- New CP syntax, cleanup, formatting [\#70](https://github.com/truenorth/ember-cli-materialize/pull/70) ([truenorth](https://github.com/truenorth))

- md-\* helpers [\#69](https://github.com/truenorth/ember-cli-materialize/pull/69) ([truenorth](https://github.com/truenorth))

- Modal [\#65](https://github.com/truenorth/ember-cli-materialize/pull/65) ([truenorth](https://github.com/truenorth))

## [v0.13.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.13.0) (2015-04-16)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.12.0...v0.13.0)

**Merged pull requests:**

- added configuration block in README [\#68](https://github.com/truenorth/ember-cli-materialize/pull/68) ([hanloong](https://github.com/hanloong))

- Forms - Checkbox, Radio, Switch, Range and Checkbox/Radio/Switch List components [\#64](https://github.com/truenorth/ember-cli-materialize/pull/64) ([truenorth](https://github.com/truenorth))

## [v0.12.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.12.0) (2015-04-16)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.3...v0.12.0)

**Merged pull requests:**

- ES6ification [\#66](https://github.com/truenorth/ember-cli-materialize/pull/66) ([truenorth](https://github.com/truenorth))

- Re-enable stylesheet in qunit test runner [\#61](https://github.com/truenorth/ember-cli-materialize/pull/61) ([truenorth](https://github.com/truenorth))

- Pagination [\#58](https://github.com/truenorth/ember-cli-materialize/pull/58) ([truenorth](https://github.com/truenorth))

## [v0.11.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.3) (2015-04-16)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.2...v0.11.3)

**Merged pull requests:**

- WIP - Modal [\#63](https://github.com/truenorth/ember-cli-materialize/pull/63) ([truenorth](https://github.com/truenorth))

## [v0.11.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.2) (2015-04-15)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.1...v0.11.2)

**Closed issues:**

- Crashes on startup [\#48](https://github.com/truenorth/ember-cli-materialize/issues/48)

- If the browser fills the input with a value on page load then the label is not set to active [\#43](https://github.com/truenorth/ember-cli-materialize/issues/43)

**Merged pull requests:**

- \[Bugfix\] Teardown pickadate and collapsible events [\#62](https://github.com/truenorth/ember-cli-materialize/pull/62) ([jasonmit](https://github.com/jasonmit))

- Run ember-try on travis-ci parallel [\#60](https://github.com/truenorth/ember-cli-materialize/pull/60) ([truenorth](https://github.com/truenorth))

- Update travis.yml to use PhantomJS 2.0 [\#59](https://github.com/truenorth/ember-cli-materialize/pull/59) ([truenorth](https://github.com/truenorth))

- ES6ification [\#57](https://github.com/truenorth/ember-cli-materialize/pull/57) ([truenorth](https://github.com/truenorth))

- Form \(switch, check box, range, radio buttons\) [\#46](https://github.com/truenorth/ember-cli-materialize/pull/46) ([truenorth](https://github.com/truenorth))

## [v0.11.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.1) (2015-04-11)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.11.0...v0.11.1)

**Merged pull requests:**

- Use non-beta version of ember-cli-sass to address dependency issues. [\#56](https://github.com/truenorth/ember-cli-materialize/pull/56) ([rynam0](https://github.com/rynam0))

## [v0.11.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.11.0) (2015-04-10)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.10.0...v0.11.0)

**Merged pull requests:**

- Tabs  [\#34](https://github.com/truenorth/ember-cli-materialize/pull/34) ([truenorth](https://github.com/truenorth))

## [v0.10.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.10.0) (2015-04-10)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.3...v0.10.0)

**Merged pull requests:**

- Create component for footer [\#53](https://github.com/truenorth/ember-cli-materialize/pull/53) ([franktcurran](https://github.com/franktcurran))

## [v0.9.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.3) (2015-04-09)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.2...v0.9.3)

**Merged pull requests:**

- Upgrade ember-cli-sass to 4.0.0-beta.4 [\#55](https://github.com/truenorth/ember-cli-materialize/pull/55) ([truenorth](https://github.com/truenorth))

## [v0.9.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.2) (2015-04-08)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.1...v0.9.2)

**Merged pull requests:**

- Ember-cli 0.2.3, Don't rely on prototype extensions [\#54](https://github.com/truenorth/ember-cli-materialize/pull/54) ([truenorth](https://github.com/truenorth))

## [v0.9.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.1) (2015-04-07)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.9.0...v0.9.1)

**Closed issues:**

- Fresh install results in error in config/environment.js [\#50](https://github.com/truenorth/ember-cli-materialize/issues/50)

- Ember-cli crashes with V0.9.0 of addon [\#42](https://github.com/truenorth/ember-cli-materialize/issues/42)

**Merged pull requests:**

- Fix blueprint [\#51](https://github.com/truenorth/ember-cli-materialize/pull/51) ([truenorth](https://github.com/truenorth))

- Restore ember-1.10 compatibility, and add ember-try [\#49](https://github.com/truenorth/ember-cli-materialize/pull/49) ([truenorth](https://github.com/truenorth))

- Refactor cards-test [\#45](https://github.com/truenorth/ember-cli-materialize/pull/45) ([truenorth](https://github.com/truenorth))

- Code climate improvements [\#44](https://github.com/truenorth/ember-cli-materialize/pull/44) ([truenorth](https://github.com/truenorth))

## [v0.9.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.9.0) (2015-04-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.8.1...v0.9.0)

**Closed issues:**

- icons not showing [\#41](https://github.com/truenorth/ember-cli-materialize/issues/41)

**Merged pull requests:**

- Loader component [\#37](https://github.com/truenorth/ember-cli-materialize/pull/37) ([truenorth](https://github.com/truenorth))

## [v0.8.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.8.1) (2015-04-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.8.0...v0.8.1)

## [v0.8.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.8.0) (2015-04-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.2...v0.8.0)

**Closed issues:**

- Generalize materialize-input [\#39](https://github.com/truenorth/ember-cli-materialize/issues/39)

- \_normalize.scss - invalid top-level expression [\#35](https://github.com/truenorth/ember-cli-materialize/issues/35)

- Invalid top-level expression [\#30](https://github.com/truenorth/ember-cli-materialize/issues/30)

**Merged pull requests:**

- Type of input can be set through parameter [\#40](https://github.com/truenorth/ember-cli-materialize/pull/40) ([jaimevent](https://github.com/jaimevent))

- Add emberobserver.com badge to Readme [\#38](https://github.com/truenorth/ember-cli-materialize/pull/38) ([truenorth](https://github.com/truenorth))

- Badge component [\#36](https://github.com/truenorth/ember-cli-materialize/pull/36) ([truenorth](https://github.com/truenorth))

## [v0.7.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.2) (2015-04-01)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.1...v0.7.2)

**Merged pull requests:**

- Update to ember-cli 0.2.2 [\#33](https://github.com/truenorth/ember-cli-materialize/pull/33) ([truenorth](https://github.com/truenorth))

## [v0.7.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.1) (2015-03-29)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.7.0...v0.7.1)

**Closed issues:**

- paralax broken and other issues when changing routes [\#18](https://github.com/truenorth/ember-cli-materialize/issues/18)

**Merged pull requests:**

- Fix dummy app CSS path [\#27](https://github.com/truenorth/ember-cli-materialize/pull/27) ([truenorth](https://github.com/truenorth))

- Update dev dependencies [\#26](https://github.com/truenorth/ember-cli-materialize/pull/26) ([truenorth](https://github.com/truenorth))

## [v0.7.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.7.0) (2015-03-28)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.6.0...v0.7.0)

**Merged pull requests:**

- sgasser/ember-cli-materialize/18: create a component for parallax [\#25](https://github.com/truenorth/ember-cli-materialize/pull/25) ([rynam0](https://github.com/rynam0))

## [v0.6.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.6.0) (2015-03-27)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.2...v0.6.0)

**Closed issues:**

- disabled submit button submits forms [\#21](https://github.com/truenorth/ember-cli-materialize/issues/21)

**Merged pull requests:**

- create input components for Date, Select, and TextArea [\#24](https://github.com/truenorth/ember-cli-materialize/pull/24) ([rynam0](https://github.com/rynam0))

## [v0.5.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.2) (2015-03-23)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.1...v0.5.2)

## [v0.5.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.1) (2015-03-23)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.5.0...v0.5.1)

**Closed issues:**

- navbar should "closeOnClick" by default [\#22](https://github.com/truenorth/ember-cli-materialize/issues/22)

## [v0.5.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.5.0) (2015-03-23)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.4.1...v0.5.0)

**Merged pull requests:**

- Create component for form input [\#23](https://github.com/truenorth/ember-cli-materialize/pull/23) ([rynam0](https://github.com/rynam0))

## [v0.4.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.4.1) (2015-03-19)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.4.0...v0.4.1)

**Closed issues:**

- Components should live in the project's addon directory [\#17](https://github.com/truenorth/ember-cli-materialize/issues/17)

**Merged pull requests:**

- Refactor: sgasser/ember-cli-materialize/17 [\#20](https://github.com/truenorth/ember-cli-materialize/pull/20) ([rynam0](https://github.com/rynam0))

## [v0.4.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.4.0) (2015-03-18)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.3...v0.4.0)

**Closed issues:**

- Cannot install under ember-cli 0.2.0 [\#13](https://github.com/truenorth/ember-cli-materialize/issues/13)

**Merged pull requests:**

- create components for Collapsibles [\#16](https://github.com/truenorth/ember-cli-materialize/pull/16) ([rynam0](https://github.com/rynam0))

- create components for cards [\#15](https://github.com/truenorth/ember-cli-materialize/pull/15) ([rynam0](https://github.com/rynam0))

## [v0.3.3](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.3) (2015-03-16)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.2...v0.3.3)

## [v0.3.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.2) (2015-03-15)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.1...v0.3.2)

**Closed issues:**

- App blank after installing [\#10](https://github.com/truenorth/ember-cli-materialize/issues/10)

- Transfer ownership of ember-cli-materialize [\#9](https://github.com/truenorth/ember-cli-materialize/issues/9)

- Can not import @materialze with newest ember-cli version. [\#8](https://github.com/truenorth/ember-cli-materialize/issues/8)

**Merged pull requests:**

- Upgrade to ember-cli@0.2.0 [\#14](https://github.com/truenorth/ember-cli-materialize/pull/14) ([rynam0](https://github.com/rynam0))

- Removed extra semi-colon [\#12](https://github.com/truenorth/ember-cli-materialize/pull/12) ([rynam0](https://github.com/rynam0))

## [v0.3.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.1) (2015-03-02)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.3.0...v0.3.1)

**Closed issues:**

- sorry bad repo [\#5](https://github.com/truenorth/ember-cli-materialize/issues/5)

## [v0.3.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.3.0) (2015-01-28)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.2.1...v0.3.0)

**Closed issues:**

- select input doesn’t work properly with ember-cli [\#4](https://github.com/truenorth/ember-cli-materialize/issues/4)

## [v0.2.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.2.1) (2015-01-05)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.2.0...v0.2.1)

**Merged pull requests:**

- Reopen LinkView in an initializer [\#3](https://github.com/truenorth/ember-cli-materialize/pull/3) ([miguelcobain](https://github.com/miguelcobain))

- include ember-cli 0.1.5 install instructions [\#2](https://github.com/truenorth/ember-cli-materialize/pull/2) ([miguelcobain](https://github.com/miguelcobain))

## [v0.2.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.2.0) (2014-12-25)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.2...v0.2.0)

## [v0.1.2](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.2) (2014-12-23)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.1...v0.1.2)

## [v0.1.1](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.1) (2014-12-22)

[Full Changelog](https://github.com/truenorth/ember-cli-materialize/compare/v0.1.0...v0.1.1)

## [v0.1.0](https://github.com/truenorth/ember-cli-materialize/tree/v0.1.0) (2014-12-22)


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
First of all, **thank you** for contributing, **you are awesome**!

Here are a few rules to follow in order to ease code reviews, and discussions before
maintainers accept and merge your work.

You MUST run the test suite.

You MUST write (or update) unit tests.

You SHOULD write documentation.

Please, write [commit messages that make
sense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html),
and [rebase your branch](http://git-scm.com/book/en/Git-Branching-Rebasing)
before submitting your Pull Request.

One may ask you to [squash your
commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
too. This is used to "clean" your Pull Request before merging it (we don't want
commits such as `fix tests`, `fix 2`, `fix 3`, etc.).

Also, while creating your Pull Request on GitHub, you MUST write a description
which gives the context and/or explains why you are creating it.

Thank you!


================================================
FILE: LICENSE.md
================================================
The MIT License (MIT)

Copyright (c) 2016 Stefan Gasser <stefangasser.info@gmail.com> and Mike North <michael.l.north@gmail.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: README.md
================================================
# ember-cli-materialize

[![Greenkeeper badge](https://badges.greenkeeper.io/mike-north/ember-cli-materialize.svg)](https://greenkeeper.io/)

[![Build Status](https://travis-ci.org/mike-north/ember-cli-materialize.svg?branch=master)](https://travis-ci.org/mike-north/ember-cli-materialize)
[![npm version](https://badge.fury.io/js/ember-cli-materialize.svg)](http://badge.fury.io/js/ember-cli-materialize)
[![Code Climate](https://codeclimate.com/github/mike-north/ember-cli-materialize/badges/gpa.svg)](https://codeclimate.com/github/mike-north/ember-cli-materialize)
[![Coverage Status](https://coveralls.io/repos/mike-north/ember-cli-materialize/badge.svg?branch=master&service=github)](https://coveralls.io/github/mike-north/ember-cli-materialize?branch=master)
[![Ember Observer Score](http://emberobserver.com/badges/ember-cli-materialize.svg)](http://emberobserver.com/addons/ember-cli-materialize)
[![Book session on Codementor](https://cdn.codementor.io/badges/book_session_github.svg)](https://www.codementor.io/mikenorth0?utm_source=github&utm_medium=button&utm_term=mikenorth0&utm_campaign=github)

An [ember-cli](http://www.ember-cli.com) addon for using [Materialize](http://materializecss.com/) (CSS Framework based on [Material Design](http://www.google.com/design/spec/material-design/introduction.html)) in Ember applications.

**Ember 2.0 Friendly**

**Materialize Version ~0.97.0**

[![NPM](https://nodei.co/npm-dl/ember-cli-materialize.png?months=6)](https://nodei.co/npm/ember-cli-materialize/)

### Which version do I use?

Ember.js version | ember-cli-materialize version
-----------------|--------------
`< 1.10.0`       | Not supported
`1.10.0 <= x <  1.11.0`| [`v0.16.4`](https://github.com/mike-north/ember-cli-materialize/tree/v0.16.4)
`1.11.0 <= x <  1.13.0`| [`v0.18.6`](https://github.com/mike-north/ember-cli-materialize/tree/v0.18.6)
`x >= 1.13.0` | [![npm version](https://badge.fury.io/js/ember-cli-materialize.svg)](http://badge.fury.io/js/ember-cli-materialize)


## Main features

* Imports [Materialize](http://materializecss.com/) sass (via [ember-cli-sass](https://www.npmjs.com/package/ember-cli-sass)) and fonts into your app.
* It's a components library for all Materialize components

## Usage
The [online demo](http://mike.works/ember-cli-materialize) demonstrates all components with all possible options.

Or you can download the demo:
```sh
$ sudo npm install -g ember-cli
$ git clone git@github.com:mike-north/ember-cli-materialize
$ cd ember-cli-materialize
# install dependencies
$ npm install && bower install
# fire up local server
$ ember serve
```

### Configuration

#### Style

Using **SASS** makes configuring the color scheme simple. Just make sure you import `components/color` and `components/variables` before `materialize` like the example below.

```scss
// Example app.scss
@import 'components/color';

// Custom color settings go here
$primary-color: color("pink", "lighten-2");

@import 'components/variables';
@import 'materialize';
@import 'ember-cli-materialize';
```
See the materialize docs on sass variables [here](http://materializecss.com/color.html).

#### Defaults

Some of the library's defaults can be set via your **config/environment.js** file

```javascript
module.exports = function(/* environment, appConfig */) {
  var ENV = {
    materializeDefaults: {
      modalIsFooterFixed:  false,
      buttonIconPosition:  'left',
      loaderSize:          'big',
      loaderMode:          'indeterminate',
      modalContainerId:    'materialize-modal-root-element',
      dropdownInDuration:  300,
      dropdownOutDuration: 300
    },
    ...
  };
}

```

## Installation

```sh
$ ember install ember-cli-materialize
```

### PhantomJS

If you are using PhantomJS version 1.9.x as a test runner then after installing this addon you may experience test failures when running tests via `ember test` that you do not see in a browser.

This is due to the known limitation in PhantomJS 1.9 not providing a `.bind` method. To continue using PhantomJS simply either install [ember-cli-es5-shim](https://github.com/pixelhandler/ember-cli-es5-shim), which provides a `.bind` method, or try PhantomJS 2.x.

## Testing

This addon is continuiously integrated against the following framework versions

Version | Failures Allowed
--------|-------------------
Ember `~1.10.0` | No
Ember `~1.11.0` | No
Ember `~1.12.0` | No
components/ember#release | No
components/ember#beta | No
components/ember#canary | No


## Contributing
See [CONTRIBUTING file](https://github.com/mike-north/ember-cli-materialize/tree/master/CONTRIBUTING.md).

## Special Thanks
Special thanks to [Stefan Gasser](https://github.com/sgasser) for creating and originally maintaining this great library

## License
ember-cli-materialize is released under the MIT License. See the bundled LICENSE file for
details.

![Analytics](https://ga-beacon.appspot.com/UA-66610985-1/mike-north/ember-cli-materialize/readme)


================================================
FILE: addon/components/-md-fixed-btn-base.js
================================================
import { computed } from '@ember/object';
import Component from '@ember/component';

export default Component.extend({
  actionArgs: null,
  large: true,

  actions: {
    fireButtonAction() {
      const actionArgs = this.get('actionArgs');
      if (actionArgs) {
        this.sendAction('action', actionArgs || null);
      } else {
        this.sendAction('action');
      }
    }
  },

  _btnClassString: computed('btnClass', function() {
    return `${this.get('btnClass')} btn-floating ${this.get('large') ? 'btn-large' : ''}`;
  })
});


================================================
FILE: addon/components/md-badge.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-badge';

export default Component.extend({
  layout,
  tagName: 'span',
  text: null,
  classNames: ['badge']
});


================================================
FILE: addon/components/md-btn-dropdown.js
================================================
import { computed } from '@ember/object';
import layout from '../templates/components/md-btn-dropdown';
import MaterializeButton from './md-btn';

export default MaterializeButton.extend({
  layout,
  tagName: 'a',
  classNames: ['dropdown-button'],
  icon: 'mdi-navigation-expand-more',
  iconBody: '',
  iconPosition: 'right',
  attributeBindings: [
    'inDuration:data-induration',
    'outDuration:data-outduration',
    'constrainWidth:data-constrainwidth',
    '_hoverVal:data-hover',
    'gutter:data-gutter',
    'belowOrigin:data-beloworigin',
    'alignment'
  ],

  didRender() {
    this._super(...arguments);
    this._setupDropdown();
  },

  _hoverVal: computed('hover', function() {
    return this.get('hover') ? 'true' : 'false';
  }),

  _setupDropdown() {
    // needed until the Materialize.dropdown plugin is replaced
    this.$().attr('data-activates', this.get('_dropdownContentId'));
    let options = {
      hover: !!this.getWithDefault('hover', false),
      // Ignore requireCamelCaseOrUpperCaseIdentifiers because the original
      // variable of materializecss contains underscore
      // jscs:disable requireCamelCaseOrUpperCaseIdentifiers
      constrain_width: !!this.getWithDefault('constrainWidth', true),
      // jscs:enable requireCamelCaseOrUpperCaseIdentifiers
      inDuration: this.getWithDefault('inDuration', this.get('_mdSettings.dropdownInDuration')),
      outDuration: this.getWithDefault('outDuration', this.get('_mdSettings.dropdownOutDuration')),
      gutter: this.getWithDefault('gutter', 0),
      belowOrigin: !!this.getWithDefault('belowOrigin', false),
      alignment: this.getWithDefault('alignment', 'left')
    };

    this.$().dropdown(options);
  },
  _dropdownContentId: computed(function() {
    return `${this.get('elementId')}-dropdown-content`;
  })
});


================================================
FILE: addon/components/md-btn-submit.js
================================================
import MaterializeButton from './md-btn';

export default MaterializeButton.extend({
  layoutName: 'components/materialize-button',
  tagName: 'button',
  attributeBindings: ['type'],
  type: 'submit'
});


================================================
FILE: addon/components/md-btn.js
================================================
import { equal } from '@ember/object/computed';
import Component from '@ember/component';
import { computed } from '@ember/object';
import { typeOf } from '@ember/utils';
import { scheduleOnce } from '@ember/runloop';
import UsesSettings from '../mixins/uses-settings';
import layout from '../templates/components/md-btn';

export default Component.extend(UsesSettings, {
  layout,
  tagName: 'a',
  classNameBindings: ['btn:waves-effect', 'wavesClass', 'isDisabled:disabled:waves-effect', 'buttonClass'],
  attributeBindings: ['isDisabled:disabled'],
  wavesClass: 'waves-light',
  text: null,
  icon: null,
  iconPosition: null,
  buttonType: null,
  actionArg: null,
  isFlat: equal('buttonType', 'flat'),
  isDisabled: false,

  init() {
    this._super(...arguments);
    if (!this.get('iconPosition')) {
      this.set('iconPosition', this.get('_mdSettings.buttonIconPosition'));
    }
  },

  didInsertElement() {
    this._super(...arguments);
    scheduleOnce('afterRender', this, this._setupWaves);
  },

  buttonClass: computed('buttonType', function() {
    const buttonType = this.get('buttonType');
    return buttonType ? `btn-${buttonType}` : 'btn';
  }),

  _setupWaves() {
    const Waves = window.Waves || {};
    if (typeOf(Waves.displayEffect) === 'function') {
      Waves.displayEffect();
    }
  },

  click() {
    if (!this.get('isDisabled')) {
      this.sendAction('action', this.get('actionArg'));
    }
  }
});


================================================
FILE: addon/components/md-card-action.js
================================================
import Component from '@ember/component';

export default Component.extend({
  classNames: ['card-action']
});


================================================
FILE: addon/components/md-card-collapsible.js
================================================
import { computed } from '@ember/object';
import Component from '@ember/component';
import layout from '../templates/components/md-card-collapsible';

export default Component.extend({
  layout,
  tagName: 'ul',
  classNames: ['collapsible'],
  attributeBindings: ['data-collapsible'],
  accordion: true,

  'data-collapsible': computed(function() {
    return this.get('accordion') ? 'accordion' : 'expandable';
  }),

  didInsertElement() {
    this._super(...arguments);
    this._setupCollapsible();
  },

  _setupCollapsible() {
    const accordion = this.get('accordion');
    this.$().collapsible({ accordion });
  },

  _teardownCollapsible() {
    const $panelHeaders = this.$('> li > .collapsible-header');
    this.$().off('click.collapse', '.collapsible-header');
    $panelHeaders.off('click.collapse');
  },

  willDestroyElement() {
    this._super(...arguments);
    this._teardownCollapsible();
  }
});


================================================
FILE: addon/components/md-card-content.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import layout from '../templates/components/md-card-content';
import { deprecate } from '@ember/application/deprecations';

export default Component.extend({
  layout,

  classNames: ['card-content'],

  classNameBindings: ['class'],

  title: computed('parentView.title', function() {
    deprecate('Using md-card-content without passing it a "title" property (relying on parentView.title) is deprecated.',
      true, {
      id: 'ember-cli-materialize.deprecate-parentView',
      until: '1.0.0'
    });
    return this.get('parentView.title');
  }),

  titleClass: computed('parentView.titleClass', function() {
    deprecate('Using md-card-content without passing it a "titleClass" property (relying on parentView.titleClass) is deprecated.',
      true, {
      id: 'ember-cli-materialize.deprecate-parentView',
      until: '1.0.0'
    });
    return this.get('parentView.titleClass');
  }),

  activator: computed('parentView.activator', function() {
    deprecate('Using md-card-content without passing it an "activator" property (relying on parentView.activator) is deprecated.',
      true, {
      id: 'ember-cli-materialize.deprecate-parentView',
      until: '1.0.0'
    });
    return this.get('parentView.activator');
  }),

  cardTitleClass: computed('titleClass', function() {
    return this.get('titleClass') || 'black-text';
  })
});


================================================
FILE: addon/components/md-card-panel.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-card-panel';

export default Component.extend({
  layout,

  classNames: ['card-panel'],
  classNameBindings: ['class']
});


================================================
FILE: addon/components/md-card-reveal.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import layout from '../templates/components/md-card-reveal';
import { deprecate } from '@ember/application/deprecations';

export default Component.extend({
  layout,
  tagName: 'div',

  classNames: ['card-reveal'],
  classNameBindings: ['class'],
  title: computed('parentView.title', function() {
    deprecate('Using md-card-reveal without passing it a "title" property (relying on parentView.title) is deprecated.',
      true, {
      id: 'ember-cli-materialize.deprecate-parentView',
      until: '1.0.0'
    });
    return this.get('parentView.title');
  }),
  activator: computed('parentView.activator', function() {
    deprecate('Using md-card-reveal without passing it an "activator" property (relying on parentView.activator) is deprecated.',
      true, {
      id: 'ember-cli-materialize.deprecate-parentView',
      until: '1.0.0'
    });
    return this.get('parentView.activator');
  })
});


================================================
FILE: addon/components/md-card.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-card';

export default Component.extend({
  layout,
  classNames: ['card'],
  classNameBindings: ['class']
});


================================================
FILE: addon/components/md-check.js
================================================
import { alias } from '@ember/object/computed';
import SelectableItem from './selectable-item';
import layout from '../templates/components/md-checkbox';

export default SelectableItem.extend({
  layout,
  text: alias('name'),
  classNames: ['materialize-checkbox']
});


================================================
FILE: addon/components/md-checks-check.js
================================================
import CheckboxComponent from './md-check';
import GroupSelectableItemMixin from '../mixins/group-selectable-item';

export default CheckboxComponent.extend(GroupSelectableItemMixin, {});


================================================
FILE: addon/components/md-checks.js
================================================
import SelectableItemGroup from './selectable-item-group';

export default SelectableItemGroup.extend({
  selectableItemView: 'md-checks-check',
  multiple: true
});


================================================
FILE: addon/components/md-collapsible.js
================================================
import { deprecate } from '@ember/application/deprecations';
import Component from '@ember/component';
import layout from '../templates/components/md-collapsible';
import { computed } from '@ember/object';

export default Component.extend({
  layout,
  tagName: 'li',
  // classNameBindings: ['class'],
  actionArg: null,
  model: computed('actionArg', {
    get() {
      deprecate('md-collapsible#model is deprecated. Please use md-collapsible#actionArg instead');
      return this.get('actionArg');
    },
    set(key, val) {
      deprecate('md-collapsible#model is deprecated. Please use md-collapsible#actionArg instead');
      return this.set('actionArg', val);
    }
  }),
  actions: {
    headerClicked() {
      this.sendAction('action', this.get('actionArg'));
    }
  }
});


================================================
FILE: addon/components/md-collection.js
================================================
import Component from '@ember/component';
import { bool } from '@ember/object/computed';
import layout from '../templates/components/md-collection';

export default Component.extend({
  layout,
  classNames: ['collection'],
  classNameBindings: ['_hasHeader:with-header'],
  headerComponentName: 'md-default-collection-header',
  header: null,
  _hasHeader: bool('header')
});


================================================
FILE: addon/components/md-copyright.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { assert } from '@ember/debug';
import layout from '../templates/components/md-copyright';

export default Component.extend({
  layout,
  classNames: ['footer-copyright'],

  init() {
    this._super(...arguments);
    assert(
      'Property startYear must be less than or equal to the current year.',
      this.get('startYear') === null || this.get('startYear') <= new Date().getFullYear()
    );
  },

  startYear: null,
  text: null,

  date: computed(function() {
    const currentYear = new Date().getFullYear();
    const startYear = this.get('startYear');

    if (startYear === null || startYear === currentYear) {
      return `${currentYear}`;
    } else {
      return `${startYear} - ${currentYear}`;
    }
  })
});


================================================
FILE: addon/components/md-default-collection-header.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-default-collection-header';

export default Component.extend({
  layout,
  classNames: ['collection-header']
});


================================================
FILE: addon/components/md-default-column-header.js
================================================
import Component from '@ember/component';
import { alias } from '@ember/object/computed';
import layout from '../templates/components/md-default-column-header';

export default Component.extend({
  tagName: 'th',
  layout,
  attributeBindings: ['data-field'],
  'data-field': alias('column.valueBindingPath')
});


================================================
FILE: addon/components/md-fixed-btn.js
================================================
import FixedButtonBase from './-md-fixed-btn-base';
import layout from '../templates/components/md-fixed-btn';

export default FixedButtonBase.extend({
  layout,
  tagName: 'li',
  classNames: ['md-fixed-btn']
});


================================================
FILE: addon/components/md-fixed-btns.js
================================================
import FixedButtonBase from './-md-fixed-btn-base';
import layout from '../templates/components/md-fixed-btns';

export default FixedButtonBase.extend({
  layout,
  classNames: ['md-fixed-btns', 'fixed-action-btn']
});


================================================
FILE: addon/components/md-input-date.js
================================================
import $ from 'jquery';
import MaterializeInput from './md-input';
import layout from '../templates/components/md-input-date';

const MONTH_NAMES = [
  'January',
  'February',
  'March',
  'April',
  'May',
  'June',
  'July',
  'August',
  'September',
  'October',
  'November',
  'December'
];

function formatDate(timestamp) {
  const d = new Date(timestamp);
  return `${d.getDate()} ${MONTH_NAMES[d.getMonth()]}, ${d.getFullYear()}`;
}

export default MaterializeInput.extend({
  layout,

  selectMonths: true,
  numberOfYears: 15,
  min: '',
  max: '',

  didInsertElement() {
    this._super(...arguments);
    this._setupPicker();
  },

  willDestroyElement() {
    this._super(...arguments);
    this._teardownPicker();
  },

  _setupPicker() {
    const datePickerOptions = this.getProperties('selectMonths', 'numberOfYears', 'min', 'max');
    datePickerOptions.selectYears = datePickerOptions.numberOfYears;

    this._onDateSet = evt => {
      if (evt.select) {
        this.set('value', formatDate(evt.select));
      }
    };

    this.$('.datepicker').pickadate(
      $.extend(datePickerOptions, {
        onSet: this._onDateSet
      })
    );
  },

  _teardownPicker() {
    const $pickadate = this.$('.datepicker').data('pickadate');
    if ($pickadate) {
      $pickadate.stop();
    }
  }
});


================================================
FILE: addon/components/md-input-field.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { isPresent } from '@ember/utils';

export default Component.extend({
  classNames: ['input-field'],

  bindAttributes: ['disabled', 'readonly', 'autofocus'],
  validate: false,
  _wasTouched: false,
  isValid: computed('_wasTouched', 'value', 'validate', 'errors', 'errors.[]', function() {
    return (
      (isPresent(this.get('value')) || this.get('_wasTouched')) &&
      this.get('validate') &&
      this.get('errors') &&
      this.get('errors.length') === 0
    );
  }),

  isInvalid: computed('_wasTouched', 'value', 'validate', 'errors', 'errors.[]', function() {
    return (
      (isPresent(this.get('value')) || this.get('_wasTouched')) &&
      this.get('validate') &&
      this.get('errors') &&
      this.get('errors.length') > 0
    );
  }),

  didInsertElement() {
    this._super(...arguments);
    // pad the errors element when an icon is present
    if (isPresent(this.get('icon'))) {
      this.$('> span').css('padding-left', '3rem');
    }
  },

  id: computed('elementId', function() {
    return `${this.get('elementId')}-input`;
  }),

  _setupLabel() {
    const $label = this.$('> label');
    if (isPresent(this.get('value')) && !$label.hasClass('active')) {
      $label.addClass('active');
    }
  },
  _errorString: computed('errors.[]', function() {
    return (this.get('errors') || []).join('. ');
  }),
  actions: {
    inputFocusIn(evt) {
      this.set('_wasTouched', true);
      this.sendAction('focusIn', evt);
    }
  }
});


================================================
FILE: addon/components/md-input.js
================================================
import MaterializeInputField from './md-input-field';
import layout from '../templates/components/md-input';

export default MaterializeInputField.extend({
  layout,
  type: 'text',

  didInsertElement() {
    this._super(...arguments);
    // make sure the label moves when a value is bound.
    this._setupLabel();
  }
});


================================================
FILE: addon/components/md-loader.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { A } from '@ember/array';
import { htmlSafe } from '@ember/string';
import UsesSettings from '../mixins/uses-settings';
import layout from '../templates/components/md-loader';

export default Component.extend(UsesSettings, {
  layout,

  classNameBindings: ['isBarType:progress:preloader-wrapper', 'active:active', 'size'],

  mode: null,
  percent: 0,
  size: null,
  active: true,
  color: null,

  init() {
    this._super(...arguments);
    if (!this.get('mode')) {
      this.set('mode', this.get('_mdSettings.loaderMode'));
    }

    if (!this.get('size')) {
      this.set('size', this.get('_mdSettings.loaderSize'));
    }
  },

  isBarType: computed('mode', function() {
    return ['determinate', 'indeterminate'].indexOf(this.get('mode')) >= 0;
  }),

  isDeterminate: computed('mode', function() {
    return ['determinate'].indexOf(this.get('mode'));
  }),

  barStyle: computed('mode', 'percent', function() {
    if (this.get('mode') === 'determinate') {
      return htmlSafe(`width: ${parseInt(this.get('percent'), 10)}%`);
    } else {
      return htmlSafe('');
    }
  }),

  barClassName: computed('isBarType', 'mode', function() {
    return this.get('isBarType') ? this.get('mode') : null;
  }),

  spinnerClassNames: computed('color', 'isBarType', function() {
    if (!this.get('isBarType')) {
      const color = this.get('color');
      if (!color) {
        return A(['blue', 'red', 'green', 'yellow'].map(c => `spinner-layer spinner-${c}`));
      } else {
        return A([`spinner-layer spinner-${color}-only`]);
      }
    } else {
      return A();
    }
  })
});


================================================
FILE: addon/components/md-modal-container.js
================================================
import Component from '@ember/component';
import UsesSettings from '../mixins/uses-settings';
import layout from '../templates/components/md-modal-container';

export default Component.extend(UsesSettings, {
  layout,
  modalContainerId: null,

  init() {
    this._super(...arguments);
    if (!this.get('modalContainerId')) {
      this.set('modalContainerId', this.get('_mdSettings.modalContainerId'));
    }
  }
});


================================================
FILE: addon/components/md-modal.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { oneWay } from '@ember/object/computed';
import { htmlSafe } from '@ember/string';
import { on } from '@ember/object/evented';
import UsesSettings from '../mixins/uses-settings';
import layout from '../templates/components/md-modal';
import { EKMixin, keyUp } from 'ember-keyboard';

export default Component.extend(EKMixin, UsesSettings, {
  layout,

  attributeBindings: ['style:inlineStyle'],
  concatenatedProperties: ['modalClassNames'],

  inlineStyle: computed(function() {
    return htmlSafe('z-index: 1000;');
  }),

  isFooterFixed: oneWay('_mdSettings.modalIsFooterFixed'),

  modalClassNames: ['modal', 'show'],
  _modalClassString: computed('modalClassNames.[]', 'isFooterFixed', function() {
    const names = this.get('modalClassNames');
    if (this.get('isFooterFixed')) {
      names.push('modal-fixed-footer');
    }
    return names.join(' ');
  }),

  init() {
    this._super(...arguments);
    this.set('keyboardActivated', true);
  },

  _onEsc: on(keyUp('Escape'), function() {
    this.cancel();
  }),

  cancel() {
    this.sendAction('close');
  },

  actions: {
    closeModal() {
      this.sendAction('close');
    }
  }
});


================================================
FILE: addon/components/md-navbar.js
================================================
import $ from 'jquery';
import { computed } from '@ember/object';
import Component from '@ember/component';
import { typeOf } from '@ember/utils';
import { scheduleOnce } from '@ember/runloop';
import layout from '../templates/components/md-navbar';

export default Component.extend({
  tagName: 'nav',
  layout,
  homeRoute: 'index',

  didInsertElement() {
    this._super(...arguments);
    // TODO: is this scheduling necessary?
    scheduleOnce('afterRender', this, this._setupNavbar);
  },

  _setupNavbar() {
    if (typeOf($('.button-collapse').sideNav) === 'function') {
      this.notifyPropertyChange('_sideNavId');
      this.$('.button-collapse').sideNav({
        closeOnClick: true
      });
    }
  },

  _sideNavId: computed(function() {
    return (typeof FastBoot === 'undefined') ? `${this.get('element.id')}-sidenav` : '';
  })

  // TODO: Unregister any listeners that $.sideNav() puts in place
  // _teardownNavbar() {
  //
  // }
});


================================================
FILE: addon/components/md-pagination.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { A } from '@ember/array';
import layout from '../templates/components/md-pagination';

export default Component.extend({
  layout,

  classNames: ['pagination'],

  min: 1,
  max: 1,
  current: 1,
  range: 5,
  tagName: 'ul',

  windowRange: computed('min', 'max', 'range', 'current', function() {
    // TODO: this should be broken out into a util, so that it can be tested independently
    const max = this.get('max');
    const min = this.get('min');
    const range = this.get('range');
    const current = this.get('current');

    const middle = Math.floor((max - min) / 2);
    let low = Math.max(min, current - Math.floor(range / 2));
    let high = Math.min(max, current + Math.floor(range / 2));

    if (high - low < range - 1) {
      if (current <= middle) {
        high = Math.min(max, low + range - 1);
      } else {
        low = Math.max(min, high - (range - 1));
      }
    }
    return {
      low,
      high
    };
  }),

  _pages: computed('windowRange.low', 'windowRange.high', 'current', function() {
    const a = new A([]);
    const winRange = this.get('windowRange');
    const current = this.get('current');
    for (let i = winRange.low; i <= winRange.high; i += 1) {
      a.addObject({ val: i, cssClass: current === i ? 'active' : 'waves-effect' });
    }
    return a;
  }),

  _canGoBack: computed('min', 'current', function() {
    return this.get('current') > this.get('min');
  }),

  _canGoFwd: computed('max', 'current', function() {
    return this.get('current') < this.get('max');
  }),

  incrementClass: computed('_canGoFwd', function() {
    return this.get('_canGoFwd') ? '' : 'disabled';
  }),

  decrementClass: computed('_canGoBack', function() {
    return this.get('_canGoBack') ? '' : 'disabled';
  }),

  actions: {
    oneBack() {
      if (this.get('_canGoBack')) {
        this.decrementProperty('current');
      }
    },
    oneFwd() {
      if (this.get('_canGoFwd')) {
        this.incrementProperty('current');
      }
    },
    gotoPage(pagenum) {
      this.set('current', pagenum);
    }
  }
});


================================================
FILE: addon/components/md-parallax.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-parallax';

export default Component.extend({
  layout,
  classNames: ['parallax-container'],

  didInsertElement() {
    this._super(...arguments);
    this._setupParallax();
  },

  _setupParallax() {
    this.$('.parallax').parallax();
  }

  // TODO: unregister any listeners that $.parallax() registers
  // _teardownParallax() {
  //
  // }
});


================================================
FILE: addon/components/md-radio.js
================================================
import { computed } from '@ember/object';
import { alias } from '@ember/object/computed';
import { isEmpty } from '@ember/utils';
import { assert } from '@ember/debug';
import SelectableItem from './selectable-item';
import layout from '../templates/components/md-radio';

export default SelectableItem.extend({
  layout,

  value: '',
  text: alias('name'),
  groupValue: alias('group.selection'),

  className: ['materialize-radio'],

  checked: computed('groupValue', 'value', function() {
    return this.get('groupValue') === this.get('value');
  }),

  didInsertElement() {
    this._super(...arguments);
    assert(
      !isEmpty(this.get('group')),
      'materialize-radio is not supported outside the context of a materialize-radio-group'
    );
  }
});


================================================
FILE: addon/components/md-radios-radio.js
================================================
import RadioComponent from './md-radio';
import GroupSelectableItemMixin from '../mixins/group-selectable-item';

export default RadioComponent.extend(GroupSelectableItemMixin, {});


================================================
FILE: addon/components/md-radios.js
================================================
import SelectableItemGroup from './selectable-item-group';

export default SelectableItemGroup.extend({
  classNames: ['md-radios'],
  selectableItemView: 'md-radios-radio'
});


================================================
FILE: addon/components/md-range.js
================================================
import Component from '@ember/component';
import layout from '../templates/components/md-range';

export default Component.extend({
  layout,
  classNames: ['md-range'],
  min: 0,
  max: 100,
  step: 1
});


================================================
FILE: addon/components/md-select.js
================================================
import { A } from '@ember/array';
import { isNone } from '@ember/utils';
import { later } from '@ember/runloop';
import { get, observer, computed } from '@ember/object';
import MaterializeInputField from './md-input-field';
import layout from '../templates/components/md-select';

export default MaterializeInputField.extend({
  layout,
  classNames: ['md-select'],
  optionLabelPath: 'content',
  optionValuePath: 'content',

  didRender() {
    this._super(...arguments);
    this._setupSelect();
  },

  willUpdate() {
    this._teardownSelect();
  },

  willDestroyElement() {
    this._teardownSelect();
  },

  _setupSelect() {
    // jscs: disable
    this.$('select').material_select();
    // jscs: enable
  },

  _parsedContent: computed('optionValuePath', 'optionLabelPath', 'content.[]', function() {
    const contentRegex = /(content\.|^content$)/;
    // keep backwards compatability for defining optionValuePath & as optionContentPath `content.{{attName}}`
    const optionValuePath = (this.get('optionValuePath') || '').replace(contentRegex, '');
    const optionLabelPath = (this.get('optionLabelPath') || '').replace(contentRegex, '');
    return A(
      (this.get('content') || []).map(option => {
        return {
          value: optionValuePath ? get(option, optionValuePath) : option,
          label: optionLabelPath ? get(option, optionLabelPath) : option
        };
      })
    );
  }),

  _teardownSelect() {
    // jscs: disable
    this.$('select').material_select('destroy');
    // jscs: enable
  },

  actions: {
    optionSelected(e) {
      const target = e.target;
      if (!this.get('isDisabled')) {
        if (this.get('action')) {
          this.sendAction('action', target.value);
        }
        else {
          this.set('value', target.value)
        }
      }
    }
  },

  // TODO: this could be converted to a computed property, returning a string
  //  that is bound to the class attribute of the inputSelector
  errorsDidChange: observer('errors', function() {
    const inputSelector = this.$('input');
    // monitor the select's validity and copy the appropriate validation class to the materialize input element.
    if (!isNone(inputSelector)) {
      later(
        this,
        function() {
          const isValid = this.$('select').hasClass('valid');
          if (isValid) {
            inputSelector.removeClass('invalid');
            inputSelector.addClass('valid');
          } else {
            inputSelector.removeClass('valid');
            inputSelector.addClass('invalid');
          }
        },
        150
      );
    }
  })
});


================================================
FILE: addon/components/md-switch.js
================================================
import { computed } from '@ember/object';
import SelectableItem from './selectable-item';
import layout from '../templates/components/md-switch';

export default SelectableItem.extend({
  layout,

  classNames: ['switch', 'materialize-switch'],

  offLabel: 'Off',
  onLabel: 'On',
  disabled: false,

  _labelClass: computed('name', function() {
    return this.get('name') ? 'right' : '';
  })
});


================================================
FILE: addon/components/md-switches-switch.js
================================================
import GroupSelectableItemMixin from '../mixins/group-selectable-item';
import SwitchComponent from './md-switch';

export default SwitchComponent.extend(GroupSelectableItemMixin, {});


================================================
FILE: addon/components/md-switches.js
================================================
import SelectableItemGroup from './selectable-item-group';

export default SelectableItemGroup.extend({
  selectableItemView: 'md-switches-switch',
  multiple: true
});


================================================
FILE: addon/components/md-tab.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { oneWay } from '@ember/object/computed';
import ChildComponentSupport from 'ember-composability/mixins/child-component-support';
import MdTabs from './md-tabs';
import layout from '../templates/components/md-tab';

export default Component.extend(ChildComponentSupport, {
  _parentComponentTypes: [MdTabs],
  tagName: 'li',
  layout,

  classNames: ['materialize-tabs-tab', 'tab', 'col'],
  classNameBindings: ['_colClass'],

  colWidth: oneWay('composableParent.colWidth'),

  _colClass: computed('colWidth', function() {
    return `s${this.get('colWidth')}`;
  }),

  active: computed('composableParent.composableChildren.[]', 'composableParent.selected', 'value', function() {
    const selected = this.get('composableParent.selected');
    if (selected) {
      return selected === this.get('value');
    } else {
      const values = this.get('composableParent')
        .tabComponents()
        .map(t => t.get('value'));
      return values.indexOf(this.get('value')) === 0;
    }
  }).readOnly(),

  click() {
    this.get('composableParent').set('selected', this.get('value'));
  }
});


================================================
FILE: addon/components/md-table-col.js
================================================
import Component from '@ember/component';
import { get, computed } from '@ember/object';
import { alias } from '@ember/object/computed';
import layout from '../templates/components/md-table-col';
import Table from './md-table';
import ChildComponentSupport from 'ember-composability/mixins/child-component-support';

export default Component.extend(ChildComponentSupport, {
  // eslint-disable-next-line
  _parentComponentTypes: [Table],
  tagName: 'td',
  layout,
  valueBindingPath: null,
  headerComponentName: 'md-default-column-header',
  header: alias('valueBindingPath'),
  key: alias('valueBindingPath'),
  _value: computed('valueBindingPath', 'row', function() {
    let vbp = this.get('valueBindingPath');
    if (!vbp) {
      return '';
    } else {
      return get(this.get('row'), this.get('valueBindingPath'));
    }
  })
});


================================================
FILE: addon/components/md-table.js
================================================
import { A } from '@ember/array';
import Component from '@ember/component';
import { computed } from '@ember/object';
import ParentComponentSupport from 'ember-composability/mixins/parent-component-support';
import layout from '../templates/components/md-table';

export default Component.extend(ParentComponentSupport, {
  tagName: 'table',
  layout,
  columns: null,
  composableChildrenDebounceTime: 1,
  init() {
    this._super(...arguments);
    this.set('columns', []);
  },

  columnComponents: computed('composableChildren', function() {
    return new A(this.get('composableChildren'));
  }).readOnly(),

  registerChildComponent(childComponent) {
    this.get('_childComponents').add(childComponent, childComponent.get('key'));
    this._notifyComposableChildrenChanged();
  },

  unregisterChildComponent(childComponent) {
    this.get('_childComponents').delete(childComponent, childComponent.get('key'));
    this._notifyComposableChildrenChanged();
  }
});


================================================
FILE: addon/components/md-tabs.js
================================================
import Component from '@ember/component';
import { alias } from '@ember/object/computed';
import { debounce } from '@ember/runloop';
import { A } from '@ember/array';
import { observer, computed, get } from '@ember/object';
import ParentComponentSupport from 'ember-composability/mixins/parent-component-support';
import layout from '../templates/components/md-tabs';

export default Component.extend(ParentComponentSupport, {
  layout,
  classNames: ['materialize-tabs', 'row'],
  composableChildrenDebounceTime: 1,
  content: null,
  numTabs: alias('composableChildren.length'),
  optionValuePath: 'id',
  optionLabelPath: 'title',
  colWidth: 2,

  selected: null,

  didInsertElement() {
    this._super(...arguments);
    this._updateIndicatorPosition(false);
  },

  _indicatorUpdater: observer('selected', 'content.[]', 'composableChildren.[]', function() {
    debounce(this, this._updateIndicatorPosition, 100);
  }),

  tabComponents() {
    return A(this.get('composableChildren')) || A();
  },

  _updateIndicatorPosition(animate = true) {
    if (!this.element) {
      return;
    }
    const [tabComponent] = (this.get('composableChildren') || []).filter(
      item => get(item, 'value') === this.get('selected')
    );
    const tabSetRect = this.element.getBoundingClientRect();
    if (tabComponent) {
      const tabRect = tabComponent.element.getBoundingClientRect();

      const cssParams = {
        left: tabRect.left - tabSetRect.left,
        right: tabSetRect.right - tabRect.right
      };

      if (!animate) {
        this.$('.indicator').css(cssParams);
      } else {
        this.$('.indicator1').velocity(cssParams, {
          duration: 150
        });
        this.$('.indicator2').velocity(cssParams, {
          duration: 150,
          delay: 40
        });
      }
    }
  },

  _content: computed('content.[]', 'optionLabelPath', 'optionValuePath', function() {
    const labelPath = this.get('optionLabelPath');
    const valuePath = this.get('optionValuePath');
    return new A(
      (this.get('content') || []).map(contentItem => ({
        id: contentItem[valuePath],
        title: contentItem[labelPath]
      }))
    );
  })
});


================================================
FILE: addon/components/md-textarea.js
================================================
import InputField from './md-input-field';
import layout from '../templates/components/md-textarea';

export default InputField.extend({
  layout,

  didInsertElement() {
    this._super(...arguments);
    // make sure the label moves when a value is bound.
    this._setupLabel();
  }
});


================================================
FILE: addon/components/selectable-item-group.js
================================================
import Component from '@ember/component';
import { A } from '@ember/array';
import { computed, get } from '@ember/object';
import ParentComponentSupport from 'ember-composability/mixins/parent-component-support';
import layout from '../templates/components/selectable-item-group';

export default Component.extend(ParentComponentSupport, {
  layout,

  content: null,
  selection: null,

  optionValuePath: 'content',
  optionLabelPath: 'content',
  multiple: false,
  __materializeSelectableItemGroup: true,

  init() {
    this._super(...arguments);
    if (this.get('selection') === null && !!this.get('multiple')) {
      this.set('selection', new A([]));
    }
  },

  isValueSelected(value) {
    if (this.get('multiple')) {
      return this.get('selection').indexOf(value) >= 0;
    } else {
      return this.get('selection') === value;
    }
  },

  setValueSelection(value, select) {
    if (select) {
      return this.addToSelection(value);
    } else {
      return this.removeFromSelection(value);
    }
  },

  addToSelection(value) {
    if (this.get('multiple')) {
      this.get('selection').addObject(value);
    } else {
      this.set('selection', value);
    }
  },

  removeFromSelection(value) {
    if (this.get('multiple')) {
      this.get('selection').removeObject(value);
    } else {
      if (this.get('selection') === value) {
        this.set('selection', null);
      }
    }
  },
  disabled: false,

  _valuePath: computed('optionValuePath', function() {
    const optionValuePath = get(this, 'optionValuePath');
    return optionValuePath.replace(/^content\.?/, '');
  }),

  _labelPath: computed('optionLabelPath', function() {
    const optionLabelPath = get(this, 'optionLabelPath');
    return optionLabelPath.replace(/^content\.?/, '');
  }),

  _content: computed('content.[]', '_valuePath', '_labelPath', function() {
    const valuePath = get(this, '_valuePath');
    const labelPath = get(this, '_labelPath');
    const content = get(this, 'content') || new A([]);

    if (valuePath && labelPath) {
      return A(
        content.map(el => {
          return { value: get(el, valuePath), label: get(el, labelPath) };
        })
      );
    } else {
      return A(
        content.map(el => {
          return { value: el, label: el };
        })
      );
    }
  })
});


================================================
FILE: addon/components/selectable-item.js
================================================
import { computed } from '@ember/object';
import { alias } from '@ember/object/computed';
import Component from '@ember/component';
import ChildComponentSupport from 'ember-composability/mixins/child-component-support';
import SelectableItemGroup from './selectable-item-group';

export default Component.extend(ChildComponentSupport, {
  // eslint-disable-next-line
  _parentComponentTypes: [SelectableItemGroup],
  checked: null,
  disabled: false,
  classNames: ['materialize-selectable-item'],

  _checked: computed('checked', 'group.selection', 'group.selection.[]', {
    get() {
      let group = this.get('group');
      if (!group) {
        return this.get('checked');
      } else {
        return group.isValueSelected(this.get('value'));
      }
    },
    set(key, val) {
      let group = this.get('group');
      if (!group) {
        this.set('checked', val);
      } else {
        group.setValueSelection(this.get('value'), val);
      }
      this.sendAction('action', { checked: !!val });
      return !!val;
    }
  }),

  isSelected: alias('_checked'),

  _setupLabel() {
    let [$input] = this.$(
      '.materialize-selectable-item-input, .materialize-selectable-item-input-container input'
    ).toArray();

    let inputId = $input ? $input.id : null;
    this.$('.materialize-selectable-item-label').attr('for', inputId);
  },

  didInsertElement() {
    this._super(...arguments);
    this._setupLabel();
  },

  group: computed(function() {
    return this.nearestWithProperty('__materializeSelectableItemGroup');
  })
});


================================================
FILE: addon/helpers/bw-compat-icon.js
================================================
import Helper from '@ember/component/helper';
import { htmlSafe } from '@ember/string';
import { A } from '@ember/array';

export function isOldIcon(str) {
  return (
    str.split(' ').filter(c => {
      return c.indexOf('mdi-') === 0;
    }).length > 0
  );
}

export function bwCompatIcon(params, hash) {
  let [iconStr] = params;
  let extraClassesString = (hash || {}).extraClasses || null;
  let extraClasses = extraClassesString ? extraClassesString.split(' ') : [];
  if (isOldIcon(iconStr)) {
    return htmlSafe(
      `<i class='${A([iconStr].concat(extraClasses))
        .compact()
        .join(' ')}'></i>`
    );
  } else {
    let classes = iconStr.split(' ');
    let icon = classes.shift();
    let classString = A(['material-icons'].concat(classes).concat(extraClasses))
      .compact()
      .join(' ');
    return htmlSafe(`<i class='${classString}'>${icon}</i>`);
  }
}

export default Helper.helper(bwCompatIcon);


================================================
FILE: addon/mixins/group-selectable-item.js
================================================
import Mixin from '@ember/object/mixin';
import { alias } from '@ember/object/computed';

export default Mixin.create({
  name: alias('content.label'),
  value: alias('content.value'),
  disabled: false
});


================================================
FILE: addon/mixins/uses-settings.js
================================================
import { getOwner } from '@ember/application';
import { computed } from '@ember/object';
import Mixin from '@ember/object/mixin';

export default Mixin.create({
  _mdSettings: computed(function() {
    // jscs:disable disallowDirectPropertyAccess
    let owner = getOwner ? getOwner(this) : this.get('container');
    // jscs:enable disallowDirectPropertyAccess
    return owner.lookup('service:materialize-settings');
  })
});


================================================
FILE: addon/services/md-settings.js
================================================
import { keys as emberKeys } from '@ember/polyfills';
import { set, getWithDefault } from '@ember/object';
import { oneWay } from '@ember/object/computed';
import Service from '@ember/service';
import { classify } from '@ember/string';
// jscs:disable disallowDirectPropertyAccess
const keys = Object.keys || emberKeys;
// jscs:enable disallowDirectPropertyAccess

export default Service.extend({
  // Footer
  modalIsFooterFixed: oneWay('defaultModalIsFooterFixed'),
  // Button
  buttonIconPosition: oneWay('defaultButtonIconPosition'),
  // Loader
  loaderSize: oneWay('defaultLoaderSize'),
  loaderMode: oneWay('defaultLoaderMode'),
  // Modal
  modalContainerId: oneWay('defaultModalContainerId'),

  // Animation (Dropdown Button)
  dropdownInDuration: oneWay('defaultDropdownInDuration'),
  dropdownOutDuration: oneWay('defaultDropdownOutDuration'),

  init() {
    this._super(...arguments);
    this._setDefaults();
  },

  _setDefaults() {
    const defaults = getWithDefault(this, 'materializeDefaults', {});
    keys(defaults).map(key => {
      const classifiedKey = classify(key);
      const defaultKey = `default${classifiedKey}`;
      return set(this, defaultKey, defaults[key]);
    });
  }
});


================================================
FILE: addon/templates/components/md-badge.hbs
================================================
{{text}}{{yield}}


================================================
FILE: addon/templates/components/md-btn-dropdown.hbs
================================================
{{#if icon}}
  {{bw-compat-icon icon extraClasses=iconPosition}}
{{/if}}
{{text}}
<ul id="{{_dropdownContentId}}" class="dropdown-content">
  {{yield}}
</ul>


================================================
FILE: addon/templates/components/md-btn.hbs
================================================
{{#if icon}}
  {{bw-compat-icon icon extraClasses=iconPosition}}
{{/if}}
{{text}}
{{yield}}


================================================
FILE: addon/templates/components/md-card-collapsible.hbs
================================================
{{yield}}


================================================
FILE: addon/templates/components/md-card-content.hbs
================================================
{{#if title}}
  <span class="card-title {{if activator 'activator'}} {{cardTitleClass}}">
    {{title}}

    {{#if activator}}
      <i class="material-icons right">more_vert</i>
    {{/if}}
  </span>
{{/if}}

<p>{{yield}}</p>


================================================
FILE: addon/templates/components/md-card-panel.hbs
================================================
<span class="{{bodyClass}}">
  {{yield}}
</span>


================================================
FILE: addon/templates/components/md-card-reveal.hbs
================================================
<span class="card-title grey-text text-darken-4 {{if activator 'activator'}}">
  {{title}} <i class="material-icons right">close</i>
</span>
<p>{{yield}}</p>


================================================
FILE: addon/templates/components/md-card.hbs
================================================
{{#if image}}
  <div class="card-image {{if activator 'waves-effect'}} {{if activator 'waves-block'}} {{if activator 'waves-light'}}">
    <img src="{{image}}" class="{{if activator 'activator'}}"/>
  </div>
{{/if}}

{{yield}}


================================================
FILE: addon/templates/components/md-checkbox.hbs
================================================
{{input type="checkbox" class="materialize-selectable-item-input" checked=isSelected disabled=disabled}}
<label class="materialize-selectable-item-label">{{name}}{{yield}}</label>


================================================
FILE: addon/templates/components/md-checks-check.hbs
================================================
{{yield}}


================================================
FILE: addon/templates/components/md-collapsible.hbs
================================================
<div class="collapsible-header {{if active 'active'}}" onClick={{action "headerClicked"}}>
  {{#if icon}}
    {{bw-compat-icon icon}}
  {{/if}}

  {{title}}
</div>

<div class="collapsible-body">
    <p>{{yield}}</p>
</div>


================================================
FILE: addon/templates/components/md-collection.hbs
================================================
{{#if _hasHeader}}
  {{component headerComponentName header=header}}
{{/if}}
{{#each content as |item idx|}}
  {{yield item idx}}
{{/each}}


================================================
FILE: addon/templates/components/md-copyright.hbs
================================================
<div class="container">&copy; {{date}} {{text}} {{yield}}</div>


================================================
FILE: addon/templates/components/md-default-collection-header.hbs
================================================
<h4>{{header}}</h4>

================================================
FILE: addon/templates/components/md-default-column-header.hbs
================================================
{{column.header}}

================================================
FILE: addon/templates/components/md-fixed-btn.hbs
================================================
{{#md-btn
  icon=btnIcon
  class=_btnClassString
  action='fireButtonAction'}}

  {{yield}}

{{/md-btn}}

================================================
FILE: addon/templates/components/md-fixed-btns.hbs
================================================
{{md-btn
  icon=btnIcon
  class=_btnClassString
  action='fireButtonAction'}}

<ul>
  {{yield}}
</ul>

================================================
FILE: addon/templates/components/md-input-date.hbs
================================================
{{#if icon}}
  {{bw-compat-icon icon extraClasses="prefix"}}
{{/if}}

<input type="date"
  id="{{id}}"
  class="{{if validate 'validate'}} {{if errors 'invalid' 'valid'}} datepicker"
  data-value="{{value}}"
  required={{required}}
  readonly={{readonly}}
  disabled={{disabled}} />

<label for="{{id}}" data-error={{_errorString}}>{{label}}</label>

================================================
FILE: addon/templates/components/md-input.hbs
================================================
{{#if icon}}
  {{bw-compat-icon icon extraClasses="prefix"}}
{{/if}}

{{input id=id
  value=value
  classNameBindings="validate:validate: isValid:valid: isInvalid:invalid:"
  type=type
  required=required
  pattern=pattern
  maxlength=maxlength
  readonly=readonly
  disabled=disabled
  autocomplete=autocomplete
  autofocus=autofocus
  focusIn=(action 'inputFocusIn')
  step=step
  min=min
  max=max}}
<label for="{{id}}" data-error={{_errorString}}>{{label}}</label>


================================================
FILE: addon/templates/components/md-loader.hbs
================================================
{{#if isBarType}}
  <div class="{{barClassName}}" style={{barStyle}}></div>
{{/if}}

{{#each spinnerClassNames as |spinnerClassName|}}
  <div class="{{spinnerClassName}}">
    <div class="circle-clipper left">
      <div class="circle"></div>
    </div><div class="gap-patch">
      <div class="circle"></div>
    </div><div class="circle-clipper right">
      <div class="circle"></div>
    </div>
  </div>
{{/each}}


================================================
FILE: addon/templates/components/md-modal-container.hbs
================================================
<div id="{{modalContainerId}}"></div>


================================================
FILE: addon/templates/components/md-modal.hbs
================================================
{{#modal-dialog
  alignment=alignment
  alignmentTarget=alignmentTarget
  translucentOverlay=true
  overlayClassNames='lean-modal'
  clickOutsideToClose=true
  onClose='closeModal'}}
  <div class="{{_modalClassString}}" style="display: block; opacity: 1; top: 10%;">
    {{yield}}
  </div>
{{/modal-dialog}}

================================================
FILE: addon/templates/components/md-navbar.hbs
================================================
<div class='nav-wrapper'>
  <div class='container'>
    {{#link-to homeRoute class='brand-logo'}}{{name}}{{/link-to}}
    <ul class='right hide-on-med-and-down'>
      {{yield}}
    </ul>
  </div>

  <a class='button-collapse' data-activates="{{_sideNavId}}">
    <i class='material-icons'>menu</i>
  </a>
</div>

<ul id="{{_sideNavId}}" class='side-nav'>
  {{yield}}
</ul>


================================================
FILE: addon/templates/components/md-pagination.hbs
================================================
<li class="{{decrementClass}}">
  <a {{action 'oneBack'}}  class='decrement'>
    <i class="material-icons">chevron_left</i>
  </a>
</li>

{{#each _pages as |page|}}
  <li class="{{page.cssClass}}">
    <a {{action 'gotoPage' page.val}}>
      {{page.val}}
    </a>
  </li>
{{/each}}

<li class="{{incrementClass}}">
  <a {{action 'oneFwd'}}  class='increment'>
    <i class="material-icons">chevron_right</i>
  </a>
</li>


================================================
FILE: addon/templates/components/md-parallax.hbs
================================================
<div class="parallax">
  <img src="{{image}}"/>
</div>


================================================
FILE: addon/templates/components/md-radio.hbs
================================================
{{radio-button
  disabled=disabled
  value=value
  groupValue=groupValue
  radioClass="materialize-selectable-item-input"}}
<label class="materialize-selectable-item-label materialize-selectable-item-label" >
  {{name}}{{yield}}
</label>



================================================
FILE: addon/templates/components/md-radios-radio.hbs
================================================
{{yield}}


================================================
FILE: addon/templates/components/md-range.hbs
================================================
<label>{{name}}</label>
<p class="range-field">
{{input type="range" min=min max=max step=step value=value disabled=disabled}}
</p>

================================================
FILE: addon/templates/components/md-select.hbs
================================================
<label id="{{id}}" class="active">{{label}}</label>

<select onchange={{action 'optionSelected'}}
        class="{{if validate 'validate'}} {{if errors 'invalid' 'valid'}}"
        disabled={{if disabled "true"}}>
  {{#if prompt}}
    <option value="" disabled selected={{unless value "true"}}>{{prompt}}</option>
  {{/if}}
  {{#each _parsedContent as |opt|}}
    <option value={{opt.value}} selected={{if (eq value opt.value) "true"}}>{{opt.label}}</option>
  {{/each}}
</select>

<small class="red-text">
  {{#if errors}}
    {{errors.firstObject}}
  {{else}}
    &nbsp;
  {{/if}}
</small>


================================================
FILE: addon/templates/components/md-switch.hbs
================================================
<span class="switch-label materialize-selectable-item-label">{{name}}</span>

<label class="{{_labelClass}}">
  <span class="offlabel">{{offLabel}}</span>
  {{input type="checkbox" disabled=disabled checked=isSelected}}
  <span class="lever"></span>
  <span class="onlabel">{{onLabel}}</span>
</label>


================================================
FILE: addon/templates/components/md-switches-switch.hbs
================================================
{{yield}}


================================================
FILE: addon/templates/components/md-tab.hbs
================================================
<a class="{{if active 'active'}}">
  {{title}}
</a>


================================================
FILE: addon/templates/components/md-table-col.hbs
================================================
{{_value}}
{{yield}}


================================================
FILE: addon/templates/components/md-table.hbs
================================================
<thead>
  <tr>
    {{#each columnComponents as |column|}}
      {{component column.headerComponentName column=column}}
    {{/each}}
  </tr>
</thead>
<tbody>
  {{#each content as |row|}}
    <tr>
      {{yield row}}
    </tr>
  {{/each}}
</tbody>

================================================
FILE: addon/templates/components/md-tabs.hbs
================================================
<div class="col s12">
  <ul class="tabs">
    {{#each _content as |tab|}}
      {{md-tab title=tab.title value=tab.id}}
    {{/each}}
    {{yield}}
    <div class="indicator indicator1"></div>
    <div class="indicator indicator2"></div>
  </ul>
</div>


================================================
FILE: addon/templates/components/md-textarea.hbs
================================================
{{#if icon}}
  {{bw-compat-icon icon extraClasses="prefix"}}
{{/if}}

{{textarea id=id value=value name=name required=required readonly=readonly disabled=disabled maxlength=maxlength class="materialize-textarea"}}
<label for="{{id}}" data-error={{_errorString}}>{{label}}</label>


================================================
FILE: addon/templates/components/selectable-item-group.hbs
================================================
{{yield}}
{{#each _content as |item|}}
  <p>{{component selectableItemView content=item disabled=disabled groupId="group-{{elementId}}"}}</p>
{{/each}}


================================================
FILE: app/.gitkeep
================================================


================================================
FILE: app/components/materialize-badge.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeBadge from './md-badge';

export default MaterializeBadge.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-badge}} has been deprecated. Please use {{md-badge}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-button-submit.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeButtonSubmit from './md-btn-submit';

export default MaterializeButtonSubmit.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-button-submit}} has been deprecated. Please use {{md-btn-submit}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-button.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeButton from './md-btn';

export default MaterializeButton.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-button}} has been deprecated. Please use {{md-btn}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-card-action.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCardAction from './md-card-action';

export default MaterializeCardAction.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-card-action}} has been deprecated. Please use {{md-card-action}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-card-content.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCardContent from './md-card-content';

export default MaterializeCardContent.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-card-content}} has been deprecated. Please use {{md-card-content}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-card-panel.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCardPanel from './md-card-panel';

export default MaterializeCardPanel.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-card-panel}} has been deprecated. Please use {{md-card-panel}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-card-reveal.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCardReveal from './md-card-reveal';

export default MaterializeCardReveal.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-card-reveal}} has been deprecated. Please use {{md-card-reveal}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-card.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCard from './md-card';

export default MaterializeCard.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-card}} has been deprecated. Please use {{md-card}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-checkbox.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeCheckbox from './md-check';

export default materializeCheckbox.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-checkbox}} has been deprecated. Please use {{md-check}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-checkboxes.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeCheckboxes from './md-checks';

export default materializeCheckboxes.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-checkboxes}} has been deprecated. Please use {{md-checks}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-collapsible-card.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCollapsibleCard from './md-card-collapsible';

export default MaterializeCollapsibleCard.extend({
  init() {
    this._super(...arguments);
    deprecate(
      '{{materialize-collapsible-card}} has been deprecated. Please use {{md-card-collapsible}} instead',
      false,
      { url: 'https://github.com/sgasser/ember-cli-materialize/issues/67' }
    );
  }
});


================================================
FILE: app/components/materialize-collapsible.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeCollapsible from './md-collapsible';

export default MaterializeCollapsible.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-collapsible}} has been deprecated. Please use {{md-collapsible}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-copyright.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeCopyright from './md-copyright';

export default materializeCopyright.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-copyright}} has been deprecated. Please use {{md-copyright}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-date-input.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeDateInput from './md-input-date';

export default materializeDateInput.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-date-input}} has been deprecated. Please use {{md-input-date}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-input-field.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeInputField from './md-input-field';

export default materializeInputField.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-input-field}} has been deprecated. Please use {{md-input-field}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-input.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeInput from './md-input';

export default materializeInput.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-input}} has been deprecated. Please use {{md-input}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-loader.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeLoader from './md-loader';

export default materializeLoader.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-loader}} has been deprecated. Please use {{md-loader}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-modal.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeModal from './md-modal';

export default MaterializeModal.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-modal}} has been deprecated. Please use {{md-modal}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-navbar.js
================================================
import { deprecate } from '@ember/application/deprecations';
import MaterializeNavBar from './md-navbar';

export default MaterializeNavBar.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-navbar}} has been deprecated. Please use {{md-navbar}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-pagination.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializePagination from './md-pagination';

export default materializePagination.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-pagination}} has been deprecated. Please use {{md-pagination}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-parallax.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeParallax from './md-parallax';

export default materializeParallax.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-parallax}} has been deprecated. Please use {{md-parallax}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-radio.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeRadio from './md-radio';

export default materializeRadio.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-radio}} has been deprecated. Please use {{md-radio}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-radios.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeRadios from './md-radios';

export default materializeRadios.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-radios}} has been deprecated. Please use {{md-radios}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-range.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeRange from './md-range';

export default materializeRange.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-range}} has been deprecated. Please use {{md-range}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-select.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeSelect from './md-select';

export default materializeSelect.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-select}} has been deprecated. Please use {{md-select}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-switch.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeSwitch from './md-switch';

export default materializeSwitch.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-switch}} has been deprecated. Please use {{md-switch}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-switches.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeSwitches from './md-switches';

export default materializeSwitches.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-switches}} has been deprecated. Please use {{md-switches}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-tabs-tab.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeTabsTab from './md-tab';

export default materializeTabsTab.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-tabs-tab}} has been deprecated. Please use {{md-tab}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-tabs.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeTabs from './md-tabs';

export default materializeTabs.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-tabs}} has been deprecated. Please use {{md-tabs}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/materialize-textarea.js
================================================
import { deprecate } from '@ember/application/deprecations';
import materializeTextarea from './md-textarea';

export default materializeTextarea.extend({
  init() {
    this._super(...arguments);
    deprecate('{{materialize-textarea}} has been deprecated. Please use {{md-textarea}} instead', false, {
      url: 'https://github.com/sgasser/ember-cli-materialize/issues/67'
    });
  }
});


================================================
FILE: app/components/md-badge.js
================================================
import materializeBadge from 'ember-cli-materialize/components/md-badge';

export default materializeBadge;


================================================
FILE: app/components/md-btn-dropdown.js
================================================
import MaterializeButtonDropdown from 'ember-cli-materialize/components/md-btn-dropdown';

export default MaterializeButtonDropdown;


================================================
FILE: app/components/md-btn-submit.js
================================================
import MaterializeButtonSubmit from 'ember-cli-materialize/components/md-btn-submit';

export default MaterializeButtonSubmit;


================================================
FILE: app/components/md-btn.js
================================================
import MaterializeButton from 'ember-cli-materialize/components/md-btn';

export default MaterializeButton;


================================================
FILE: app/components/md-card-action.js
================================================
import MaterializeCardAction from 'ember-cli-materialize/components/md-card-action';

export default MaterializeCardAction;


================================================
FILE: app/components/md-card-collapsible.js
================================================
import MaterializeCollapsibleCard from 'ember-cli-materialize/components/md-card-collapsible';

export default MaterializeCollapsibleCard;


================================================
FILE: app/components/md-card-content.js
================================================
import MaterializeCardContent from 'ember-cli-materialize/components/md-card-content';

export default MaterializeCardContent;


================================================
FILE: app/components/md-card-panel.js
================================================
import MaterializeCardPanel from 'ember-cli-materialize/components/md-card-panel';

export default MaterializeCardPanel;


================================================
FILE: app/components/md-card-reveal.js
================================================
import MaterializeCardReveal from 'ember-cli-materialize/components/md-card-reveal';

export default MaterializeCardReveal;


================================================
FILE: app/components/md-card.js
================================================
import MaterializeCard from 'ember-cli-materialize/components/md-card';

export default MaterializeCard;


================================================
FILE: app/components/md-check.js
================================================
import materializeCheckbox from 'ember-cli-materialize/components/md-check';

export default materializeCheckbox;


================================================
FILE: app/components/md-checks-check.js
================================================
export { default } from 'ember-cli-materialize/components/md-checks-check';


================================================
FILE: app/components/md-checks.js
================================================
import materializeCheckboxes from 'ember-cli-materialize/components/md-checks';

export default materializeCheckboxes;


================================================
FILE: app/components/md-collapsible.js
================================================
import MaterializeCollapsible from 'ember-cli-materialize/components/md-collapsible';

export default MaterializeCollapsible;


================================================
FILE: app/components/md-collection.js
================================================
export { default } from 'ember-cli-materialize/components/md-collection';


================================================
FILE: app/components/md-copyright.js
================================================
import materializeCopyright from 'ember-cli-materialize/components/md-copyright';

export default materializeCopyright;


================================================
FILE: app/components/md-default-collection-header.js
================================================
export { default } from 'ember-cli-materialize/components/md-default-collection-header';


================================================
FILE: app/components/md-default-column-header.js
================================================
export { default } from 'ember-cli-materialize/components/md-default-column-header';


================================================
FILE: app/components/md-fixed-btn.js
================================================
export { default } from 'ember-cli-materialize/components/md-fixed-btn';


================================================
FILE: app/components/md-fixed-btns.js
================================================
export { default } from 'ember-cli-materialize/components/md-fixed-btns';


================================================
FILE: app/components/md-input-date.js
================================================
import materializeDateInput from 'ember-cli-materialize/components/md-input-date';

export default materializeDateInput;


================================================
FILE: app/components/md-input-field.js
================================================
import materializeInputField from 'ember-cli-materialize/components/md-input-field';

export default materializeInputField;


================================================
FILE: app/components/md-input.js
================================================
import materializeInput from 'ember-cli-materialize/components/md-input';

export default materializeInput;


================================================
FILE: app/components/md-loader.js
================================================
import materializeLoader from 'ember-cli-materialize/components/md-loader';

export default materializeLoader;


================================================
FILE: app/components/md-modal-container.js
================================================
import mdModalContainer from 'ember-cli-materialize/components/md-modal-container';

export default mdModalContainer;


================================================
FILE: app/components/md-modal.js
================================================
import materializeModal from 'ember-cli-materialize/components/md-modal';

export default materializeModal;


================================================
FILE: app/components/md-navbar.js
================================================
import MaterializeNavBar from 'ember-cli-materialize/components/md-navbar';

export default MaterializeNavBar;


================================================
FILE: app/components/md-pagination.js
================================================
import materializePagination from 'ember-cli-materialize/components/md-pagination';

export default materializePagination;


================================================
FILE: app/components/md-parallax.js
================================================
import materializeParallax from 'ember-cli-materialize/components/md-parallax';

export default materializeParallax;


================================================
FILE: app/components/md-radio.js
================================================
import materializeRadio from 'ember-cli-materialize/components/md-radio';

export default materializeRadio;


================================================
FILE: app/components/md-radios-radio.js
================================================
export { default } from 'ember-cli-materialize/components/md-radios-radio';


================================================
FILE: app/components/md-radios.js
================================================
import materializeRadios from 'ember-cli-materialize/components/md-radios';

export default materializeRadios;


================================================
FILE: app/components/md-range.js
================================================
import materializeRange from 'ember-cli-materialize/components/md-range';

export default materializeRange;


================================================
FILE: app/components/md-select.js
================================================
import materializeSelect from 'ember-cli-materialize/components/md-select';

export default materializeSelect;


================================================
FILE: app/components/md-switch.js
================================================
import materializeSwitch from 'ember-cli-materialize/components/md-switch';

export default materializeSwitch;


================================================
FILE: app/components/md-switches-switch.js
================================================
export { default } from 'ember-cli-materialize/components/md-switches-switch';


================================================
FILE: app/components/md-switches.js
================================================
import materializeSwitches from 'ember-cli-materialize/components/md-switches';

export default materializeSwitches;


================================================
FILE: app/components/md-tab.js
================================================
import materializeTabsTab from 'ember-cli-materialize/components/md-tab';

export default materializeTabsTab;


================================================
FILE: app/components/md-table-col.js
================================================
export { default } from 'ember-cli-materialize/components/md-table-col';


================================================
FILE: app/components/md-table.js
================================================
export { default } from 'ember-cli-materialize/components/md-table';


================================================
FILE: app/components/md-tabs.js
================================================
import materializeTabs from 'ember-cli-materialize/components/md-tabs';

export default materializeTabs;


================================================
FILE: app/components/md-textarea.js
================================================
import materializeTextarea from 'ember-cli-materialize/components/md-textarea';

export default materializeTextarea;


================================================
FILE: app/helpers/bw-compat-icon.js
================================================
export { default, bwCompatIcon } from 'ember-cli-materialize/helpers/bw-compat-icon';


================================================
FILE: app/initializers/add-modals-container.js
================================================
export function initialize() {
  const application = arguments[1] || arguments[0];
  var rootEl = document.querySelector(application.rootElement);
  var modalContainerEl = document.createElement('div');
  var emberModalDialog = application.emberModalDialog || {};
  var modalContainerElId = emberModalDialog.modalRootElementId || 'modal-overlays';
  modalContainerEl.id = modalContainerElId;
  rootEl.appendChild(modalContainerEl);

  application.register('config:modals-container-id', modalContainerElId, { instantiate: false });
  application.inject('component:materialize-modal', 'destinationElementId', 'config:modals-container-id');
}

export default {
  name: 'add-modals-container',
  initialize: initialize
};


================================================
FILE: app/initializers/md-settings.js
================================================
import config from '../config/environment';
import MaterializeSettings from 'ember-cli-materialize/services/md-settings';

export function initialize() {
  const { materializeDefaults } = config;
  const application = arguments[1] || arguments[0];

  if (window && window.validate_field) {
    window.validate_field = function() {};
  }

  application.register('config:materialize', materializeDefaults, { instantiate: false });
  application.register('service:materialize-settings', MaterializeSettings);
  application.inject('service:materialize-settings', 'materializeDefaults', 'config:materialize');
}

export default {
  name: 'md-settings',
  initialize: initialize
};


================================================
FILE: app/services/md-settings.js
================================================
export { default } from 'ember-cli-materialize/services/md-settings';


================================================
FILE: app/styles/app.scss
================================================
// Fix for Roboto font path
$roboto-font-path: '../assets/';

// Materialize styles
@import "materialize";


================================================
FILE: app/styles/ember-cli-materialize.scss
================================================
.ember-modal-overlay {
  height: 100vh;
  left: 0;
  opacity: 0;
  position: fixed;
  right: 0;
  top: 0;
  z-index: 50;
}
.ember-modal-dialog {
  z-index: 50;
  position: fixed;

  &.ember-modal-dialog-in-place {
    position: relative;
  }
}

.lean-modal {
  background-color: rgba(0, 0, 0, 0.5);
  opacity: 1.0;
  z-index: 10001;
}


================================================
FILE: app.json
================================================
{
  "name": "ember-cli-materialize",
  "description": "Documentation for ember-cli-materialize",
  "scripts": {
  },
  "env": {
  },
  "formation": {
    "web": {
      "quantity": 1
    }
  },
  "addons": [

  ],
  "buildpacks": [
    {
      "url": "https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/emberjs.tgz"
    }
  ]
}


================================================
FILE: blueprints/.jshintrc
================================================
{
  "predef": [
    "console"
  ]
}


================================================
FILE: blueprints/ember-cli-materialize/index.js
================================================
/* eslint-env node */

module.exports = {
  normalizeEntityName: function() {},

  beforeInstall: function() {
    return this.addAddonsToProject({
      packages: [
        { name: 'ember-composability', target: '~0.3.7' },
        { name: 'ember-radio-button', target: '1.0.7' },
        { name: 'ember-keyboard', target: '3.0.0' },
        { name: 'ember-truth-helpers', target: '1.2.0' },
        { name: 'ember-modal-dialog', target: '~0.8.0' },
        { name: 'ember-materialize-shim', target: '~0.2.0' }
      ]
    });
  }
};


================================================
FILE: bower.json
================================================
{
  "name": "ember-cli-materialize",
  "dependencies": {
    "materialize": "~0.98.0"
  }
}


================================================
FILE: config/ember-try.js
================================================
/* eslint-env node */
'use strict';

const getChannelURL = require('ember-source-channel-url');

function scenario(emberVersion) {
  return {
    name: 'ember-' + emberVersion,
    bower: {
      dependencies: {
        ember: '~' + emberVersion + '.0'
      },
      resolutions: {
        ember: '~' + emberVersion + '.0'
      }
    }
  };
}

module.exports = function() {
  return Promise.all([getChannelURL('release'), getChannelURL('beta'), getChannelURL('canary')]).then(urls => {
    return {
      useYarn: true,
      scenarios: [
        scenario('1.13'),
        {
          name: 'ember-lts-2.16',
          env: {
            EMBER_OPTIONAL_FEATURES: JSON.stringify({
              'jquery-integration': true
            })
          },
          npm: {
            devDependencies: {
              '@ember/jquery': '^0.5.1',
              'ember-source': '~2.16.0'
            }
          }
        },
        {
          name: 'ember-lts-2.18',
          env: {
            EMBER_OPTIONAL_FEATURES: JSON.stringify({
              'jquery-integration': true
            })
          },
          npm: {
            devDependencies: {
              '@ember/jquery': '^0.5.1',
              'ember-source': '~2.18.0'
            }
          }
        },
        {
          name: 'ember-release',
          npm: {
            devDependencies: {
              'ember-source': urls[0]
            }
          }
        },
        {
          name: 'ember-beta',
          npm: {
            devDependencies: {
              'ember-source': urls[1]
            }
          }
        },
        {
          name: 'ember-canary',
          npm: {
            devDependencies: {
              'ember-source': urls[2]
            }
          }
        },
        {
          name: 'ember-default',
          npm: {
            devDependencies: {}
          }
        },
        {
          name: 'ember-default-with-jquery',
          env: {
            EMBER_OPTIONAL_FEATURES: JSON.stringify({
              'jquery-integration': true
            })
          },
          npm: {
            devDependencies: {
              '@ember/jquery': '^0.5.1'
            }
          }
        }
      ]
    };
  });
};


================================================
FILE: config/environment.js
================================================
'use strict';

module.exports = function(/* environment, appConfig */) {
  return {
    materializeDefaults: {
      modalIsFooterFixed: false,
      modalContainerId: 'materialize-modal-root-element',
      buttonIconPosition: 'left',
      loaderSize: 'big',
      loaderMode: 'indeterminate',
      dropdownInDuration: 300,
      dropdownOutDuration: 300
    }
  };
};


================================================
FILE: config/release.js
================================================
/* jshint node:true */
// var RSVP = require('rsvp');

// For details on each option run `ember help release`
module.exports = {
  // local: true,
  // remote: 'some_remote',
  // annotation: "Release %@",
  // message: "Bumped version to %@",
  // manifest: [ 'package.json', 'bower.json', 'someconfig.json' ],
  // publish: true,
  // strategy: 'date',
  // format: 'YYYY-MM-DD',
  // timezone: 'America/Los_Angeles',
  //
  // beforeCommit: function(project, versions) {
  //   return new RSVP.Promise(function(resolve, reject) {
  //     // Do custom things here...
  //   });
  // }
};


================================================
FILE: ember-cli-build.js
================================================
'use strict';

const EmberAddon = require('ember-cli/lib/broccoli/ember-addon');

module.exports = function(defaults) {
  let app = new EmberAddon(defaults, {
    sassOptions: {
      includePaths: ['bower_components/materialize/sass']
    }
  });

  app.options.snippetPaths = ['tests/dummy/app/templates/snippets'];
  app.options.snippetSearchPaths = ['tests/dummy', 'app', 'addon'];
  /*
    This build file specifes the options for the dummy test app of this
    addon, located in `/tests/dummy`
    This build file does *not* influence how the addon or the app using it
    behave. You most likely want to be modifying `./index.js` or app's build file
  */

  app.import('vendor/highlight.pack.js', {
    exports: ['highlight.js']
  });
  return app.toTree();
};


================================================
FILE: index.js
================================================
'use strict';

module.exports = {
  name: 'ember-cli-materialize'
};


================================================
FILE: jsconfig.json
================================================
{"compilerOptions":{"target":"es6","experimentalDecorators":true},"exclude":["node_modules","bower_components","tmp","vendor",".git","dist"]}

================================================
FILE: lib/try-generate-pages.sh
================================================
#!/bin/bash
echo "Attempting to generate pages"
if [[ "${TRAVIS_PULL_REQUEST}" = "false" && "${TRAVIS_BRANCH}" == 'master' && "${EMBER_TRY_SCENARIO}" == 'ember-1.12' ]]; then
  ember github-pages:commit --message "New release" --branch "${GH_DEST_BRANCH}"
  git push deploy gh-pages 2>&1 >/dev/null
else
  echo "Not a main build -- no deploy"
fi


================================================
FILE: package.json
================================================
{
  "name": "ember-cli-materialize",
  "description": "An ember-cli addon for using Materialize (CSS Framework based on Material Design) in Ember applications.",
  "version": "0.0.0-development",
  "directories": {
    "doc": "doc",
    "test": "tests"
  },
  "scripts": {
    "build": "ember build",
    "lint:js": "eslint .",
    "start": "ember serve",
    "test": "ember try:each",
    "semantic-release": "semantic-release"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/mike-north/ember-cli-materialize.git"
  },
  "bugs": {
    "url": "https://github.com/mike-north/ember-cli-materialize/issues"
  },
  "engines": {
    "node": "^4.5 || 6.* || >= 7.*"
  },
  "author": "Mike North <michael.l.north@gmail.com> (http://mike.works)",
  "contributors": [
    {
      "name": "Stefan Gasser"
    }
  ],
  "license": "MIT",
  "devDependencies": {
    "@commitlint/cli": "7.6.0",
    "@commitlint/config-conventional": "7.6.0",
    "@commitlint/travis-cli": "7.6.0",
    "@ember/optional-features": "0.7.0",
    "@mike-north/js-lib-renovate-config": "1.1.5",
    "@mike-north/js-lib-semantic-release-config": "1.0.1",
    "@types/ember": "3.0.28",
    "bower": "1.8.13",
    "broccoli-asset-rev": "3.0.0",
    "ember-ajax": "5.0.0",
    "ember-anchor": "1.0.3",
    "ember-array-helper": "5.1.0",
    "ember-ci": "0.1.4",
    "ember-cli": "4.11.0",
    "ember-cli-app-version": "3.2.0",
    "ember-cli-dependency-checker": "3.3.1",
    "ember-cli-eslint": "5.1.0",
    "ember-cli-htmlbars-inline-precompile": "3.0.2",
    "ember-cli-inject-live-reload": "2.1.0",
    "ember-cli-qunit": "4.4.0",
    "ember-cli-sass": "10.0.1",
    "ember-cli-shims": "1.2.0",
    "ember-cli-sri": "2.1.1",
    "ember-cli-test-loader": "2.2.0",
    "ember-cli-uglify": "3.0.0",
    "ember-cli-version-checker": "3.0.1",
    "ember-code-snippet": "2.4.2",
    "ember-composability": "1.0.1",
    "ember-disable-prototype-extensions": "1.1.3",
    "ember-export-application-global": "2.0.1",
    "ember-keyboard": "4.0.0",
    "ember-load-initializers": "2.1.2",
    "ember-material-design-icons-shim": "0.1.13",
    "ember-materialize-shim": "0.5.1",
    "ember-modal-dialog": "3.0.1",
    "ember-percy": "1.6.0",
    "ember-radio-button": "2.0.1",
    "ember-resolver": "8.1.0",
    "ember-source": "4.11.0",
    "ember-source-channel-url": "1.2.0",
    "ember-truth-helpers": "2.1.0",
    "ember-try": "1.4.0",
    "eslint-plugin-ember": "10.6.1",
    "eslint-plugin-node": "11.1.0",
    "husky": "1.3.1",
    "loader.js": "4.7.0",
    "sass": "1.15.3",
    "semantic-release": "15.12.5"
  },
  "keywords": [
    "materialize",
    "materialize-css",
    "material-design",
    "ember-addon"
  ],
  "dependencies": {
    "ember-cli-babel": "^7.1.3",
    "ember-cli-htmlbars": "^6.0.0",
    "rsvp": "^4.7.0"
  },
  "ember-addon": {
    "configPath": "tests/dummy/config",
    "demoURL": "https://mike.works/ember-cli-materialize"
  },
  "commitlint": {
    "extends": [
      "@commitlint/config-conventional"
    ]
  },
  "husky": {
    "hooks": {
      "commit-msg": "./node_modules/.bin/commitlint -e $HUSKY_GIT_PARAMS"
    }
  },
  "release": {
    "extends": "@mike-north/js-lib-semantic-release-config"
  }
}


================================================
FILE: renovate.json
================================================
{
  "extends": ["@mike-north/js-lib-renovate-config"]
}


================================================
FILE: testem.js
================================================
module.exports = {
  test_page: 'tests/index.html?hidepassed',
  disable_watching: true,
  launch_in_ci: [
    'Chrome'
  ],
  launch_in_dev: [
    'Chrome'
  ],
  browser_args: {
    Chrome: {
      ci: [
        // --no-sandbox is needed when running Chrome inside a container
        process.env.CI ? '--no-sandbox' : null,
        '--headless',
        '--disable-gpu',
        '--disable-dev-shm-usage',
        '--disable-software-rasterizer',
        '--mute-audio',
        '--remote-debugging-port=0',
        '--window-size=1440,900'
      ].filter(Boolean)
    }
  }
};


================================================
FILE: tests/.jshintrc
================================================
{
  "predef": [
    "percySnapshot",
    "document",
    "window",
    "location",
    "setTimeout",
    "$",
    "-Promise",
    "define",
    "console",
    "visit",
    "exists",
    "fillIn",
    "click",
    "keyEvent",
    "triggerEvent",
    "find",
    "findWithAssert",
    "wait",
    "DS",
    "andThen",
    "currentURL",
    "currentPath",
    "currentRouteName"
  ],
  "node": false,
  "browser": false,
  "boss": true,
  "curly": true,
  "debug": false,
  "devel": false,
  "eqeqeq": true,
  "evil": true,
  "forin": false,
  "immed": false,
  "laxbreak": false,
  "newcap": true,
  "noarg": true,
  "noempty": false,
  "nonew": false,
  "nomen": false,
  "onevar": false,
  "plusplus": false,
  "regexp": false,
  "undef": true,
  "sub": true,
  "strict": false,
  "white": false,
  "eqnull": true,
  "esnext": true,
  "unused": true
}


================================================
FILE: tests/acceptance/badges-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Badges');

test('Load the demo page', function(assert) {
  visit('/badges');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/buttons-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';
import $ from 'jquery';

moduleForAcceptance('Acceptance - Buttons');

const BUTTON_HOVER_TIMEOUT = 1000;

test('Load the demo page', function(assert) {
  visit('/buttons');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});

test('Floating buttons should be exposed on hover', assert => {
  visit('/buttons');

  andThen(() => {
    const mainButton = find('.fixed-btns-example > a.btn-floating');
    assert.equal(
      $('.fixed-btns-example ul li:first-child a').css('opacity'),
      '0',
      'Secondary buttons should be hidden before mouseover'
    );
    $(mainButton).mouseover();
  });

  andThen(() => {
    const done = assert.async();
    setTimeout(() => {
      assert.ok(
        parseInt($('.fixed-btns-example ul li:first-child a').css('opacity'), 10) > 0.5,        
        'Secondary buttons should be shown after mouseover'
      );
      done();
    }, BUTTON_HOVER_TIMEOUT);
  });
});

test('Clicking the first floating button should fire an action', assert => {
  visit('/buttons');
  const done = assert.async();

  const oldAlert = window.alert;

  window.alert = function(alertText) {
    assert.equal(alertText, 'firstAction', 'firstAction is fired when primary button is clicked');
    window.alert = oldAlert;
    done();
  };

  click('.fixed-btns-example > a.btn-floating');
});

test('Clicking a secondary floating button should fire a different action, and pass arguments', assert => {
  visit('/buttons');
  const done = assert.async();

  const oldAlert = window.alert;

  andThen(() => {
    const mainButton = find('.fixed-btns-example > a.btn-floating');
    assert.equal(
      $('.fixed-btns-example ul li:first-child a').css('opacity'),
      '0',
      'Secondary buttons should be hidden before mouseover'
    );
    $(mainButton).mouseover();
  });

  andThen(() => {
    setTimeout(() => {
      window.alert = function(alertText) {
        assert.equal(alertText, `anotherAction\narg: "1"`, 'firstAction is fired when primary button is clicked');
        window.alert = oldAlert;
        done();
      };

      click('.fixed-btns-example ul li:first-child a');
    }, BUTTON_HOVER_TIMEOUT);
  });
});


================================================
FILE: tests/acceptance/cards-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Cards');

function checkCardTitle(cardType, cardId) {
  test(`${cardType} should have a title`, function(assert) {
    visit('/cards');

    andThen(function() {
      const titleEle = find(`#${cardId} > .card-content span`);

      assert.ok(titleEle.hasClass('card-title'));
      assert.equal(
        titleEle
          .children()
          .remove()
          .end()
          .text()
          .trim(),
        'Card Title'
      );
    });
  });
}

function checkCardContent(cardType, cardId) {
  test(`${cardType} should have content`, function(assert) {
    visit('/cards');

    andThen(function() {
      const contentEle = find(`#${cardId} > .card-content`);

      assert.ok(contentEle.hasClass('card-content'));

      const expected = `I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.`;

      // skip over the span containing the card title and get just the card content text.
      const actual = contentEle
        .find('>span')
        .next()
        .text()
        .trim()
        .replace(/[\s\n]+/g, ' ');
      assert.equal(actual, expected);
    });
  });
}

function checkCardActions(cardType, cardId) {
  test(`${cardType} should have actions`, function(assert) {
    visit('/cards');

    andThen(function() {
      const actionEle = find(`#${cardId} > .card-action`);

      assert.ok(actionEle.hasClass('card-action'));
    });
  });
}

const cardFlavors = [
  { type: 'Basic Card', id: 'basic-card' },
  { type: 'Image Card', id: 'image-card' },
  { type: 'Card Reveal', id: 'card-reveal' }
];

for (let i = 0; i < cardFlavors.length; i++) {
  checkCardTitle(cardFlavors[i].type, cardFlavors[i].id);
}
checkCardContent(cardFlavors[0].type, cardFlavors[0].id);
checkCardContent(cardFlavors[1].type, cardFlavors[1].id);
checkCardActions(cardFlavors[0].type, cardFlavors[0].id);
checkCardActions(cardFlavors[1].type, cardFlavors[1].id);

test('Card Reveal should have content', function(assert) {
  visit('/cards');

  andThen(function() {
    const contentEle = find('#card-reveal > .card-content');

    assert.ok(contentEle.hasClass('card-content'));

    // skip over the span containing the card title and get just the card content text.
    const actual = contentEle
      .find('>span')
      .next()
      .text()
      .trim();

    assert.equal(actual, 'This is a Link');
  });
});

test('Card Reveal should have content', function(assert) {
  visit('/cards');

  andThen(function() {
    const contentEle = find('#card-panel > span');

    assert.ok(contentEle.hasClass('white-text'));

    const expected =
      'I am a very simple card. I am good at containing small bits of information. ' +
      'I am convenient because I require little markup to use effectively. ' +
      'I am similar to what is called a panel in other frameworks.';

    // skip over the span containing the card title and get just the card content text.
    const actual = contentEle
      .text()
      .trim()
      .replace(/[\s\n]+/g, ' ');

    assert.equal(actual, expected);
  });
});

test('Card Reveal should reveal and conceal content', function(assert) {
  visit('/cards');

  andThen(function() {
    const doneReveal = assert.async();
    const doneConceal = assert.async();

    const activatorEle = find('#card-reveal>.card-content>.activator');
    const revealEle = find('#card-reveal>.card-reveal');
    const concealEle = revealEle.find('>.card-title');
    const animationClass = 'velocity-animating';

    // click to reveal
    click(activatorEle).then(function() {
      // should be animating...
      assert.ok(revealEle.hasClass(animationClass));

      // wait for animation to complete
      setTimeout(function() {
        assert.ok(!revealEle.hasClass(animationClass));
        doneReveal();

        // click to conceal
        click(concealEle).then(function() {
          assert.ok(revealEle.hasClass(animationClass));

          // wait for animation to complete
          setTimeout(function() {
            assert.ok(!revealEle.hasClass(animationClass));
            doneConceal();
          }, 500);
        });
      }, 500);
    });
  });
});


================================================
FILE: tests/acceptance/collapsible-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';
import $ from 'jquery';
moduleForAcceptance('Acceptance - Collapsible');

test('Collapsible basic tests', function(assert) {
  visit('/collapsible');

  andThen(function() {
    assert.equal($('.accordion-example ul > li').length, 3, 'Accordion should have 3 headers');
    assert.equal($('.expandable-example ul > li').length, 3, 'Expandable should have 3 headers');
    assert.equal($('.preselected-example ul >li').length, 3, 'Preselected should have 3 headers');
    assert.equal(
      $('.accordion-example ul > li>.active').length,
      0,
      'Accordion should not have an active collapsible'
    );
    assert.equal(
      $('.expandable-example ul > li>.active').length,
      0,
      'Expandable should not have an active collapsible'
    );
    assert.equal(
      $('.preselected-example ul > li>.active').length,
      1,
      'Preselected should have an active collapsible'
    );
    assert.equal($('.action-selection-example ul > li').length, 3, 'Action selection should also have 3 headers');
  });
});

test('Action collapsible operations', function(assert) {
  visit('/collapsible');

  andThen(function() {
    assert.equal($('.selected-action').text(), '', 'there should be no selected action');
  });

  click('.action-selection-example ul > li:first-child > .collapsible-header');

  andThen(function() {
    assert.equal(
      $('.selected-action').text(),
      'cloud',
      'after clicking, we should have the correct selected action'
    );
    assert.equal($('.action-selection-example ul > li > .active').length, 1, 'we should have an activated tab');
  });

  click('.action-selection-example ul > li:nth-child(2) > .collapsible-header');

  andThen(function() {
    assert.equal($('.selected-action').text(), 'marker', 'clicking another header should fire the action again');
  });
});


================================================
FILE: tests/acceptance/collection-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Collection');

test('Load the demo page', function(assert) {
  visit('/collection');

  andThen(function() {
    // Basic collection
    assert.equal(find('.basic-collection-example .collection-item').length, 3, '3 items in basic collection example');

    // Links example
    assert.equal(
      find('.links-collection-example a.collection-item').length,
      3,
      'links items in links collection example'
    );

    // Active link
    assert.equal(
      find('.links-collection-example a.collection-item.active').text(),
      'Gustavo Freng',
      'Gus should be active'
    );

    // Simple header on collection
    assert.equal(
      find('.simple-header-collection-example .collection-item').length,
      3,
      '3 items in basic collection example'
    );
    assert.equal(
      find('.simple-header-collection-example .collection-header').text(),
      'People to Watch',
      'Header content is correct'
    );
    assert.equal(find('.simple-header-collection-example .with-header').length, 1, 'with-header class is present');

    // Custom header on collection
    assert.equal(
      find('.custom-header-collection-example .collection-item').length,
      3,
      '3 items in basic collection example'
    );
    assert.equal(
      find('.custom-header-collection-example .collection-header').text(),
      'People to Watch',
      'Header content is correct'
    );
    assert.equal(find('.custom-header-collection-example .with-header').length, 1, 'with-header class is present');
    assert.equal(
      find('.custom-header-collection-example .collection-header.deep-purple').length,
      1,
      'Header is customized (deep-purple)'
    );
  });
});


================================================
FILE: tests/acceptance/copyright-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Copyright');

test('Load the demo page', function(assert) {
  visit('/copyright');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/forms-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Forms');

test('Load the demo page', assert => {
  visit('/forms');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/index-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Dummy app index page');

test('Load the demo page', assert => {
  visit('/');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/loader-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Loader');

test('Load the demo page', assert => {
  visit('/loader');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/modal-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';
import $ from 'jquery';

moduleForAcceptance('Acceptance - Modal');

test('Modal container is installed', assert => {
  visit('/modal');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element').length, 1, 'Modal container is in body');
  });
});

test('Modal opens when button is clicked', assert => {
  visit('/modal');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is not on the screen');
  });

  click('.open-modal-button');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element .modal-content').length, 1, 'Modal is on the screen');
  });
});

test('Modal is dismissed upon hitting "cancel"', assert => {
  visit('/modal');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is not on the screen');
  });

  click('.open-modal-button');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element .modal-content').length, 1, 'Modal is on the screen');
  });

  click('#materialize-modal-root-element .modal-footer .cancel-button');

  andThen(function() {
    assert.equal($('#materialize-modal-root-element .modal-content').length, 0, 'Modal is on not the screen');
  });
});

test('Modal is dismissed by clicking on background', assert => {
  visit('/modal');

  andThen(function() {
    assert.equal($('.ember-modal-wrapper .modal-content').length, 0, 'Modal is not on the screen');
  });

  click('.test-modal-button');

  andThen(function() {
    assert.equal($('.ember-modal-wrapper .modal-content').length, 1, 'Modal is on the screen');
  });

  click('.ember-modal-wrapper');
});


================================================
FILE: tests/acceptance/navbar-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';
import $ from 'jquery';

moduleForAcceptance('Acceptance - Navbar');

test('Load the demo page', assert => {
  visit('/navbar');

  andThen(() => {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');

    assert.equal($('.navbar-example nav').length, 1, 'Navbar is in the DOM');
    assert.equal($('.navbar-example nav .brand-logo').text(), 'Example', 'name is rendered in .brand-info');
  });
});

test('SideNav', assert => {
  visit('/navbar');

  let done = assert.async();

  andThen(() => {
    assert.equal(find('.navbar-example nav .button-collapse').length, 1, 'Navbar collapse button is in the DOM');
    click('.navbar-example nav .button-collapse');
  });

  andThen(() => {
    setTimeout(() => {
      assert.ok(
        $('.navbar-example .side-nav')
          .attr('style')
          .indexOf('translateX(0px)') > 0,
        'TranslateX is 0'
      );
      assert.equal($('.navbar-example .side-nav').css('left'), '0px', 'SideNav is open');
      setTimeout(() => {
        $('#sidenav-overlay').click();
        setTimeout(() => {
          assert.ok(
            $('.navbar-example .side-nav')
              .attr('style')
              .indexOf('translateX(-100%)') > 0,
            'TranslateX > 0'
          );
          done();
        }, 1200);
      }, 1200);
    }, 1200);
  });
});

test('Navbar Custom Home Route', assert => {
  visit('/navbar');

  click('.navbar-custom-home a.brand-logo');

  andThen(() => {
    assert.equal('/navbar', currentURL(), 'Navbar can have a custom home route');
  });
});


================================================
FILE: tests/acceptance/pagination-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Pagination');

test('Load the demo page', assert => {
  visit('/pagination');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/parallax-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Parallax');

test('Load the demo page', assert => {
  visit('/parallax');

  andThen(function() {
    assert.ok(true, 'If this is passing, this page has no deprecation warnings');
  });
});


================================================
FILE: tests/acceptance/table-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Table');

test('Load the demo page', assert => {
  visit('/tables');

  andThen(function() {
    assert.equal(find('.basic-table table tbody tr').length, 6, 'Three rows (x2 tables) in basic table example');
    assert.equal(find('.basic-table table:nth-child(2) tbody tr:first-child td').length, 2, 'Two columns');

    assert.equal(find('.custom-cells table td .btn').length, 3, 'Buttons as table cells');

    assert.equal(find('.custom-headers table thead th i').length, 2, 'Headers are customized');
  });
});


================================================
FILE: tests/acceptance/tabs-test.js
================================================
import { test } from 'qunit';
import moduleForAcceptance from '../../tests/helpers/module-for-acceptance';

moduleForAcceptance('Acceptance - Tabs');

test('Basic Example - One set of tabs should be rendered, with three tabs', function(assert) {
  visit('/tabs').then(function() {
    assert.equal(find('.basic-tabs-example .materialize-tabs').length, 1, 'One set of tabs');
    assert.equal(
      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab a').length,
      3,
      'Three tabs in the set'
    );
    assert.equal(
      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:first-child a')
        .text()
        .trim(),
      'First',
      'Label of first tab is "First"'
    );
    assert.equal(
      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:nth-child(2) a')
        .text()
        .trim(),
      'Second',
      'Label of second tab is "Second"'
    );
    assert.equal(
      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:nth-child(3) a')
        .text()
        .trim(),
      'Third',
      'Label of third tab is "Third"'
    );

    assert.equal(
      find('.basic-tabs-example .materialize-tabs .materialize-tabs-tab:first-child .active').length,
      1,
      'First tab is initially selected'
    );
  });
});


================================================
FILE: tests/blanket-options.js
================================================
/* globals blanket, module */

var options = {
  modulePrefix: 'ember-cli-materialize',
  filter: '//.*ember-cli-materialize/.*/',
  antifilter: '//.*(tests|template).*/',
  enableCoverage: true,
  loaderExclusions: ['highlight.js'],
  cliOptions: {
    reporters: ['lcov'],
    autostart: true
  }
};
if (typeof exports === 'undefined') {
  blanket.options(options);
} else {
  module.exports = options;
}


================================================
FILE: tests/dummy/app/app.js
================================================
import Application from '@ember/application';
import Resolver from './resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';

const App = Application.extend({
  modulePrefix: config.modulePrefix,
  podModulePrefix: config.podModulePrefix,
  Resolver
});

loadInitializers(App, config.modulePrefix);

export default App;


================================================
FILE: tests/dummy/app/components/.gitkeep
================================================


================================================
FILE: tests/dummy/app/components/demo-nav.js
================================================
import Component from '@ember/component';

export default Component.extend({
  classNames: ['navbar-fixed'],
  didInsertElement() {
    this._super(...arguments);
    this.$('.demo-button-collapse').sideNav();
  }
});


================================================
FILE: tests/dummy/app/components/example-snippet.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';
import { empty } from '@ember/object/computed';

export default Component.extend({
  emptySnippet: empty('snippet'),
  exampleFrameClass: 'col s12 position-relative',
  partialName: computed('snippet', {
    get() {
      return `snippets/${this.get('snippet') || 'none'}`;
    }
  }),
  snippetName: computed('snippet', {
    get() {
      return `${this.get('snippet') || 'none'}.hbs`;
    }
  }),
  send() {
    let target = this.get('targetObject');
    target.send(...arguments);
  }
});


================================================
FILE: tests/dummy/app/components/my-column-header.js
================================================
import layout from '../templates/snippets/my-column-header';

// BEGIN-SNIPPET my-column-header
import DefaultHeader from 'ember-cli-materialize/components/md-default-column-header';

export default DefaultHeader.extend({
  layout
});
// END-SNIPPET


================================================
FILE: tests/dummy/app/components/my-custom-header.js
================================================
// BEGIN-SNIPPET custom-collection-header
import DefaultCollectionHeader from 'ember-cli-materialize/components/md-default-collection-header';
import layout from '../templates/snippets/my-custom-header';

export default DefaultCollectionHeader.extend({
  layout,
  classNames: ['deep-purple']
});
// END-SNIPPET


================================================
FILE: tests/dummy/app/components/options-panel.js
================================================
import Component from '@ember/component';
import { computed } from '@ember/object';

export default Component.extend({
  componentName: '',
  header: computed('componentName', {
    get() {
      return `${this.get('componentName')} component options are:`;
    }
  })
});


================================================
FILE: tests/dummy/app/config/environment.d.ts
================================================
/* tslint:disable */

export default config;

declare namespace config {
  const APP: {
    [k: string]: any;
  };
  const environment: any;
  const modulePrefix: string;
  const podModulePrefix: string;
  const locationType: string;
  const rootURL: string;
}


================================================
FILE: tests/dummy/app/controllers/.gitkeep
================================================


================================================
FILE: tests/dummy/app/controllers/application.js
================================================
import { A } from '@ember/array';
import Controller from '@ember/controller';

export default Controller.extend({
  // eslint-disable-next-line
  demoSections: new A([
    { name: 'Badges', route: 'badges' },
    { name: 'Buttons', route: 'buttons' },
    { name: 'Cards', route: 'cards' },
    { name: 'Collapsible', route: 'collapsible' },
    { name: 'Collection', route: 'collection' },
    { name: 'Colors', route: 'colors', new: true },
    { name: 'Copyright', route: 'copyright' },
    { name: 'Forms', route: 'forms' },
    { name: 'Loader', route: 'loader' },
    { name: 'Modal', route: 'modal' },
    { name: 'Navbar', route: 'navbar' },
    { name: 'Pagination', route: 'pagination' },
    { name: 'Parallax', route: 'parallax' },
    { name: 'Tables', route: 'tables' },
    { name: 'Tabs', route: 'tabs' }
  ])
});


================================================
FILE: tests/dummy/app/controllers/buttons.js
================================================
import Controller from '@ember/controller';
import { A } from '@ember/array';

export default Controller.extend({
  // eslint-disable-next-line
  myData: new A(['hello', 'world']),

  actions: {
    debug() {
      window.alert('clicked!');
    },
    firstAction() {
      window.alert('firstAction');
    },
    anotherAction(arg) {
      window.alert(`anotherAction\narg: ${JSON.stringify(arg)}`);
    }
  }
});


================================================
FILE: tests/dummy/app/controllers/collapsible.js
================================================
import Controller from '@ember/controller';

export default Controller.extend({
  lastClicked: null,
  actions: {
    clicked(tabModel) {
      this.set('lastClicked', tabModel);
      if (tabModel === this.get('activeSlide')) {
        this.set('activeSlide', null);
      } else {
        this.set('activeSlide', tabModel);
      }
    }
  }
});


================================================
FILE: tests/dummy/app/controllers/collection.js
================================================
import Controller from '@ember/controller';

export default Controller.extend({});


================================================
FILE: tests/dummy/app/controllers/colors.js
================================================
import { A } from '@ember/array';
import Controller from '@ember/controller';
import { computed } from '@ember/object';
import AnchorControllerSupport from 'ember-anchor/mixins/controller-support';

export default Controller.extend(AnchorControllerSupport, {
  //eslint-disable-next-line
  colorBases: new A([
    'pink',
    'red',
    'deep-orange',
    'orange',
    'amber',
    'yellow',
    'light-green',
    'green',
    'teal',
    'cyan',
    'light-blue',
    'blue',
    'indigo',
    'purple',
    'deep-purple'
  ]),
  //eslint-disable-next-line
  boringColorBases: new A(['brown', 'grey', 'blue-grey']),
  //eslint-disable-next-line
  colorVariants: new A([
    'lighten-5',
    'lighten-4',
    'lighten-3',
    'lighten-2',
    'lighten-1',
    '',
    'darken-1',
    'darken-2',
    'darken-3',
    'darken-4'
  ]),
  //eslint-disable-next-line
  accentColorVariants: new A(['accent-1', 'accent-2', 'accent-3', 'accent-4']),

  colors: computed('colorBases.[]', 'colorVariants.[]', function() {
    return new A(
      this.get('colorBases').map(colorBase => {
        let variants = this.get('colorVariants');
        if (['brown', 'grey', 'blue-grey'].indexOf(colorBase) < 0) {
          variants = variants.concat(this.get('accentColorVariants'));
        }
        return {
          base: colorBase,
          variants: new A(variants)
        };
      })
    );
  }),

  boringColors: computed('boringColorBases.[]', 'colorVariants.[]', function() {
    return new A(
      this.get('boringColorBases').map(colorBase => {
        let variants = this.get('colorVariants');
        if (['brown', 'grey', 'blue-grey'].indexOf(colorBase) < 0) {
          variants = variants.concat(this.get('accentColorVariants'));
        }
        return {
          base: colorBase,
          variants: new A(variants)
        };
      })
    );
  })
});


================================================
FILE: tests/dummy/app/controllers/forms.js
================================================
// @ts-check
import Controller from '@ember/controller';
import { A } from '@ember/array';
import { computed, observer } from '@ember/object';
import { isPresent } from '@ember/utils';
import { not } from '@ember/object/computed';
import { later } from '@ember/runloop';

function asJSON(propKey) {
  return computed(`${propKey},${propKey}.[]`, function() {
    return JSON.stringify(this.get(propKey));
  });
}

export default Controller.extend({
  //eslint-disable-next-line
  frameworks: new A([
    {
      id: 1,
      value: 'Materialize CSS'
    },
    {
      id: 2,
      value: 'Ember-CLI Materialize'
    }
  ]),
  message: `This is a long message. It might flow to the next line if I keep typing, so it's better suited to a textarea`,
  //eslint-disable-next-line
  errors: {
    name: A([]),
    framework: A([])
  },

  // BEGIN-SNIPPET form-validation-basic
  nameDidChange: observer('model.name', function() {
    let messages = [];
    if (!isPresent(this.get('model.name'))) {
      messages = ['This field is required'];
    }
    this.get('errors.name').setObjects(messages);
  }),
  // END-SNIPPET

  frameworkDidChange: observer('framework', function() {
    let self = this;
    later(() => {
      let messages = [];
      if (!isPresent(self.get('framework'))) {
        messages = ['This field is required'];
      }
      this.get('errors.framework').setObjects(messages);
    }, 100);
  }),

  dateValue: '15 January, 1974',
  ageFromDate: computed('dateValue', function() {
    let d = new Date(this.get('dateValue'));
    return new Date().getFullYear() - d.getFullYear();
  }),

  rangeValue: 64,
  switchValue1: true,
  notSwitchValue: not('switchValue'),
  switchValue: true,
  checkValueOne: false,
  checkValueTwo: true,

  checkboxIsSelected: false,
  radioIsSelected: false,
  radioSelection: 2,
  otherRadioSelection: 'green',
  //eslint-disable-next-line
  radioChoices: new A([
    {
      id: 1,
      text: 'One'
    },
    {
      id: 2,
      text: 'Two'
    }
  ]),

  radioSelectionString: asJSON('radioSelection'),
  radioChoicesString: asJSON('radioChoices'),

  //eslint-disable-next-line
  checkboxSelections: new A([3, 4]),
  //eslint-disable-next-line
  checkboxChoices: new A([
    {
      id: 3,
      label: 'Three'
    },
    {
      id: 4,
      label: 'Four'
    },
    {
      id: 5,
      label: 'Five'
    }
  ]),

  switchesChoicesString: asJSON('switchesChoices'),
  //eslint-disable-next-line
  switchesChoices: new A([
    {
      key: 6,
      name: 'Six'
    },
    {
      key: 7,
      name: 'Seven'
    },
    {
      key: 8,
      name: 'Eight'
    }
  ]),
  //eslint-disable-next-line
  switchesSelections: new A([7]),
  switchesSelection: 7,
  switchesSelectionString: asJSON('switchesSelection'),
  switchesSelectionsString: asJSON('switchesSelections'),

  checkboxChoicesString: asJSON('checkboxChoices'),
  checkboxSelectionsString: asJSON('checkboxSelections')
});


================================================
FILE: tests/dummy/app/controllers/loader.js
================================================
import Controller from '@ember/controller';

export default Controller.extend({
  percent: 70
});


================================================
FILE: tests/dummy/app/controllers/modal.js
================================================
import Controller from '@ember/controller';

export default Controller.extend({
  modalIsOpen: false,
  isOpen: false,
  actions: {
    openModal() {
      this.set('modalIsOpen', true);
    },
    closeModal() {
      this.set('modalIsOpen', false);
    },
    agree() {
      window.alert('Thanks for using ember-cli-materialize!');
      this.set('modalIsOpen', false);
    }
  }
});


================================================
FILE: tests/dummy/app/controllers/pagination.js
================================================
// BEGIN-SNIPPET pagination-controller
import Controller from '@ember/controller';

export default Controller.extend({
  queryParams: ['page'],
  page: 3
});
// END-SNIPPET


================================================
FILE: tests/dummy/app/controllers/tabs.js
================================================
import Controller from '@ember/controller';
import { A } from '@ember/array';

export default Controller.extend({
  //eslint-disable-next-line
  basicTabsContent: new A([{ id: 'a', title: 'First' }, { id: 'b', title: 'Second' }, { id: 'c', title: 'Third' }]),
  //eslint-disable-next-line
  alternateTabsContent: new A([
    { key: 'a', label: 'First' },
    { key: 'b', label: 'Second' },
    { key: 'c', label: 'Third' }
  ]),
  basicTabsSelection: 'a',
  secondTabsSelection: 'g',
  actions: {
    addTab() {
      this.get('basicTabsContent').addObject({ id: 'd', title: 'Fourth' });
    }
  }
});


================================================
FILE: tests/dummy/app/helpers/.gitkeep
================================================


================================================
FILE: tests/dummy/app/index.html
================================================
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>ember-cli-materialize</title>
    <meta name="description" content="An ember-cli addon for using Materialize (CSS Framework based on Material Design) in Ember applications.">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no"/>

    {{content-for "head"}}

    <link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">
    <link integrity="" rel="stylesheet" href="{{rootURL}}assets/dummy.css">

    {{content-for "head-footer"}}
  </head>
  <body>
    {{content-for "body"}}

    <script src="{{rootURL}}assets/vendor.js"></script>
    <script src="{{rootURL}}assets/dummy.js"></script>

    {{content-for "body-footer"}}
  </body>
</html>


================================================
FILE: tests/dummy/app/models/.gitkeep
================================================


================================================
FILE: tests/dummy/app/resolver.js
================================================
import Resolver from 'ember-resolver';

export default Resolver;


================================================
FILE: tests/dummy/app/router.js
================================================
import EmberRouter from '@ember/routing/router';
import config from './config/environment';

const Router = EmberRouter.extend({
  location: config.locationType,
  rootURL: config.rootURL
});

Router.map(function() {
  this.route('badges');
  this.route('buttons');
  this.route('cards');
  this.route('collapsible');
  this.route('collection');
  this.route('copyright');
  this.route('forms');
  this.route('loader');
  this.route('modal');
  this.route('navbar');
  this.route('pagination');
  this.route('parallax');
  this.route('tables');
  this.route('tabs');
  this.route('colors');
});

export default Router;


================================================
FILE: tests/dummy/app/routes/.gitkeep
================================================


================================================
FILE: tests/dummy/app/routes/buttons.js
================================================
import Route from '@ember/routing/route';

export default Route.extend({
  actions: {
    debug() {
      // eslint-disable-next-line
      console.debug('Action debug sent');
    }
  }
});


================================================
FILE: tests/dummy/app/routes/collection.js
================================================
import { A } from '@ember/array';
import Route from '@ember/routing/route';

export default Route.extend({
  model() {
    // BEGIN-SNIPPET collection-route
    let content = A([
      { id: 'white', name: 'Walter White', route: 'tabs' },
      { id: 'pinkman', name: 'Jesse Pinkman', route: 'modal' },
      { id: 'freng', name: 'Gustavo Freng', route: 'collection' }
    ]);
    // END-SNIPPET
    return content;
  }
});


================================================
FILE: tests/dummy/app/routes/forms.js
================================================
import EObj from '@ember/object';
import Route from '@ember/routing/route';
import { A } from '@ember/array';
// jscs:enable disallowDirectPropertyAccess

export default Route.extend({
  model() {
    return EObj.create({ name: null });
  },

  setupController(controller, model) {
    this._super(controller, model);
    controller.set('errors', EObj.create({ name: A(['This field is required']) }));
  }
});


================================================
FILE: tests/dummy/app/routes/tables.js
================================================
import Route from '@ember/routing/route';
import { A } from '@ember/array';

export default Route.extend({
  model() {
    // BEGIN-SNIPPET table-route
    let content = new A([
      { id: 'white', name: 'Walter White', route: 'tabs' },
      { id: 'pinkman', name: 'Jesse Pinkman', route: 'modal' },
      { id: 'freng', name: 'Gustavo Freng', route: 'collection' }
    ]);
    // END-SNIPPET

    return content;
  }
});


================================================
FILE: tests/dummy/app/styles/app.scss
================================================
// Fix for Roboto font path
$roboto-font-path: '../assets/';
$button-color: #e51c23;

// Materialize styles
@import "materialize";

@import 'code';
// ember-cli-materialize styles
@import 'ember-cli-materialize';

span.new-badge {
  padding-right: 15px;
  padding-left: 10px;
  margin-right: -20px;
}

.index-banner {
  background-color: color('grey', 'lighten-3');
  .container {
    position: relative;
    .header {
      color: color('deep-orange', 'base');
    }
  }
  h4 {
    margin-bottom: 40px;
  }
  a{
    color: color('deep-orange', 'base');
  }
}

.github-commit {
  padding: 14px 0;
  height: 60px;
  line-height: 36px;
  background-color: #5c5757;
  color: #e6e6e6;
  font-size: 0.9rem;
}

a {
  color: $button-color;
}

.badge {
  &.new {
    color: color('materialize-red', 'base');
    background-color: #fff
  }
  &.default-value {
    float: none;
    position: inherit;
  }
}

.intro {
  font-size: 1.2em;
}

// /* FIXME: Workaround for https://github.com/Dogfalo/materialize/issues/1079 */
// @each $mdi-icon-name, $mdi-icon-value in $mdi-list-icons {
//   .#{$mdi-prefix}#{$mdi-icon-name}:before {
//     content: "\""+ $mdi-icon-value +"\"";
//   }
// }

// Qunit test runner style fixes
#qunit-testrunner-toolbar {
  [type="checkbox"] + label {
    margin-left: 25px;
    &:before {
      left: -20px;
    }
  }
  #qunit-modulefilter {
    display: inherit;
  }
}

nav .brand-logo {
  white-space: nowrap;
  padding-left: 20px;
}

.code-comment {
  color: #aaa;
}

.ember-logo {
  height: 48px;
  padding-top: 15px;
}

.top-nav-container {
  float: right;
  max-width: calc(100% - 260px);
  overflow-y: scroll;
  box-shadow: inset -10px 0 20px rgba(255,255,255,0.7), inset 10px 0 20px rgba(255,255,255,0.7);
  ul {
    white-space: nowrap;
    li {
      float: none;
      display: inline-block;
    }
  }
}

.fixed-btns-example {
  position: relative;
  display: inline-block;
  right: 0;
  bottom: 0;
}

header, main, footer.demo-footer {
  padding-left: 240px;
}

@media only screen and (max-width : 992px) {
  main, footer.demo-footer, header {
    padding-left: 0;
  }
}

.demo-page-submenu {
  li:hover,
  li.active {
    background-color: color('deep-orange', 'lighten-2');
    a {
      color: white;
    }
  }
}

.navbar-fixed {
  z-index: 10000;
}
.option-description {
  font-size: 0.8rem;
  margin-left: 40px;
}

.color-swatch-collection {

  .color-swatch {
    &[class*="darken"] {
      color: white;
    }
    height: 40px;
    line-height: 40px;
  }
}

.text-center {
  text-align: center;
}

.font-size-18 {
  font-size: 18px;
}
.position-relative {
  position: relative;
}



================================================
FILE: tests/dummy/app/styles/code.scss
================================================
/* Code blocks */
pre[class*="language-"] {
  padding: 1em;
  margin: .5em 0;
  overflow: auto;
}

:not(pre) > code[class*="language-"],
pre[class*="language-"] {
  background: #f5f2f0;
}

/* Inline code */
:not(pre) > code[class*="language-"] {
  padding: .1em;
  border-radius: .3em;
}


================================================
FILE: tests/dummy/app/styles/tests.scss
================================================

// Qunit test runner style fixes
#qunit-testrunner-toolbar {
  [type="checkbox"] + label {
    margin-left: 25px;
    &:before {
      left: -20px;
    }
  }
  #qunit-modulefilter {
    display: inherit;
  }
}

================================================
FILE: tests/dummy/app/templates/application.hbs
================================================
<header>
  {{demo-nav}}
</header>
<ul class="side-nav fixed demo-page-submenu" id="mobile-demo">
  {{#each demoSections as |section|}} {{#link-to section.route activeClass='active' tagName='li'}} {{#link-to section.route}}
  {{section.name}} {{#if section.new}} {{#md-badge class='deep-orange lighten-1 new-badge right white-text'}}New{{/md-badge}}
  {{/if}} {{/link-to}} {{/link-to}} {{/each}}
</ul>
<main>
  {{outlet}}
</main>

{{!-- {{md-modal-container}} --}}

<footer class="page-footer demo-footer deep-orange darken-2">
  {{#md-copyright text='Copyright Text' startYear=2014}}
  <a class="grey-text text-lighten-4 right" href="#!">More Links</a>{{/md-copyright}}
</footer>
{{ember-anchor a=myQueryParam}}

================================================
FILE: tests/dummy/app/templates/badges.hbs
================================================
{{example-header title="Badges"}}

<div class='container'>
  {{#options-panel}}
    {{component-option optionId="text"}}
  {{/options-panel}}

  <div class="section">
    {{example-snippet snippet='badges-simple'}}
  </div>
</div>


================================================
FILE: tests/dummy/app/templates/buttons.hbs
================================================
{{example-header title="Buttons"}}

<div class='container'>
  {{#options-panel}}
    {{component-option optionId="text"}}
    {{component-option optionId="action"}}
    {{component-option optionId="actionArg" description="An object or value to be passed to action handlers when it fires"}}
    {{component-option optionId="icon"}}
    {{component-option optionId="iconPosition" default="left"}}
    {{component-option optionId="buttonType"}}
    {{component-option optionId="isDisabled" default="false"}}
  {{/options-panel}}

  <div class="section">
    <h4 class="col s12 header">Raised</h4>
    {{example-snippet targetObject=this snippet='buttons-raised' class="button-example"}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Floating</h4>
    {{example-snippet targetObject=this snippet='buttons-floating' class="button-example"}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Floating Group</h4>
    {{example-snippet targetObject=this snippet='buttons-floating-group' class="button-example"}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Dropdown</h4>
    <p>Add a dropdown list to any button. Note: list items are wrapped in an &lt;ul&gt;-tag by the component.</p>

    {{example-snippet snippet='buttons-dropdown' class="button-example"}}

    {{#options-panel}}
      {{component-option optionId="hover" default="false" description="If true, the dropdown will open on hover."}}
      {{component-option optionId="constrainWidth" default="true" description="If true, constrainWidth to the size of the dropdown activator."}}
      {{component-option optionId="inDuration" default="300" description="The duration of the transition enter in milliseconds."}}
      {{component-option optionId="outDuration" default="300" description="The duration of the transition out in milliseconds."}}
      {{component-option optionId="gutter" default="0" description="This defines the spacing from the aligned edge."}}
      {{component-option optionId="belowOrigin" default="false" description="If true, the dropdown will show below the activator."}}
    {{/options-panel}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Flat</h4>
    {{example-snippet snippet='buttons-flat'}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Submit</h4>
    {{example-snippet snippet='buttons-submit'}}
  </div>

  <div class="section">
    <h4 class="col s12 header">Large</h4>
    {{example-snippet snippet='buttons-large'}}
  </div>

  <div class="section">
    <h4 clas
Download .txt
gitextract_pahd7ynm/

├── .bowerrc
├── .editorconfig
├── .ember-cli
├── .eslintignore
├── .eslintrc.js
├── .github/
│   └── ISSUE_TEMPLATE/
│       ├── bug_report.md
│       └── feature_request.md
├── .gitignore
├── .jscsrc
├── .jshintrc
├── .npmignore
├── .prettierrc
├── .template-lintrc.js
├── .travis.yml
├── .vscode/
│   └── settings.json
├── .watchmanconfig
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE.md
├── README.md
├── addon/
│   ├── components/
│   │   ├── -md-fixed-btn-base.js
│   │   ├── md-badge.js
│   │   ├── md-btn-dropdown.js
│   │   ├── md-btn-submit.js
│   │   ├── md-btn.js
│   │   ├── md-card-action.js
│   │   ├── md-card-collapsible.js
│   │   ├── md-card-content.js
│   │   ├── md-card-panel.js
│   │   ├── md-card-reveal.js
│   │   ├── md-card.js
│   │   ├── md-check.js
│   │   ├── md-checks-check.js
│   │   ├── md-checks.js
│   │   ├── md-collapsible.js
│   │   ├── md-collection.js
│   │   ├── md-copyright.js
│   │   ├── md-default-collection-header.js
│   │   ├── md-default-column-header.js
│   │   ├── md-fixed-btn.js
│   │   ├── md-fixed-btns.js
│   │   ├── md-input-date.js
│   │   ├── md-input-field.js
│   │   ├── md-input.js
│   │   ├── md-loader.js
│   │   ├── md-modal-container.js
│   │   ├── md-modal.js
│   │   ├── md-navbar.js
│   │   ├── md-pagination.js
│   │   ├── md-parallax.js
│   │   ├── md-radio.js
│   │   ├── md-radios-radio.js
│   │   ├── md-radios.js
│   │   ├── md-range.js
│   │   ├── md-select.js
│   │   ├── md-switch.js
│   │   ├── md-switches-switch.js
│   │   ├── md-switches.js
│   │   ├── md-tab.js
│   │   ├── md-table-col.js
│   │   ├── md-table.js
│   │   ├── md-tabs.js
│   │   ├── md-textarea.js
│   │   ├── selectable-item-group.js
│   │   └── selectable-item.js
│   ├── helpers/
│   │   └── bw-compat-icon.js
│   ├── mixins/
│   │   ├── group-selectable-item.js
│   │   └── uses-settings.js
│   ├── services/
│   │   └── md-settings.js
│   └── templates/
│       └── components/
│           ├── md-badge.hbs
│           ├── md-btn-dropdown.hbs
│           ├── md-btn.hbs
│           ├── md-card-collapsible.hbs
│           ├── md-card-content.hbs
│           ├── md-card-panel.hbs
│           ├── md-card-reveal.hbs
│           ├── md-card.hbs
│           ├── md-checkbox.hbs
│           ├── md-checks-check.hbs
│           ├── md-collapsible.hbs
│           ├── md-collection.hbs
│           ├── md-copyright.hbs
│           ├── md-default-collection-header.hbs
│           ├── md-default-column-header.hbs
│           ├── md-fixed-btn.hbs
│           ├── md-fixed-btns.hbs
│           ├── md-input-date.hbs
│           ├── md-input.hbs
│           ├── md-loader.hbs
│           ├── md-modal-container.hbs
│           ├── md-modal.hbs
│           ├── md-navbar.hbs
│           ├── md-pagination.hbs
│           ├── md-parallax.hbs
│           ├── md-radio.hbs
│           ├── md-radios-radio.hbs
│           ├── md-range.hbs
│           ├── md-select.hbs
│           ├── md-switch.hbs
│           ├── md-switches-switch.hbs
│           ├── md-tab.hbs
│           ├── md-table-col.hbs
│           ├── md-table.hbs
│           ├── md-tabs.hbs
│           ├── md-textarea.hbs
│           └── selectable-item-group.hbs
├── app/
│   ├── .gitkeep
│   ├── components/
│   │   ├── materialize-badge.js
│   │   ├── materialize-button-submit.js
│   │   ├── materialize-button.js
│   │   ├── materialize-card-action.js
│   │   ├── materialize-card-content.js
│   │   ├── materialize-card-panel.js
│   │   ├── materialize-card-reveal.js
│   │   ├── materialize-card.js
│   │   ├── materialize-checkbox.js
│   │   ├── materialize-checkboxes.js
│   │   ├── materialize-collapsible-card.js
│   │   ├── materialize-collapsible.js
│   │   ├── materialize-copyright.js
│   │   ├── materialize-date-input.js
│   │   ├── materialize-input-field.js
│   │   ├── materialize-input.js
│   │   ├── materialize-loader.js
│   │   ├── materialize-modal.js
│   │   ├── materialize-navbar.js
│   │   ├── materialize-pagination.js
│   │   ├── materialize-parallax.js
│   │   ├── materialize-radio.js
│   │   ├── materialize-radios.js
│   │   ├── materialize-range.js
│   │   ├── materialize-select.js
│   │   ├── materialize-switch.js
│   │   ├── materialize-switches.js
│   │   ├── materialize-tabs-tab.js
│   │   ├── materialize-tabs.js
│   │   ├── materialize-textarea.js
│   │   ├── md-badge.js
│   │   ├── md-btn-dropdown.js
│   │   ├── md-btn-submit.js
│   │   ├── md-btn.js
│   │   ├── md-card-action.js
│   │   ├── md-card-collapsible.js
│   │   ├── md-card-content.js
│   │   ├── md-card-panel.js
│   │   ├── md-card-reveal.js
│   │   ├── md-card.js
│   │   ├── md-check.js
│   │   ├── md-checks-check.js
│   │   ├── md-checks.js
│   │   ├── md-collapsible.js
│   │   ├── md-collection.js
│   │   ├── md-copyright.js
│   │   ├── md-default-collection-header.js
│   │   ├── md-default-column-header.js
│   │   ├── md-fixed-btn.js
│   │   ├── md-fixed-btns.js
│   │   ├── md-input-date.js
│   │   ├── md-input-field.js
│   │   ├── md-input.js
│   │   ├── md-loader.js
│   │   ├── md-modal-container.js
│   │   ├── md-modal.js
│   │   ├── md-navbar.js
│   │   ├── md-pagination.js
│   │   ├── md-parallax.js
│   │   ├── md-radio.js
│   │   ├── md-radios-radio.js
│   │   ├── md-radios.js
│   │   ├── md-range.js
│   │   ├── md-select.js
│   │   ├── md-switch.js
│   │   ├── md-switches-switch.js
│   │   ├── md-switches.js
│   │   ├── md-tab.js
│   │   ├── md-table-col.js
│   │   ├── md-table.js
│   │   ├── md-tabs.js
│   │   └── md-textarea.js
│   ├── helpers/
│   │   └── bw-compat-icon.js
│   ├── initializers/
│   │   ├── add-modals-container.js
│   │   └── md-settings.js
│   ├── services/
│   │   └── md-settings.js
│   └── styles/
│       ├── app.scss
│       └── ember-cli-materialize.scss
├── app.json
├── blueprints/
│   ├── .jshintrc
│   └── ember-cli-materialize/
│       └── index.js
├── bower.json
├── config/
│   ├── ember-try.js
│   ├── environment.js
│   └── release.js
├── ember-cli-build.js
├── index.js
├── jsconfig.json
├── lib/
│   └── try-generate-pages.sh
├── package.json
├── renovate.json
├── testem.js
├── tests/
│   ├── .jshintrc
│   ├── acceptance/
│   │   ├── badges-test.js
│   │   ├── buttons-test.js
│   │   ├── cards-test.js
│   │   ├── collapsible-test.js
│   │   ├── collection-test.js
│   │   ├── copyright-test.js
│   │   ├── forms-test.js
│   │   ├── index-test.js
│   │   ├── loader-test.js
│   │   ├── modal-test.js
│   │   ├── navbar-test.js
│   │   ├── pagination-test.js
│   │   ├── parallax-test.js
│   │   ├── table-test.js
│   │   └── tabs-test.js
│   ├── blanket-options.js
│   ├── dummy/
│   │   ├── app/
│   │   │   ├── app.js
│   │   │   ├── components/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── demo-nav.js
│   │   │   │   ├── example-snippet.js
│   │   │   │   ├── my-column-header.js
│   │   │   │   ├── my-custom-header.js
│   │   │   │   └── options-panel.js
│   │   │   ├── config/
│   │   │   │   └── environment.d.ts
│   │   │   ├── controllers/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── application.js
│   │   │   │   ├── buttons.js
│   │   │   │   ├── collapsible.js
│   │   │   │   ├── collection.js
│   │   │   │   ├── colors.js
│   │   │   │   ├── forms.js
│   │   │   │   ├── loader.js
│   │   │   │   ├── modal.js
│   │   │   │   ├── pagination.js
│   │   │   │   └── tabs.js
│   │   │   ├── helpers/
│   │   │   │   └── .gitkeep
│   │   │   ├── index.html
│   │   │   ├── models/
│   │   │   │   └── .gitkeep
│   │   │   ├── resolver.js
│   │   │   ├── router.js
│   │   │   ├── routes/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── buttons.js
│   │   │   │   ├── collection.js
│   │   │   │   ├── forms.js
│   │   │   │   └── tables.js
│   │   │   ├── styles/
│   │   │   │   ├── app.scss
│   │   │   │   ├── code.scss
│   │   │   │   └── tests.scss
│   │   │   └── templates/
│   │   │       ├── application.hbs
│   │   │       ├── badges.hbs
│   │   │       ├── buttons.hbs
│   │   │       ├── cards.hbs
│   │   │       ├── collapsible.hbs
│   │   │       ├── collection.hbs
│   │   │       ├── colors.hbs
│   │   │       ├── components/
│   │   │       │   ├── .gitkeep
│   │   │       │   ├── component-option.hbs
│   │   │       │   ├── demo-nav.hbs
│   │   │       │   ├── example-header.hbs
│   │   │       │   ├── example-snippet.hbs
│   │   │       │   └── options-panel.hbs
│   │   │       ├── copyright.hbs
│   │   │       ├── forms.hbs
│   │   │       ├── index.hbs
│   │   │       ├── loader.hbs
│   │   │       ├── modal.hbs
│   │   │       ├── navbar.hbs
│   │   │       ├── pagination.hbs
│   │   │       ├── parallax.hbs
│   │   │       ├── snippets/
│   │   │       │   ├── badges-simple.hbs
│   │   │       │   ├── buttons-disabled.hbs
│   │   │       │   ├── buttons-dropdown.hbs
│   │   │       │   ├── buttons-flat.hbs
│   │   │       │   ├── buttons-floating-group.hbs
│   │   │       │   ├── buttons-floating.hbs
│   │   │       │   ├── buttons-large.hbs
│   │   │       │   ├── buttons-raised.hbs
│   │   │       │   ├── buttons-submit.hbs
│   │   │       │   ├── cards-basic.hbs
│   │   │       │   ├── cards-image.hbs
│   │   │       │   ├── cards-panel.hbs
│   │   │       │   ├── cards-reveal.hbs
│   │   │       │   ├── collapsible-accordion.hbs
│   │   │       │   ├── collapsible-action.hbs
│   │   │       │   ├── collapsible-expandable.hbs
│   │   │       │   ├── collapsible-preselected.hbs
│   │   │       │   ├── collection-avatars.hbs
│   │   │       │   ├── collection-basic.hbs
│   │   │       │   ├── collection-header-custom.hbs
│   │   │       │   ├── collection-header.hbs
│   │   │       │   ├── collection-links.hbs
│   │   │       │   ├── collection-secondary-content.hbs
│   │   │       │   ├── copyright-basic.hbs
│   │   │       │   ├── form-validation-basic.hbs
│   │   │       │   ├── input-basic.hbs
│   │   │       │   ├── input-check-basic.hbs
│   │   │       │   ├── input-check-list.hbs
│   │   │       │   ├── input-date-basic.hbs
│   │   │       │   ├── input-radio-list.hbs
│   │   │       │   ├── input-range-basic.hbs
│   │   │       │   ├── input-switch-basic.hbs
│   │   │       │   ├── input-switch-list-exclusive.hbs
│   │   │       │   ├── input-switch-list.hbs
│   │   │       │   ├── input-types.hbs
│   │   │       │   ├── input-with-icon.hbs
│   │   │       │   ├── modal-basic.hbs
│   │   │       │   ├── my-column-header.hbs
│   │   │       │   ├── my-custom-header.hbs
│   │   │       │   ├── navbar-basic.hbs
│   │   │       │   ├── navbar-custom-home.hbs
│   │   │       │   ├── none.hbs
│   │   │       │   ├── pagination-basic.hbs
│   │   │       │   ├── parallax-basic.hbs
│   │   │       │   ├── progress-circular.hbs
│   │   │       │   ├── progress-determinate.hbs
│   │   │       │   ├── progress-indeterminate.hbs
│   │   │       │   ├── select-basic.hbs
│   │   │       │   ├── tables-basic.hbs
│   │   │       │   ├── tables-bordered.hbs
│   │   │       │   ├── tables-centered.hbs
│   │   │       │   ├── tables-custom-cell.hbs
│   │   │       │   ├── tables-custom-header.hbs
│   │   │       │   ├── tables-hoverable.hbs
│   │   │       │   ├── tables-responsive.hbs
│   │   │       │   ├── tables-striped.hbs
│   │   │       │   ├── tabs-basic.hbs
│   │   │       │   ├── tabs-declarative.hbs
│   │   │       │   ├── tabs-optionpaths.hbs
│   │   │       │   ├── text-color.hbs
│   │   │       │   └── textarea-basic.hbs
│   │   │       ├── tables.hbs
│   │   │       └── tabs.hbs
│   │   ├── config/
│   │   │   ├── environment.js
│   │   │   ├── optional-features.json
│   │   │   └── targets.js
│   │   └── public/
│   │       ├── crossdomain.xml
│   │       └── robots.txt
│   ├── helpers/
│   │   ├── destroy-app.js
│   │   ├── module-for-acceptance.js
│   │   ├── resolver.js
│   │   ├── selectable-item-group.js
│   │   ├── selectable-item.js
│   │   └── start-app.js
│   ├── index.html
│   ├── integration/
│   │   └── components/
│   │       ├── md-btn-dropdown-test.js
│   │       ├── md-pagination-test.js
│   │       └── md-select-test.js
│   ├── test-helper.js
│   └── unit/
│       ├── .gitkeep
│       ├── components/
│       │   ├── materialize-badge-test.js
│       │   ├── materialize-button-dropdown-test.js
│       │   ├── materialize-button-submit-test.js
│       │   ├── materialize-button-test.js
│       │   ├── materialize-card-action-test.js
│       │   ├── materialize-card-content-test.js
│       │   ├── materialize-card-panel-test.js
│       │   ├── materialize-card-reveal-test.js
│       │   ├── materialize-card-test.js
│       │   ├── materialize-checkbox-test.js
│       │   ├── materialize-checkboxes-test.js
│       │   ├── materialize-collapsible-card-test.js
│       │   ├── materialize-collapsible-test.js
│       │   ├── materialize-copyright-test.js
│       │   ├── materialize-date-input-test.js
│       │   ├── materialize-input-field-test.js
│       │   ├── materialize-input-test.js
│       │   ├── materialize-loader-test.js
│       │   ├── materialize-pagination-test.js
│       │   ├── materialize-parallax-test.js
│       │   ├── materialize-radios-test.js
│       │   ├── materialize-range-test.js
│       │   ├── materialize-switch-test.js
│       │   ├── materialize-switches-test.js
│       │   ├── materialize-tabs-tab-test.js
│       │   ├── materialize-tabs-test.js
│       │   ├── materialize-textarea-test.js
│       │   ├── md-collection-test.js
│       │   ├── md-fixed-btn-test.js
│       │   ├── md-fixed-btns-test.js
│       │   └── md-modal-container-test.js
│       ├── helpers/
│       │   └── bw-compat-icon-test.js
│       ├── initializers/
│       │   └── md-settings-test.js
│       └── services/
│           └── md-settings-test.js
└── vendor/
    ├── .gitkeep
    └── highlight.pack.js
Download .txt
SYMBOL INDEX (157 symbols across 80 files)

FILE: addon/components/-md-fixed-btn-base.js
  method fireButtonAction (line 9) | fireButtonAction() {

FILE: addon/components/md-btn-dropdown.js
  method didRender (line 22) | didRender() {
  method _setupDropdown (line 31) | _setupDropdown() {

FILE: addon/components/md-btn.js
  method init (line 23) | init() {
  method didInsertElement (line 30) | didInsertElement() {
  method _setupWaves (line 40) | _setupWaves() {
  method click (line 47) | click() {

FILE: addon/components/md-card-collapsible.js
  method didInsertElement (line 16) | didInsertElement() {
  method _setupCollapsible (line 21) | _setupCollapsible() {
  method _teardownCollapsible (line 26) | _teardownCollapsible() {
  method willDestroyElement (line 32) | willDestroyElement() {

FILE: addon/components/md-collapsible.js
  method get (line 12) | get() {
  method set (line 16) | set(key, val) {
  method headerClicked (line 22) | headerClicked() {

FILE: addon/components/md-copyright.js
  method init (line 10) | init() {

FILE: addon/components/md-input-date.js
  constant MONTH_NAMES (line 5) | const MONTH_NAMES = [
  function formatDate (line 20) | function formatDate(timestamp) {
  method didInsertElement (line 33) | didInsertElement() {
  method willDestroyElement (line 38) | willDestroyElement() {
  method _setupPicker (line 43) | _setupPicker() {
  method _teardownPicker (line 60) | _teardownPicker() {

FILE: addon/components/md-input-field.js
  method didInsertElement (line 29) | didInsertElement() {
  method _setupLabel (line 41) | _setupLabel() {
  method inputFocusIn (line 51) | inputFocusIn(evt) {

FILE: addon/components/md-input.js
  method didInsertElement (line 8) | didInsertElement() {

FILE: addon/components/md-loader.js
  method init (line 19) | init() {

FILE: addon/components/md-modal-container.js
  method init (line 9) | init() {

FILE: addon/components/md-modal.js
  method init (line 31) | init() {
  method cancel (line 40) | cancel() {
  method closeModal (line 45) | closeModal() {

FILE: addon/components/md-navbar.js
  method didInsertElement (line 13) | didInsertElement() {
  method _setupNavbar (line 19) | _setupNavbar() {

FILE: addon/components/md-pagination.js
  method oneBack (line 68) | oneBack() {
  method oneFwd (line 73) | oneFwd() {
  method gotoPage (line 78) | gotoPage(pagenum) {

FILE: addon/components/md-parallax.js
  method didInsertElement (line 8) | didInsertElement() {
  method _setupParallax (line 13) | _setupParallax() {

FILE: addon/components/md-radio.js
  method didInsertElement (line 21) | didInsertElement() {

FILE: addon/components/md-select.js
  method didRender (line 14) | didRender() {
  method willUpdate (line 19) | willUpdate() {
  method willDestroyElement (line 23) | willDestroyElement() {
  method _setupSelect (line 27) | _setupSelect() {
  method _teardownSelect (line 48) | _teardownSelect() {
  method optionSelected (line 55) | optionSelected(e) {

FILE: addon/components/md-tab.js
  method click (line 34) | click() {

FILE: addon/components/md-table.js
  method init (line 12) | init() {
  method registerChildComponent (line 21) | registerChildComponent(childComponent) {
  method unregisterChildComponent (line 26) | unregisterChildComponent(childComponent) {

FILE: addon/components/md-tabs.js
  method didInsertElement (line 21) | didInsertElement() {
  method tabComponents (line 30) | tabComponents() {
  method _updateIndicatorPosition (line 34) | _updateIndicatorPosition(animate = true) {

FILE: addon/components/md-textarea.js
  method didInsertElement (line 7) | didInsertElement() {

FILE: addon/components/selectable-item-group.js
  method init (line 18) | init() {
  method isValueSelected (line 25) | isValueSelected(value) {
  method setValueSelection (line 33) | setValueSelection(value, select) {
  method addToSelection (line 41) | addToSelection(value) {
  method removeFromSelection (line 49) | removeFromSelection(value) {

FILE: addon/components/selectable-item.js
  method get (line 15) | get() {
  method set (line 23) | set(key, val) {
  method _setupLabel (line 37) | _setupLabel() {
  method didInsertElement (line 46) | didInsertElement() {

FILE: addon/helpers/bw-compat-icon.js
  function isOldIcon (line 5) | function isOldIcon(str) {
  function bwCompatIcon (line 13) | function bwCompatIcon(params, hash) {

FILE: addon/services/md-settings.js
  method init (line 25) | init() {
  method _setDefaults (line 30) | _setDefaults() {

FILE: app/components/materialize-badge.js
  method init (line 5) | init() {

FILE: app/components/materialize-button-submit.js
  method init (line 5) | init() {

FILE: app/components/materialize-button.js
  method init (line 5) | init() {

FILE: app/components/materialize-card-action.js
  method init (line 5) | init() {

FILE: app/components/materialize-card-content.js
  method init (line 5) | init() {

FILE: app/components/materialize-card-panel.js
  method init (line 5) | init() {

FILE: app/components/materialize-card-reveal.js
  method init (line 5) | init() {

FILE: app/components/materialize-card.js
  method init (line 5) | init() {

FILE: app/components/materialize-checkbox.js
  method init (line 5) | init() {

FILE: app/components/materialize-checkboxes.js
  method init (line 5) | init() {

FILE: app/components/materialize-collapsible-card.js
  method init (line 5) | init() {

FILE: app/components/materialize-collapsible.js
  method init (line 5) | init() {

FILE: app/components/materialize-copyright.js
  method init (line 5) | init() {

FILE: app/components/materialize-date-input.js
  method init (line 5) | init() {

FILE: app/components/materialize-input-field.js
  method init (line 5) | init() {

FILE: app/components/materialize-input.js
  method init (line 5) | init() {

FILE: app/components/materialize-loader.js
  method init (line 5) | init() {

FILE: app/components/materialize-modal.js
  method init (line 5) | init() {

FILE: app/components/materialize-navbar.js
  method init (line 5) | init() {

FILE: app/components/materialize-pagination.js
  method init (line 5) | init() {

FILE: app/components/materialize-parallax.js
  method init (line 5) | init() {

FILE: app/components/materialize-radio.js
  method init (line 5) | init() {

FILE: app/components/materialize-radios.js
  method init (line 5) | init() {

FILE: app/components/materialize-range.js
  method init (line 5) | init() {

FILE: app/components/materialize-select.js
  method init (line 5) | init() {

FILE: app/components/materialize-switch.js
  method init (line 5) | init() {

FILE: app/components/materialize-switches.js
  method init (line 5) | init() {

FILE: app/components/materialize-tabs-tab.js
  method init (line 5) | init() {

FILE: app/components/materialize-tabs.js
  method init (line 5) | init() {

FILE: app/components/materialize-textarea.js
  method init (line 5) | init() {

FILE: app/initializers/add-modals-container.js
  function initialize (line 1) | function initialize() {

FILE: app/initializers/md-settings.js
  function initialize (line 4) | function initialize() {

FILE: config/ember-try.js
  function scenario (line 6) | function scenario(emberVersion) {

FILE: tests/acceptance/buttons-test.js
  constant BUTTON_HOVER_TIMEOUT (line 7) | const BUTTON_HOVER_TIMEOUT = 1000;

FILE: tests/acceptance/cards-test.js
  function checkCardTitle (line 6) | function checkCardTitle(cardType, cardId) {
  function checkCardContent (line 27) | function checkCardContent(cardType, cardId) {
  function checkCardActions (line 50) | function checkCardActions(cardType, cardId) {

FILE: tests/dummy/app/components/demo-nav.js
  method didInsertElement (line 5) | didInsertElement() {

FILE: tests/dummy/app/components/example-snippet.js
  method get (line 9) | get() {
  method get (line 14) | get() {
  method send (line 18) | send() {

FILE: tests/dummy/app/components/options-panel.js
  method get (line 7) | get() {

FILE: tests/dummy/app/controllers/buttons.js
  method debug (line 9) | debug() {
  method firstAction (line 12) | firstAction() {
  method anotherAction (line 15) | anotherAction(arg) {

FILE: tests/dummy/app/controllers/collapsible.js
  method clicked (line 6) | clicked(tabModel) {

FILE: tests/dummy/app/controllers/forms.js
  function asJSON (line 9) | function asJSON(propKey) {

FILE: tests/dummy/app/controllers/modal.js
  method openModal (line 7) | openModal() {
  method closeModal (line 10) | closeModal() {
  method agree (line 13) | agree() {

FILE: tests/dummy/app/controllers/tabs.js
  method addTab (line 16) | addTab() {

FILE: tests/dummy/app/routes/buttons.js
  method debug (line 5) | debug() {

FILE: tests/dummy/app/routes/collection.js
  method model (line 5) | model() {

FILE: tests/dummy/app/routes/forms.js
  method model (line 7) | model() {
  method setupController (line 11) | setupController(controller, model) {

FILE: tests/dummy/app/routes/tables.js
  method model (line 5) | model() {

FILE: tests/helpers/destroy-app.js
  function destroyApp (line 3) | function destroyApp(application) {

FILE: tests/helpers/module-for-acceptance.js
  method beforeEach (line 8) | beforeEach() {
  method afterEach (line 16) | afterEach() {

FILE: tests/helpers/selectable-item-group.js
  function deselectForSingleSelectionTest (line 5) | function deselectForSingleSelectionTest() {

FILE: tests/helpers/selectable-item.js
  function selectableItemHasRequiredParts (line 7) | function selectableItemHasRequiredParts() {
  function disabledStateTest (line 32) | function disabledStateTest() {
  function selectTest (line 54) | function selectTest(params = {}) {
  function selectByLabelTest (line 69) | function selectByLabelTest() {
  function labelTest (line 83) | function labelTest() {
  function groupItemsRenderTest (line 116) | function groupItemsRenderTest() {
  function initialSelectionTest (line 145) | function initialSelectionTest(selection) {
  function disabledGroupTest (line 173) | function disabledGroupTest() {

FILE: tests/helpers/start-app.js
  function startApp (line 6) | function startApp(attrs) {

FILE: tests/unit/components/materialize-button-test.js
  method action (line 35) | action() {
  method action (line 48) | action() {

FILE: tests/unit/initializers/md-settings-test.js
  method beforeEach (line 9) | beforeEach() {

FILE: vendor/highlight.pack.js
  function n (line 6) | function n(e) {
  function t (line 10) | function t(e) {
  function r (line 14) | function r(e, n) {
  function a (line 19) | function a(e) {
  function i (line 23) | function i(e) {
  function o (line 30) | function o(e, n) {
  function u (line 38) | function u(e) {
  function c (line 54) | function c(e, r, a) {
  function s (line 84) | function s(e) {
  function f (line 129) | function f(e, t, a, i) {
  function l (line 236) | function l(e, t) {
  function g (line 251) | function g(e) {
  function h (line 257) | function h(e, n, t) {
  function p (line 263) | function p(e) {
  function d (line 285) | function d(e) {
  function b (line 289) | function b() {
  function v (line 297) | function v() {
  function m (line 301) | function m(n, t) {
  function N (line 308) | function N() {
  function E (line 312) | function E(e) {
Condensed preview — 385 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (326K chars).
[
  {
    "path": ".bowerrc",
    "chars": 60,
    "preview": "{\n  \"directory\": \"bower_components\",\n  \"analytics\": false\n}\n"
  },
  {
    "path": ".editorconfig",
    "chars": 368,
    "preview": "# EditorConfig helps developers define and maintain consistent\n# coding styles between different editors and IDEs\n# edit"
  },
  {
    "path": ".ember-cli",
    "chars": 280,
    "preview": "{\n  /**\n    Ember CLI sends analytics information by default. The data is completely\n    anonymous, but there are times "
  },
  {
    "path": ".eslintignore",
    "chars": 225,
    "preview": "# unconventional js\n/blueprints/*/files/\n/vendor/\n\n# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n\n# "
  },
  {
    "path": ".eslintrc.js",
    "chars": 1253,
    "preview": "/* eslint-env node */\nmodule.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion: 2017,\n    sourceType: 'module"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 655,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Describe the b"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 595,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n**Is your fea"
  },
  {
    "path": ".gitignore",
    "chars": 355,
    "preview": "# See https://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\n/dist/\n/tmp/\n\n# dependenci"
  },
  {
    "path": ".jscsrc",
    "chars": 161,
    "preview": "{\n  \"preset\": \"ember-suave\",\n  \"excludeFiles\": [\"blanket-options.js\"],\n  \"requireParenthesesAroundArrowParam\": null,\n  \""
  },
  {
    "path": ".jshintrc",
    "chars": 518,
    "preview": "{\n  \"predef\": [\n    \"document\",\n    \"window\",\n    \"-Promise\"\n  ],\n  \"browser\": true,\n  \"boss\": true,\n  \"curly\": true,\n  "
  },
  {
    "path": ".npmignore",
    "chars": 380,
    "preview": "# compiled output\n/dist/\n/tmp/\n\n# dependencies\n/bower_components/\n\n# misc\n/.bowerrc\n/.editorconfig\n/.ember-cli\n/.eslinti"
  },
  {
    "path": ".prettierrc",
    "chars": 153,
    "preview": "{\n  \"singleQuote\": true,\n  \"bracketSpacing\": true,\n  \"trailingComma\": \"none\",\n  \"useTabs\": false,\n  \"tabWidth\": 2,\n  \"pr"
  },
  {
    "path": ".template-lintrc.js",
    "chars": 84,
    "preview": "/* eslint-env node */\n'use strict';\n\nmodule.exports = {\n  extends: 'recommended'\n};\n"
  },
  {
    "path": ".travis.yml",
    "chars": 1755,
    "preview": "language: node_js\nnode_js:\n- '8'\nsudo: false\ndist: trusty\naddons:\n  chrome: stable\ncache:\n  yarn: true\nyarn: true\nenv:\n "
  },
  {
    "path": ".vscode/settings.json",
    "chars": 86,
    "preview": "{\n  \"javascript.implicitProjectConfig.checkJs\": true,\n  \"editor.formatOnSave\": false\n}"
  },
  {
    "path": ".watchmanconfig",
    "chars": 37,
    "preview": "{\n  \"ignore_dirs\": [\"tmp\", \"dist\"]\n}\n"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 39292,
    "preview": "# [0.24.0](https://github.com/mike-north/ember-cli-materialize/compare/v0.23.0...v0.24.0) (2019-03-03)\n\n\n### Features\n\n*"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 953,
    "preview": "# Contributing\nFirst of all, **thank you** for contributing, **you are awesome**!\n\nHere are a few rules to follow in ord"
  },
  {
    "path": "LICENSE.md",
    "chars": 1153,
    "preview": "The MIT License (MIT)\n\nCopyright (c) 2016 Stefan Gasser <stefangasser.info@gmail.com> and Mike North <michael.l.north@gm"
  },
  {
    "path": "README.md",
    "chars": 4953,
    "preview": "# ember-cli-materialize\n\n[![Greenkeeper badge](https://badges.greenkeeper.io/mike-north/ember-cli-materialize.svg)](http"
  },
  {
    "path": "addon/components/-md-fixed-btn-base.js",
    "chars": 544,
    "preview": "import { computed } from '@ember/object';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n "
  },
  {
    "path": "addon/components/md-badge.js",
    "chars": 203,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-badge';\n\nexport default Compone"
  },
  {
    "path": "addon/components/md-btn-dropdown.js",
    "chars": 1826,
    "preview": "import { computed } from '@ember/object';\nimport layout from '../templates/components/md-btn-dropdown';\nimport Materiali"
  },
  {
    "path": "addon/components/md-btn-submit.js",
    "chars": 205,
    "preview": "import MaterializeButton from './md-btn';\n\nexport default MaterializeButton.extend({\n  layoutName: 'components/materiali"
  },
  {
    "path": "addon/components/md-btn.js",
    "chars": 1441,
    "preview": "import { equal } from '@ember/object/computed';\nimport Component from '@ember/component';\nimport { computed } from '@emb"
  },
  {
    "path": "addon/components/md-card-action.js",
    "chars": 111,
    "preview": "import Component from '@ember/component';\n\nexport default Component.extend({\n  classNames: ['card-action']\n});\n"
  },
  {
    "path": "addon/components/md-card-collapsible.js",
    "chars": 920,
    "preview": "import { computed } from '@ember/object';\nimport Component from '@ember/component';\nimport layout from '../templates/com"
  },
  {
    "path": "addon/components/md-card-content.js",
    "chars": 1439,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport layout from '../templates/com"
  },
  {
    "path": "addon/components/md-card-panel.js",
    "chars": 213,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-card-panel';\n\nexport default Co"
  },
  {
    "path": "addon/components/md-card-reveal.js",
    "chars": 993,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport layout from '../templates/com"
  },
  {
    "path": "addon/components/md-card.js",
    "chars": 200,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-card';\n\nexport default Componen"
  },
  {
    "path": "addon/components/md-check.js",
    "chars": 270,
    "preview": "import { alias } from '@ember/object/computed';\nimport SelectableItem from './selectable-item';\nimport layout from '../t"
  },
  {
    "path": "addon/components/md-checks-check.js",
    "chars": 188,
    "preview": "import CheckboxComponent from './md-check';\nimport GroupSelectableItemMixin from '../mixins/group-selectable-item';\n\nexp"
  },
  {
    "path": "addon/components/md-checks.js",
    "chars": 166,
    "preview": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  selectableItem"
  },
  {
    "path": "addon/components/md-collapsible.js",
    "chars": 788,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport Component from '@ember/component';\nimport layout fro"
  },
  {
    "path": "addon/components/md-collection.js",
    "chars": 377,
    "preview": "import Component from '@ember/component';\nimport { bool } from '@ember/object/computed';\nimport layout from '../template"
  },
  {
    "path": "addon/components/md-copyright.js",
    "chars": 821,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { assert } from '@ember/debug"
  },
  {
    "path": "addon/components/md-default-collection-header.js",
    "chars": 202,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-default-collection-header';\n\nex"
  },
  {
    "path": "addon/components/md-default-column-header.js",
    "chars": 313,
    "preview": "import Component from '@ember/component';\nimport { alias } from '@ember/object/computed';\nimport layout from '../templat"
  },
  {
    "path": "addon/components/md-fixed-btn.js",
    "chars": 214,
    "preview": "import FixedButtonBase from './-md-fixed-btn-base';\nimport layout from '../templates/components/md-fixed-btn';\n\nexport d"
  },
  {
    "path": "addon/components/md-fixed-btns.js",
    "chars": 219,
    "preview": "import FixedButtonBase from './-md-fixed-btn-base';\nimport layout from '../templates/components/md-fixed-btns';\n\nexport "
  },
  {
    "path": "addon/components/md-input-date.js",
    "chars": 1318,
    "preview": "import $ from 'jquery';\nimport MaterializeInput from './md-input';\nimport layout from '../templates/components/md-input-"
  },
  {
    "path": "addon/components/md-input-field.js",
    "chars": 1563,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { isPresent } from '@ember/ut"
  },
  {
    "path": "addon/components/md-input.js",
    "chars": 325,
    "preview": "import MaterializeInputField from './md-input-field';\nimport layout from '../templates/components/md-input';\n\nexport def"
  },
  {
    "path": "addon/components/md-loader.js",
    "chars": 1692,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nim"
  },
  {
    "path": "addon/components/md-modal-container.js",
    "chars": 420,
    "preview": "import Component from '@ember/component';\nimport UsesSettings from '../mixins/uses-settings';\nimport layout from '../tem"
  },
  {
    "path": "addon/components/md-modal.js",
    "chars": 1249,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { oneWay } from '@ember/objec"
  },
  {
    "path": "addon/components/md-navbar.js",
    "chars": 958,
    "preview": "import $ from 'jquery';\nimport { computed } from '@ember/object';\nimport Component from '@ember/component';\nimport { typ"
  },
  {
    "path": "addon/components/md-pagination.js",
    "chars": 2157,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nim"
  },
  {
    "path": "addon/components/md-parallax.js",
    "chars": 440,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-parallax';\n\nexport default Comp"
  },
  {
    "path": "addon/components/md-radio.js",
    "chars": 765,
    "preview": "import { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { isEmpty } from '@embe"
  },
  {
    "path": "addon/components/md-radios-radio.js",
    "chars": 182,
    "preview": "import RadioComponent from './md-radio';\nimport GroupSelectableItemMixin from '../mixins/group-selectable-item';\n\nexport"
  },
  {
    "path": "addon/components/md-radios.js",
    "chars": 177,
    "preview": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  classNames: ['"
  },
  {
    "path": "addon/components/md-range.js",
    "chars": 206,
    "preview": "import Component from '@ember/component';\nimport layout from '../templates/components/md-range';\n\nexport default Compone"
  },
  {
    "path": "addon/components/md-select.js",
    "chars": 2608,
    "preview": "import { A } from '@ember/array';\nimport { isNone } from '@ember/utils';\nimport { later } from '@ember/runloop';\nimport "
  },
  {
    "path": "addon/components/md-switch.js",
    "chars": 400,
    "preview": "import { computed } from '@ember/object';\nimport SelectableItem from './selectable-item';\nimport layout from '../templat"
  },
  {
    "path": "addon/components/md-switches-switch.js",
    "chars": 185,
    "preview": "import GroupSelectableItemMixin from '../mixins/group-selectable-item';\nimport SwitchComponent from './md-switch';\n\nexpo"
  },
  {
    "path": "addon/components/md-switches.js",
    "chars": 169,
    "preview": "import SelectableItemGroup from './selectable-item-group';\n\nexport default SelectableItemGroup.extend({\n  selectableItem"
  },
  {
    "path": "addon/components/md-tab.js",
    "chars": 1188,
    "preview": "import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { oneWay } from '@ember/objec"
  },
  {
    "path": "addon/components/md-table-col.js",
    "chars": 842,
    "preview": "import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { alias } from '@ember/o"
  },
  {
    "path": "addon/components/md-table.js",
    "chars": 972,
    "preview": "import { A } from '@ember/array';\nimport Component from '@ember/component';\nimport { computed } from '@ember/object';\nim"
  },
  {
    "path": "addon/components/md-tabs.js",
    "chars": 2181,
    "preview": "import Component from '@ember/component';\nimport { alias } from '@ember/object/computed';\nimport { debounce } from '@emb"
  },
  {
    "path": "addon/components/md-textarea.js",
    "chars": 290,
    "preview": "import InputField from './md-input-field';\nimport layout from '../templates/components/md-textarea';\n\nexport default Inp"
  },
  {
    "path": "addon/components/selectable-item-group.js",
    "chars": 2320,
    "preview": "import Component from '@ember/component';\nimport { A } from '@ember/array';\nimport { computed, get } from '@ember/object"
  },
  {
    "path": "addon/components/selectable-item.js",
    "chars": 1554,
    "preview": "import { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport Component from '@ember/"
  },
  {
    "path": "addon/helpers/bw-compat-icon.js",
    "chars": 940,
    "preview": "import Helper from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\nimport { A } from '@ember/array'"
  },
  {
    "path": "addon/mixins/group-selectable-item.js",
    "chars": 207,
    "preview": "import Mixin from '@ember/object/mixin';\nimport { alias } from '@ember/object/computed';\n\nexport default Mixin.create({\n"
  },
  {
    "path": "addon/mixins/uses-settings.js",
    "chars": 428,
    "preview": "import { getOwner } from '@ember/application';\nimport { computed } from '@ember/object';\nimport Mixin from '@ember/objec"
  },
  {
    "path": "addon/services/md-settings.js",
    "chars": 1214,
    "preview": "import { keys as emberKeys } from '@ember/polyfills';\nimport { set, getWithDefault } from '@ember/object';\nimport { oneW"
  },
  {
    "path": "addon/templates/components/md-badge.hbs",
    "chars": 18,
    "preview": "{{text}}{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-btn-dropdown.hbs",
    "chars": 158,
    "preview": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=iconPosition}}\n{{/if}}\n{{text}}\n<ul id=\"{{_dropdownContentId}}\" class="
  },
  {
    "path": "addon/templates/components/md-btn.hbs",
    "chars": 92,
    "preview": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=iconPosition}}\n{{/if}}\n{{text}}\n{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-card-collapsible.hbs",
    "chars": 10,
    "preview": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-card-content.hbs",
    "chars": 227,
    "preview": "{{#if title}}\n  <span class=\"card-title {{if activator 'activator'}} {{cardTitleClass}}\">\n    {{title}}\n\n    {{#if activ"
  },
  {
    "path": "addon/templates/components/md-card-panel.hbs",
    "chars": 49,
    "preview": "<span class=\"{{bodyClass}}\">\n  {{yield}}\n</span>\n"
  },
  {
    "path": "addon/templates/components/md-card-reveal.hbs",
    "chars": 158,
    "preview": "<span class=\"card-title grey-text text-darken-4 {{if activator 'activator'}}\">\n  {{title}} <i class=\"material-icons righ"
  },
  {
    "path": "addon/templates/components/md-card.hbs",
    "chars": 227,
    "preview": "{{#if image}}\n  <div class=\"card-image {{if activator 'waves-effect'}} {{if activator 'waves-block'}} {{if activator 'wa"
  },
  {
    "path": "addon/templates/components/md-checkbox.hbs",
    "chars": 180,
    "preview": "{{input type=\"checkbox\" class=\"materialize-selectable-item-input\" checked=isSelected disabled=disabled}}\n<label class=\"m"
  },
  {
    "path": "addon/templates/components/md-checks-check.hbs",
    "chars": 10,
    "preview": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-collapsible.hbs",
    "chars": 224,
    "preview": "<div class=\"collapsible-header {{if active 'active'}}\" onClick={{action \"headerClicked\"}}>\n  {{#if icon}}\n    {{bw-compa"
  },
  {
    "path": "addon/templates/components/md-collection.hbs",
    "chars": 140,
    "preview": "{{#if _hasHeader}}\n  {{component headerComponentName header=header}}\n{{/if}}\n{{#each content as |item idx|}}\n  {{yield i"
  },
  {
    "path": "addon/templates/components/md-copyright.hbs",
    "chars": 64,
    "preview": "<div class=\"container\">&copy; {{date}} {{text}} {{yield}}</div>\n"
  },
  {
    "path": "addon/templates/components/md-default-collection-header.hbs",
    "chars": 19,
    "preview": "<h4>{{header}}</h4>"
  },
  {
    "path": "addon/templates/components/md-default-column-header.hbs",
    "chars": 17,
    "preview": "{{column.header}}"
  },
  {
    "path": "addon/templates/components/md-fixed-btn.hbs",
    "chars": 104,
    "preview": "{{#md-btn\n  icon=btnIcon\n  class=_btnClassString\n  action='fireButtonAction'}}\n\n  {{yield}}\n\n{{/md-btn}}"
  },
  {
    "path": "addon/templates/components/md-fixed-btns.hbs",
    "chars": 101,
    "preview": "{{md-btn\n  icon=btnIcon\n  class=_btnClassString\n  action='fireButtonAction'}}\n\n<ul>\n  {{yield}}\n</ul>"
  },
  {
    "path": "addon/templates/components/md-input-date.hbs",
    "chars": 349,
    "preview": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n<input type=\"date\"\n  id=\"{{id}}\"\n  class=\"{{if val"
  },
  {
    "path": "addon/templates/components/md-input.hbs",
    "chars": 469,
    "preview": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n{{input id=id\n  value=value\n  classNameBindings=\"v"
  },
  {
    "path": "addon/templates/components/md-loader.hbs",
    "chars": 418,
    "preview": "{{#if isBarType}}\n  <div class=\"{{barClassName}}\" style={{barStyle}}></div>\n{{/if}}\n\n{{#each spinnerClassNames as |spinn"
  },
  {
    "path": "addon/templates/components/md-modal-container.hbs",
    "chars": 38,
    "preview": "<div id=\"{{modalContainerId}}\"></div>\n"
  },
  {
    "path": "addon/templates/components/md-modal.hbs",
    "chars": 307,
    "preview": "{{#modal-dialog\n  alignment=alignment\n  alignmentTarget=alignmentTarget\n  translucentOverlay=true\n  overlayClassNames='l"
  },
  {
    "path": "addon/templates/components/md-navbar.hbs",
    "chars": 374,
    "preview": "<div class='nav-wrapper'>\n  <div class='container'>\n    {{#link-to homeRoute class='brand-logo'}}{{name}}{{/link-to}}\n  "
  },
  {
    "path": "addon/templates/components/md-pagination.hbs",
    "chars": 423,
    "preview": "<li class=\"{{decrementClass}}\">\n  <a {{action 'oneBack'}}  class='decrement'>\n    <i class=\"material-icons\">chevron_left"
  },
  {
    "path": "addon/templates/components/md-parallax.hbs",
    "chars": 55,
    "preview": "<div class=\"parallax\">\n  <img src=\"{{image}}\"/>\n</div>\n"
  },
  {
    "path": "addon/templates/components/md-radio.hbs",
    "chars": 239,
    "preview": "{{radio-button\n  disabled=disabled\n  value=value\n  groupValue=groupValue\n  radioClass=\"materialize-selectable-item-input"
  },
  {
    "path": "addon/templates/components/md-radios-radio.hbs",
    "chars": 10,
    "preview": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-range.hbs",
    "chars": 131,
    "preview": "<label>{{name}}</label>\n<p class=\"range-field\">\n{{input type=\"range\" min=min max=max step=step value=value disabled=disa"
  },
  {
    "path": "addon/templates/components/md-select.hbs",
    "chars": 592,
    "preview": "<label id=\"{{id}}\" class=\"active\">{{label}}</label>\n\n<select onchange={{action 'optionSelected'}}\n        class=\"{{if va"
  },
  {
    "path": "addon/templates/components/md-switch.hbs",
    "chars": 302,
    "preview": "<span class=\"switch-label materialize-selectable-item-label\">{{name}}</span>\n\n<label class=\"{{_labelClass}}\">\n  <span cl"
  },
  {
    "path": "addon/templates/components/md-switches-switch.hbs",
    "chars": 10,
    "preview": "{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-tab.hbs",
    "chars": 52,
    "preview": "<a class=\"{{if active 'active'}}\">\n  {{title}}\n</a>\n"
  },
  {
    "path": "addon/templates/components/md-table-col.hbs",
    "chars": 21,
    "preview": "{{_value}}\n{{yield}}\n"
  },
  {
    "path": "addon/templates/components/md-table.hbs",
    "chars": 246,
    "preview": "<thead>\n  <tr>\n    {{#each columnComponents as |column|}}\n      {{component column.headerComponentName column=column}}\n "
  },
  {
    "path": "addon/templates/components/md-tabs.hbs",
    "chars": 253,
    "preview": "<div class=\"col s12\">\n  <ul class=\"tabs\">\n    {{#each _content as |tab|}}\n      {{md-tab title=tab.title value=tab.id}}\n"
  },
  {
    "path": "addon/templates/components/md-textarea.hbs",
    "chars": 280,
    "preview": "{{#if icon}}\n  {{bw-compat-icon icon extraClasses=\"prefix\"}}\n{{/if}}\n\n{{textarea id=id value=value name=name required=re"
  },
  {
    "path": "addon/templates/components/selectable-item-group.hbs",
    "chars": 152,
    "preview": "{{yield}}\n{{#each _content as |item|}}\n  <p>{{component selectableItemView content=item disabled=disabled groupId=\"group"
  },
  {
    "path": "app/.gitkeep",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "app/components/materialize-badge.js",
    "chars": 377,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeBadge from './md-badge';\n\nexport default "
  },
  {
    "path": "app/components/materialize-button-submit.js",
    "chars": 409,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeButtonSubmit from './md-btn-submit';\n\nexp"
  },
  {
    "path": "app/components/materialize-button.js",
    "chars": 376,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeButton from './md-btn';\n\nexport default M"
  },
  {
    "path": "app/components/materialize-card-action.js",
    "chars": 405,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardAction from './md-card-action';\n\nexpo"
  },
  {
    "path": "app/components/materialize-card-content.js",
    "chars": 410,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardContent from './md-card-content';\n\nex"
  },
  {
    "path": "app/components/materialize-card-panel.js",
    "chars": 400,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardPanel from './md-card-panel';\n\nexport"
  },
  {
    "path": "app/components/materialize-card-reveal.js",
    "chars": 405,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCardReveal from './md-card-reveal';\n\nexpo"
  },
  {
    "path": "app/components/materialize-card.js",
    "chars": 372,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCard from './md-card';\n\nexport default Ma"
  },
  {
    "path": "app/components/materialize-checkbox.js",
    "chars": 386,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCheckbox from './md-check';\n\nexport defau"
  },
  {
    "path": "app/components/materialize-checkboxes.js",
    "chars": 394,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCheckboxes from './md-checks';\n\nexport de"
  },
  {
    "path": "app/components/materialize-collapsible-card.js",
    "chars": 444,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCollapsibleCard from './md-card-collapsib"
  },
  {
    "path": "app/components/materialize-collapsible.js",
    "chars": 407,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeCollapsible from './md-collapsible';\n\nexp"
  },
  {
    "path": "app/components/materialize-copyright.js",
    "chars": 397,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeCopyright from './md-copyright';\n\nexport "
  },
  {
    "path": "app/components/materialize-date-input.js",
    "chars": 400,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeDateInput from './md-input-date';\n\nexport"
  },
  {
    "path": "app/components/materialize-input-field.js",
    "chars": 405,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeInputField from './md-input-field';\n\nexpo"
  },
  {
    "path": "app/components/materialize-input.js",
    "chars": 377,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeInput from './md-input';\n\nexport default "
  },
  {
    "path": "app/components/materialize-loader.js",
    "chars": 382,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeLoader from './md-loader';\n\nexport defaul"
  },
  {
    "path": "app/components/materialize-modal.js",
    "chars": 377,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeModal from './md-modal';\n\nexport default "
  },
  {
    "path": "app/components/materialize-navbar.js",
    "chars": 382,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport MaterializeNavBar from './md-navbar';\n\nexport defaul"
  },
  {
    "path": "app/components/materialize-pagination.js",
    "chars": 402,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializePagination from './md-pagination';\n\nexpor"
  },
  {
    "path": "app/components/materialize-parallax.js",
    "chars": 392,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeParallax from './md-parallax';\n\nexport de"
  },
  {
    "path": "app/components/materialize-radio.js",
    "chars": 377,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRadio from './md-radio';\n\nexport default "
  },
  {
    "path": "app/components/materialize-radios.js",
    "chars": 382,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRadios from './md-radios';\n\nexport defaul"
  },
  {
    "path": "app/components/materialize-range.js",
    "chars": 377,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeRange from './md-range';\n\nexport default "
  },
  {
    "path": "app/components/materialize-select.js",
    "chars": 382,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSelect from './md-select';\n\nexport defaul"
  },
  {
    "path": "app/components/materialize-switch.js",
    "chars": 382,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSwitch from './md-switch';\n\nexport defaul"
  },
  {
    "path": "app/components/materialize-switches.js",
    "chars": 392,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeSwitches from './md-switches';\n\nexport de"
  },
  {
    "path": "app/components/materialize-tabs-tab.js",
    "chars": 380,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTabsTab from './md-tab';\n\nexport default "
  },
  {
    "path": "app/components/materialize-tabs.js",
    "chars": 372,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTabs from './md-tabs';\n\nexport default ma"
  },
  {
    "path": "app/components/materialize-textarea.js",
    "chars": 392,
    "preview": "import { deprecate } from '@ember/application/deprecations';\nimport materializeTextarea from './md-textarea';\n\nexport de"
  },
  {
    "path": "app/components/md-badge.js",
    "chars": 108,
    "preview": "import materializeBadge from 'ember-cli-materialize/components/md-badge';\n\nexport default materializeBadge;\n"
  },
  {
    "path": "app/components/md-btn-dropdown.js",
    "chars": 133,
    "preview": "import MaterializeButtonDropdown from 'ember-cli-materialize/components/md-btn-dropdown';\n\nexport default MaterializeBut"
  },
  {
    "path": "app/components/md-btn-submit.js",
    "chars": 127,
    "preview": "import MaterializeButtonSubmit from 'ember-cli-materialize/components/md-btn-submit';\n\nexport default MaterializeButtonS"
  },
  {
    "path": "app/components/md-btn.js",
    "chars": 108,
    "preview": "import MaterializeButton from 'ember-cli-materialize/components/md-btn';\n\nexport default MaterializeButton;\n"
  },
  {
    "path": "app/components/md-card-action.js",
    "chars": 124,
    "preview": "import MaterializeCardAction from 'ember-cli-materialize/components/md-card-action';\n\nexport default MaterializeCardActi"
  },
  {
    "path": "app/components/md-card-collapsible.js",
    "chars": 139,
    "preview": "import MaterializeCollapsibleCard from 'ember-cli-materialize/components/md-card-collapsible';\n\nexport default Materiali"
  },
  {
    "path": "app/components/md-card-content.js",
    "chars": 127,
    "preview": "import MaterializeCardContent from 'ember-cli-materialize/components/md-card-content';\n\nexport default MaterializeCardCo"
  },
  {
    "path": "app/components/md-card-panel.js",
    "chars": 121,
    "preview": "import MaterializeCardPanel from 'ember-cli-materialize/components/md-card-panel';\n\nexport default MaterializeCardPanel;"
  },
  {
    "path": "app/components/md-card-reveal.js",
    "chars": 124,
    "preview": "import MaterializeCardReveal from 'ember-cli-materialize/components/md-card-reveal';\n\nexport default MaterializeCardReve"
  },
  {
    "path": "app/components/md-card.js",
    "chars": 105,
    "preview": "import MaterializeCard from 'ember-cli-materialize/components/md-card';\n\nexport default MaterializeCard;\n"
  },
  {
    "path": "app/components/md-check.js",
    "chars": 114,
    "preview": "import materializeCheckbox from 'ember-cli-materialize/components/md-check';\n\nexport default materializeCheckbox;\n"
  },
  {
    "path": "app/components/md-checks-check.js",
    "chars": 76,
    "preview": "export { default } from 'ember-cli-materialize/components/md-checks-check';\n"
  },
  {
    "path": "app/components/md-checks.js",
    "chars": 119,
    "preview": "import materializeCheckboxes from 'ember-cli-materialize/components/md-checks';\n\nexport default materializeCheckboxes;\n"
  },
  {
    "path": "app/components/md-collapsible.js",
    "chars": 126,
    "preview": "import MaterializeCollapsible from 'ember-cli-materialize/components/md-collapsible';\n\nexport default MaterializeCollaps"
  },
  {
    "path": "app/components/md-collection.js",
    "chars": 74,
    "preview": "export { default } from 'ember-cli-materialize/components/md-collection';\n"
  },
  {
    "path": "app/components/md-copyright.js",
    "chars": 120,
    "preview": "import materializeCopyright from 'ember-cli-materialize/components/md-copyright';\n\nexport default materializeCopyright;\n"
  },
  {
    "path": "app/components/md-default-collection-header.js",
    "chars": 89,
    "preview": "export { default } from 'ember-cli-materialize/components/md-default-collection-header';\n"
  },
  {
    "path": "app/components/md-default-column-header.js",
    "chars": 85,
    "preview": "export { default } from 'ember-cli-materialize/components/md-default-column-header';\n"
  },
  {
    "path": "app/components/md-fixed-btn.js",
    "chars": 73,
    "preview": "export { default } from 'ember-cli-materialize/components/md-fixed-btn';\n"
  },
  {
    "path": "app/components/md-fixed-btns.js",
    "chars": 74,
    "preview": "export { default } from 'ember-cli-materialize/components/md-fixed-btns';\n"
  },
  {
    "path": "app/components/md-input-date.js",
    "chars": 121,
    "preview": "import materializeDateInput from 'ember-cli-materialize/components/md-input-date';\n\nexport default materializeDateInput;"
  },
  {
    "path": "app/components/md-input-field.js",
    "chars": 124,
    "preview": "import materializeInputField from 'ember-cli-materialize/components/md-input-field';\n\nexport default materializeInputFie"
  },
  {
    "path": "app/components/md-input.js",
    "chars": 108,
    "preview": "import materializeInput from 'ember-cli-materialize/components/md-input';\n\nexport default materializeInput;\n"
  },
  {
    "path": "app/components/md-loader.js",
    "chars": 111,
    "preview": "import materializeLoader from 'ember-cli-materialize/components/md-loader';\n\nexport default materializeLoader;\n"
  },
  {
    "path": "app/components/md-modal-container.js",
    "chars": 118,
    "preview": "import mdModalContainer from 'ember-cli-materialize/components/md-modal-container';\n\nexport default mdModalContainer;\n"
  },
  {
    "path": "app/components/md-modal.js",
    "chars": 108,
    "preview": "import materializeModal from 'ember-cli-materialize/components/md-modal';\n\nexport default materializeModal;\n"
  },
  {
    "path": "app/components/md-navbar.js",
    "chars": 111,
    "preview": "import MaterializeNavBar from 'ember-cli-materialize/components/md-navbar';\n\nexport default MaterializeNavBar;\n"
  },
  {
    "path": "app/components/md-pagination.js",
    "chars": 123,
    "preview": "import materializePagination from 'ember-cli-materialize/components/md-pagination';\n\nexport default materializePaginatio"
  },
  {
    "path": "app/components/md-parallax.js",
    "chars": 117,
    "preview": "import materializeParallax from 'ember-cli-materialize/components/md-parallax';\n\nexport default materializeParallax;\n"
  },
  {
    "path": "app/components/md-radio.js",
    "chars": 108,
    "preview": "import materializeRadio from 'ember-cli-materialize/components/md-radio';\n\nexport default materializeRadio;\n"
  },
  {
    "path": "app/components/md-radios-radio.js",
    "chars": 76,
    "preview": "export { default } from 'ember-cli-materialize/components/md-radios-radio';\n"
  },
  {
    "path": "app/components/md-radios.js",
    "chars": 111,
    "preview": "import materializeRadios from 'ember-cli-materialize/components/md-radios';\n\nexport default materializeRadios;\n"
  },
  {
    "path": "app/components/md-range.js",
    "chars": 108,
    "preview": "import materializeRange from 'ember-cli-materialize/components/md-range';\n\nexport default materializeRange;\n"
  },
  {
    "path": "app/components/md-select.js",
    "chars": 111,
    "preview": "import materializeSelect from 'ember-cli-materialize/components/md-select';\n\nexport default materializeSelect;\n"
  },
  {
    "path": "app/components/md-switch.js",
    "chars": 111,
    "preview": "import materializeSwitch from 'ember-cli-materialize/components/md-switch';\n\nexport default materializeSwitch;\n"
  },
  {
    "path": "app/components/md-switches-switch.js",
    "chars": 79,
    "preview": "export { default } from 'ember-cli-materialize/components/md-switches-switch';\n"
  },
  {
    "path": "app/components/md-switches.js",
    "chars": 117,
    "preview": "import materializeSwitches from 'ember-cli-materialize/components/md-switches';\n\nexport default materializeSwitches;\n"
  },
  {
    "path": "app/components/md-tab.js",
    "chars": 110,
    "preview": "import materializeTabsTab from 'ember-cli-materialize/components/md-tab';\n\nexport default materializeTabsTab;\n"
  },
  {
    "path": "app/components/md-table-col.js",
    "chars": 73,
    "preview": "export { default } from 'ember-cli-materialize/components/md-table-col';\n"
  },
  {
    "path": "app/components/md-table.js",
    "chars": 69,
    "preview": "export { default } from 'ember-cli-materialize/components/md-table';\n"
  },
  {
    "path": "app/components/md-tabs.js",
    "chars": 105,
    "preview": "import materializeTabs from 'ember-cli-materialize/components/md-tabs';\n\nexport default materializeTabs;\n"
  },
  {
    "path": "app/components/md-textarea.js",
    "chars": 117,
    "preview": "import materializeTextarea from 'ember-cli-materialize/components/md-textarea';\n\nexport default materializeTextarea;\n"
  },
  {
    "path": "app/helpers/bw-compat-icon.js",
    "chars": 86,
    "preview": "export { default, bwCompatIcon } from 'ember-cli-materialize/helpers/bw-compat-icon';\n"
  },
  {
    "path": "app/initializers/add-modals-container.js",
    "chars": 718,
    "preview": "export function initialize() {\n  const application = arguments[1] || arguments[0];\n  var rootEl = document.querySelector"
  },
  {
    "path": "app/initializers/md-settings.js",
    "chars": 676,
    "preview": "import config from '../config/environment';\nimport MaterializeSettings from 'ember-cli-materialize/services/md-settings'"
  },
  {
    "path": "app/services/md-settings.js",
    "chars": 70,
    "preview": "export { default } from 'ember-cli-materialize/services/md-settings';\n"
  },
  {
    "path": "app/styles/app.scss",
    "chars": 107,
    "preview": "// Fix for Roboto font path\n$roboto-font-path: '../assets/';\n\n// Materialize styles\n@import \"materialize\";\n"
  },
  {
    "path": "app/styles/ember-cli-materialize.scss",
    "chars": 335,
    "preview": ".ember-modal-overlay {\n  height: 100vh;\n  left: 0;\n  opacity: 0;\n  position: fixed;\n  right: 0;\n  top: 0;\n  z-index: 50;"
  },
  {
    "path": "app.json",
    "chars": 337,
    "preview": "{\n  \"name\": \"ember-cli-materialize\",\n  \"description\": \"Documentation for ember-cli-materialize\",\n  \"scripts\": {\n  },\n  \""
  },
  {
    "path": "blueprints/.jshintrc",
    "chars": 36,
    "preview": "{\n  \"predef\": [\n    \"console\"\n  ]\n}\n"
  },
  {
    "path": "blueprints/ember-cli-materialize/index.js",
    "chars": 535,
    "preview": "/* eslint-env node */\n\nmodule.exports = {\n  normalizeEntityName: function() {},\n\n  beforeInstall: function() {\n    retur"
  },
  {
    "path": "bower.json",
    "chars": 92,
    "preview": "{\n  \"name\": \"ember-cli-materialize\",\n  \"dependencies\": {\n    \"materialize\": \"~0.98.0\"\n  }\n}\n"
  },
  {
    "path": "config/ember-try.js",
    "chars": 2219,
    "preview": "/* eslint-env node */\n'use strict';\n\nconst getChannelURL = require('ember-source-channel-url');\n\nfunction scenario(ember"
  },
  {
    "path": "config/environment.js",
    "chars": 372,
    "preview": "'use strict';\n\nmodule.exports = function(/* environment, appConfig */) {\n  return {\n    materializeDefaults: {\n      mod"
  },
  {
    "path": "config/release.js",
    "chars": 591,
    "preview": "/* jshint node:true */\n// var RSVP = require('rsvp');\n\n// For details on each option run `ember help release`\nmodule.exp"
  },
  {
    "path": "ember-cli-build.js",
    "chars": 768,
    "preview": "'use strict';\n\nconst EmberAddon = require('ember-cli/lib/broccoli/ember-addon');\n\nmodule.exports = function(defaults) {\n"
  },
  {
    "path": "index.js",
    "chars": 69,
    "preview": "'use strict';\n\nmodule.exports = {\n  name: 'ember-cli-materialize'\n};\n"
  },
  {
    "path": "jsconfig.json",
    "chars": 141,
    "preview": "{\"compilerOptions\":{\"target\":\"es6\",\"experimentalDecorators\":true},\"exclude\":[\"node_modules\",\"bower_components\",\"tmp\",\"ve"
  },
  {
    "path": "lib/try-generate-pages.sh",
    "chars": 346,
    "preview": "#!/bin/bash\necho \"Attempting to generate pages\"\nif [[ \"${TRAVIS_PULL_REQUEST}\" = \"false\" && \"${TRAVIS_BRANCH}\" == 'maste"
  },
  {
    "path": "package.json",
    "chars": 3223,
    "preview": "{\n  \"name\": \"ember-cli-materialize\",\n  \"description\": \"An ember-cli addon for using Materialize (CSS Framework based on "
  },
  {
    "path": "renovate.json",
    "chars": 56,
    "preview": "{\n  \"extends\": [\"@mike-north/js-lib-renovate-config\"]\n}\n"
  },
  {
    "path": "testem.js",
    "chars": 581,
    "preview": "module.exports = {\n  test_page: 'tests/index.html?hidepassed',\n  disable_watching: true,\n  launch_in_ci: [\n    'Chrome'\n"
  },
  {
    "path": "tests/.jshintrc",
    "chars": 852,
    "preview": "{\n  \"predef\": [\n    \"percySnapshot\",\n    \"document\",\n    \"window\",\n    \"location\",\n    \"setTimeout\",\n    \"$\",\n    \"-Prom"
  }
]

// ... and 185 more files (download for full content)

About this extraction

This page contains the full source code of the mike-north/ember-cli-materialize GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 385 files (280.5 KB), approximately 87.2k tokens, and a symbol index with 157 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!