import React from 'react';
import { StoryObj, Meta } from '@storybook/react';
import { closeAllContentTogglesInToolbar, contentToggleEdgeHandling, findToolbar, lockBodyScroll, unlockBodyScroll } from '@aarhus-university/au-designsystem-delphinus/source/js/components/toolbar';
import AUToolbarComponent from '../src/components/AUToolbarComponent';
import AUButtonComponent from '../src/components/AUButtonComponent';
import AUContentToggleComponent from '../src/components/AUContentToggleComponent';
import { ThemeWrapper } from './lib/helpers';
import { isElementWithClassNameInEventPath } from '@aarhus-university/au-designsystem-delphinus/source/js/components/helpers';
export default {
title: 'Delphinus/Toolbar',
component: AUToolbarComponent,
argTypes: {
lang: {
table: {
disable: true,
}
},
elements: {
table: {
disable: true,
}
},
onCloseContentToggles: {
table: {
disable: true,
}
},
buttonElements: {
table: {
disable: true,
}
},
buttonClass: {
table: {
disable: true,
}
},
title: {
table: {
disable: true,
}
},
center: {
table: {
disable: true,
}
},
noCollapse: {
table: {
disable: true,
}
},
},
decorators: [
(Story, context) => (
{Story()}
)
],
} as Meta;
type Story = StoryObj;
export const Form_Field_and_Buttons_and_Link: Story = {
args: {
lang: 'da',
elements: [
,
,
,
,
,
,
],
},
render: (args) => (
<>
>
),
};
export const Many_Actions: Story = {
args: {
lang: 'da',
elements: Array(25).fill(null).map((_, i) => ),
},
render: (args) => (
<>
>
),
};
export const Groupings: Story = {
args: {
lang: 'da',
elements: [
,
,
,
],
},
render: (args) => (
<>
>
),
};
export const Filter: Story = {
args: {
lang: 'da',
elements: [
{
contentToggleEdgeHandling(popout);
lockBodyScroll();
}}
beforeCallback={(content: HTMLElement) => closeAllContentTogglesInToolbar(findToolbar(content))}
afterCallback={(content: HTMLElement, button: HTMLButtonElement) => {
const ariaExpanded = button.getAttribute('aria-expanded');
const toolbar = findToolbar(content);
if (ariaExpanded === 'true') {
toolbar?.classList.add('toolbar--has-popout');
} else {
toolbar?.classList.remove('toolbar--has-popout');
}
content.addEventListener('click', (event: MouseEvent) => {
if ((event.target as HTMLElement).classList.contains('toolbar__popout')
&& !isElementWithClassNameInEventPath(event as MouseEvent, 'toolbar__filter__content')) {
closeAllContentTogglesInToolbar(toolbar);
unlockBodyScroll();
}
});
}}
>
,
{
contentToggleEdgeHandling(popout);
lockBodyScroll();
}}
beforeCallback={(content: HTMLElement) => closeAllContentTogglesInToolbar(findToolbar(content))}
afterCallback={(content: HTMLElement, button: HTMLButtonElement) => {
const ariaExpanded = button.getAttribute('aria-expanded');
const toolbar = findToolbar(content);
if (ariaExpanded === 'true') {
toolbar?.classList.add('toolbar--has-popout');
} else {
toolbar?.classList.remove('toolbar--has-popout');
}
content.addEventListener('click', (event: MouseEvent) => {
if ((event.target as HTMLElement).classList.contains('toolbar__popout')
&& !isElementWithClassNameInEventPath(event as MouseEvent, 'toolbar__filter__content')) {
closeAllContentTogglesInToolbar(toolbar);
unlockBodyScroll();
}
});
}}
>
],
onCloseContentToggles: () => console.log('luuuuuk?'),
},
render: (args) => (
<>
>
),
};