svelte-5-ui-lib
Version:
Svelte 5 UI Lib is a UI library built from scratch to leverage Svelte 5's runes system, creating smooth, reactive components.
58 lines (57 loc) • 1.48 kB
JavaScript
export function uiHelpers() {
let isOpen = $state(false);
function toggle() {
isOpen = !isOpen;
// console.log('toggled', isOpen);
}
function close() {
isOpen = false;
// console.log('closed', isOpen);
}
function open() {
isOpen = true;
// console.log('opened', isOpen);
}
return {
get isOpen() {
return isOpen;
},
set isOpen(value) {
isOpen = value;
},
toggle,
close,
open
};
}
export function clickOutside(element, callbackFunction) {
function onClick(event) {
if (typeof callbackFunction === 'function') {
const targetNode = event.target;
if (!element.contains(targetNode)) {
callbackFunction();
}
}
else {
console.error('Callback function is not a function');
}
}
document.body.addEventListener('click', onClick);
return {
update(newCallbackFunction) {
if (typeof newCallbackFunction === 'function') {
callbackFunction = newCallbackFunction;
}
else {
console.error('New callback function is not a function');
}
},
destroy() {
document.body.removeEventListener('click', onClick);
}
};
}
let n = Date.now();
export function idGenerator() {
return (++n).toString(36);
}