Skip to content

Instantly share code, notes, and snippets.

View ImKubass's full-sized avatar

Jakub Jetleb ImKubass

View GitHub Profile
@ImKubass
ImKubass / tabs.ts
Last active April 17, 2023 03:27
Abstract tabs handle
const tabsGroup = document.querySelectorAll(".js-tabs")
tabsGroup.forEach(tabGroup => {
const tabItems = tabGroup.querySelectorAll(".js-tabs__tab-item")
const panels = tabGroup.querySelectorAll(".js-tabs__panel")
const closeAllPanels = () => panels.forEach(content => content.classList.remove("--active"))
const resetAllTabItems = () => tabItems.forEach(link => link.classList.remove("--active"))
@ImKubass
ImKubass / same-height.ts
Last active October 9, 2023 03:50
Same height of elements
export const sameHeight = (group: Element, elements: string | NodeListOf<HTMLElement>, byRow = false) => {
const targets = elements instanceof NodeList ? Array.from(elements) : Array.from(group.querySelectorAll<HTMLElement>(elements))
const getHighestElement = (elements: HTMLElement[] = targets): number => {
const heights = elements.map((box) => box.clientHeight)
return Math.max(...heights)
}
const resetHeight = (elements: HTMLElement[] = targets) => {
elements.forEach((element) => element.style.removeProperty("height"))
const myElementSelector = ".my-element"
document.addEventListener("click", ({target}) => {
if (target instanceof Element && !target?.closest(myElementSelector)) {
console.log("click outside")
} else {
console.log("click in")
}
})
const mobileQuery = window.matchMedia("(max-width: 74.999em)") // Change to your needs
const handleMobileChange = (mediaQueryList: MediaQueryListEvent | MediaQueryList) => {
if (mediaQueryList.matches) {
// Its Mobile
} else {
// Its Desktop
}
}
const handle = () => {
console.log("Yo my size changed, do something with me")
}
const resizeObserver = new ResizeObserver(handle)
resizeObserver.observe(myElement)
@ImKubass
ImKubass / navigation-handle.ts
Last active January 23, 2023 08:27
navigation handle
const mainNav = document.querySelector(".main-header__nav")
const overlay = document.querySelector(".c-overlay")
const closers = document.querySelectorAll(".--js-main-nav-closer")
const openers = document.querySelectorAll(".--js-main-nav-opener")
const togglers = document.querySelectorAll(".--js-main-nav-toggler")
const closeMenu = (event: Event) => {
event.preventDefault()
mainNav?.classList.remove("--open")
window.models = {
initModel: function (
modelName,
positionX,
positionY,
positionZ,
rotationX,
rotationY,
rotationZ,
rotationAnimationX,