UNPKG

@grafana/ui

Version:
1 lines 4.33 kB
{"version":3,"file":"ButtonSelect.mjs","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":[],"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,GAAI,SAAS,KAAK,CAAA;AAE1C,EAAA,MAAM,aAAa,sBACjB,GAAA,CAAC,QAAK,QAAA,EAAU,CAAA,CAAA,EAAI,SAAS,MAAM,SAAA,CAAU,KAAK,CAAA,EAChD,8BAAC,eAAA,EAAA,EAAgB,SAAA,EAAU,SACxB,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAM;AArC5B,IAAA,IAAA,EAAA;AAsCU,IAAA,uBAAA,GAAA;AAAA,MAAC,QAAA;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,uBACE,GAAA,CAAC,QAAA,EAAA,EAAS,IAAA,EAAY,OAAA,EAAS,UAAA,EAAY,WAAU,YAAA,EACnD,QAAA,kBAAA,GAAA,CAAC,aAAA,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,GAAe,KAAK,qBAAqB;;;;"}