import * as React from 'react' import type { StoryFn, Meta } from '@storybook/react-webpack5' import type { ToolbarButtonGroupProps } from '../' import { Toolbar, ToolbarButtonEmpty, ToolbarSectionLeft, ToolbarSectionRight, ToolbarButtonGroup, } from '../' import { Board, BulletList, Graph } from '@planview/pv-icons' import { DISPLAY_ON_PHONE, DISPLAY_ON_TABLET_PORTRAIT, DISPLAY_ON_TABLET_LANDSCAPE, DISPLAY_ON_DESKTOP, DISPLAY_ON_DESKTOP_HD, } from '../utils' export default { title: 'pv-toolbar/Components/ToolbarButtonGroup', tags: ['autodocs'], component: ToolbarButtonGroup, argTypes: { onHit: { action: 'hit button', table: { disable: true } }, children: { control: false, }, displayOn: { control: { type: 'radio' }, defaultValue: DISPLAY_ON_TABLET_PORTRAIT, options: [ DISPLAY_ON_PHONE, DISPLAY_ON_TABLET_PORTRAIT, DISPLAY_ON_TABLET_LANDSCAPE, DISPLAY_ON_DESKTOP, DISPLAY_ON_DESKTOP_HD, ], }, groupLabel: { defaultValue: 'Group label', }, }, } satisfies Meta void }> export const Default: StoryFn = ({ onHit, displayOn, groupLabel, }) => { const [active, setActive] = React.useState(0) return ( } activated={!active} onClick={() => { setActive(0) onHit('Board view') }} > Board view } activated={active === 1} onClick={() => { setActive(1) onHit('List view') }} > List view } activated={active === 2} onClick={() => { setActive(2) onHit('Chart view') }} > Chart view ) } Default.storyName = 'ToolbarButtonGroup' type StoryToolbarButtonGroup = React.ComponentProps< typeof ToolbarButtonGroup > & { onHit: (msg: string) => void } export const ConditionallyAddItems: StoryFn = ({ onHit, displayOn, groupLabel, }) => { const [active, setActive] = React.useState(0) const [show1, setShow1] = React.useState(true) const [show2, setShow2] = React.useState(true) return ( setShow1(!show1)}> Toggle first button setShow2(!show2)}> Toggle second button {show1 ? ( } activated={!active} onClick={() => { setActive(0) onHit('Board view') }} > Board view ) : null} {show2 ? ( } activated={active === 1} onClick={() => { setActive(1) onHit('List view') }} > List view ) : null} } activated={active === 2} onClick={() => { setActive(2) onHit('Chart view') }} > Chart view ) } ConditionallyAddItems.parameters = { docs: { source: { code: ` const [active, setActive] = React.useState(0) const [show1, setShow1] = React.useState(true) const [show2, setShow2] = React.useState(true) return ( setShow1(!show1)}> Toggle first button setShow2(!show2)}> Toggle second button {show1 ? ( } activated={!active} onClick={() => { setActive(0) onHit('Board view') }} > Board view ) : null} {show2 ? ( } activated={active === 1} onClick={() => { setActive(1) onHit('List view') }} > List view ) : null} } activated={active === 2} onClick={() => { setActive(2) onHit('Chart view') }} > Chart view `, }, }, }