Skip to content

Commit fd8eadb

Browse files
committed
모달에 키워드 섹션 추가 및 검색 기능 개선
1 parent 6879d56 commit fd8eadb

File tree

1 file changed

+70
-2
lines changed

1 file changed

+70
-2
lines changed

docs/Catalog.xsl

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,6 +335,48 @@
335335
white-space: pre-wrap;
336336
word-wrap: break-word;
337337
}
338+
.modal-footer {
339+
margin-top: 1.5rem;
340+
padding-top: 1rem;
341+
border-top: 1px solid var(--border-color);
342+
text-align: right;
343+
}
344+
.modal-close-footer-btn {
345+
padding: 0.6rem 1.5rem;
346+
background: var(--primary-color);
347+
color: white;
348+
border: none;
349+
border-radius: 8px;
350+
font-size: 0.9rem;
351+
font-weight: 500;
352+
cursor: pointer;
353+
transition: background 0.2s;
354+
}
355+
.modal-close-footer-btn:hover {
356+
background: var(--primary-hover);
357+
}
358+
.keywords-title {
359+
font-size: 0.75rem;
360+
font-weight: 600;
361+
color: var(--text-secondary);
362+
text-transform: uppercase;
363+
letter-spacing: 0.05em;
364+
margin-top: 0.75rem;
365+
margin-bottom: 0.5rem;
366+
}
367+
.keywords-list {
368+
display: flex;
369+
flex-wrap: wrap;
370+
gap: 0.4rem;
371+
}
372+
.keyword-tag {
373+
display: inline-block;
374+
padding: 0.25rem 0.5rem;
375+
background: #e0e7ff;
376+
border-radius: 4px;
377+
font-size: 0.75rem;
378+
color: #3730a3;
379+
}
338380
.card-body {
339381
padding: 1rem 1.25rem 1.25rem;
340382
}
@@ -426,7 +468,7 @@
426468

427469
<div class="services-grid">
428470
<xsl:for-each select="TableClothCatalog/InternetServices/Service">
429-
<div class="service-card" data-category="{@Category}" data-id="{@Id}" data-name="{@DisplayName}" data-name-en="{@en-US-DisplayName}" data-packages="{Packages/Package/@Name}">
471+
<div class="service-card" data-category="{@Category}" data-id="{@Id}" data-name="{@DisplayName}" data-name-en="{@en-US-DisplayName}" data-packages="{Packages/Package/@Name}" data-keywords="{SearchKeywords}">
430472
<div class="card-header">
431473
<img class="service-icon"
432474
src="images/{@Category}/{@Id}.png"
@@ -469,6 +511,10 @@
469511
</xsl:for-each>
470512
</ul>
471513
</xsl:if>
514+
<xsl:if test="SearchKeywords">
515+
<div class="keywords-title" data-i18n="searchKeywords">검색 키워드</div>
516+
<div class="keywords-list" data-keywords="{SearchKeywords}"></div>
517+
</xsl:if>
472518
</div>
473519
</div>
474520
</xsl:for-each>
@@ -490,6 +536,9 @@
490536
<button class="modal-close-btn" onclick="closeModal()">✕</button>
491537
</div>
492538
<div class="modal-body" id="modalText"></div>
539+
<div class="modal-footer">
540+
<button class="modal-close-footer-btn" onclick="closeModal()" data-i18n="closeBtn">닫기</button>
541+
</div>
493542
</div>
494543
</div>
495544

@@ -517,11 +566,13 @@
517566
filterSecurity: '💹 증권',
518567
filterOther: '📁 기타',
519568
requiredPackages: '필요 패키지',
569+
searchKeywords: '검색 키워드',
520570
warning: '⚠️ 주의',
521571
viewDetails: '상세 정보 보기',
522572
noResults: '🔍 검색 결과가 없습니다.',
523573
madeWith: 'Made with ❤️ for Korean Internet Banking Users',
524574
compatTitle: '⚠️ 호환성 안내',
575+
closeBtn: '닫기',
525576
categoryBanking: '🏦 은행',
526577
categoryCreditCard: '💳 카드',
527578
categoryGovernment: '🏛️ 공공기관',
@@ -550,11 +601,13 @@
550601
filterSecurity: '💹 Securities',
551602
filterOther: '📁 Other',
552603
requiredPackages: 'Required Packages',
604+
searchKeywords: 'Search Keywords',
553605
warning: '⚠️ Warning',
554606
viewDetails: 'View details',
555607
noResults: '🔍 No results found.',
556608
madeWith: 'Made with ❤️ for Korean Internet Banking Users',
557609
compatTitle: '⚠️ Compatibility Notice',
610+
closeBtn: 'Close',
558611
categoryBanking: '🏦 Banking',
559612
categoryCreditCard: '💳 Credit Card',
560613
categoryGovernment: '🏛️ Government',
@@ -677,10 +730,12 @@
677730
const serviceName = (card.dataset.name || '').toLowerCase();
678731
const category = (card.dataset.category || '').toLowerCase();
679732
const packages = (card.dataset.packages || '').toLowerCase();
733+
const keywords = (card.dataset.keywords || '').toLowerCase();
680734
searchMatch = serviceId.includes(searchTerm) ||
681735
serviceName.includes(searchTerm) ||
682736
category.includes(searchTerm) ||
683-
packages.includes(searchTerm);
737+
packages.includes(searchTerm) ||
738+
keywords.includes(searchTerm);
684739
}
685740

686741
const shouldShow = categoryMatch &amp;&amp; searchMatch;
@@ -725,6 +780,19 @@
725780
closeModal();
726781
}
727782
});
783+
784+
// 페이지 로드 시 키워드 렌더링
785+
document.addEventListener('DOMContentLoaded', function() {
786+
document.querySelectorAll('.keywords-list').forEach(container => {
787+
const keywords = container.getAttribute('data-keywords');
788+
if (keywords) {
789+
const keywordArray = keywords.split(';').map(k => k.trim()).filter(k => k);
790+
container.innerHTML = keywordArray.map(keyword =>
791+
'<span class="keyword-tag">' + keyword + '</span>'
792+
).join('');
793+
}
794+
});
795+
});
728796
</script>
729797
</body>
730798
</html>

0 commit comments

Comments
 (0)