Skip to content

Instantly share code, notes, and snippets.

View ImKubass's full-sized avatar

Jakub Jetleb ImKubass

View GitHub Profile
@ImKubass
ImKubass / esbuild.ts
Created April 2, 2025 05:28
Esbuild example with scss, svg and tailwind
import * as esbuild from "esbuild"
import {sassPlugin} from "esbuild-sass-plugin"
import manifestPlugin from "esbuild-plugin-manifest"
import svgPlugin from "esbuild-svg"
import tailwindPlugin from "esbuild-plugin-tailwindcss"
await esbuild.build({
entryPoints: ["./src/index.ts"],
bundle: true,
outdir: "./dist",
let filterAbortController: AbortController | null = null
const responseSettings = {
method: "GET",
}
const filterProducts = async (page?: string) => {
// Abort the previous request if it exists
if (filterAbortController) {
filterAbortController.abort()
}
@ImKubass
ImKubass / addGlobalEventListener.ts
Created August 15, 2024 04:41
Fuction for global click event listener that returns clicked element and event
/**
* @example
* addGlobalEventListener("click", ".i-usp", (clickedElement) => {
* console.log(clickedElement)
* })
*/
export function addGlobalEventListener(
type: string,
selector: string,
callback: (clickedElement: Element, event: Event) => void,
@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 March 18, 2025 11:09
Same height of elements
export const sameHeight = (
group: Element,
elements: string | NodeListOf<HTMLElement> | HTMLElement[],
byRow = false,
parentRowSelector: string = "",
) => {
const targets =
elements instanceof NodeList
? Array.from(elements)
: typeof elements === "string"
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,