ol-toggle-button-group.tsx 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { ToggleButtonGroup, ToggleButtonGroupProps } from 'react-bootstrap-5'
  2. import BS3ToggleButtonGroup from '@/features/ui/components/bootstrap-3/toggle-button-group'
  3. import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
  4. import { getAriaAndDataProps } from '@/features/utils/bootstrap-5'
  5. type BS3ToggleButtonGroupProps = React.ComponentProps<
  6. typeof BS3ToggleButtonGroup
  7. >
  8. type OLToggleButtonGroupProps<T> = ToggleButtonGroupProps<T> & {
  9. bs3Props?: BS3ToggleButtonGroupProps
  10. }
  11. function OLToggleButtonGroup<T>(props: OLToggleButtonGroupProps<T>) {
  12. const { bs3Props, ...rest } = props
  13. const bs3ToggleButtonGroupProps = {
  14. name: rest.name,
  15. type: rest.type,
  16. value: rest.value,
  17. onChange: rest.onChange,
  18. children: rest.children,
  19. className: rest.className,
  20. defaultValue: rest.defaultValue,
  21. defaultChecked: rest.defaultChecked,
  22. ...bs3Props,
  23. } as BS3ToggleButtonGroupProps
  24. // Get all `aria-*` and `data-*` attributes
  25. const extraProps = getAriaAndDataProps(rest)
  26. return (
  27. <BootstrapVersionSwitcher
  28. bs3={
  29. <BS3ToggleButtonGroup {...extraProps} {...bs3ToggleButtonGroupProps} />
  30. }
  31. bs5={<ToggleButtonGroup {...rest} />}
  32. />
  33. )
  34. }
  35. export default OLToggleButtonGroup