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) => ( <>

Content goes here...

), }; export const Many_Actions: Story = { args: { lang: 'da', elements: Array(25).fill(null).map((_, i) => ), }, render: (args) => ( <>

Content goes here...

), }; export const Groupings: Story = { args: { lang: 'da', elements: [
,
,
, ], }, render: (args) => ( <>

Content goes here...

), }; 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) => ( <>

Content goes here...

), };