@sorens/artist-svelte
Version:
an opinionated and clean UI framework for SvelteKit with theme support built-in
31 lines (30 loc) • 1.04 kB
JavaScript
import { getContext } from 'svelte';
import isVisibleHook from '../../utilities/hook/isVisible';
export const scrollIntoView = (HtmlElement) => {
const scrollElementIntoView = () => {
/* istanbul ignore next */
if (HtmlElement.ariaExpanded === 'true' && !isVisibleHook(HtmlElement)) {
HtmlElement.scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center'
});
}
};
scrollElementIntoView();
return {
update: () => scrollElementIntoView()
};
};
export const accordionContextInit = () => getContext('Accordion');
export const accordionItemLifeCycle = (id, expanded, storeSubscribe) => (_, accordionContext) => {
accordionContext.add({ id, expanded });
const unsubscribe = accordionContext.accordionStates.subscribe(storeSubscribe);
return {
destroy: () => {
if (accordionContext)
accordionContext.remove({ id });
unsubscribe();
}
};
};