Skip to content

Commit 6d3c2a4

Browse files
committed
tags
1 parent 028a1d7 commit 6d3c2a4

File tree

3 files changed

+86
-2
lines changed

3 files changed

+86
-2
lines changed

src/components/Content.vue

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,39 @@ const setOperationDetails = (id: string, version: string): void => {
7272
summary.value = operation?.summary
7373
tags.value = operation?.tags || []
7474
console.log('Tags ref value:', tags.value)
75+
updateHeaderTags(tags.value)
76+
}
77+
78+
const updateHeaderTags = (tagsList: string[]) => {
79+
const element = document.getElementById('selected-endpoint-tags')
80+
if (element) {
81+
if (tagsList.length > 0) {
82+
const tagsHTML = tagsList.map(tag =>
83+
`<a class="tag-link" data-tag="${tag}" href="#">${tag}</a>`
84+
).join(', ')
85+
element.innerHTML = `Tags: ${tagsHTML}`
86+
87+
// Add click handlers to the tags
88+
element.querySelectorAll('.tag-link').forEach((tagElement) => {
89+
tagElement.addEventListener('click', (e) => {
90+
e.preventDefault()
91+
const tag = (e.target as HTMLElement).getAttribute('data-tag')
92+
if (tag) {
93+
filterByTag(tag)
94+
}
95+
})
96+
})
97+
} else {
98+
element.innerHTML = ''
99+
}
100+
}
101+
}
102+
103+
const clearHeaderTags = () => {
104+
const element = document.getElementById('selected-endpoint-tags')
105+
if (element) {
106+
element.innerHTML = ''
107+
}
75108
}
76109
77110
const filterByTag = (tag: string) => {
@@ -187,6 +220,7 @@ onMounted(async () => {
187220
placeholderVersion.value = version
188221
totalEndpoints.value = resourceDocs[version]?.resource_docs?.length || 0
189222
allTags.value = getAllTags(version)
223+
clearHeaderTags()
190224
} else {
191225
showPlaceholder.value = false
192226
setOperationDetails(routeId, version)
@@ -204,6 +238,7 @@ onBeforeRouteUpdate(async (to) => {
204238
placeholderVersion.value = version
205239
totalEndpoints.value = resourceDocs[version]?.resource_docs?.length || 0
206240
allTags.value = getAllTags(version)
241+
clearHeaderTags()
207242
} else {
208243
showPlaceholder.value = false
209244
setOperationDetails(routeId, version)

src/components/Menu.vue

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ const clearCacheStorage = (event: any) => {
5353
<el-col :span="10" class="menu-left">
5454
&nbsp;&nbsp;
5555
<span id="selected-api-version" class="host"></span>
56+
<span id="selected-endpoint-tags" class="endpoint-tags"></span>
5657
</el-col>
5758
<el-col :span="14" class="menu-right">
5859
<span class="host" id="cache-storage-status" @click="clearCacheStorage">App Version: {{ APP_VERSION }}</span>
@@ -115,4 +116,22 @@ a:hover {
115116
.text-is-red {
116117
color: red;
117118
}
119+
120+
.endpoint-tags {
121+
margin-left: 10px;
122+
font-size: 12px;
123+
color: #606266;
124+
}
125+
126+
.endpoint-tags :deep(.tag-link) {
127+
color: #409eff;
128+
text-decoration: none;
129+
cursor: pointer;
130+
transition: color 0.2s ease;
131+
}
132+
133+
.endpoint-tags :deep(.tag-link:hover) {
134+
color: #66b1ff;
135+
text-decoration: underline;
136+
}
118137
</style>

src/components/SearchNav.vue

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,22 @@ onBeforeMount(async () => {
101101
if(selectedTags === 'NONE') {
102102
element.textContent = `${selectedVersion} ( ${totalRows} APIs )`;
103103
} else {
104-
element.textContent = `${selectedVersion} ( ${totalRows} APIs filtered by tags: ${selectedTags})`;
104+
element.innerHTML = `${selectedVersion} ( ${totalRows} APIs filtered by tags: <a href="#" class="filter-tag-link" style="color: #409eff; text-decoration: none; cursor: pointer; transition: color 0.2s ease;">${selectedTags}</a>)`;
105+
106+
// Add hover effect
107+
const tagLinkEl = element.querySelector('.filter-tag-link') as HTMLElement
108+
if (tagLinkEl) {
109+
tagLinkEl.addEventListener('mouseenter', () => {
110+
tagLinkEl.style.color = '#66b1ff'
111+
tagLinkEl.style.textDecoration = 'underline'
112+
})
113+
tagLinkEl.addEventListener('mouseleave', () => {
114+
tagLinkEl.style.color = '#409eff'
115+
tagLinkEl.style.textDecoration = 'none'
116+
})
117+
}
118+
119+
105120
}
106121
}
107122
})
@@ -165,7 +180,22 @@ watch(
165180
if(selectedTags === 'NONE') {
166181
element.textContent = `${selectedVersion} ( ${totalRows} APIs )`;
167182
} else {
168-
element.textContent = `${selectedVersion} ( ${totalRows} APIs filtered by tags: ${selectedTags})`;
183+
element.innerHTML = `${selectedVersion} ( ${totalRows} APIs filtered by tags: <a href="#" class="filter-tag-link" style="color: #409eff; text-decoration: none; cursor: pointer; transition: color 0.2s ease;">${selectedTags}</a>)`;
184+
185+
// Add hover effect
186+
const tagLinkEl = element.querySelector('.filter-tag-link') as HTMLElement
187+
if (tagLinkEl) {
188+
tagLinkEl.addEventListener('mouseenter', () => {
189+
tagLinkEl.style.color = '#66b1ff'
190+
tagLinkEl.style.textDecoration = 'underline'
191+
})
192+
tagLinkEl.addEventListener('mouseleave', () => {
193+
tagLinkEl.style.color = '#409eff'
194+
tagLinkEl.style.textDecoration = 'none'
195+
})
196+
}
197+
198+
169199
}
170200
}
171201
}

0 commit comments

Comments
 (0)