All Projects β†’ martndemus β†’ Ember Font Awesome

martndemus / Ember Font Awesome

Licence: unlicense
ember-cli addon for using Font Awesome icons in Ember apps

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Ember Font Awesome

ember-best-language
🏳 A FastBoot-enabled addon to detect the best language for your user.
Stars: ✭ 18 (-92%)
Mutual labels:  ember, addon, ember-addon
ember-vertical-timeline
A Vertical Timeline for Ember.js apps πŸš€
Stars: ✭ 19 (-91.56%)
Mutual labels:  ember, addon, ember-addon
ember-ref-bucket
This is list of handy ember primitives, created to simplify class-based dom workflow
Stars: ✭ 31 (-86.22%)
Mutual labels:  ember, addon, ember-addon
ember-right-click-menu
An easy and flexible addon to add context menus anywhere in your application
Stars: ✭ 14 (-93.78%)
Mutual labels:  ember, addon, ember-addon
ember-cli-daterangepicker
Just a simple component to use bootstrap-daterangepicker.
Stars: ✭ 32 (-85.78%)
Mutual labels:  ember, addon, ember-addon
Ember Models Table
Table with pagination, sorting, filtering and much more
Stars: ✭ 212 (-5.78%)
Mutual labels:  ember, ember-addon
Styled Icons
πŸ’… Popular icon packs like Font Awesome, Material Design, and Octicons, available as React Styled Components
Stars: ✭ 1,878 (+734.67%)
Mutual labels:  icons, font-awesome
Ember Cli Document Title
Adding document title behaviour to your ember app
Stars: ✭ 220 (-2.22%)
Mutual labels:  ember, ember-addon
Glyphfriend
Glyphfriend is a Visual Studio Extension to add previews for various icon/glyph fonts to Visual Studio.
Stars: ✭ 157 (-30.22%)
Mutual labels:  icons, font-awesome
Vectoriconsroundup
A comparison between popular vectorial icon fonts
Stars: ✭ 126 (-44%)
Mutual labels:  icons, font-awesome
Ember Web App
NOTICE: official repository moved to https://github.com/zonkyio/ember-web-app
Stars: ✭ 143 (-36.44%)
Mutual labels:  addon, ember
Ember Cli Addon Docs
Easy, beautiful docs for your OSS Ember addons
Stars: ✭ 162 (-28%)
Mutual labels:  ember, ember-addon
Ember Table
opensource.addepar.com/ember-table/
Stars: ✭ 1,695 (+653.33%)
Mutual labels:  ember, ember-addon
Ember Form For
Stars: ✭ 136 (-39.56%)
Mutual labels:  ember, ember-addon
Ember Basic Dropdown
The basic dropdown you ember app needs
Stars: ✭ 140 (-37.78%)
Mutual labels:  addon, ember
Ember Data Url Templates
an ember-addon to allow building urls with url templates instead of defining buildURL
Stars: ✭ 130 (-42.22%)
Mutual labels:  addon, ember
Ember Pikaday
A datepicker component for Ember CLI projects.
Stars: ✭ 151 (-32.89%)
Mutual labels:  addon, ember
Ember Page Title
Page title management for Ember.js Apps
Stars: ✭ 177 (-21.33%)
Mutual labels:  addon, ember
Ember File Upload
HTML5 file uploads for Ember apps
Stars: ✭ 172 (-23.56%)
Mutual labels:  addon, ember
Svelte Awesome
Awesome SVG icon component for Svelte JS, built with Font Awesome icons. Based on Justineo/vue-awesome
Stars: ✭ 193 (-14.22%)
Mutual labels:  icons, font-awesome

ember-font-awesome

npm version Build Status Ember Observer Score

An ember-cli addon for using Font Awesome icons in Ember applications.

WARNING: Please verify that you are reading the README corresponding with the version of ember-font-awesome you are using.

Table of Contents

Ember Version Compatibility

Please consult the table to check which version of ember-font-awesome you should use:

Addon version Ember version Addon name
>= 4.0.0, < 5.0.0 >= 2.10.0 ember-font-awesome
>= 2.0.0, < 4.0.0 >= 2.3.0 ember-font-awesome
>= 1.0.0, < 2.0.0 >= 1.11.0 ember-cli-font-awesome
>= 0.1.0, < 1.0.0 >= 1.13.0 ember-cli-font-awesome
0.0.9 < 1.11.0 ember-cli-font-awesome

V4.0.0, important notes

Version 4.0.0 of this addon introduces an entirely new approach in which the addon contains no components and has 0 runtime overhead. Instead, all usages of {{fa-icon}}, {{fa-list}} and {{fa-stack}} are transformed into the right markup in compile-time.

To achieve this we had to make the component a bit more constrained so it can be compiled statically. There is a few (edge) cases that we had to drop to achieve that:

  • {{fa-icon tagName=boundValue}}. You cannot pass a bound value to the tag name (you still can pass a fixed value like {{fa-icon tagName="span"}})
  • Previously both {{fa-icon "credit-card"}} and {{fa-icon "fa-credit-card"}} were valid invocations. Now only the first one is. You should not include the fa- prefix on the icon names.
  • Previously both {{fa-icon size="2"}} and {{fa-icon size="2x"}} were valid sizes. Now only the first one is, you cannot pass a string ending in x.
  • It requires a Glimmer2 version of Ember (2.10 or bigger)
  • It requires node >= 6 (working on making it 4.5+ soon)
  • If you use this addon from within another addon, you have to move it from devDependencies to dependencies in your package.json.
  • If you want to ensure the AST transforms of this addon are not being cached, you can pass a EMBER_CLI_FONT_AWESOME_DISABLE_CACHE=true environment variable to ember build

In return you get a an addon with 0 runtime overhead, that ships 0 bytes of javascript code and (optionally) removes the CSS of unused icons in production, yielding to even more saved bytes.

NOTE: If your addon is using ember-try to test against versions of ember lower than 2.10, you will need to make some adjustments.

  • Specify ember-font-awesome as a peerDependency in your addon's ember-try, using the correct version number according to the table above.
  • Specify null as the value for ember-font-awesome in the dependencies key for that older version of ember under test, otherwise the test build will not use the version specified as a peerDependency
// config/ember-try.js
module.exports = {
  scenarios: [
    {
      name: 'ember-lts-2.8',
      bower: {
        dependencies: {
          'ember': 'components/ember#lts-2-8'
        },
        resolutions: {
          'ember': 'lts-2-8'
        }
      },
      npm: {
        dependencies: {
          'ember-font-awesome': null // <---
        },
        peerDependencies: {
          'ember-font-awesome': '^3.0.0' // <---
        },
        devDependencies: {
          'ember-source': null
        }
      }
    },
    ... // other scenarios
  ]
};

Installing the Add-on

In your application's directory:

$ ember install ember-font-awesome

Using the Add-on

Use the component in your Handlebars templates:

{{fa-icon "camera"}}

This will render:

<i class="fa fa-camera"></i>

To see which icons are available please check the complete list of Font Awesome icons.

Note: We are currently working hard to get to version 5. Until then we don't support the Font Awesome 5 icons.

The Font Awesome examples illustrate the various options and their effects. It should be fairly simple to map these options to their {{fa-icon}} counterparts.

πŸ†˜ Looking for Help?

  • ⚠️ Bug reports: If your bug hasn't been reported yet, please [open an issue][new-issue]. Try to pick a short but descriptive title. Make sure you're using the latest version of ember-font-awesome. In the issue body, try to provide exact steps for reproduction, ideally with example code. If you can't, please include any and all error messages, as many details as possible and exact information on which Ember.js / ember-cli version and browser / OS you're using.
  • Discord: We're happy to help you in the #e-fontawesome channel on discord

Larger Icons

{{fa-icon "star" size="lg"}}
{{fa-icon "star" size=2}}
{{fa-icon "star" size=3}}
{{fa-icon "star" size=4}}
{{fa-icon "star" size=5}}

Fixed Width Icons

<div class="list-group">
  <a class="list-group-item" href="#">
    {{fa-icon "home" fixedWidth=true}} Home
  </a>
  <a class="list-group-item" href="#">
    {{fa-icon "book" fixedWidth=true}} Library
  </a>
</div>

List Icons

{{#fa-list as |l|}}
  <li>{{l.fa-icon "check-square"}}List icons</li>
  <li>{{l.fa-icon "check-square"}}can be used</li>
  <li>{{l.fa-icon "spinner" spin=true}}as bullets</li>
  <li>{{l.fa-icon "square"}}in lists</li>
{{/fa-list}}

Bordered & Pulled Icons

<p>
{{fa-icon "quote-left" pull="left" border=true}}
...tomorrow we will run faster, stretch out our arms farther...
And then one fine morningβ€” So we beat on, boats against the
current, borne back ceaselessly into the past.
</p>

Animated Icons

{{fa-icon "spinner" spin=true}}
{{fa-icon "circle-o-notch" spin=true}}
{{fa-icon "refresh" spin=true}}
{{fa-icon "cog" spin=true}}
{{fa-icon "spinner" pulse=true}}

Rotate & Flipped

{{fa-icon "shield"}} normal
{{fa-icon "shield" rotate=90}} rotated 90 degrees
{{fa-icon "shield" rotate=180}} rotated 180 degrees
{{fa-icon "shield" rotate=270}} rotated 270 degrees
{{fa-icon "shield" flip="horizontal"}} flipped horizontal
{{fa-icon "shield" flip="vertical"}} flipped vertical

Stacked Icons

{{#fa-stack size="lg" as |s|}}
  {{s.stack-2x "square-o"}}
  {{s.stack-1x "twitter"}}
{{/fa-stack}}

{{#fa-stack size="lg" as |s|}}
  {{s.stack-2x "circle"}}
  {{s.stack-1x "flag" inverse=true}}
{{/fa-stack}}

{{#fa-stack size="lg" as |s|}}
  {{s.stack-2x "square"}}
  {{s.stack-1x "terminal" inverse=true}}
{{/fa-stack}}

{{#fa-stack size="lg" as |s|}}
  {{s.stack-2x "square"}}
  {{s.stack-1x "terminal" class="text-danger"}}
{{/fa-stack}}

The aria-hidden Attribute

To better support accessibility (i.e. screen readers), the helper adds the aria-hidden attribute by default:

{{fa-icon "star"}}

Results in:

<i class="fa fa-star" aria-hidden="true"></i>

To remove the aria-hidden attribute:

{{fa-icon "star" ariaHidden=false}}

The aria-label Attribute

To better support accessibility (i.e. screen readers), the helper adds an optional aria-label attribute:

{{fa-icon "star" ariaLabel="Click Me"}}

Results in:

<i class="fa fa-star" aria-label="Click Me"></i>

Actions

You can respond to actions on the icon by passing on action handlers:

{{fa-icon "star" click=(action "myClickHandler")}}

Tag Name

Use tagName to control the generated markup:

{{fa-icon "star" tagName="span"}}

Results in:

<span class="fa fa-star"></span>

Custom Class Names

{{fa-icon "bicycle" class="my-custom-class"}}

Results in:

<i class="fa fa-bicycle my-custom-class"></i>

Title attribute

{{fa-icon "edit" title="Edit the item"}}

Results in:

<i class="fa fa-edit" title="Edit the item"></i>

Customize with Sass/Scss or Less

If you are using the ember-cli-sass or ember-cli-less addon, you can opt-in to the Scss or Less version of font-awesome by adding the following configuration in ember-cli-build.js:

var app = new EmberApp({
  'ember-font-awesome': {
    useScss: true, // for ember-cli-sass
    useLess: true  // for ember-cli-less
  }
});

Then in your app.scss or app.less:

@import "font-awesome";

Excluding assets

You can configure the addon to not import any assets (CSS or font files) by adding the following configuration in ember-cli-build.js:

var app = new EmberApp({
  'ember-font-awesome': {
    includeFontAwesomeAssets: false
  }
});

You can also configure the addon to only import specific font formats by adding the following configuration in ember-cli-build.js:

Default: ['eot', 'svg', 'ttf', 'woff', 'woff2', 'otf']

var app = new EmberApp({
  'ember-font-awesome': {
    fontFormats: ['woff', 'woff2']
  }
});

In addition, you can configure the addon to exclude the font file assets entirely by adding the following configuration in ember-cli-build.js:

var app = new EmberApp({
  'ember-font-awesome': {
    includeFontFiles: false
  }
});

Remove unused icons

This addon includes an experimental functionality to detect the used icons and remove the ones you don't use. By default this feature is disabled, but you enabled when environment is 'production' by doing:

var app = new EmberApp({
  'ember-font-awesome': {
    removeUnusedIcons: EmberApp.env() === 'production' // The addon will remove unused icons in production
  }
});

Including specific icons

By default this addon detects which icons are used based on the invocation parameters of {{fa-icon}}, and removes the rest, but you can whitelist in ember-cli-build.js some specific icons to be always included regardless of if they are used or not:

var app = new EmberApp({
  'ember-font-awesome': {
    includeStaticIcons: ['sort'],
  }
});

Add a component for compatibility

Since all invocations of {{fa-icon}} are transformed to HTML tags at compile time, there's no need for an actual {{fa-icon}} component. Except for one edge case: Passing a component invoked via the {{component}} helper.

{{async-button
  label="Submit"
  icon=(component "fa-icon" "check")
}}

{{!-- or just --}}

{{component "fa-icon" "rocket"}}

In your ember-cli-build.js you can enable the includeComponent option to include an {{fa-icon}} component for exactly that use case. You will still benefit from all compile time optimizations, however we'll add a bit of additional JS to your asset bundle size.

var app = new EmberApp({
  'ember-font-awesome': {
    includeComponent: true
  }
});

Output path

You can change the directory where the fonts are copied to using the following configuration:

var app = new EmberApp({
  'ember-font-awesome': {
    fontsOutput: "/some/dir/"
  }
});

This is useful when you change the output paths for your ember app. By default, ember-font-awesome copies the font files to /dist/fonts. The addon produces a css file to load the fonts that will be included in the vendor css file and expect to find the fonts at ../fonts. If the css directory is not at the same level as the fonts directory, the site won't load the fonts.

For example, moving the css directory to /dist/assets/css would require the fonts directory to be /dist/assets/fonts and the configuration would look like this:

var app = new EmberApp({
    outputPaths: {
        app: {
            css: {
                  app: "/assets/css/app-name.css",
            },
            js: "/assets/js/app-name.js",
        },

        vendor: {
            css: "/assets/css/vendor.css",
            js: "/assets/js/vendor.js",
        },
    },
    'ember-font-awesome': {
        fontsOutput: "/assets/fonts"
    }
});

License

Public Domain

discord [new-issue]: https://github.com/martndemus/ember-font-awesome/issues/new

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].