@grafana/ui
Version:
Grafana Components Library
1 lines • 3.33 kB
Source Map (JSON)
{"version":3,"file":"UnitPicker.cjs","sources":["../../../../src/components/UnitPicker/UnitPicker.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport { getValueFormats, type SelectableValue } from '@grafana/data';\nimport { selectors } from '@grafana/e2e-selectors';\nimport { t } from '@grafana/i18n';\n\nimport { Cascader, type CascaderOption } from '../Cascader/Cascader';\n\nexport interface UnitPickerProps {\n onChange: (item?: string) => void;\n value?: string;\n width?: number;\n id?: string;\n}\n\nfunction formatCreateLabel(input: string) {\n return `Custom unit: ${input}`;\n}\n\n/**\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/pickers-unitpicker--docs\n */\nexport const UnitPicker = memo<UnitPickerProps>(({ onChange, value, width, id }) => {\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 id={id}\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={onChange}\n data-testid={selectors.components.UnitPicker.container}\n />\n );\n});\n\nUnitPicker.displayName = 'UnitPicker';\n"],"names":["memo","getValueFormats","jsx","Cascader","t","selectors"],"mappings":";;;;;;;;;;;;AAeA,SAAS,kBAAkB,KAAA,EAAe;AACxC,EAAA,OAAO,gBAAgB,KAAK,CAAA,CAAA;AAC9B;AAKO,MAAM,UAAA,GAAaA,WAAsB,CAAC,EAAE,UAAU,KAAA,EAAO,KAAA,EAAO,IAAG,KAAM;AAElF,EAAA,IAAI,OAAA,GAA+C,KAAA,CAAA;AAGnD,EAAA,MAAM,aAAaC,oBAAA,EAAgB;AAGnC,EAAA,MAAM,YAAA,GAAiC,UAAA,CAAW,GAAA,CAAI,CAAC,KAAA,KAAU;AAC/D,IAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,IAAA,KAAS;AAC1C,MAAA,MAAM,GAAA,GAAM;AAAA,QACV,OAAO,IAAA,CAAK,IAAA;AAAA,QACZ,OAAO,IAAA,CAAK;AAAA,OACd;AACA,MAAA,IAAI,IAAA,CAAK,UAAU,KAAA,EAAO;AACxB,QAAA,OAAA,GAAU,GAAA;AAAA,MACZ;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAC,CAAA;AAED,IAAA,OAAO;AAAA,MACL,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,OAAO,KAAA,CAAM,IAAA;AAAA,MACb,KAAA,EAAO;AAAA,KACT;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,IAAI,KAAA,IAAS,CAAC,OAAA,EAAS;AACrB,IAAA,OAAA,GAAU,EAAE,KAAA,EAAO,KAAA,EAAO,KAAA,EAAM;AAAA,EAClC;AAEA,EAAA,uBACEC,cAAA;AAAA,IAACC,iBAAA;AAAA,IAAA;AAAA,MACC,EAAA;AAAA,MACA,KAAA;AAAA,MACA,YAAA,EAAc,WAAW,OAAA,CAAQ,KAAA;AAAA,MACjC,gBAAA,EAAgB,IAAA;AAAA,MAChB,cAAA,EAAgB,KAAA;AAAA,MAChB,iBAAA;AAAA,MACA,OAAA,EAAS,YAAA;AAAA,MACT,WAAA,EAAaC,MAAA,CAAE,oCAAA,EAAsC,QAAQ,CAAA;AAAA,MAC7D,WAAA,EAAW,IAAA;AAAA,MACX,QAAA,EAAU,QAAA;AAAA,MACV,aAAA,EAAaC,sBAAA,CAAU,UAAA,CAAW,UAAA,CAAW;AAAA;AAAA,GAC/C;AAEJ,CAAC;AAED,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}