@@ -5,15 +5,6 @@ import { pascalCase, trim } from '../utils/string'
55import { BIconBlank } from './icons'
66import { commonIconProps } from './helpers/icon-base'
77
8- const findIconComponent = ( parent , iconName ) => {
9- if ( ! parent ) {
10- return null
11- }
12- const components = ( parent . $options || { } ) . components
13- const iconComponent = components [ iconName ]
14- return iconComponent || findIconComponent ( parent . $parent , iconName )
15- }
16-
178// Helper BIcon component
189// Requires the requested icon component to be installed
1910export const BIcon = /*#__PURE__*/ Vue . extend ( {
@@ -32,13 +23,13 @@ export const BIcon = /*#__PURE__*/ Vue.extend({
3223 } ,
3324 render ( h , { data, props, parent } ) {
3425 const icon = pascalCase ( trim ( props . icon || '' ) ) . replace ( RX_ICON_PREFIX , '' )
35-
26+ const iconName = `BIcon ${ icon } `
3627 // If parent context exists, we check to see if the icon has been registered
37- // either locally in the parent component, or globally at the `$root` level
28+ // Either locally in the parent component, or globally at the `$root` level
3829 // If not registered, we render a blank icon
39- return h (
40- icon ? findIconComponent ( parent , `BIcon ${ icon } ` ) || BIconBlank : BIconBlank ,
41- mergeData ( data , { props : { ... props , icon : null } } )
42- )
30+ const components = ( ( parent || { } ) . $options || { } ) . components
31+ const componentRefOrName =
32+ icon && components ? components [ iconName ] || BIconBlank : icon ? iconName : BIconBlank
33+ return h ( componentRefOrName , mergeData ( data , { props : { ... props , icon : null } } ) )
4334 }
4435} )
0 commit comments