Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
bc69d27
feat: add getTableOfContent parseYAML
DenisArger Nov 28, 2024
55441e3
feat: add base Navigation
DenisArger Nov 28, 2024
c1be6bc
feat: add getTitleOfContent
DenisArger Nov 28, 2024
b7147e2
feat: add fill categoryOptions from manifest
DenisArger Nov 29, 2024
0b317c3
fix: delete used CustomComboBox
DenisArger Nov 29, 2024
c34dba2
feat: update info navigation
DenisArger Nov 29, 2024
b1dc555
feat: add save history navigation
DenisArger Nov 29, 2024
803c7ef
fix: edit parseYAML
DenisArger Nov 29, 2024
a7a2fda
feat: used depth for children item
DenisArger Nov 29, 2024
3993a4f
feat: add updateParsedYamlTitles
DenisArger Nov 29, 2024
9aa5abc
feat: isCheck ref for children
DenisArger Nov 29, 2024
6069cd6
feat: add searchQuery for selected Category
DenisArger Nov 29, 2024
3a2b0e9
feat: add search for allTopics
DenisArger Dec 3, 2024
a2d8bb3
fix: edit select item after search
DenisArger Dec 3, 2024
b3c259a
feat: edit show filteredTopics
DenisArger Dec 3, 2024
bb20820
feat: add DropdownSearch
DenisArger Dec 3, 2024
09e79a5
feat: add with for ModalInSideBar
DenisArger Dec 3, 2024
5f2bd31
refactor: optimize code
DenisArger Dec 4, 2024
583a6a5
feat: add space for children item
DenisArger Dec 4, 2024
75016f1
fix: mirror edit
DenisArger Dec 4, 2024
f201b69
fix: delete setShowAbout
DenisArger Dec 6, 2024
94d6b10
fix: skip resource === 'tAcademy'
DenisArger Dec 6, 2024
c7a79ae
Merge remote-tracking branch 'origin/develop' into feature-denisarger…
DenisArger Dec 18, 2024
8fa715a
fix: add migration
DenisArger Dec 18, 2024
fb30c44
style: edit style weight & padding
DenisArger Dec 18, 2024
9d0375a
fix: edit style for tA
DenisArger Dec 19, 2024
34ad860
feat: update info version
DenisArger Dec 19, 2024
dabc567
Merge remote-tracking branch 'origin/develop' into feature-denisarger…
DenisArger Dec 20, 2024
8671621
fix: delete console.log
DenisArger Dec 20, 2024
58e9734
feat: add readFileFromZip
DenisArger Dec 20, 2024
ba374cd
fix: add useMemo
DenisArger Dec 20, 2024
110c0cb
fix: delete setHref for filters topics
DenisArger Dec 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 52 additions & 0 deletions components/CustomComboBox.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import { useState } from 'react'

function CustomComboBox({ topics, selectedTopic, onChange }) {
const [isOpen, setIsOpen] = useState(false)

const handleItemClick = (link) => {
onChange(link)
setIsOpen(false)
}

const renderNestedList = (items) => {
return items.map((item) => (
<li
key={item.link}
onClick={() => handleItemClick(item.link)}
className={`m-2 cursor-pointer p-2 hover:bg-gray-100 ${
selectedTopic === item.link ? 'bg-gray-200 font-bold' : ''
} truncate`}
>
{item.title}
</li>
))
}

const selectedTitle =
topics.find((topic) => topic.link === selectedTopic)?.title || 'Select a topic'

return (
<div className="relative">
<div
className="h-10 w-full cursor-pointer truncate rounded border border-gray-300 p-2"
onClick={() => setIsOpen(!isOpen)}
title={selectedTitle}
>
{selectedTitle}
</div>
{isOpen && (
<div className="absolute left-0 z-10 mt-1 max-h-60 w-full overflow-auto border border-gray-300 bg-white">
<ul className="list-none">
{topics.length > 0 ? (
renderNestedList(topics)
) : (
<li className="p-2 text-gray-500">No topics found</li>
)}
</ul>
</div>
)}
</div>
)
}

export default CustomComboBox
67 changes: 67 additions & 0 deletions components/DropdownSearch.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
import { useEffect, useRef, useState } from 'react'

function DropdownSearch({
options,
value,
onChange,
placeholder,
searchQuery,
setSearchQuery,
}) {
const [isOpen, setIsOpen] = useState(false)
const dropdownRef = useRef(null)

const handleInputChange = (e) => {
setSearchQuery(e.target.value)
}

useEffect(() => {
const handleClickOutside = (event) => {
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
setIsOpen(false)
}
}

document.addEventListener('mousedown', handleClickOutside)
return () => {
document.removeEventListener('mousedown', handleClickOutside)
}
}, [])

return (
<div className="relative w-full" ref={dropdownRef}>
<input
type="text"
value={searchQuery}
onChange={handleInputChange}
onFocus={() => setIsOpen(true)}
placeholder={placeholder}
className="w-full rounded border border-gray-300 p-3"
/>
{isOpen && (
<div className="absolute z-10 mt-1 max-h-44 w-full overflow-auto rounded border border-gray-300 bg-white shadow-lg">
{options.length > 0 ? (
options.map((option, index) => (
<div
key={`${option.link}-${index}`}
onClick={() => {
onChange(option.link)
setIsOpen(false)
}}
className={`cursor-pointer px-4 py-2 hover:bg-gray-100 ${
value === option.link ? 'bg-gray-200' : ''
}`}
>
{`${'\u00A0'.repeat((option.depth || 0) * 4)}${option.title}`}
</div>
))
) : (
<div className="px-4 py-2 text-gray-500">There are no matches</div>
)}
</div>
)}
</div>
)
}

export default DropdownSearch
6 changes: 5 additions & 1 deletion components/ModalInSideBar.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ function ModalInSideBar({
buttonTitle,
collapsed,
contentClassName = 'p-4',
width = '30rem',
}) {
return (
<>
Expand All @@ -23,7 +24,10 @@ function ModalInSideBar({

{isOpen && (
<div
className="absolute right-0 top-0 z-10 ml-4 flex h-[calc(100vh-40px)] min-h-full w-full cursor-default flex-col overflow-auto rounded-none border-th-secondary-300 bg-th-secondary-10 pb-3 shadow-md sm:overflow-visible sm:rounded-xl sm:border sm:pb-7 md:left-full md:h-min md:max-h-full md:overflow-hidden md:rounded-xl lg:ml-0 lg:w-[30rem] lg:rounded-none"
className={`absolute right-0 top-0 z-10 ml-4 flex h-[calc(100vh-40px)] min-h-full w-full cursor-default flex-col overflow-auto rounded-none border-th-secondary-300 bg-th-secondary-10 pb-3 shadow-md sm:overflow-visible sm:rounded-xl sm:border sm:pb-7 md:left-full md:h-min md:max-h-full md:overflow-hidden md:rounded-xl lg:ml-0 lg:rounded-none`}
style={{
width: window.matchMedia('(min-width: 1024px)').matches ? width : '100%',
}}
onClick={(e) => e.stopPropagation()}
>
<div className="sticky top-0 flex items-center justify-center bg-th-secondary-400 py-4 sm:rounded-t-xl lg:rounded-t-none lg:px-7">
Expand Down
2 changes: 1 addition & 1 deletion components/Panel/UI/TAContent.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ function TAContent({ item, setHref, config, goBack }) {

return (
<div
className={`absolute bottom-0 left-0 right-0 top-0 z-10 bg-th-secondary-10 pr-2 ${
className={`absolute bottom-0 left-0 right-0 top-0 z-10 bg-th-secondary-10 pr-2 pt-32 ${
item ? '' : 'hidden'
}`}
>
Expand Down
Loading
Loading