Files
simplex-chat/website/src/js/docs.js
M Sarmad Qadeer f97a1fcedf website: add docs to website (#2080)
* website: add fontmatter & improve image URLs where necessary

* website: add docs to website

* website: add prismjs for code highlighting

* website: change npm install position in web.sh

* website: fix an image URL in lang/cs/README.md

* website: improve image paths in lang/cs/translations.md

* website: add responsiveness & improve stylings of docs

* website: add dir to navbar in blog & docs

* website: remove scroll in mobile dropdown menu

* website: remove rfcs & add guide docs to website

* website: remove file renaming script from web.sh

* website: add menu to docs in nav

* website: add hash list & add scroll to headers

* website: customize docs frontmatter through JS

* website: remove supported_languages.json

* website: move merge_translations.js to JS folder

* website: add the following changes to docs
- add frontmatter to new doc merged from master
- add ignoreForWeb property to frontmatter of README.md docs

* website: remove package-lock.json from .gitignore

* website: add package-lock.json from .gitignore

* website: add no docs message to docs dropdown

* website: improve the sidebar of docs

* website: add revision date to docs

* website: add script to add version to docs frontmatter

* website: add layout to display message in docs if its version is old

* website: improve nav responsiveness

* website: remove frontmatter form main README & rfcs

* website: remove rfcs from website folder

* website: add ignore condition for rfcs in .eleventy

* website: remove frontmatter from lang README docs

* website: remove README from website's lang docs

* website: add guides menu in nav

* website: following changes
- add docs_dropdown.json
- extend reference menu in nav
- remove docs menu from nav

* website: fix in docs sidebar

* website: revert main docs README.md files

* website: revert main docs README.md files

* website: move scripts out of js that are for build

* website: remove displayAt form guide docs

* website: create a docs_sidebar.json & shift to that approach

* update navigation

* website: set navbar

* website: add icons to external links

* website: change the approach for docs sidebar creation

* website: update docs template

* website: add some strings to en.json and map them accordingly

* remove icon

---------

Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com>
2023-04-30 22:31:23 +01:00

91 lines
3.1 KiB
JavaScript

document.addEventListener("DOMContentLoaded", function () {
const imgs = document.querySelectorAll('p img')
imgs.forEach(img => {
console.log(img.height)
img.style.height = `${img.getAttribute('height')}px`
})
const allParagraphs = document.querySelectorAll("p")
allParagraphs.forEach((paragraph) => {
if (paragraph.querySelector("img")) {
paragraph.style.display = "flex"
}
})
const docMain = document.querySelector('#doc main')
const menuBtn = document.querySelector('#doc main button.menu')
docMain.addEventListener('click', () => {
docMain.classList.remove("overlay")
document.body.classList.remove('lock-scroll')
})
menuBtn.addEventListener('click', (e) => {
docMain.classList.add("overlay")
document.body.classList.add('lock-scroll')
e.stopPropagation()
})
const headerWithIds = document.querySelectorAll('h1[id], h2[id]')
const hashList = document.querySelector('.hash-list')
headerWithIds.forEach(header => {
const id = header.getAttribute('id')
const listItem = document.createElement('li')
const anchor = document.createElement('a')
anchor.href = `#${id}`
anchor.textContent = header.textContent
listItem.appendChild(anchor)
hashList.appendChild(listItem)
const hashLink = document.createElement('a')
hashLink.href = `#${id}`
hashLink.textContent = '#'
hashLink.classList.add('hash-link')
header.appendChild(hashLink)
})
function scrollToIdWithTopOffset(id, topOffset) {
const element = document.getElementById(id)
if (element) {
const elementRect = element.getBoundingClientRect()
const absoluteElementTop = elementRect.top + window.scrollY
const scrollToPosition = absoluteElementTop - topOffset
window.scrollTo({ top: scrollToPosition, behavior: 'smooth' })
}
}
function scrollToHashWithTopOffset() {
const topOffset = window.innerWidth <= 1024 ? 104 : 66 // Adjust the top offset value as needed
const hash = window.location.hash.substring(1)
if (hash) {
setTimeout(() => {
scrollToIdWithTopOffset(hash, topOffset)
}, 0)
}
}
document.addEventListener('click', (event) => {
const target = event.target
if (target.tagName.toLowerCase() === 'a' && target.getAttribute('href').startsWith('#')) {
event.preventDefault()
const id = target.getAttribute('href').substring(1)
const topOffset = window.innerWidth <= 1024 ? 104 : 66 // Adjust the top offset value as needed
history.pushState(null, null, '#' + id)
scrollToIdWithTopOffset(id, topOffset)
}
})
window.addEventListener('load', () => {
scrollToHashWithTopOffset()
})
const backToTop = document.getElementById('back-to-top')
backToTop.addEventListener('click', function (event) {
event.preventDefault()
window.scrollTo({ top: 0, behavior: 'smooth' })
})
})