UNPKG

@grafana/ui

Version:
1 lines 2.49 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":";;;;;;AAYO,MAAM,kBAAA,GAAqB,CAChC,eAAA,EACA,gBAAA,KACoF;AACpF,EAAA,MAAM,GAAA,GAAM,OAA0B,IAAI,CAAA;AAC1C,EAAA,MAAM,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,EAAA,MAAM,kBAAA,GAAqB,CAACA,SAAAA,KAAsB;AAChD,IAAA,WAAA,CAAYA,SAAQ,CAAA;AACpB,IAAA,IAAI,gBAAA,EAAkB;AACpB,MAAA,gBAAA,CAAiBA,SAAQ,CAAA;AAAA,IAC3B;AAAA,EACF,CAAA;AAEA,EAAA,MAAM,QAAQ,CAAC,EAAE,SAAA,EAAW,OAAA,EAAS,UAAS,qBAC5C,GAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,YAAA;AAAA,MACX,GAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAS,MAAM;AACb,QAAA,kBAAA,CAAmB,IAAI,CAAA;AACvB,QAAA,IAAI,GAAA,IAAO,IAAI,OAAA,EAAS;AACtB,UAAA,QAAA,CAAS,GAAA,CAAI,OAAA,CAAQ,WAAA,GAAc,IAAI,CAAA;AAAA,QACzC;AACA,QAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,EAAA;AAAA,MACF,CAAA;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAGF,EAAA,OAAO,CAAC,KAAA,EAAO,KAAA,EAAO,QAAA,EAAU,kBAAkB,CAAA;AACpD;;;;"}