1.0.6 • Published 11 months ago

@zendeskgarden/container-buttongroup v1.0.6

Weekly downloads
5,708
License
Apache-2.0
Repository
github
Last release
11 months ago

@zendeskgarden/container-buttongroup npm version

This package includes containers relating to buttons groups in the Garden Design System.

Installation

npm install @zendeskgarden/container-buttongroup

Usage

Check out storybook for live examples.

useButtonGroup

The useButtonGroup hook manages focus, selection and accessibility attributes required for a group of buttons. Garden uses this in react-components for the buttons package.

import { useButtonGroup } from '@zendeskgarden/container-buttongroup';

const ButtonGroup = () => {
  const [controlledSelectedItem, setSelectedItem] = useState();
  const { selectedItem, focusedItem, getButtonProps, getGroupProps } = useButtonGroup({
    selectedItem: controlledSelectedItem,
    onSelect: newSelectedItem => setSelectedItem(newSelectedItem)
  });

  return (
    <div {...getGroupProps()}>
      {buttons.map((button, index) => (
        <button
          {...getButtonProps({
            key: button,
            item: button,
            focusRef: buttonRefs[index],
            ref: buttonRefs[index],
            style: {
              boxShadow: button === focusedItem && 'inset 0 0 0 3px rgba(31,115,183, 0.35)',
              outline: 'none',
              color: button === selectedItem ? '#fff' : '#1f73b7',
              background: button === selectedItem && '#144a75',
              padding: '10px'
            }
          })}
        >
          {button}
        </button>
      ))}
    </div>
  );
};

ExampleContainer

ButtonGroupContainer is a render-prop wrapper for the useButtonGroup hook.

import { ButtonGroupContainer } from '@zendeskgarden/container-buttongroup';

<ButtonGroupContainer>
  {({ selectedItem, focusedItem, getButtonProps, getGroupProps }) => (
    <div {...getGroupProps()}>
      {buttons.map((button, index) => (
        <button
          {...getButtonProps({
            key: button,
            item: button,
            focusRef: buttonRefs[index],
            ref: buttonRefs[index],
            style: {
              boxShadow: button === focusedItem && 'inset 0 0 0 3px rgba(31,115,183, 0.35)',
              outline: 'none',
              color: button === selectedItem ? '#fff' : '#1f73b7',
              background: button === selectedItem && '#144a75',
              padding: '10px'
            }
          })}
        >
          {button}
        </button>
      ))}
    </div>
  )}
</ButtonGroupContainer>;
1.0.6

11 months ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.2

1 year ago

1.0.1

2 years ago

1.0.0

2 years ago

0.3.17

2 years ago

0.3.18

2 years ago

0.3.16

2 years ago

0.3.15

2 years ago

0.3.14

3 years ago

0.3.13

3 years ago

0.3.12

3 years ago

0.3.10

3 years ago

0.3.9

3 years ago

0.3.8

3 years ago

0.3.7

4 years ago

0.3.6

4 years ago

0.3.5

4 years ago

0.3.4

4 years ago

0.3.3

4 years ago

0.3.2

4 years ago

0.3.1

4 years ago

0.3.0

4 years ago

0.2.8

4 years ago

0.2.7

4 years ago

0.2.6

5 years ago

0.2.5

5 years ago

0.2.4

5 years ago

0.2.3

5 years ago

0.2.2

5 years ago

0.2.1

5 years ago

0.2.0

5 years ago

0.1.11

5 years ago

0.1.10

5 years ago

0.1.9

5 years ago

0.1.8

5 years ago

0.1.7

5 years ago

0.1.6

5 years ago

0.1.5

5 years ago

0.1.4

5 years ago

0.1.3

5 years ago

0.1.2

5 years ago

0.1.1

5 years ago

0.1.0

5 years ago