{
  "file": "addon/components/fountainhead-button.js",
  "content": "<pre class=\"language-javascript line-numbers\"><code class=\"language-javascript}\"><span aria-hidden=\"true\" role=\"presentation\" class=\"line-numbers-rows\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span><span class=\"token comment\" spellcheck=\"true\">/* Source: https://github.com/healthsparq/ember-radical/blob/master/addon/components/core-button/component.js */</span>\n\n<span class=\"token keyword\">import</span> Component <span class=\"token keyword\">from</span> <span class=\"token string\">'ember-component'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> computed <span class=\"token keyword\">from</span> <span class=\"token string\">'ember-computed'</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">import</span> hbs <span class=\"token keyword\">from</span> <span class=\"token string\">'htmlbars-inline-precompile'</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\" spellcheck=\"true\">/**\n * Fountainhead button component pulled from `ember-radical` addon.\n * TODO: One day use nested addons, _trepidation_\n *\n * Here, this is a button:\n *\n * ```glimmer\n * {{#fountainhead-button}}Check me out{{/fountainhead-button}}\n * ```\n *\n * This button will not get auto-rendered, as it is just an example:\n *\n * ```handlebars\n * {{#fountainhead-button}}NO DICE, HOMBRE{{/fountainhead-button}}\n * ```\n *\n * @class FountainheadButton\n * @constructor\n * @extends Ember.Component\n */</span>\n\n<span class=\"token keyword\">export</span> <span class=\"token keyword\">default</span> Component<span class=\"token punctuation\">.</span><span class=\"token function\">extend</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Passed Properties</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Pass a brand to have `btn-${brand}` class applied\n   * @property brand\n   * @type {string}\n   * @passed\n   * @optional\n   * @default ''\n   */</span>\n  brand<span class=\"token punctuation\">:</span> <span class=\"token string\">''</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Pass true to create a button that looks and behaves like a link. This is\n   * useful for creating accessible interaction targets.\n   * @property link\n   * @type {Boolean}\n   * @passed\n   * @optional\n   * @default false\n   */</span>\n  link<span class=\"token punctuation\">:</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Properties</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Computed css class bound to component. Handled by component to allow for\n   * flexibility in future updates to branding class names\n   * @property brandClass\n   * @type {string}\n   * @param 'brand'\n   */</span>\n  brandClass<span class=\"token punctuation\">:</span> <span class=\"token function\">computed</span><span class=\"token punctuation\">(</span><span class=\"token string\">'brand'</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">return</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'brand'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">?</span> <span class=\"token template-string\"><span class=\"token string\">`btn-</span><span class=\"token interpolation\"><span class=\"token interpolation-punctuation punctuation\">${</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'brand'</span><span class=\"token punctuation\">)</span><span class=\"token interpolation-punctuation punctuation\">}</span></span><span class=\"token string\">`</span></span> <span class=\"token punctuation\">:</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Ember Props</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * ALLLLLLLLLLL the attributes you might need.\n   * NOTE: `role` should not be bound here. You can set the role of a button\n   * by passing an [ariaRole](http://emberjs.com/api/classes/Ember.Component.html#property_ariaRole) prop.\n   * @property attributeBindings\n   * @type {Array}\n   */</span>\n  attributeBindings<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">'aria-controls'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'aria-describedby'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'aria-expanded'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'aria-hidden'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'aria-label'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'aria-labelledby'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'data-test'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'disabled'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'type'</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Bind standard core classname for component: `fountainhead-button`\n   * @property classNames\n   * @type {Array}\n   * @default ['fh-button', 'btn']\n   */</span>\n  classNames<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">'fh-button'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'btn'</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Handle binding brand and link related css class names\n   * @property classNameBindings\n   * @type {Array}\n   */</span>\n  classNameBindings<span class=\"token punctuation\">:</span> <span class=\"token punctuation\">[</span>\n    <span class=\"token string\">'brandClass'</span><span class=\"token punctuation\">,</span>\n    <span class=\"token string\">'link:btn-link'</span>\n  <span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Button DOM element\n   * @property tagName\n   * @type {string}\n   * @default 'button'\n   */</span>\n  tagName<span class=\"token punctuation\">:</span> <span class=\"token string\">'button'</span><span class=\"token punctuation\">,</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * Include type button for usability.\n   * @property type\n   * @type {string}\n   * @default 'button'\n   */</span>\n  type<span class=\"token punctuation\">:</span> <span class=\"token string\">'button'</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Events</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  <span class=\"token comment\" spellcheck=\"true\">/**\n   * The `mouseDown` event is used for some utility/housekeeping methods because\n   * we use the `click` event to pass in actions.\n   *\n   * Handle setting the outline on this element to `none` because we know this\n   * event is only triggered by actual mouse clicks. Keyboard events don't trigger\n   * it, which is a convenient way to know we're good to hide the outline and\n   * maintain usability for keyboard users. A++ accessibility!\n   *\n   * Handle checking for a tagging category and if one exists, fire a tag.\n   *\n   * If you need to override this event, be sure to call `this._super();`\n   * @event mouseDown\n   * @return {undefined}\n   */</span>\n  <span class=\"token function\">mouseDown</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\" spellcheck=\"true\">// Hide outline b/c this was a legit mouse click</span>\n    <span class=\"token comment\" spellcheck=\"true\">// On blur, remove outline style in case the user switches to keyboard</span>\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">$</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">css</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span> outline<span class=\"token punctuation\">:</span> <span class=\"token string\">'none'</span> <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">$</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">on</span><span class=\"token punctuation\">(</span><span class=\"token string\">'blur'</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=</span><span class=\"token operator\">></span> <span class=\"token punctuation\">{</span>\n      <span class=\"token comment\" spellcheck=\"true\">// If this button instance is destroying/destroyed, don't bother</span>\n      <span class=\"token comment\" spellcheck=\"true\">// (This is an issue with instances of `{{fountainhead-alert}}`)</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'isDestroying'</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">||</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token keyword\">get</span><span class=\"token punctuation\">(</span><span class=\"token string\">'isDestroyed'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span> <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span><span class=\"token function\">$</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">off</span><span class=\"token punctuation\">(</span><span class=\"token string\">'blur'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">css</span><span class=\"token punctuation\">(</span><span class=\"token string\">'outline'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">''</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n\n  <span class=\"token comment\" spellcheck=\"true\">// Layout</span>\n  <span class=\"token comment\" spellcheck=\"true\">// ---------------------------------------------------------------------------</span>\n  layout<span class=\"token punctuation\">:</span> hbs<span class=\"token template-string\"><span class=\"token string\">`{{{yield}}}`</span></span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n</code></pre>"
}