+15
-6
lines changedFilter options
+15
-6
lines changed Original file line number Diff line number Diff line change
@@ -5,6 +5,15 @@ import { pascalCase, trim } from '../utils/string'
5
5
import { BIconBlank } from './icons'
6
6
import { commonIconProps } from './helpers/icon-base'
7
7
8
+
const findIconComponent = (ctx, iconName) => {
9
+
if (!ctx) {
10
+
return null
11
+
}
12
+
const components = (ctx.$options || {}).components
13
+
const iconComponent = components[iconName]
14
+
return iconComponent || findIconComponent(ctx.$parent, iconName)
15
+
}
16
+
8
17
// Helper BIcon component
9
18
// Requires the requested icon component to be installed
10
19
export const BIcon = /*#__PURE__*/ Vue.extend({
@@ -23,13 +32,13 @@ export const BIcon = /*#__PURE__*/ Vue.extend({
23
32
},
24
33
render(h, { data, props, parent }) {
25
34
const icon = pascalCase(trim(props.icon || '')).replace(RX_ICON_PREFIX, '')
26
-
const iconName = `BIcon${icon}`
35
+
27
36
// If parent context exists, we check to see if the icon has been registered
28
-
// Either locally in the parent component, or globally at the `$root` level
37
+
// either locally in the parent component, or globally at the `$root` level
29
38
// If not registered, we render a blank icon
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 } }))
39
+
return h(
40
+
icon ? findIconComponent(parent, `BIcon${icon}`) || BIconBlank : BIconBlank,
41
+
mergeData(data, { props: { ...props, icon: null } })
42
+
)
34
43
}
35
44
})
You can’t perform that action at this time.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4