UNPKG

@grafana/ui

Version:
1 lines 2.47 kB
{"version":3,"file":"useExpandableLabel.mjs","sources":["../../../../src/components/Segment/useExpandableLabel.tsx"],"sourcesContent":["import { useState, useRef, ReactElement } from 'react';\nimport * as React from 'react';\n\nimport { useStyles2 } from '../../themes/ThemeContext';\nimport { clearButtonStyles } from '../Button/Button';\n\ninterface LabelProps {\n Component: ReactElement;\n onClick?: () => void;\n disabled?: boolean;\n}\n\nexport const useExpandableLabel = (\n initialExpanded: boolean,\n onExpandedChange?: (expanded: boolean) => void\n): [React.ComponentType<LabelProps>, number, boolean, (expanded: boolean) => void] => {\n const ref = useRef<HTMLButtonElement>(null);\n const buttonStyles = useStyles2(clearButtonStyles);\n const [expanded, setExpanded] = useState<boolean>(initialExpanded);\n const [width, setWidth] = useState(0);\n\n const setExpandedWrapper = (expanded: boolean) => {\n setExpanded(expanded);\n if (onExpandedChange) {\n onExpandedChange(expanded);\n }\n };\n\n const Label = ({ Component, onClick, disabled }: LabelProps) => (\n <button\n type=\"button\"\n className={buttonStyles}\n ref={ref}\n disabled={disabled}\n onClick={() => {\n setExpandedWrapper(true);\n if (ref && ref.current) {\n setWidth(ref.current.clientWidth * 1.25);\n }\n onClick?.();\n }}\n >\n {Component}\n </button>\n );\n\n return [Label, width, expanded, setExpandedWrapper];\n};\n"],"names":["expanded"],"mappings":";;;;;AAYa,MAAA,kBAAA,GAAqB,CAChC,eAAA,EACA,gBACoF,KAAA;AACpF,EAAM,MAAA,GAAA,GAAM,OAA0B,IAAI,CAAA;AAC1C,EAAM,MAAA,YAAA,GAAe,WAAW,iBAAiB,CAAA;AACjD,EAAA,MAAM,CAAC,QAAA,EAAU,WAAW,CAAA,GAAI,SAAkB,eAAe,CAAA;AACjE,EAAA,MAAM,CAAC,KAAA,EAAO,QAAQ,CAAA,GAAI,SAAS,CAAC,CAAA;AAEpC,EAAM,MAAA,kBAAA,GAAqB,CAACA,SAAsB,KAAA;AAChD,IAAA,WAAA,CAAYA,SAAQ,CAAA;AACpB,IAAA,IAAI,gBAAkB,EAAA;AACpB,MAAA,gBAAA,CAAiBA,SAAQ,CAAA;AAAA;AAC3B,GACF;AAEA,EAAA,MAAM,QAAQ,CAAC,EAAE,SAAW,EAAA,OAAA,EAAS,UACnC,qBAAA,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAK,EAAA,QAAA;AAAA,MACL,SAAW,EAAA,YAAA;AAAA,MACX,GAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,QAAI,IAAA,GAAA,IAAO,IAAI,OAAS,EAAA;AACtB,UAAS,QAAA,CAAA,GAAA,CAAI,OAAQ,CAAA,WAAA,GAAc,IAAI,CAAA;AAAA;AAEzC,QAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAGF,EAAA,OAAO,CAAC,KAAA,EAAO,KAAO,EAAA,QAAA,EAAU,kBAAkB,CAAA;AACpD;;;;"}