{"version":3,"file":"ButtonSelect.cjs","sources":["../../../../src/components/Dropdown/ButtonSelect.tsx"],"sourcesContent":["import { memo, HTMLAttributes, useState } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\n\nimport { Menu } from '../Menu/Menu';\nimport { MenuItem } from '../Menu/MenuItem';\nimport { ScrollContainer } from '../ScrollContainer/ScrollContainer';\nimport { ToolbarButton, ToolbarButtonVariant } from '../ToolbarButton/ToolbarButton';\nimport { PopoverContent } from '../Tooltip/types';\n\nimport { Dropdown } from './Dropdown';\n\nexport interface Props<T> extends HTMLAttributes<HTMLButtonElement> {\n  className?: string;\n  options: Array<SelectableValue<T>>;\n  value?: SelectableValue<T>;\n  onChange: (item: SelectableValue<T>) => void;\n  /** @deprecated use tooltip instead, tooltipContent is not being processed in ToolbarButton*/\n  tooltipContent?: PopoverContent;\n  narrow?: boolean;\n  variant?: ToolbarButtonVariant;\n  tooltip?: string;\n  root?: HTMLElement;\n}\n\n/**\n * @deprecated Use Combobox or Dropdown instead\n *\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/inputs-deprecated-buttonselect--docs\n */\nconst ButtonSelectComponent = <T,>(props: Props<T>) => {\n  const { className, options, value, onChange, narrow, variant, root, ...restProps } = props;\n  const [isOpen, setIsOpen] = useState(false);\n\n  const renderMenu = () => (\n    <Menu tabIndex={-1} onClose={() => setIsOpen(false)}>\n      <ScrollContainer maxHeight=\"100vh\">\n        {options.map((item) => (\n          <MenuItem\n            key={`${item.value}`}\n            label={item.label ?? String(item.value)}\n            onClick={() => onChange(item)}\n            active={item.value === value?.value}\n            ariaChecked={item.value === value?.value}\n            ariaLabel={item.ariaLabel || item.label}\n            disabled={item.isDisabled}\n            component={item.component}\n            role=\"menuitemradio\"\n          />\n        ))}\n      </ScrollContainer>\n    </Menu>\n  );\n\n  return (\n    <Dropdown root={root} overlay={renderMenu} placement=\"bottom-end\">\n      <ToolbarButton className={className} isOpen={isOpen} narrow={narrow} variant={variant} {...restProps}>\n        {value?.label || (value?.value != null ? String(value?.value) : null)}\n      </ToolbarButton>\n    </Dropdown>\n  );\n};\n\nButtonSelectComponent.displayName = 'ButtonSelect';\n\n// needed to properly forward the generic type through React.memo\n// see https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087#issuecomment-656596623\n// eslint-disable-next-line @typescript-eslint/consistent-type-assertions\nexport const ButtonSelect = memo(ButtonSelectComponent) as typeof ButtonSelectComponent;\n"],"names":["useState","jsx","Menu","ScrollContainer","MenuItem","Dropdown","ToolbarButton","memo"],"mappings":";;;;;;;;;;;;;AA8BA,MAAM,qBAAA,GAAwB,CAAK,KAAA,KAAoB;AACrD,EAAA,MAAM,EAAE,SAAA,EAAW,OAAA,EAAS,KAAA,EAAO,QAAA,EAAU,QAAQ,OAAA,EAAS,IAAA,EAAM,GAAG,SAAA,EAAU,GAAI,KAAA;AACrF,EAAA,MAAM,CAAC,MAAA,EAAQ,SAAS,CAAA,GAAIA,eAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,aAAa,sBACjBC,cAAA,CAACC,aAAK,QAAA,EAAU,CAAA,CAAA,EAAI,SAAS,MAAM,SAAA,CAAU,KAAK,CAAA,EAChD,yCAACC,+BAAA,EAAA,EAAgB,SAAA,EAAU,SACxB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAM;AArC5B,IAAA,IAAA,EAAA;AAsCU,IAAA,uBAAAF,cAAA;AAAA,MAACG,iBAAA;AAAA,MAAA;AAAA,QAEC,QAAO,EAAA,GAAA,IAAA,CAAK,KAAA,KAAL,IAAA,GAAA,EAAA,GAAc,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACtC,OAAA,EAAS,MAAM,QAAA,CAAS,IAAI,CAAA;AAAA,QAC5B,MAAA,EAAQ,IAAA,CAAK,KAAA,MAAU,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA,CAAA;AAAA,QAC9B,WAAA,EAAa,IAAA,CAAK,KAAA,MAAU,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA,CAAA;AAAA,QACnC,SAAA,EAAW,IAAA,CAAK,SAAA,IAAa,IAAA,CAAK,KAAA;AAAA,QAClC,UAAU,IAAA,CAAK,UAAA;AAAA,QACf,WAAW,IAAA,CAAK,SAAA;AAAA,QAChB,IAAA,EAAK;AAAA,OAAA;AAAA,MARA,CAAA,EAAG,KAAK,KAAK,CAAA;AAAA,KASpB;AAAA,EAAA,CACD,GACH,CAAA,EACF,CAAA;AAGF,EAAA,uBACEH,cAAA,CAACI,iBAAA,EAAA,EAAS,IAAA,EAAY,OAAA,EAAS,UAAA,EAAY,WAAU,YAAA,EACnD,QAAA,kBAAAJ,cAAA,CAACK,2BAAA,EAAA,EAAc,SAAA,EAAsB,MAAA,EAAgB,MAAA,EAAgB,SAAmB,GAAG,SAAA,EACxF,QAAA,EAAA,CAAA,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA,MAAA,CAAU,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAA,KAAS,IAAA,GAAO,MAAA,CAAO,KAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAO,KAAK,CAAA,GAAI,IAAA,CAAA,EAClE,CAAA,EACF,CAAA;AAEJ,CAAA;AAEA,qBAAA,CAAsB,WAAA,GAAc,cAAA;AAK7B,MAAM,YAAA,GAAeC,WAAK,qBAAqB;;;;"}