fix: preserve aliased link labels
This commit is contained in:
@@ -281,6 +281,35 @@ describe('NoteItem', () => {
|
||||
expect(screen.getByTestId('property-chip-topics-0')).toHaveTextContent('AI / ML')
|
||||
})
|
||||
|
||||
it('keeps explicit wikilink aliases in relationship chips', () => {
|
||||
const linkedProject = makeEntry({
|
||||
path: '/vault/project/my-project.md',
|
||||
filename: 'my-project.md',
|
||||
title: 'My Project',
|
||||
isA: 'Project',
|
||||
})
|
||||
const sourceEntry = makeEntry({
|
||||
path: '/vault/note/source.md',
|
||||
filename: 'source.md',
|
||||
title: 'Source',
|
||||
isA: 'Note',
|
||||
relationships: { 'Belongs to': ['[[project/my-project|My Cool Project]]'] },
|
||||
})
|
||||
|
||||
render(
|
||||
<NoteItem
|
||||
entry={sourceEntry}
|
||||
isSelected={false}
|
||||
typeEntryMap={{}}
|
||||
allEntries={[sourceEntry, linkedProject]}
|
||||
displayPropsOverride={['Belongs to']}
|
||||
onClickNote={vi.fn()}
|
||||
/>,
|
||||
)
|
||||
|
||||
expect(screen.getByTestId('property-chip-belongs-to-0')).toHaveTextContent('My Cool Project')
|
||||
})
|
||||
|
||||
it('opens URL chips on Cmd+click only and keeps regular clicks inert', () => {
|
||||
const entry = makeEntry({
|
||||
path: '/vault/note/source.md',
|
||||
|
||||
@@ -22,4 +22,17 @@ describe('resolveRefProps', () => {
|
||||
|
||||
expect(props.label).toBe('AI / ML')
|
||||
})
|
||||
|
||||
it('keeps explicit wikilink aliases for relationship labels', () => {
|
||||
const linkedProject = makeEntry({
|
||||
path: '/vault/project/my-project.md',
|
||||
filename: 'my-project.md',
|
||||
title: 'My Project',
|
||||
isA: 'Project',
|
||||
})
|
||||
|
||||
const props = resolveRefProps('[[project/my-project|My Cool Project]]', [linkedProject], {})
|
||||
|
||||
expect(props.label).toBe('My Cool Project')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -25,13 +25,19 @@ export function entryStatusTitle(entry: VaultEntry | undefined): string | undefi
|
||||
return undefined
|
||||
}
|
||||
|
||||
function resolveRefLabel(ref: string, resolvedTitle: string | undefined): string {
|
||||
const displayLabel = wikilinkDisplay(ref)
|
||||
if (ref.includes('|')) return displayLabel
|
||||
return resolvedTitle ?? displayLabel
|
||||
}
|
||||
|
||||
export function resolveRefProps(ref: string, entries: VaultEntry[], typeEntryMap: Record<string, VaultEntry>) {
|
||||
const resolved = resolveRef(ref, entries)
|
||||
const refType = resolved?.isA ?? null
|
||||
const te = typeEntryMap[refType ?? '']
|
||||
const icon = resolved?.icon
|
||||
return {
|
||||
label: resolved?.title ?? wikilinkDisplay(ref),
|
||||
label: resolveRefLabel(ref, resolved?.title),
|
||||
noteIcon: icon ?? null,
|
||||
typeColor: getTypeColor(refType, te?.color),
|
||||
bgColor: getTypeLightColor(refType, te?.color),
|
||||
|
||||
@@ -72,7 +72,8 @@ function resolveRelationshipChip(
|
||||
typeEntryMap: Record<string, VaultEntry>,
|
||||
): PropertyChipValue | null {
|
||||
const targetEntry = resolveEntry(allEntries, wikilinkTarget(ref))
|
||||
const label = targetEntry?.title ?? wikilinkDisplay(ref)
|
||||
const displayLabel = wikilinkDisplay(ref)
|
||||
const label = ref.includes('|') ? displayLabel : (targetEntry?.title ?? displayLabel)
|
||||
if (!label) return null
|
||||
if (!targetEntry) {
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user