Skip to content

Commit a95b7a0

Browse files
committed
Update ReplacementSuggestion.vue
1 parent 74eee66 commit a95b7a0

File tree

1 file changed

+37
-10
lines changed

1 file changed

+37
-10
lines changed

app/components/Compare/ReplacementSuggestion.vue

Lines changed: 37 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import type { ModuleReplacement } from 'module-replacements'
2+
import type { ModuleReplacement, KnownUrl } from 'module-replacements'
33
44
const props = defineProps<{
55
packageName: string
@@ -14,9 +14,27 @@ const emit = defineEmits<{
1414
addNoDep: []
1515
}>()
1616
17-
const docUrl = computed(() => {
18-
if (props.replacement.type !== 'documented' || !props.replacement.docPath) return null
19-
return `https://e18e.dev/docs/replacements/${props.replacement.docPath}.html`
17+
const resolveUrl = (url?: KnownUrl) => {
18+
if (!url) return null
19+
if (typeof url === 'string') return url
20+
21+
switch (url.type) {
22+
case 'mdn':
23+
return `https://developer.mozilla.org/en-US/docs/${url.id}`
24+
case 'node':
25+
return `https://nodejs.org/${url.id}`
26+
case 'e18e':
27+
return `https://e18e.dev/docs/replacements/${url.id}`
28+
default:
29+
return null
30+
}
31+
}
32+
33+
const docUrl = computed(() => resolveUrl(props.replacement.url))
34+
35+
const nodeVersion = computed(() => {
36+
const nodeEngine = props.replacement.engines?.find(e => e.engine === 'nodejs')
37+
return nodeEngine?.minVersion || null
2038
})
2139
</script>
2240

@@ -39,30 +57,34 @@ const docUrl = computed(() => {
3957
<template v-if="replacement.type === 'native'">
4058
{{
4159
$t('package.replacement.native', {
42-
replacement: replacement.replacement,
43-
nodeVersion: replacement.nodeVersion,
60+
replacement:
61+
replacement.nodeFeatureId?.moduleName || replacement.description || replacement.id,
62+
nodeVersion: nodeVersion || 'unknown',
4463
})
4564
}}
4665
</template>
4766
<template v-else-if="replacement.type === 'simple'">
4867
{{
4968
$t('package.replacement.simple', {
50-
replacement: replacement.replacement,
69+
replacement: replacement.description,
5170
community: $t('package.replacement.community'),
5271
})
5372
}}
5473
</template>
5574
<template v-else-if="replacement.type === 'documented'">
5675
{{
5776
$t('package.replacement.documented', {
77+
replacement: replacement.replacementModule,
5878
community: $t('package.replacement.community'),
5979
})
6080
}}
6181
</template>
82+
<template v-else-if="replacement.type === 'removal'">
83+
{{ replacement.description }}
84+
</template>
6285
</p>
6386
</div>
6487

65-
<!-- No dependency action button -->
6688
<ButtonBase
6789
v-if="variant === 'nodep' && showAction !== false"
6890
size="small"
@@ -72,8 +94,13 @@ const docUrl = computed(() => {
7294
{{ $t('package.replacement.consider_no_dep') }}
7395
</ButtonBase>
7496

75-
<!-- Info link -->
76-
<LinkBase v-else-if="docUrl" :to="docUrl" variant="button-secondary" size="small">
97+
<LinkBase
98+
v-else-if="docUrl"
99+
:to="docUrl"
100+
variant="button-secondary"
101+
size="small"
102+
target="_blank"
103+
>
77104
{{ $t('package.replacement.learn_more') }}
78105
</LinkBase>
79106
</div>

0 commit comments

Comments
 (0)