Добавлены attachments - clickOutside и intersection
This commit is contained in:
15
src/lib/attachments/clickOutside.svelte.js
Normal file
15
src/lib/attachments/clickOutside.svelte.js
Normal file
@@ -0,0 +1,15 @@
|
||||
export default (callback) => {
|
||||
return (node) => {
|
||||
const onclick = (event) => {
|
||||
if (node && !node.contains(event.target) && !event.defaultPrevented && typeof callback === 'function') {
|
||||
callback()
|
||||
}
|
||||
}
|
||||
|
||||
document.addEventListener('click', onclick, true);
|
||||
|
||||
return () => {
|
||||
document.removeEventListener('click', onclick, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
14
src/lib/attachments/intersection.svelte.js
Normal file
14
src/lib/attachments/intersection.svelte.js
Normal file
@@ -0,0 +1,14 @@
|
||||
export default (callback) => {
|
||||
return (node) => {
|
||||
$effect(() => {
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
if (entries?.[0].isIntersecting) {
|
||||
callback()
|
||||
}
|
||||
})
|
||||
|
||||
observer.observe(node)
|
||||
return () => observer.disconnect()
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -1,3 +1,6 @@
|
||||
export { default as clickOutside } from './attachments/clickOutside.svelte'
|
||||
export { default as intersection } from './attachments/intersection.svelte'
|
||||
|
||||
export { default as Image } from './components/Image.svelte'
|
||||
export { default as Picture } from './components/Picture.svelte'
|
||||
export { default as YandexMetrika } from './components/YandexMetrika.svelte'
|
||||
Reference in New Issue
Block a user