From 98e8c22d2f722c477d08a60ed760ef32708f251e Mon Sep 17 00:00:00 2001 From: Matt Hand Date: Wed, 22 Aug 2018 16:38:42 -0400 Subject: [PATCH] Add title prop (#97) --- index.d.ts | 1 + src/components/FontAwesomeIcon.js | 8 ++++++-- src/components/__tests__/FontAwesomeIcon.test.js | 13 +++++++++++++ src/converter.js | 3 +++ 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/index.d.ts b/index.d.ts index 03313257..7f7f59f6 100644 --- a/index.d.ts +++ b/index.d.ts @@ -31,4 +31,5 @@ export interface Props { symbol?: FaSymbol style?: CSSProperties tabIndex?: number; + title?: string; } diff --git a/src/components/FontAwesomeIcon.js b/src/components/FontAwesomeIcon.js index ae741851..3294f7c8 100644 --- a/src/components/FontAwesomeIcon.js +++ b/src/components/FontAwesomeIcon.js @@ -50,7 +50,7 @@ function normalizeIconArgs(icon) { } export default function FontAwesomeIcon(props) { - const { icon: iconArgs, mask: maskArgs, symbol, className } = props + const { icon: iconArgs, mask: maskArgs, symbol, className, title } = props const iconLookup = normalizeIconArgs(iconArgs) const classes = objectWithKey('classes', [ @@ -69,7 +69,8 @@ export default function FontAwesomeIcon(props) { ...classes, ...transform, ...mask, - symbol + symbol, + title }) if (!renderedIcon) { @@ -142,6 +143,8 @@ FontAwesomeIcon.propTypes = { symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), + title: PropTypes.string, + transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]) } @@ -160,6 +163,7 @@ FontAwesomeIcon.defaultProps = { size: null, spin: false, symbol: false, + title: '', transform: null } diff --git a/src/components/__tests__/FontAwesomeIcon.test.js b/src/components/__tests__/FontAwesomeIcon.test.js index 1c3bed01..701303c3 100644 --- a/src/components/__tests__/FontAwesomeIcon.test.js +++ b/src/components/__tests__/FontAwesomeIcon.test.js @@ -261,3 +261,16 @@ describe('symbol', () => { expect(spy.mock.calls[0][1].symbol).toBe('coffee-icon') }) }) + +describe('title', () => { + test('will not add a title element', () => { + const vm = mount({ icon: faCoffee }) + expect(vm.children[0].type).not.toBe('title') + }) + + test('will add a title element', () => { + const vm = mount({ icon: faCoffee, title: 'Coffee' }) + expect(vm.children[0].type).toBe('title') + expect(vm.children[0].children[0]).toBe('Coffee') + }) +}) diff --git a/src/converter.js b/src/converter.js index 17ba89bd..f3e212e3 100644 --- a/src/converter.js +++ b/src/converter.js @@ -23,6 +23,9 @@ function styleToObject(style) { } function convert(createElement, element, extraProps = {}) { + if (typeof element === 'string') { + return element + } const children = (element.children || []).map( convert.bind(null, createElement) )