@grafana/ui
Version:
Grafana Components Library
1 lines • 3.31 kB
Source Map (JSON)
{"version":3,"file":"UnitPicker.mjs","sources":["../../../../src/components/UnitPicker/UnitPicker.tsx"],"sourcesContent":["import { PureComponent } from 'react';\n\nimport { getValueFormats, SelectableValue } from '@grafana/data';\nimport { t } from '@grafana/i18n';\n\nimport { Cascader, CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n onChange: (item?: string) => void;\n value?: string;\n width?: number;\n}\n\nfunction formatCreateLabel(input: string) {\n return `Custom unit: ${input}`;\n}\n\nexport class UnitPicker extends PureComponent<UnitPickerProps> {\n onChange = (value: SelectableValue<string>) => {\n this.props.onChange(value.value);\n };\n\n render() {\n const { value, width } = this.props;\n\n // Set the current selection\n let current: SelectableValue<string> | undefined = undefined;\n\n // All units\n const unitGroups = getValueFormats();\n\n // Need to transform the data structure to work well with Select\n const groupOptions: CascaderOption[] = unitGroups.map((group) => {\n const options = group.submenu.map((unit) => {\n const sel = {\n label: unit.text,\n value: unit.value,\n };\n if (unit.value === value) {\n current = sel;\n }\n return sel;\n });\n\n return {\n label: group.text,\n value: group.text,\n items: options,\n };\n });\n\n // Show the custom unit\n if (value && !current) {\n current = { value, label: value };\n }\n\n return (\n <Cascader\n width={width}\n initialValue={current && current.label}\n allowCustomValue\n changeOnSelect={false}\n formatCreateLabel={formatCreateLabel}\n options={groupOptions}\n placeholder={t('grafana-ui.unit-picker.placeholder', 'Choose')}\n isClearable\n onSelect={this.props.onChange}\n />\n );\n }\n}\n"],"names":[],"mappings":";;;;;;AAaA,SAAS,kBAAkB,KAAe,EAAA;AACxC,EAAA,OAAO,gBAAgB,KAAK,CAAA,CAAA;AAC9B;AAEO,MAAM,mBAAmB,aAA+B,CAAA;AAAA,EAAxD,WAAA,GAAA;AAAA,IAAA,KAAA,CAAA,GAAA,SAAA,CAAA;AACL,IAAA,IAAA,CAAA,QAAA,GAAW,CAAC,KAAmC,KAAA;AAC7C,MAAK,IAAA,CAAA,KAAA,CAAM,QAAS,CAAA,KAAA,CAAM,KAAK,CAAA;AAAA,KACjC;AAAA;AAAA,EAEA,MAAS,GAAA;AACP,IAAA,MAAM,EAAE,KAAA,EAAO,KAAM,EAAA,GAAI,IAAK,CAAA,KAAA;AAG9B,IAAA,IAAI,OAA+C,GAAA,KAAA,CAAA;AAGnD,IAAA,MAAM,aAAa,eAAgB,EAAA;AAGnC,IAAA,MAAM,YAAiC,GAAA,UAAA,CAAW,GAAI,CAAA,CAAC,KAAU,KAAA;AAC/D,MAAA,MAAM,OAAU,GAAA,KAAA,CAAM,OAAQ,CAAA,GAAA,CAAI,CAAC,IAAS,KAAA;AAC1C,QAAA,MAAM,GAAM,GAAA;AAAA,UACV,OAAO,IAAK,CAAA,IAAA;AAAA,UACZ,OAAO,IAAK,CAAA;AAAA,SACd;AACA,QAAI,IAAA,IAAA,CAAK,UAAU,KAAO,EAAA;AACxB,UAAU,OAAA,GAAA,GAAA;AAAA;AAEZ,QAAO,OAAA,GAAA;AAAA,OACR,CAAA;AAED,MAAO,OAAA;AAAA,QACL,OAAO,KAAM,CAAA,IAAA;AAAA,QACb,OAAO,KAAM,CAAA,IAAA;AAAA,QACb,KAAO,EAAA;AAAA,OACT;AAAA,KACD,CAAA;AAGD,IAAI,IAAA,KAAA,IAAS,CAAC,OAAS,EAAA;AACrB,MAAU,OAAA,GAAA,EAAE,KAAO,EAAA,KAAA,EAAO,KAAM,EAAA;AAAA;AAGlC,IACE,uBAAA,GAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,KAAA;AAAA,QACA,YAAA,EAAc,WAAW,OAAQ,CAAA,KAAA;AAAA,QACjC,gBAAgB,EAAA,IAAA;AAAA,QAChB,cAAgB,EAAA,KAAA;AAAA,QAChB,iBAAA;AAAA,QACA,OAAS,EAAA,YAAA;AAAA,QACT,WAAA,EAAa,CAAE,CAAA,oCAAA,EAAsC,QAAQ,CAAA;AAAA,QAC7D,WAAW,EAAA,IAAA;AAAA,QACX,QAAA,EAAU,KAAK,KAAM,CAAA;AAAA;AAAA,KACvB;AAAA;AAGN;;;;"}